RaspberryPi & Analog Inputs Part I

Al contrario que otros microcontroladores, la RPI no puede leer sensores analógicos, pero añadir esta funcionalidad es algo realmente barato y fácil de llevar a cabo. Si queremos tener la posibilidad de leer sensores analógicos en nuestro proyectos para la RPI vamos a necesitar una pieza de hardware especial llamada ADC – Analog to Digital Converter – o conversor analógico digital. Es la forma mas sencilla y barata de añadir esta funcionalidad a nuestra RPI, el que se muestra en la imagen es el MCP3008 de la empresa microchip inc.

Este chip nos va a permitir añadir 8 entradas analógicas de 10 bits con el coste de solo 4 pines digitales. Con algunos componentes y un poquito de python podremos leer sensores de temperatura o usar un joystick para controlar nuestros proyectos en muy poco tiempo.

Lista de componentes

Para poder equiparar nuestra RPI con otros microcontroladores como arduino y poder leer cosas del mundo analógico donde vivimos o poder medir cosas con mas precisión, vamos a usar sensores analógicos y para ello vamos a necesitar este tipo de conversores.

Esto nos permitirá, sin problemas, poder recibir con mucha precisión retroalimentación de nuestro potenciómetro para controlar el volumen o tener lecturas muy precisas del sensor de infrarrojos de nuestro robot, incluso comprobar la luz ambiente para encender automáticamente las luces usando un Light dependent resitor o LDR, también conocidos como células fotosensibles, a continuación vamos a ver un ejemplo de conexión de estas células con nuestro MCP3008 y la RPI.

 

RPI + MCP3008 + LDR

RPI + MCP3008 + LDR

Empezar a usar el MCP3008 si que tiene un poco de preparación, pero una vez lo tengamos configurado es muy fácil empezar a usarlo. Básicamente como podemos observar en el diagrama de Fritzing solo estamos usando 4 pines GPIO para controlar la lógica del chip, la conexión de 3.3V y la de tierra para controlar la alimentación hacia los otro cuatro pines que podemos observar en la parte derecha del chip, el pequeño semicírculo que podemos observar en el chip indica su parte superior. Todos los pines de la parte izquierda del chip son para las entradas analógicas.

Adjunto: MCP3008 datasheet

Instalar el Software necesario.

01. Limpiar la blacklist

Abrimos una terminal y escribimos el siguiente comando:

sudo nano /etc/modprobe.d/raspi-blacklist.conf

Añadimos el símbolo almohadilla # al comienzo de cada linea del fichero y después guardamos los cambios con CTRL+X y confirmamos Y para salir del fichero.

02. Instalar Python dev tools y spidev

Hay una serie de paquetes que son críticos y vamos a necesitarlos, son los siguientes:

sudo apt-get install python-dev python-pip
sudo pip install spidev

Por ultimo, reiniciamos.
sudo reboot

03. Leer los sensores

Para poder obtener los resultados de cualquier sensor conectado a la parte izquierda del MCP3008, solamente vamos a usar un código de ejemplo que vamos a ver a continuación y que guardaremos en un fichero llamado prueba_adc.py. En el código estamos leyendo los dos primeros pines para ver las lecturas que nos devuelven nuestras dos células fotosensibles.

Para ejecutarlo solo hay que lanzar el siguiente comando:
sudo python prueba_adc.py

04. El código

import spidev
import RPi.GPIO as GPIO
import time
 
GPIO.setmode(GPIO.BCM)
spi = spidev.SpiDev()
spi.open(0,0)
 
def leerADC(adcnum):
if ((adcnum > 7) or (adcnum < 0)):
  return -1
r = spi.xfer2([1,(8+adcnum)<<4,0])
adcout = ((r[1]&3) <<8) + r[2]
return adcout
 
while True:
  print "LDR 1:" + str(leerADC(0))
  print "LDR 2:" + str(leerADC(1))
  time.sleep(1)

Ya tenemos nuestra raspberry leyendo estos sensores, a partir de aquí se abre un abanico de posibilidades enorme para experimentar, pero para no dejaros con las ganas tendremos una segunda entrega de este articulo donde brevemente veremos otro ejemplo de como usar este chip en este caso con un sensor para medir distancias que podremos usar para controlar un robot por ejemplo. El chip que vamos a ver como ejemplo es el Sharp GP2D120.

 

Sensor de distancia

Un saludo y hasta la segunda entrega 🙂

Be the first to comment on "RaspberryPi & Analog Inputs Part I"

Deja un comentario.

Tu dirección de correo no será publicada.


*


*