telmo

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

22 de enero de 2021

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í (numeración GPIO en 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 de conexiones

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 en 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.