Nota

¡Hola, bienvenido a la Comunidad de Entusiastas de SunFounder Raspberry Pi & Arduino & ESP32 en Facebook! Sumérgete más en Raspberry Pi, Arduino y ESP32 con otros entusiastas.

¿Por qué unirse?

  • Soporte Experto: Resuelve problemas post-venta y desafíos técnicos con la ayuda de nuestra comunidad y equipo.

  • Aprende y Comparte: Intercambia consejos y tutoriales para mejorar tus habilidades.

  • Preestrenos Exclusivos: Obtén acceso anticipado a anuncios de nuevos productos y adelantos exclusivos.

  • Descuentos Especiales: Disfruta de descuentos exclusivos en nuestros productos más nuevos.

  • 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!

2.1.7 Potenciómetro

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

La función ADC puede usarse para convertir señales analógicas en señales digitales, y en este experimento se utiliza el ADC0834 para obtener la función que involucra ADC. Aquí, implementamos este proceso utilizando un potenciómetro. El potenciómetro cambia la cantidad física - voltaje, que es convertido por la función ADC.

Componentes Necesarios

En este proyecto, necesitamos los siguientes componentes.

../_images/list_2.1.4_potentiometer.png

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

Nombre

ITEMS IN THIS KIT

ENLACE

Kit Raphael

337

Raphael Kit

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

INTRODUCCIÓN DE COMPONENTES

ENLACE DE COMPRA

Placa de Extensión GPIO

COMPRAR

Protoboard

COMPRAR

Cables de Puente

COMPRAR

Resistor

COMPRAR

LED

COMPRAR

Potenciómetro

COMPRAR

ADC0834

-

Diagrama Esquemático

../_images/image311.png ../_images/image312.png

Procedimientos Experimentales

Paso 1: Construir el circuito.

../_images/image180.png

Nota

Coloca el chip refiriéndote a la posición correspondiente representada en la imagen. Nota que las ranuras en el chip deben estar a la izquierda cuando se coloque.

Paso 2: Abrir el archivo de código

cd ~/raphael-kit/python/

Paso 3: Ejecutar.

sudo python3 2.1.7_Potentiometer.py

Después de ejecutar el código, gira la perilla del potenciómetro, la intensidad del LED cambiará en consecuencia.

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.

#!/usr/bin/env python3

import RPi.GPIO as GPIO
import ADC0834
import time

LedPin = 22

def setup():
    global led_val
    # Configurar los modos GPIO a numeración BCM
    GPIO.setmode(GPIO.BCM)
    # Configurar todos los pines LedPin como salida y nivel inicial en alto (3.3v)
    GPIO.setup(LedPin, GPIO.OUT, initial=GPIO.HIGH)
    ADC0834.setup()
    # Configurar el led como canal pwm y frecuencia a 2KHz
    led_val = GPIO.PWM(LedPin, 2000)

    # Iniciar todo con valor 0
    led_val.start(0)

# Definir una función MAP para mapear valores. Por ejemplo, de 0~255 a 0~100
def MAP(x, in_min, in_max, out_min, out_max):
    return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min

def destroy():
    # Detener todos los canales pwm
    led_val.stop()
    # Liberar recursos
    GPIO.cleanup()

def loop():
    while True:
        res = ADC0834.getResult()
        print ('res = %d' % res)
        R_val = MAP(res, 0, 255, 0, 100)
        led_val.ChangeDutyCycle(R_val)
        time.sleep(0.2)

if __name__ == '__main__':
    setup()
    try:
        loop()
    except KeyboardInterrupt: # Cuando se presione 'Ctrl+C', se ejecutará el programa destroy().
        destroy()

Explicación del Código

import ADC0834

Importar la biblioteca ADC0834. Puedes comprobar el contenido de la biblioteca llamando al comando nano ADC0834.py.

def setup():
    global led_val
    # Configurar los modos GPIO a numeración BCM
    GPIO.setmode(GPIO.BCM)
    # Configurar todos los pines LedPin como salida y nivel inicial en alto (3.3v)
    GPIO.setup(LedPin, GPIO.OUT, initial=GPIO.HIGH)
    ADC0834.setup()
    # Configurar el led como canal pwm y frecuencia a 2KHz
    led_val = GPIO.PWM(LedPin, 2000)

    # Iniciar todo con valor 0
    led_val.start(0)

En setup(), define el método de numeración como BCM, configura LedPin como canal PWM y establece una frecuencia de 2Khz.

ADC0834.setup(): Inicializa ADC0834 y conecta los definidos CS, CLK,

DIO de ADC0834 a GPIO17, GPIO18 y GPIO27 respectivamente.

def loop():
    while True:
        res = ADC0834.getResult()
        print ('res = %d' % res)
        R_val = MAP(res, 0, 255, 0, 100)
        led_val.ChangeDutyCycle(R_val)
        time.sleep(0.2)

La función getResult() se utiliza para leer los valores analógicos de los cuatro canales del ADC0834. Por defecto, la función lee el valor de CH0, y si deseas leer otros canales, por favor introduce el número del canal en ( ), ej. getResult(1).

La función loop() primero lee el valor de CH0, luego asigna el valor a la variable res. Después de eso, llama a la función MAP para mapear el valor leído del potenciómetro a 0~100. Este paso se utiliza para controlar el ciclo de trabajo de LedPin. Ahora, puedes ver que el brillo del LED cambia con el valor del potenciómetro.

Imagen del Fenómeno

../_images/image181.jpeg