Convertir señal analógica en digital con Raspberry Pi.

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
Esquema del MCP3008

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.