La Raspberry Pi, a diferencia de otros microcontroladores, no trae de serie un convertidor de señal analógica. Si queremos leer e interpretar una señal de este tipo —muy frecuente en distintos tipos de sensores— hay que añadir un conversor A-D. En este caso el MCP3008.
Materiales:
- Raspberry Pi 1
- MCP3008 conversor A-D
- Potenciómetro
- Osciloscopio
- Protoboard
- Cables dupont
Las conexiones entre la Rpi y el MCP3008 se hacen así:
(la numeración GPIO es BCM)
- MCP3008 VDD a Raspberry Pi 3.3V
- MCP3008 VREF a Raspberry Pi 3.3V
- MCP3008 AGND a Raspberry Pi GND
- MCP3008 DGND a Raspberry Pi GND
- MCP3008 CLK a Raspberry Pi pin 18
- MCP3008 DOUT a Raspberry Pi pin 23
- MCP3008 DIN a Raspberry Pi pin 24
- MCP3008 CS/SHDN a Raspberry Pi pin 25
Para el script en python, he utilizado la librería gpiozero. Con ella, el script no ocupa más que siete líneas de código:
from gpiozero import MCP3008, PWMLED
from time import sleep
pot = MCP3008(0)
led = PWMLED(25)
while True:
led.value = pot.value
sleep(1)
Es así de fácil:
- Importamos desde gpiozero, MCP3008 que se encarga de comunicarse con el componente.
- También importamos PWMLED, que se encarga de generar una señal PWM (ancho de pulso modulado)
- Asignamos el pin 0 en el MCP3008 para leer los datos del potenciómetro.
- Asignamos un pin el la Rpi para emitir la señal de pulso modulado que leeremos con el osciloscopio.
- Por último, asignamos el valor de lectura del potenciómetro al valor del pulso modulado en un bucle while.