Nota

¡Hola! Bienvenido a la Comunidad de Entusiastas de SunFounder Raspberry Pi, Arduino y ESP32 en Facebook. Sumérgete en el mundo de Raspberry Pi, Arduino y ESP32 con otros entusiastas.

¿Por qué unirse?

  • Soporte experto: Resuelve problemas postventa y desafíos técnicos con la ayuda de nuestra comunidad y equipo.

  • Aprender y compartir: Intercambia consejos y tutoriales para mejorar tus habilidades.

  • Avances exclusivos: Accede anticipadamente a nuevos anuncios de productos y adelantos exclusivos.

  • Descuentos especiales: Disfruta de descuentos exclusivos en nuestros productos más recientes.

  • Promociones y sorteos festivos: Participa en sorteos y promociones navideñas.

👉 ¿Listo para explorar y crear con nosotros? Haz clic en [Aquí] y únete hoy mismo.

4.1.11 Indicador de Batería

Nota

../_images/mcp3008_and_adc0834.jpg

Dependiendo de la versión de su kit, identifique si tiene ADC0834 o MCP3008 y continúe con la sección correspondiente.

Introducción

En este proyecto, haremos un dispositivo indicador de batería que pueda mostrar visualmente el nivel de la batería en el gráfico de barras LED.

Advertencia

No utilices componentes de batería que superen los 3.3V para evitar sobrecargas, lo que puede dañar el chip o la Raspberry Pi.

Componentes Necesarios

En este proyecto, necesitamos los siguientes componentes.

../_images/list_Battery_Indicator.png

Es muy conveniente comprar un kit completo, aquí está el enlace:

Nombre

ELEMENTOS EN ESTE KIT

ENLACE

Kit Raphael

337

Raphael Kit

También puedes comprarlos por separado en los enlaces a continuación.

INTRODUCCIÓN DEL COMPONENTE

ENLACE DE COMPRA

Placa de Extensión GPIO

COMPRAR

Protoboard

COMPRAR

Cables de Puente

COMPRAR

Resistor

COMPRAR

Gráfico de Barras LED

-

ADC0834

-

Diagrama Esquemático

Nombre T-Board

cableado físico

wiringPi

BCM

GPIO17

Pin 11

0

17

GPIO18

Pin 12

1

18

GPIO27

Pin 13

2

27

GPIO25

Pin 22

6

25

GPIO12

Pin 32

26

12

GPIO16

Pin 36

27

16

GPIO20

Pin 38

28

20

GPIO21

Pin 40

29

21

GPIO5

Pin 29

21

5

GPIO6

Pin 31

22

6

GPIO13

Pin 33

23

13

GPIO19

Pin 35

24

19

GPIO26

Pin 37

25

26

../_images/Schematic_three_one5.png

Procedimientos Experimentales

Paso 1: Construye el circuito.

../_images/image248.png

Paso 2: Ve a la carpeta del código.

cd ~/raphael-kit/python/

Paso 3: Ejecuta el archivo ejecutable.

sudo python3 4.1.11_BatteryIndicator.py

Después de que el programa se ejecute, conecta un cable al tercer pin del ADC0834 y al GND por separado y luego conéctalos a los dos polos de una batería por separado. Podrás ver que el LED correspondiente en el gráfico de barras LED se enciende para mostrar el nivel de energía (rango de medición: 0-5V).

Código

Nota

Puedes Modificar/Restablecer/Copiar/Ejecutar/Detener el código a continuación. Pero antes de eso, necesitas ir a la ruta del código fuente como raphael-kit/python. Después de modificar el código, puedes ejecutarlo directamente para ver el efecto.

import RPi.GPIO as GPIO
import ADC0834
import time

ledPins = [25, 12, 16, 20, 21, 5, 6, 13, 19, 26]

def setup():
    GPIO.setmode(GPIO.BCM)
    ADC0834.setup()
    for i in ledPins:
        GPIO.setup(i, GPIO.OUT)
        GPIO.output(i, GPIO.HIGH)

def LedBarGraph(value):
    for i in ledPins:
        GPIO.output(i,GPIO.HIGH)
    for i in range(value):
        GPIO.output(ledPins[i],GPIO.LOW)

def destroy():
    GPIO.cleanup()

def loop():
    while True:
        analogVal = ADC0834.getResult()
        LedBarGraph(int(analogVal/25))

if __name__ == '__main__':
    setup()
    try:
        loop()
    except KeyboardInterrupt: # When 'Ctrl+C' is pressed, the program destroy() will be executed.
        destroy()

Explicación del Código

def LedBarGraph(value):
    for i in ledPins:
        GPIO.output(i,GPIO.HIGH)
    for i in range(value):
        GPIO.output(ledPins[i],GPIO.LOW)

Esta función sirve para controlar el encendido o apagado de los 10 LEDs en el gráfico de barras LED. Primero, damos a estos 10 LEDs niveles altos para que estén apagados al principio, luego decidimos cuántos LEDs se encenderán cambiando el valor analógico recibido.

def loop():
    while True:
        analogVal = ADC0834.getResult()
        LedBarGraph(int(analogVal/25))

El valor de analogVal produce valores (0-255) con diferentes valores de voltaje (0-5V), por ejemplo, si se detectan 3V en una batería, el valor correspondiente 152 se muestra en el voltímetro.

Los 10 LEDs en el gráfico de barras LED se utilizan para mostrar las lecturas de analogVal . 255/10=25, por lo que cada 25 que aumenta el valor analógico, se enciende un LED más, por ejemplo, si “analogVal=150 (aproximadamente 3V), se encienden 6 LEDs.”

Imagen del Fenómeno

../_images/image249.jpeg