En el enlace anterior usan el integrado MCP3002 y en la web encontrarán miles de ejemplos para el MCP3008 como vivo en pueblo quieto lo único que pude conseguir en la ciudad fue un MCP3202 la única diferencia es que solo tiene 2 canales y que este sensor tiene una resolución de 12Bits, es decir, los valores obtenidos en decimal iràn de 0 a 4095.
Y bueno aquí les dejo los pasos para habilitar el soporte SPI en la Raspberry Pi, el programa(obtenido del enlace anterior) el circuito y unas capturas de prueba.
Background.
Este ADC para la Raspberry Pi esta basado en el chip MCP3202 de Microchip. Es un ADC de 12 bits
de resolución y se comunica vía SPI.
Como la Raspberry Pi usa 3.3v se usa un divisor de tensión para bajar 10V a 3.3V de modo que los
pasos del ADC van de 0 para 0V y 4095 para 3.3V.
REQUERIMIENTOS:
- Raspbian Wheezy
- Python
- Python-dev
- spidev
- Habilitar el soporte para SPI de la Raspberry Pi.
Instalación de Dependencias:
- Para instalar python python-dev realizar:
$ sudo apt-get install python-dev python
- Para instalar spidev:
$ git clone git://github.com/doceme/py-spidev $ cd py-spidev/ $ sudo python setup.py install
- Habilitar el soporte de spi en la raspberry-pi:
$ sudo sed -i 's/blacklist spi\-bcm2708/\#blacklist spi-bcm2708/g' /etc/modprobe.d/raspi-blacklist.conf $ sudo reboot
Diagrama:
El Programa
#!/usr/bin/python import spidev import time DEBUG = 0 spi = spidev.SpiDev() spi.open(0,0) # read SPI data from MCP3202 chip def get_adc(channel): # Only 2 channels 0 and 1 else return -1 if ((channel > 1) or (channel < 0)): return -1 r = spi.xfer2([1,(2+channel)<<6,0]) ret = ((r[1]&0x0F) << 8) + (r[2]) return ret tempval = 0 #Take 5 reads on the adc for x in range(0, 9): tempval += get_adc(0) #Get the prom promval = tempval/10 #Get the volts V1 = (get_adc(0)*3.3)/4096 V2 = (V1*10)/3.3 #Print results print "Valor Decimal: ", promval print "" print "Divisor de Voltaje: %0.2f" % (V1) print "" print "Voltaje de Entrada: %0.2f" % (V2) print ""
Y unas capturas del circuito y capturando el voltaje.
Primer captura de Voltaje:
Segunda Captura de Voltaje:
hola amigo, a mi no me funciona, me saca valores en cero, quiza sea por la penultima instruccion, la de habilitar el soporte de spi en la rasp, espero me puedas ayudar, gracias
ResponderEliminar