Approved Reseller
Approved Reseller
Las señales analógicas son un poco más interesantes de leer en un microcontrolador, en especial con la Raspberry Pi Pico que tiene tres entradas analógicas. Si quisieras leer varios sensores o tener una salida que adopte varios valores entre 0V y 3.3V, hay que añadir otros componentes. En esta entrada revisaremos como puedes lograrlo.
Hay dos formas de leer más señales, una es usar un multiplexor analógico y otra, usar un módulo serial, ya sea I2C o SPI. Por ahora veamos primero cómo usar un multiplexor analógico.
Un multiplexor es un componente que permite convertir múltiples entradas en una sola salida. Es muy común encontrarlos en electrónica digital, tomando varios canales de información y convirtiéndolos en uno solo de alta velocidad. En nuestro caso, sin embargo, usaremos un multiplexor de tipo analógico, en específico un CD74HC4051E.
El CD74HC4051E es un multiplexor analógico de 8 entradas y una salida. Tiene 4 pines para configurar la entrada deseada y habilitar o deshabilitar el chip. Imagina a este componente como un selector mecánico, en el que debes girar una perilla para conectar tu Raspberry Pi Pico con la señal que deseas leer. En nuestro caso, lo hacemos de forma digital con las entradas A, B y C.
Entonces, para conectar este chip a nuestra Raspberry Pi Pico, necesitamos conectar el pin COM a una de las entradas ADC de nuestra tarjeta y A,B y C a unas salidas digitales. El resto de las conexiones Chx irán a los sensores analógicos que deseamos leer, que pueden ser, por ejemplo, 8 potenciómetros. Con este script podremos configurar la selección de las entradas y el tiempo que debe leer cada una
from machine import Pin, ADC from time import sleep MUXA0 = Pin(20,Pin.OUT) MUXA1 = Pin(21,Pin.OUT) MUXA2 = Pin(22,Pin.OUT) x = 0 tmr = machine.Timer() def MuxUpdate(tim): global x MUXA0.value( x & (1<<0)) MUXA1.value( x & (1<<1)) MUXA2.value( x & (1<<2)) x += 1 x &= 0x7 tmr.init(period=1,callback=MuxUpdate) while True: pass
Si quieres usar una forma más sofisticada y veloz para leer señales analógicas, puedes usar un módulo I2C o SPI. Estos módulos pueden venir en diferentes presentaciones y tener una variedad de resoluciones, como pueden ser de 8, 10, 12 o hasta 16 bits. Un módulo muy común y que tiene librerías en Arduino y Raspberry Pi es el ADS1115. Un ADC de 4 canales con resolución de 16 bits, que usa I2C para comunicarse con el microcontrolador.
Para usar el módulo sólo necesitas conectarlo al puerto I2C y configurar la librería dentro de Thonny o el IDE de Arduino. Adafruit ha desarrollado una documentación abundante, y ha creado una librería tanto para Python como para CircuitPython. Puedes encontrar más información en Raspberry Pi Analog to Digital Converters y Adafruit 4-Channel ADC Breakouts.
Formalmente, la Raspberry Pi Pico puede producir una señal PWM para obtener una señal analógica. Sin embargo, para producir una señal analógica real desde un microcontrolador se necesita un convertidor digital-analógico (DAC). Cómo antes, hay dos formas de obtener este tipo de señal.
Para convertir varias señales digitales en una analógica es posible usar un conjunto especial de resistencias en las que, después de dividir los voltajes a través de ellas, se consiga en la salida una señal analógica continua. El diseño de este tipo de convertidor analógico-digital es muy simple, y sólo requiere de dos valores de resistencias y tantas etapas como se desee.
Existen diversos módulos DAC de tipo SPI o I2C para convertir datos seriales en una salida analógica. Un ejemplo de éstos módulos es el DAC MCP4725, una tarjeta fácil de conseguir que tiene una resolución de 12 bits y se comunica por I2C. Puedes encontrar una librería de Arduino en este repositorio de Github: MCP4725.
Conclusiones:
Agregar entradas analógicas con un multiplexor es sencillo y no requiere invertir mucho en el integrado adicional. Del mismo modo, obtener una salida analógica con el arreglo de resistores es fácil de implementar y no requiere de mucha inversión. Si quieres implementar un proyecto más complejo, que requiera de más periféricos, los módulos seriales son una mejor opción, ala vez que son más confiables y fáciles de implementar.
Referencias:
PI Pico – Says Hello to an Old Analog Multiplexer