Preliminares
Para comenzar en el uso de Beaglebone mostraremos la medición de temperatura usando las puertas analógicas.
El beaglebone consta de una serie de pines disponibles, en dos grupos llamados P8 y P9. Por ahora nos interesan los 7 Conversores Analógo Digital o ADC, todos ellos estan ubicados en el grupo P9, estos son nuestros sensores analógicos.
Atención: El manual de referencia de beaglebone indica claramente que no se deben superar los 1.8V en estas puertas ADC, por lo que hemos respetado esa recomendación
Materiales
- Beaglebone Rev. A5
- Cable de red
- Fuente de poder 5V @ 1800mA
- Conectores Varios
- Protoboard
- LM35 Sensor de temperatura
A conectar !
Conectamos el Beaglebone con el cable de red y la fuente de poder
Al conectar vía SSH podemos acceder a los valores de los ADC con un simple cat
root@beaglebone:~# cat /sys/devices/platform/tsc/ain1
4000
Los valores que se obtienen estaran cerca de 4000 y no tienen significado sin algun elemento conectado al PIN correspondiente, en este caso el P9.39
La tabla indica la relación de cada archivo con la puerta física en el Beaglebone,
Archivo | Pin en Beaglebone |
/sys/devices/platform/tsc/ain1 | P9.39 |
/sys/devices/platform/tsc/ain2 | P9.40 |
/sys/devices/platform/tsc/ain3 | P9.37 |
/sys/devices/platform/tsc/ain4 | P9.38 |
/sys/devices/platform/tsc/ain5 | P9.33 |
/sys/devices/platform/tsc/ain6 | P9.36 |
/sys/devices/platform/tsc/ain7 | P9.35 |
Esta numeración tan «curiosa» la comprobamos en todos los casos y vimos que NO coincide lo indicado en el manual de referencia Tabla 11. por eso lo indicamos para futura referencia.
Ahora conectamos el sensor LM35 a un protoboard como se indica en la foto
Esta es la forma más simple de conectar el sensor, entregando en el PIN OUTPUT una señal analógica de 10 mV/ C
Las puertas del sensor LM35 se conectan a las puertas del Beaglebone que se indican a continuación
Gnd en P9.1
+Vs en P9.3 // corresponde a 3.3 V, es el mínimo para polarización del sensor
OUTPUT en P9.39 que, de acuerdo a la tabla anterior, corresponde a AIN1
La foto muestra el resultado final
Ahora los valores obtenidos de AIN1 tienen un significado, se pueden convertir a mV con la siguiente expresión
V [mV] = (valor_medido/4096)* 1800
Usando Python
Estos son nuestros primeros pasos, ahora que sabemos como capturar estos valores les dejaré un script, escrito en Python para mostrar la funcionalidad
Primero vamos a escribir estos datos en un archivo, que llamaremos tempe2.txt y ademas imprimirlos en pantalla. Para fines de prueba esto se realizara en un loop infinito con un período de muestreo 30 segundos
from time import sleep g = open("tempe2.txt","w") while(True): f = open("/sys/devices/platform/tsc/ain1","r") datos = f.read() # lee el contenido de ain1 vect = datos.split('\x00') num = float(vect[0]) temp = (num/4096)*180 # convierte en unidad de temperatura temp2d = ("%.2f" % temp) print temp2d # imprime los valores g.write(str(temp2d)+ '\n') # escribe en el archivo f.close sleep(30)
Si necesitas pasar los valores medidos en una URL se usan los siguientes comandos;
1) Fuera del loop
import urllib url = http://www.ejemplo.com/hola.php?
2) Dentro del loop
params = urllib.urlencode({'id':'sensor1','temp':temp2d}) new_url = url + params urllib.urlopen(new_url)
Asi nos queda el siguiente script
from time import sleep import urllib url = ("http://www.ejemplo.com/hola.php?") g = open("tempe2.txt","w") while(True): f = open("/sys/devices/platform/tsc/ain1","r") datos = f.read() # lee el contenido de ain1 vect = datos.split('\x00') num = float(vect[0]) temp = (num/4096)*180 # convierte en unidad de temperatura temp2d = ("%.2f" % temp) print temp2d # imprime los valores g.write(str(temp2d)+ '\n') # escribe en el archivo params = urllib.urlencode({'id':'sensor1','temp':temp2d}) new_url = url + params urllib.urlopen(new_url) f.close sleep(30)
Comentarios y Mejoras
Al muestreo se debe aplicar algun promedio móvil (MA) para reflejar un mejor valor de temperatura.
El loop infinito es para fines demostrativos, una implementación en el mundo real debe incluir algun límite en el tamaño del archivo o en la cantidad de muestras.
El valor +Vs del sensor puede ir conectado al PIN P9.5 del beaglebone, 5.5V, que esta dentro del rango de polarización.
Pruebas en los ADC, por ejemplo con un potenciómetro, se recomienda usar el PIN P9.32 con V = 1.8V
Ola,
querio mas informationes…pero ha olvidado mi espanol 🙂
I’m using Ubuntu distro on my Beaglebone, and I can’t find AIN devices (/sys/devices/platform/tsc/ain1-2-3…)
root@zeus:/# find / -name ain1
/sys/kernel/debug/omap_mux/ain1
Do I had to create then like GPIO ?
Regards