Buenas a todos.
Os comento mi situación y os pido vuestra ayuda pues me encuentro atrancando y no se como salir del atasco.
Estoy realizando un proyecto con un microcontrolador PIC16F876A. El primer paso de dicho proyecto es que debo mostrar en un display LCD de 16x2 (display común) el porcentaje del estado de carga de una batería. Es decir, debo utilizar una de las entradas analógicas del PIC para convertirla a digital mediante el conversar A/D, pasar dicho valor a porcentaje con respecto al voltaje máximo de la batería y, por último, mostrarlo en el display.
Pues bien, he realizado el proyecto a mi modo y así es como lo he hecho:
EXPLICACIÓN
He utilizado una Li-Po de 7.2V, pero este circuito ha de servir para cualquier tipo de batería.
Lo primero que he hecho ha sido medir la tensión de la batería en carga máxima y descargada obteniendo un valor máximo de 8.45V y uno mínimo de 6.5V. La diferencia entre carga máxima y descarga es de 1.95V.
Se ha de saber el valor de las resistencias que se van a usar en el divisor de tensión, determinado por la batería elegida (7,2V – 1000mA/h). Se va a hacer un pequeño circuito que irá conectado de la batería a la patilla AN0 de nuestro PIC. Para medir el nivel de la batería se coloca un divisor resistivo, puesto que el conversor ADC del PIC tiene un rango de 0 a 5V, y la batería será en cualquier caso de 7V o más.
Fijando como nivel máximo de voltaje que va a recibir el conversor ADC en 4V, obtengo que las resistencias tienen que ser de 4k7 (se han realizado las pertinentes cálculos mediante ecuaciones), de tal forma que una vez probemos el circuito se obtendrá en el LCD un valor máximo y uno mínimo de tensión. Para obtener el porcentaje se utilizará una regla de 3 de esta manera:
nivel = [(resultado_A/D – valor_mínimo) · 100] / diferencia
Para simular la carga y descarga de la batería en PROTEUS he utilizado un potenciómetro.
*Nota: en el código la fórmula ya tiene valores pues la he aproximado.
Para programar he utilizado MPLABX de Microchip y el compilador XC8 y para el esquemático y la simulación he utilizado ISIS de PROTEUS.
La librería para el uso de la pantalla LCD no es mía, tan solo he modificado la parte inicial para ajustarla a mi proyecto.
Os adjunto la librería, el código principal y el esquemático. Si no podéis leer bien a qué patillas he conectado los terminales del LCD decírmelo y os lo pongo por aquí.
A ver si podéis averiguar donde está el fallo. Llevo 3 días rompiéndome la cabeza. Gracias de antemano.
Os comento mi situación y os pido vuestra ayuda pues me encuentro atrancando y no se como salir del atasco.
Estoy realizando un proyecto con un microcontrolador PIC16F876A. El primer paso de dicho proyecto es que debo mostrar en un display LCD de 16x2 (display común) el porcentaje del estado de carga de una batería. Es decir, debo utilizar una de las entradas analógicas del PIC para convertirla a digital mediante el conversar A/D, pasar dicho valor a porcentaje con respecto al voltaje máximo de la batería y, por último, mostrarlo en el display.
Pues bien, he realizado el proyecto a mi modo y así es como lo he hecho:
EXPLICACIÓN
He utilizado una Li-Po de 7.2V, pero este circuito ha de servir para cualquier tipo de batería.
Lo primero que he hecho ha sido medir la tensión de la batería en carga máxima y descargada obteniendo un valor máximo de 8.45V y uno mínimo de 6.5V. La diferencia entre carga máxima y descarga es de 1.95V.
Se ha de saber el valor de las resistencias que se van a usar en el divisor de tensión, determinado por la batería elegida (7,2V – 1000mA/h). Se va a hacer un pequeño circuito que irá conectado de la batería a la patilla AN0 de nuestro PIC. Para medir el nivel de la batería se coloca un divisor resistivo, puesto que el conversor ADC del PIC tiene un rango de 0 a 5V, y la batería será en cualquier caso de 7V o más.
Fijando como nivel máximo de voltaje que va a recibir el conversor ADC en 4V, obtengo que las resistencias tienen que ser de 4k7 (se han realizado las pertinentes cálculos mediante ecuaciones), de tal forma que una vez probemos el circuito se obtendrá en el LCD un valor máximo y uno mínimo de tensión. Para obtener el porcentaje se utilizará una regla de 3 de esta manera:
nivel = [(resultado_A/D – valor_mínimo) · 100] / diferencia
Para simular la carga y descarga de la batería en PROTEUS he utilizado un potenciómetro.
*Nota: en el código la fórmula ya tiene valores pues la he aproximado.
Para programar he utilizado MPLABX de Microchip y el compilador XC8 y para el esquemático y la simulación he utilizado ISIS de PROTEUS.
La librería para el uso de la pantalla LCD no es mía, tan solo he modificado la parte inicial para ajustarla a mi proyecto.
Os adjunto la librería, el código principal y el esquemático. Si no podéis leer bien a qué patillas he conectado los terminales del LCD decírmelo y os lo pongo por aquí.
A ver si podéis averiguar donde está el fallo. Llevo 3 días rompiéndome la cabeza. Gracias de antemano.