Camaras Termincas Con Arduino
August 12, 2022 | Author: Anonymous | Category: N/A
Short Description
Download Camaras Termincas Con Arduino...
Description
Universidad de Costa Rica Facu acult ltad ad de In Inge geni nier er´ ´ıa Escue Es cuela la de Ing Ingen enie ier r´ıa El´ e ectric ct rica a
Des arrollo Desarro llo de una c´ amara amara t´ ermica erm ica de bajo ba jo costo implementada mediante un arduino.
Por: Dani Da niel el Hern He rn´ ´ ande an dez z M´ ende en dez z
Ciudad Universitaria “Rodrigo Facio”, Costa Rica Diciembre del 2014
Des arrollo Desarro llo de una c´ amara amara t´ ermica erm ica de bajo ba jo costo implementada mediante un arduino.
Por: Daniel Hern´ ande andezz M´eende n dezz
IE-049 IE0499 9 Proyecto Proyect o el´ ectrico ectr ico
Aprobado por el Tribunal:
Ing. Julian Gutierrez Monge Prof Pr ofes esor or gu´ıa ıa
M.Sc M. Sc.. Teodor eodoro o Will Willin ink k Cast Castro ro Profesor lector
In Ing. g. Gust Gusta avo Nu˜ nez nez Segura Profesor lector
Dedicatoria A mi mam´a y mi pap´a, a, por su apoyo apoyo y gu´ gu´ıa. A mis hermanos y hermana hermana por competir siempre conmigo. A mis amigos y compa˜ neros de la universineros dad por todos los buenos momentos. Asimismo a mi amigo Carlos por sus contrib cont ribucio uciones nes acad´emicas emi cas..
v
Reconocimiento A mi profesor gu gu´´ıa Juli´ an an Guti´ Guti´errez errez Monge por su ayuda ayuda y colaboraci´ colaboracion. o´ n. A mis profesores lectores por su tiempo y comentarios
vi
Resumen En el presente documento se estudia e implementa construcci´on o n de una c´amara amara t´ermica ermica mediante un arduino. Se hiz´o una investigaci´on on de los fundamentos te´ooricos ricos que rigen el funcionamiento del sensor MLX90614. Adem´as as se investig´o el protocolo de comunicaci´on on I2C utilizado por el MLx90614 para comunicarse con el Arduino. En cuanto al sistema para obtener la imagen fue necesario usar el programa Processing que es el encargado de presentar una plataforma para generar la imagen imagen t´ ermica ermica y poder visual visualiza izarla rla en la comput computado adora, ra, por lo que fue necesario implementar un protocolo de comunicaci´on o n entre el Arduino y la computadora, comput adora, de modo que en todo momento momento uno de los dos est´ est´e habland hablandoo y el otro escuchando, de esta forma la comunicaci´on on se da mediante el envi´o de comandos. Ademas se hiz´o una interfaz interfaz gr´afica afica para poder p oder observar observar f´acilmente acilmente la imagen t´ermica ermica obtenida, y otros datos de temperatura. Finalmente, se realizaron r ealizaron pruebas con la c´amara amara t´ermica ermica a diferentes resoluciones de im´agenes agenes y se observ´o que a mayor resoluci´oon n de la imagen t´ermica ermica se obtiene mayor detalle, pero con el inconveniente de que se incrementa considerablemente el tiempo en que se tarda en obtener la imagen. Se concluye que es posible desarrollar una c´amara amara t´ermica ermica de ba jo costo co sto por p or medio de la tecnolog´ıa ıa arduino, brindando un amplio rango rang o de funcionalidad y ventajas que otros sistemas no ofrecen o que resultan ser muy costosos.
vii
´ Indice general ´ Indice de figuras
xi
´ Indice de cuadros
xii
Nomenclatura 1
2
Intr Introdu oducc cci´ i´ o on n
1
1.1 Ju Just stifi ifica caci ci´´on . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1
1 .2 1 .3
2 2 3
Plataforma Arduino . . . . . . . . . . . Pro cessing . . . . . . . . . . . . . . . . . Arduino y Pro cessing . . . . . . . . . . . MLX90614 . . . . . . . . . . . . . . . . Servo motor . . . . . . . . . . . . . . . . Protocol Protocoloo de de comuni comunicac caci´ i´ on del bus I2C .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
Desarrollo
3 .1 3.2 3 .3 3 .4 3.5 3 .6 3.7 3.8 3.8 3.9 3.10 3.10 3.11 4
Ob jetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Meto dolog´ıa . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Marc Marco o te te´ orico ´
2 .1 2 .2 2 .3 2 .4 2 .5 2.6 3
xiii
3 4 5 6 9 11 15
Sensor MLX90614 . . . . . . . . . . . . . . Comuni Comunicac caci´ i´ on Serial Primera parte . . . . . Circuito Final . . . . . . . . . . . . . . . . . Pro cessing . . . . . . . . . . . . . . . . . . . Mapa Mapa de distrib distribuci uci´´on de temper peratura . . . . C´amara Webcam . . . . . . . . . . . . . . . Inte Interfa rfazz gr´ afica de usuario . . . . . . . . . . Cr Crea eaci ci´on ´on de la aplicaci´on . . . . . . . . . . . Procedim Procedimien iento to de de uso uso de la c´ cama a´ mara t´ermica Resu Result ltad ados os de las las prue prueba bass expe experi rime men ntale taless . Ba B a jo jo Costo . . . . . . . . . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
15 23 26 27 29 31 31 33 33 34 39
Conclusiones y recomendaciones
41
4 .1 4 .2
41 42
Conclusiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . Recomendaciones . . . . . . . . . . . . . . . . . . . . . . . . . . ix
5
Bibliograf´ıa
43
x
´ Indice de figuras
2 .1 2.2 2.2 2.3 2.4 2.4 2.5 2.5 2.6 2.7 2 .8 2 .9 2.10
Arduino Uno (Arduino, 2014). . . . . . . . . . . Diag Diagra rama ma de bloq bloque uess MLX90 LX9061 6144 (Mel (Melex exis is,, 20 2013 13). ). Campo Campo de medi medici ci´´on (Melexis, 2013). . . . . . . . Fov t´ıpic ıpicoo del del MLX9 MLX906 0614 14xA xAA A (Mel (Melex exis is,, 2013 2013). ). . Fov t´ıpic ıpicoo del del MLX9 MLX906 0614 14xC xCII (Mel (Melex exis is,, 2013 2013). ). . . Dist Distrib ribuc uci´ i´ on de pines MLX90614. . . . . . . . . . Compo Composi sici ci´´on interna servo motor. . . . . . . . . . Diagrama de bloqu oques servo motor. . . . . . . . . Funcionamiento servo motor. . . . . . . . . . . . Bu B us I2C. . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
4 6 7 7 8 8 9 10 11 11
3.1 3.1 3.2 3.2 3.3 3.4 3.4 3 .5 3.6 3.6 3.7 3.7 3.8 3.8
Cone Conexi xi´´on MLX90614. . . . . . . . . . . . . . . . . . . Di Dire recc ccio ione ness de RAM RAM MLX9 MLX906 0614 14 (Mel (Melex exis is,, 2013 2013). ). . . . Format ormatoo prot protoco ocolo lo de dell bus bus MLX9 MLX9061 06144 ((Me Mele lexi xis, s, 2013) 2013).. Es Estr truc uctu tura ra de tr tram amaa esc escritu ritura ra (Me (Melexi lexiss, 20 2013 13). ). . . . . Formato de lectura en el SMBus. . . . . . . . . . . . . Es Estr truc uctu tura ra de tr tram amaa lect lectur uraa (Me (Melexi lexis, s, 20 2013 13). ). . . . . . Cone Conexi xi´´on servos. . . . . . . . . . . . . . . . . . . . . . Pan ant/ t/ti tilt lt brac racket et.. (S (Spa park rkF Fun, 20 2014 14). ). . . . . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
15 17 18 18 19 20 21 22
3 .9 3.10 3.11 3.12 3.13 3.14 3.15 3.16 3.17 3.18 3.19 3.19 3.220 3.
Limitaciones estructura. . . . . . . . . . . . . C ir ircuito final . . . . . . . . . . . . . . . . . . Escala de colores. . . . . . . . . . . . . . . . . GU G UI Builer. . . . . . . . . . . . . . . . . . . . GU G UI. . . . . . . . . . . . . . . . . . . . . . . . Ajustes de esquinas. . . . . . . . . . . . . . . Imagen t´ermica, ermica , resoluci´ resol uci´on 40x40 cuadros. . . Imagen t´ermica, ermica , resoluci´ resol uci´on 50x50 cuadros. . . Imagen t´ermica, ermica , resoluci´ resol uci´on 100x100 cuadros. Imagen t´ermica, ermica , resoluci´ resol uci´on 200x200 cuadros. Imag Imagen en t´ermi e rmica ca dis dista tanc ncia ia 50 cm. cm. . . . . . . . Image agen t´ermica distanc ancia 1 m. . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
23 27 30 32 33 34 35 35 36 36 38 38
xi
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
´ Indice de cuadros 2. 2.11
pr prin inci cipa pale less cara caract cter er´´ısti ıstica cass Ar Ardu duin inoo Uno Uno . . . . . . . . . . . . . . .
xii
5
Nomenclatura
ACK AC K
recibido (acknowledgement) (acknowledgement)
To
Temperatura objeto.
Ta
Temperatura ambiente
T SA
direccion de esclavo (Slave Address)
P W M
Modulaci´on on por ancho de pulso (pulse-width modulation)
GU I
Interfaz Interfaz gr´ aafica fica de usuario (graphical user interface)
P EC
chequeo chequeo de error de paquet paquetes es (Packet (Packet Error Checking) Checking)
F OV
campo de visi´ on on (field of visi´on) on)
I 2C
Protocolo de comunicaci´ on on de dos cables (Inter-Integrated Circuit)
SC L
reloj serial (serial (serial clock)
SDA SD A
datos seriales seriales (serial data)
xiii
1
Introdu oduccion on ´
1.1 1. 1
Ju Just stifi ifica caci ci´ o ´ on n
Una c´amara amara t´ermica ermica es una herramienta capaz de representar la p´erdida erdida de energ´ıa ıa de un sistema, sistema , donde el m´etodo eto do es r´aapido pido y las termograf´ termograf´ıas que produce la c´amara amara son un argumento preciso y convincente. El uso de una c´amara amara t´ermica, ermica , ya sea como herramienta herra mienta unica u ´nica o combinada combinad a con otros o tros m´etodos, eto dos, agiliag iliza el trabajo traba jo de forma notable. Las termograf´ıas ıas localizan lo calizan con exactitud d´onde onde se detectan de tectan p´erdidas erdida s de energ´ıa, ıa, sin s in ne necesidad cesidad de efectuar ef ectuar ninguna ningun a prueba pr ueba destructiva. La idea del proyecto surge ante la necesidad de contar con una c´amara amara t´ermica ermica desarrollada desarrolla da con materiales de bajo coste y f´aciles aciles de conseguir, esto con la tarea de poder ver la temperatura de una superficie sin tener que hacer contacto alguno con ella, motivo por el cual a este tipo de c´amara ama ra t´ermica erm ica se le abre un amplio campo de aplicaciones, como la inspecci´on on de instalaciones el´ ectricas ectricas y poder localizar defectos defectos en las instalacione instalacioness lograndose lograndose detectar detectar las perdidas perd idas energ´eticas. eticas . El proyecto consiste en desarrollar una c´amara amara t´ ermica ermica que a partir de las emisiones infrarrojas del cuerpo detectado, permita medir remotamente la temperatura temperatu ra de una superficie. El proyecto proyecto va a estar constituido constituido de un sensor infrarrojo el cual es movido por dos servo motores para escanear una ´area definida de un objeto o superficie que se encuentre est´atica, atica, estos conectados conectados a un Arduino que va a controlarlos y procesar los datos obtenidos del sensor t´ermico ermico MLX90614 por medio del uso de una librer´ librer´ıa dispuesta para dicho sensor. El sensor infrarrojo va a estar montado sobre estructura apropiada que pueda permitir el movimiento de la misma mediante los servo motores. El desarrollo de la c´amara amara t´ermica ermica abarca la construcci´ on o n y dise˜ no n o de estructura estruc tura que permita conectar y montar montar el sensor sensor t´ermico ermico o term´ ometro ometro infrarrojo, infrarro jo, as´ as´ı como el acople del circuito el´eectrico ctrico al sistema microcontrolado previamente programado, y luego crear una interfaz de software que permita visualizar las mediciones. 1
2
1.2 1. 2
1 In Introd troducc ucci´ i´ on on
Obj Objet etiv ivos os
Objetivo general Dise˜ no no y construcci´on o n de una c´amara amara t´ermica ermica de ba jo costo mediante el uso de un sensor Infrarrojo, servo motores y un arduino. Objet Ob jetivos ivos espec esp ec´ ´ıficos ıfico s Para el desarrollo de este proyecto se establecieron los siguientes objetivos: •
•
•
1.3
Poner en funcionamiento un sistema m´ovil ovil que permita el movimiento de una estructuramediante servo motores. Construir el hardware basado en el sensor infrarrojo que permita ser conectada al arduino. Dise˜ n nar ar la interfaz de software para la calibraci´on o n y uso normal del sistema.
Metodolog Metodolog´ ´ıa
El desarrollo del trabajo incluy´ incluyo´ los siguientes pasos y procedimientos, listados en secuencia: 1. Investigac Investigaci´ i´ on on bibliogr´afica afica sobre los term´oometros metros infrarrojos, su funcionamiento as´ as´ı como sus respectivas respe ctivas especificaci espec ificaciones ones t´ecnicas. ecnicas . 2. Armar una estructura estructura apropiada que permita montar montar el sistema de medici´on. on. 3. Determinaci´ Determinaci´ on on de las especificacion especificaciones es t´ ecnicas ecnicas del arduino y los servo servo motores. 4. Desarrollo Desarrollo de un programa para poder observar observar los datos provenien provenientes tes de la medici´on on en una pantalla. 5. Verificaci´ on on del programa programa desarrollado desarrollado mediante mediante la conexi´ conexi´ on on del circuito circuito de prueba a la tarjeta del microcontrolador. 6. Creaci Creaci´on ´on de la interfaz de software de medici´on on entre la computadora y el microcontrolador 7. Realizaci´ Realizaci´ on on de pruebas y calibraci´on on al sistema de medici´on on ante diferentes situaciones para una eficaz medici´on on y uso normal.
2
Marco teorico orico ´
2.1
Pl Plat ataf afor orma ma Ar Ardu duin ino o
La placa arduino es una plataforma de computaci´on on f´ısic ısicaa de c´oodigo digo abierto, basada en una placa con un microcontrolador y un entorno de desarrollo para crear software para la placa. (Arduino, 2014a). El lenguaje de programaci´on on utilizado para la programaci´on o n y el control de las placas est´an an fundamentados en un lenguaje lenguaje conocido como Wiring, el cual tambi´ en en es un entorno entorno de programaci´on on abierta, con aplicaci´on on directa a la creaci´on on y exploraci´on on de prototipos electr´onicos onicos y el control de hardware en general. Propiamente, el lenguaje mencionado para las aplicaciones Arduino se conoce simplemente como Lenguaje de Programaci´oon n Arduino, nombre asignado por sus creadores, Massimo Banzi, David Cuartielles, Tom Igoe, Gianluca Martino y David Mallis.(Arduino, 2014a). En lo que respecta al entorno para el desarrollo de los programas en este lenguaje, este fue creado tomando como modelo al entorno de programaci´on on Processing2, presentando este muchas similitudes al utilizado por Wiring. Es posible comunicar a los proyectos creados bajo Arduino con distintos tipos de software. (Arduino, 2014a). Dentro de las principales ventajas con las que cuenta una Arduino se encuentran: •
Entorno de programaci´on on simple y claro: el entorno de programaci´on on de Arduino propone un uso f´aacil cil para principiantes y flexible para usuarios avanzados. Esta convenientemente basado en el entorno de programaci´on on Processing.
•
•
Software extensible y de c´odigo odigo abierto: el software de Arduino est´a publicado bajo una licencia libre y preparado para ser´a ampliado por programadores experimentados. El lenguaje puede ser ampliado a trav´ es es de librer´ıas ıas de C++. Hardware extensible y de c´odigo odigo abierto: Arduino esta basado en los microcontroladores ATMEGA. Los planos de los modulos del Arduino est´an an publicados bajo licencia Creative Commons, por lo que los disenadores n ˜ adores de circuitos pueden hacer su propia versi´on on del m´odulo, odulo, extendi´endolo end olo u opti o ptimiz miz´andolo. ´andolo. 3
4
•
2 Marc Marco o te´ teorico ´ orico
Multi-plataforma: El software de Arduino corre en los sistemas operativos Windows, tivos Windows, Linux Linux y Macintosh Macintosh OSX. La mayor mayor´´ıa de los sistemas sistemas microcontrolados est´an an limitados a Windows.
•
Econ´omico: omico: Las placas Arduino son relativamente baratas comparadas a otras plataformas de micocontroladores.
Arduino UNO Una de las principales principales caracter´ caracter´ısticas ısticas que presenta presenta la plataforma plataforma arduino es su gran variedad de modelos, brindando la oportunidad de tener una amplia gama para escoger el que mejor se ajuste a las necesidades que el problema a resolver requiera.
Figura 2.1: Arduino Uno (Arduino, 2014). El modelo a usar en este proyecto corresponde al Arduino UNO, el cual esta basado en el microcontrolador microcontrolador (µC) ATmega ATmega 328. Cuenta Cuenta con 14 pines de entradas/salidas digitales de los cuales 6 se pueden usar como salidas PWM, 6 entradas anal´ogicas, ogicas, un oscilador cer´amico amico de 16 MHz, conexi´oon n USB y un bot´ on on reset. Como un resumen de sus principales pr incipales caracter car acter´´ısticas se tiene:
2.2 2. 2
Pr Proc oce essin ssing g
Processing es un lenguaje de programaci´on, on, entorno de desarrollo y una comunidad mun idad online. Este lenguaje, basado en Java, Java, fue gestado gestado con la simplicidad simplicidad en mente, para que dise˜ nadores, nadores, artistas, estudiantes, arquitectos, ingenieros, matem´aticos, aticos, investigadores o simplemente personas con una gran curiosidad y motivaci´on on creativa puedan aprender a programar, sin que esto resulte un
2.3. Arduino Arduino y Processing Processing
5
Cuadro 2.1: principales caracter´ caracter´ısticas Arduino Uno Microcontrolador
ATmega328
Tensi´on on de operaci´on Tensi´on de entrada (recommendada) Tensi´on de entrada (limites) Pines Di Diggitales I/O Pines analogicos de entrada Corriente DC p or I/O Corriente DC por 3.3V Pin Memoria Flash SRAM EEPROM Velo cidad del relo j
5V 7-12V 6-20V 14 (6 preveen salida PWM) 6 40 mA 50 mA 32 KB (ATmega328) 2 KB (ATmega328) 1 KB (ATmega328) 16 MHz
dolor de cabeza ni tengamos tengamos que lidiar con una alta tecnicidad tecnicidad computacional, computacional, y que al mismo tiempo, disfrutemos de la flexibilidad que nos permite comunicarnos con la computadora en su propia lengua, el c´oodigo. digo. (Processing, 2014) Dentro de las ventajas con las que cuenta Processing se encuentran: •
C´odigo odigo abierto y de libre descarga.
•
Programas interactivos con salidas 2D, 3D o PDF.
•
Integraci´on on de OpenGL para aceleraciones 3D
•
Multi-pl Multi-plataf ataforma orma,, corre corre en los sis sistem temas as operativ operativos os Wndow Wndows, s, Linux Linux y MAC OS X.
•
Cuenta con m´as as de 100 librer´ librer´ıas extendiendo el n´ucleo ucleo del software
•
Esta bien documentado, con muchos libros disponibles.
2.3 2. 3
Ar Ardu duin ino o y Proc Proces essi sing ng
Como se dijo, tanto Arduino como Processing son de c´oodigo digo abierto y son herramientas para escribir programas de manera similar ya que ambos est´an an basados en Wiring, lo que permite crear un ambiente familiar entre ellos, lo cual es bastante util u ´ til a la hora de querer comunicarse comunicarse el Arduino con la compu compu-tadora, ya sea tanto para querer manejar el arduino o desplegar en pantalla datos obtenidos por el Arduino. Teniendo Teniendo en cuenta cuenta lo anterior anterior se puede desarrollar una interfaz gr´afica afica con Processing capaz de manejar y manipular los
6
2 Marc Marco o te´ teorico ´ orico
datos obtenidos por Arduino, mediante la comunicaci´oon n serial entre la computadora y el arduino.
2.4 2. 4
ML MLX X90 9061 614 4
El sensor MLX90614 desarollado por Melexis es un sensor infrarrojo para medir temperaturas sin necesidad de contacto alguno. Tal como se ve de su diagrama de bloques en la figura 2.2, este sensor cuenta con un amplificador de bajo ruido, un convertidor anal´ogico ogico digital de alta resoluci´oon n de 17 bits, una unidad de procesamiento digital de la se˜nal, nal, garantizando una alta resoluci´on on y precisi´ on on alcanzada. El sensor viene de f´abrica abrica calibrado con una salida PWM y SMBus (System Management Bus). (Melexis, 2013).
Figura 2.2: Diagrama de bloques MLX90614 (Melexis, 2013). Las temperaturas de ambiente (Ta) y del objeto (To) calculadas est´an an disponibles en la RAM interna del MLX90614 con una resoluci´oon n de 0, 02 C, y ◦
son porolas con on de dos Bus accesibles (I2C o TWI) v´ıasalidas PWM tanto, (modulaci´ oeln protocolo por anchoserial de pulso) de cables 10-bits.SMEn el caso de este proyecto se usara el protocolo I2C para comunicarse entre el arduino y el MLX90614. (Melexis, 2013). Este sensor adem´as as cuenta con un filtro ´ooptico ptico que corta el flujo radiante visible e infrarrojo cercano, este filtro est´a integrado en el empaquetado para proporcionar inmunidad al ambiente y la luz solar. (Melexis, 2013).
Campo de visi´ on on FOV Wynne y Campbell (2011) definen el campo de visi´on on o FOV (de sus siglas en ingles Fiel of View) como el ´angulo angulo de incidencia al cual el sensor ´optico optico es
2.4. MLX90614 MLX90614
7
sensitivo sensi tivo a la radiaci´ radiacion ´on electromagn´ electromag n´etica, etica, que en el caso del sensor MLX90614 seria a la radiaci´on on infrarroja que emiten los cuerpos. El FOV para un sensor MLX90614 se puede ver en la figura 2.3, que del gr´afico afico mostrado se nota que a menor ´aangulo ngulo de incidencia la sensibilidad del sensor es mayor.
Figura 2.3: Campo de medici´on on (Melexis, 2013). El modelo a usar en este proyecto corresponde al MLX90614ESF-DCI, ya que este modelo cuenta con la mejor precisi´on on y un campo de visi´oon n FOV m´as as estrecho de todos los modelos de la familia MLX90614. Si se observa el campo de visi´on on de los sensores sensores t´ıpicos MLX9014xAA mostrado en la figura 2.4, se pude notar como su FOV es muy ancho, por lo tanto con un sensibilidad menor, pero con el modelo MLX90614DCI, MLX90614DCI, donde su campo de visi´ on on se muestra en la figura 2.5, se observa que se reduce considerablemente el FOV, traduci´endose endose en una mayor sensibilidad y precisi´on on a la hora tomar medidas medidas de temperatura de un punto en especifico.
Figura 2.4: Fov t´ıpico ıpico del MLX90614xAA (Melexis, 2013). 2 013).
8
2 Marc Marco o te´ teorico ´ orico
Figura 2.5: Fov t´ıpico del MLX90614xCI (Melexis, 2013).
Distribuci´ on on de pines MLX90614 En la figura 2.6 a continuaci´on on se puede la configuraci´oon n de los pines del MLX90614:
Figura 2.6: Distribuci´ Distribuci´ on on de pines MLX90614. Que como se nota, los pines 3 y 4, corresponden a la alimentaci´on o n del sensor, en este caso se usa el modelo MLX90614ESF-DCI, que se alimenta a 3.3 V, adem´as as de los pines usados en I2C, el SCL (serial clock) la entrada de la se˜ nal nal de reloj, y SDA (seria data) que es la segunda segunda l´ınea usada para transmitir informaci´on on y corresponde cor responde a la l´ınea de datos.
2.5.. Servo 2.5 Servo moto motor r
2.5 2. 5
9
Se Serv rvo o mot otor or
A diferencia de los motores DC, con los servo motores es posible posicionar el eje del de l motor mot or a una espec´ es pec´ıfica ıfica posici´ p osici´on on (´angulo) angulo) usando una se˜ nal nal de control, el eje del motor se va a mantener en esta posici´on on mientras que la se˜ nal nal de control no sea cambiada, cuando la se˜ nal nal cambia la posicion angular del eje cambia. Esto resulta muy util u ´ til para controlar controlar brazos rob´oticos oticos u objetos que se quieran mover a ciertos ´aangulos ngulos y permanecer en esa posici´on. on. (furure electronics, s.f.) Los servo motores pueden ser clasificados de acuerdo a su tama˜no n o y su torque de salida que pueden aguantar, se clasifican en servos mini, est´andar andar y gigantes. Usualmente los de tama˜ no no mini y est´andar andar pueden ser alimentados por el Arduino directamente sin necesidad sin necesidad de fuentes externas o controladores. Los servo motores son peque˜nos, nos, tiene una circuiter´ circuiter´ıa de control interna y es sumamente poderoso para su tama˜no. no. Un servo normal o est´andar andar tiene 42 onzas por pulgada o mejor 3kg por cm de torque, que es bastante fuerte para su tama˜ no. no. Un servo, por p or consiguiente, no consume mucha energ´ energ´ıa. En la figura 2.7, se muestra la composici´on on interna de un servo motor, se puede observar observar la circui circuiter ter´´ıa de control, control, el motor DC, un potenci´ ometro, ometro, un juego de pi˜ nones, nones, y la caja. Tambi´ ambi´en en puede ver los 3 cables cables de conexi´ conexi´ on on externa. Uno es para alimentaci´on on Vcc (+5volts), (+5volts), conexi´ conexi´ on on a tierra GND y el cable blanco o amarillo es el de control.
Figura 2.7: Composici´oon n interna servo motor.
Funcionamiento El motor del servo tiene algunos circuitos de control y un potenci´ometro conectado al eje central central del servo servo motor. Este potenci´ ometro ometro permite perm ite a la circuiter circui ter´´ıa de control, supervisar el ´angulo angulo actual del servo motor. Si el eje est´a en el ´anangulo correcto, entonces el motor est´a apagado. Si el circuito chequea que el
10
2 Marc Marco o te´ teorico ´ orico
´angulo no es el correcto, el motor girar´a en la direcci´on angulo on adecuada hasta llegar al ´aangulo ngulo correcto. El eje del servo es capaz de llegar alrededor de los 180 grados. Un servo normal se usa para controlar un movimiento angular de entre 0 y 180 . La cantidad de voltaje aplicado al motor es proporcional a la distancia que ´este este necesita viajar. viajar . As´ As´ı, si el eje necesita regresar una distancia grande, el motor regresar´a a toda velocidad. Si este necesita regresar regresar s´olo olo una peque˜ na na cantidad, el motor correr´a a una velocidad m´as as lenta. A esto se le llama control proporcional. En la figura 2.8 se muestra el diagrama de bloques de la composici´on on de un servo b´aasico, sico, que cuenta con una motor, seguido de un juego de engranes que proporcionan una reducci´on on de velocidad del motor, un sensor de posici´on, on, que es un simple potenci´oometro metro que est´a sujeto al eje, mide hacia d´onde onde est´a ubicad ubi cadoo en todo momen momento, to, es as´ as´ı como como la tarjeta tarjeta control controlador adoraa sabe hacia hacia d´onde onde mover al motor. Esta se˜nal nal entra a un amplificador de error junto con una se˜ nal nal de tensi´oon n proporcionada por el controlador PWM, y sale hasta la entrada del motor DC indic´andole andole cuanto debe este girar. ◦
◦
Figura 2.8: Diagrama de bloques servo motor. Como se dijo anteriormente, el servo cuenta con un pin de control el cual acepta una se˜ nal nal de modulaci´on on por ancho de pulso (PWM), la cual puede ser f´acilmente acilmente producida por cualquier µC como lo es la placa de Arduino. Esta se˜ nal nal es la que le va a decir al servo al cual ´angulo angulo posicionarse. La se˜ nal nal PWM recibida por el servo se componen unicamente u ´ nicamente de variaciones en la longitud del pulso, la longitud del pulso es proporcional al ´angulo angulo al cual el motor debe girar. El rango de la longitud del pulso corresponde a un m´ınimo de 1 ms y un m´aximo aximo de 2 ms. El pulso de 1 ms va a corresponder a una rotaci´on on hasta un angulo ´angulo de 0 , y el de 2 ms a una rotaci´on on hasta 180 . Cualquier pulso entre 1 ms y 2 ms va a rotar el eje del servo al correspondiente angulo. En la figura 2.9 se muestra la manera en lo que anterior se aplica, donde un pulso de 1,5 ms mueve el eje a un angulo ´angulo de 90 . ◦
◦
◦
2.6. Protocolo Protocolo de comunica comunicaci´ ci´ on o n del bus I2C
11
Figura 2.9: Funcionamiento servo motor.
2.6
Pr Prot otoco ocolo lo de co com mun unic icac aci´ i´ o on n del bus I2C
El bus I2C fue dise˜ nado nado por Phillips a principios de los 80, para permitir una f´acil acil comunicaci´on on entre componentes dentro de un mismo circuito. El nombre I2C viene de Inter-Integrated Circuit, traducido como inter circuitos integrados, algunas veces es llamado IIC o I 2 C bus. El bus I2C, un protocolo que facilita la comunicaci´oon n entre entre microcontrolador microcontroladores, es, memorias y otros dispositivos con cierto nivel de “inteligencia”, s´olo olo requiere de dos l´ıneas de se˜ nal, nal, por lo que es llamado TWI (Two Wire Inface) o interfaz de dos hilos. Permite el intercambio de informaci´on on entre muchos dispositivos a una velocidad aceptable, de unos 100 Kbits por segundo. (Carletti, 2011). La comunicaci´on on de datos del bus I2C es serial y s´ s´ıncrona. Las dos se˜ se nales n ˜ ales del bus son bidireccionales y de drenaje abierto, una de la se˜nales nales del bus marca el tiempo la SCL (serial clock) clo ck) que es la l´ınea de los lo s pulsos de reloj que sincronizan el sistemaSDA y la otra otr a que es laYa l´ınea para intercambiar datos entro los dispositivos (serial data). queusada ambas se˜nales nales son de drenaje abierto est´an an se deben de polarizar en estado alto por medio de resistencia de pull-up (conectadas a la alimentaci´on), on), y adem´as as todos los dispositivos conectados al bus deben compartir la misma tierra. (Carletti, 2011).
Figura 2.10: Bus I2C.
12
2 Marc Marco o te´ teorico ´ orico
En la figura 2.10 se puede ver la manera en que varios dispositivos se conectan al bus, y como las l´ıneas est´an an en estado alto cuando se encuentran inactivas. Una de los dispositivos, el cual controla todo el proceso es llamado maestro y los dispositivos que responden al maestro son llamados esclavos. Carletti (2011) propone una definici´on on de los t´erminos erminos usados en el protocolo I2C, que resultan muy ´utiles utiles en este proyecto: proyecto: •
•
•
•
•
Maestro (Master): Dispositivo que determina los tiempos y la direcci´on on del tr´afico afico en el bus. Es el unico u ´ nico que aplica los lo s pulsos de relo j en la l´ınea ınea SCL. Cuando se conectan varios dispositivos maestros a un mismo bus la configuraci´ configuraci´ on on obtenida se denomina ”multi-maestro”. Esclavo Esclavo (Slave): (Slave): Todo dispositivo dispositivo conectado conectado al bus que no tiene la capacidad de generar pulsos de reloj. Los dispositivos esclavos reciben se˜nales nales de comando y de reloj generados desde el maestro. Bus libre (Bus Free): Estado en el que ambas l´ıneas (SDA y SCL) est´ an an inactivas, presentando un estado l´ogico o gico alto. Es el ´u unico nico momento en que un dispositivo maestro puede comenzar a hacer uso del bus. Comienzo (Start): Se produce cuando un dispositivo maestro ocupa el bus, generando la condici´on. on. La l´ınea de datos (SDA) toma un estado bajo mientras que la l´ınea de reloj (SCL) permanece alta. Parada (Stop): Un dispositivo maestro puede generar esta condici´on, on, dejando dej ando libre el bus. bus. La l´ınea ınea de datos datos y la de rel reloj oj toman toman un estado estado l´ogico ogico alto.
•
•
•
Dato v´alido alido (Valid Data): Situaci´on on presente cuando un dato presente en la l´ınea SDA es estable establ e al a l ti tiempo empo que la l´ınea SCL est´a a nivel l´ogico ogico alto. Formato de Datos (Data Format): La transmisi´on on de un dato a trav´ es es de este bus consiste de 8 bits de dato (1 byte). A cada byte transmitido al bus le sigue un noveno pulso de reloj durante el cual el dispositivo receptor del byte debe generar un pulso de reconocimiento Reconocimiento (Acknowledge): El pulso de reconocimiento, conocido como ACK (del (de l ingl´ in gl´eess Acknowl Acknowledge), edge), se logra l ogra colocando colo cando la l´ınea de datos d atos a un nivel l´oogico gico bajo durante el transcurso del noveno pulso de reloj.
2.6. Protocolo Protocolo de comunica comunicaci´ ci´ on o n del bus I2C
•
13
Direcci´on on (Address): Todo dispositivo dise˜ nado nado para funcionar en este bus posee su propia y unica u ´ nica direcci´on on de acceso, preestablecida por el fabricante. Hay dispositivo fabricante. dispositivoss que permiten definir externamen externamente te parte de la direcci´oon n de acceso, lo que habilita que se pueda conectar en un mismo bus un conjunto conjunto de dispositivos dispositivos del mismo tipo, sin problemas de identificaci´ on. on. La direcci´on on 00 es la denominada ”de acceso general”; a ´esta esta responden r esponden todos los dispositivos conectados al bus.
•
Lectura/Escritura (Bit R/W): Cada dispositivo tiene una direcci´on o n de 7 bits. El octavo octavo bit (el menos significativo) significativo) que se env´ env´ıa durante durante la operaci´on on de direccionamiento, completando el byte, indica el tipo de operaci´on o n a realizar. Si este bit es alto el dispositivo maestro lee informaci´on on proveniente de un dispositivo esclavo. Si este bit es bajo, el dispositivo disposit ivo maestro maestro escribe informaci´ informaci´ on on en un dispositivo esclavo.
Adem´ as as cabe mencionar que la se˜nal nal de ACK (acknowledgement, confirmaci´on) on) es enviada/recibida desde ambos lados despu´ es es de cada transferencia, haciendo que reduzcan los errores en la comunicaci´on. on. (Carletti, 2001). Las ventajas m´as as significativas de este protocolo de comunicaci´on on son: •
Solo dos l´ıneas ıneas en el bus son requeridas.
•
Simple relaci´oon n maestro/esclavo existente entre todos los dispositivos.
•
•
Cada dispositivo conectado al bus es direccionado por software mediante una unica u ´ nica direcci´on. on. No hay estrictos requerimientos de tasa de baudios (baud rate), ya que el master es el que genera la se˜n nal al de reloj en el bus.
3
Desarrollo
Esta primer parte abarca desde la conexi´on on de los dispositivos al arduino as´ as´ı como el montaje de la estructura y la programaci´on on del arduino.
3.1 3. 1
Se Sens nsor or ML MLX9 X906 0614 14
Lo primero en este proyecto es conectar al arduino y poner en funcionamiento el sensor MLX90614, lo cual se va a desarrollar en los siguientes apartados. Conexi´ on on Sensor MLX90614
Como ya se dijo anteriormente este sensor se va a conectar usando el protocolo serial I2C al arduino, para ello el arduino va ser usado como maestro y el sensor como esclavo. Siguiendo el diagrama de conexi´on on de I2C de la figura 2.10, se deben conectar las l´ l´ıneas SDA y SCL de cada dispositivo, en el caso del arduino estas l´ıneas estas situadas en los pines anal´oogicos gicos 4 y 5 respectivamente, en el caso del MLX90614 MLX90614 ser´ ser´ıan los pines 2 y 1 respectiv respectivamente amente como se ve en la figura 2.6. La conexi´on on f´ısicamente se ver´ ver´ıa de la forma como muestra en la figura 3.1.
Figura 3.1: Conexi´oon n MLX90614. MLX90614. 15
16
3 Des Desarr arroll ollo o
Si se recuerda el diagrama de la figura 2.10, se puede notar que se conectan unas resistencia resistenciass de pull-up pull-up para mantener mantener las l´ıneas en alto mientras mientras el bus este libre, pero en la figura 3.1 no se observan observan estas resistencias, resistencias, esto es debido debido a que estas resistencias de pull-up se pueden implementar internamente en el arduino por c´oodigo, digo, lo cual se explica en la siguiente secci´on. on. Programando el protocolo I2C.
Para implementar el protocolo I2C para comunicar el arduino con el MLX90614, se debe hacer de una forma sencilla, sencilla, para ello se va a hacer uso de librer´ librer´ıa ya implement imple mentada ada para este prop´osito. osito. Arduino proporciona una librer´ librer´ıa para comunicaci´ on on I2C llamada Wire, que en realidad es muy sencilla de usar, pero en el caso de este sensor, esta librer´ıa ıa no va a ser servir para iniciar la comunicaci´on on tal como est´a planteada esta librer´ librer´ıa, hay que realizarle unos cambios para que funcione y agregarle funciones extra para que logre funcionar con el MLX90614. MLX906 14. Aparte de la librer´ librer´ıa Wire de Arduino, Arduino, se puede encontrar encontrar la librer´ıa ıa i2cmast i 2cmaster er desarro de sarrollada llada por Peter Fleury, pero per o igualmente ig ualmente a esta est a librer´ li brer´ıa ıa hay que realizarle algunos cambios, como renombrar y cambiar ciertos archivos de la librer´ıa, ıa, sin embargo, la gente de bildr.org se encarg´o de esta tarea y realizoo los cambios realiz cambios a la librer´ librer´ıa para que pueda funcionar con el MLX90614, MLX90614, debido a que esta librer´ librer´ıa es de c´ odigo odigo abierto y as´ as´ı la redistribuyeron en su p´agina agina de internet, por lo que solo basta con descargarla e incorporarla junto con las dem´as as librer´ librer´ıas de arduino. (bildr, 2011) Entonces, prosiguiendo con el protocolo I2C, lo primero es incluir la librer´ıa para p ara as as´´ı p poder oder hacer uso de d e sus funciones. funcio nes. Por medio med io de d e la funci´oon n i2c init() de la libreria el arduino en condici´on on de maestro inicializa el bus I2C. Como se mencion´o anteriormente, se pueden usar las resistencias de pull-up internas del arduino por c´odigo, odigo, para ello se va a recurrir a modificar los registros del Arduino, Arduin o, espec´ espec´ıficamente ıficamente los registros registros de los puertos, puertos, investiga investigando ndo en la p´ aagina de Arduino, se puede encontrar que en el PORTD est´an an mapeados los pines digitales de 0 al 7, en el PORTB est´an an mapeados los pines digitales de 8 al 13, y en el PORTC est´an an mapeados los pines anal´ogicos ogico s de 0 al a l 55,, aass´ı q que ue como las l´ıneas SDA y SCL corresponden corresponden a los pines anal´ ogicos ogicos 4 y 5, se va a manipular el registro PORTC para implementar las resistencias de pull-up (Arduino, (Ardui no, 2014c). Entonces, lo que se hace es escribir un uno l´ogico Entonces, ogico en las posiciones 4 y 5 del PORTC, de esta manera se obtiene el mismo resultado que si se conectaran dos resistencias resist encias de pull-up en las l´ıneas manteni´endolas endola s en alto. Ahora, para poder iniciar la comunicaci´on on con el MLX9014, se debe conocer la direcci´on on de esclavo para que el maestro (Arduino) pueda comuni-
3.1. Sensor Sensor MLX9061 MLX90614 4
17
carse directamente. Recurriendo a la hoja de datos del MLX90614 (ver en los anexos), se encuentra que la direcci´on on de esclavo (slave address, SA) del MLX90614 es la 0X5A, as a s´ı que se va a direccionar a esa direcci´on on para comunicarse con el sensor, sin embargo, cabe mencionar que como en este caso solo se tiene un dispositivo como esclavo conectado, se puede recurrir a la direcci´on on de acceso general 0x00 para acceder a ´el, el, pero esto solo en caso de no conocerse cono cerse la direcci´ direcci´ on on de esclavo y que este sea el unico u ´ nico conectado, ya que de este modo el maestro se comunica con todos los esclavos a la vez. De nuevo recurriendo a la hoja del fabricante, se busca las direcciones del contenido de la RAM del MLX90614 para saber d´onde onde se alojan la temperatura ambiente (TA) (TA) y la de temperatura de ob jeto (Tobj1), as´ as´ı que de la figura 3.2 3 .2 se nota que la TA est´a en la direcci´on on 0x06 y la Tobj1 en 0x07.
Figura 3.2: Direcciones de RAM MLX90614 (Melexis, 2013). Continuando con la hoja de fabricante, se encuentra la manera de calcular la temperatura a partir de lo obtenido en RAM, indicando que la entrega de la temperatura se da en dos bytes, ya que el protocolo I2C limita el envi´o a solo 1 byte a la vez. El fabricante adem´as as proporciona una f´ormula ormula para calcular la temperatura (v´alida alida tanto para la TA y la TO), la cual se muestra en la ecuaci´on on 3.1 (Melexis, 2013). T [ [ K ] = Toreg ∗ 0,02
(3.1)
As As´´ı que, que, la temperat temperatura ura disponib disponible le en RAM tienen tienen una res resolu oluci´ ci´ oon n de 0.02 C y est´a en Kelvin, el bit m´as as significativo de los 16 bits corresponde corresponden a una bandera (flag) que indica si hubo un error en la medici´on (si vale 1 es un error). Para ejemplificar el c´alculo alculo de temperatura temperatura se considera considera el n´ umero umero obtenido de RAM 0x3BA4, as as´´ı que el resultado resultado se calcula de la siguiente manera: ◦
1. Se convierte a un n´ umero umero decimal: decimal: 0x3BA4=15268 0x3BA4=15268
18
3 Des Desarr arroll ollo o
2. El numero decimal decimal se multipli multiplica ca por 0.02: 15268*0.02=305,36 15268*0.02=305,36 K 3. Finalmente Finalmente se convierte a grados Celsius: Celsius: 305,36 K-273,15=32,21 K-273,15=32,21 C ◦
La hoja del fabricante adem´as as dice la manera en la que debe establecer la comunicaci´ on, on, y se muestra en la figura 3.3.
Figura 3.3: Formato protocolo del bus MLX90614 (Melexis, 2013). De la figura 3.3,se observa que la secuencia para comunicarse es primero enviar 1 bit como condici´on on inicial, luego la direcci´on on SA, seguido de un bit con un valor de 1 (para un escritura Write equivale a 1), en seguida se debe esperar por un ACK por parte del esclavo reconociendo que es la direcci´on correcta, si se recibe un NACK significa que el dispositivo se encuentra ocupado y se debe esperar a que se reciba el ACK para continuar, y hasta este punto seria lo que se necesita para iniciar la comunicaci´oon n con el esclavo (el sensor MLx90614). MLx90 614). Justo estos son los cambios cambios que se le deben hacer a la librer librer´´ıa para que pueda funcionar con el MLX90614, debido a esta particular forma de protocolo usado en el bus I2C. Para poder hacer lo anterior mencionado se usa la funci´oon n de la librer´ıa ıa “ i2c start wait()”, que lo hace es enviar la condici´on on de inicio, transfiere la direcci´ on on y espera a recibir el ACK, el par´ametro ametro que recibe la funci´on on es un byte que debe tener la estructura de trama que se muestra en la figura 3.4.
Figura 3.4: Estructura de trama escritura (Melexis, 2013).
3.1. Sensor Sensor MLX9061 MLX90614 4
19
Como la SA corresponden a 7 bits (0x5A en este caso), estos necesitan estar en la parte alta del byte de trama, por lo que esta direcci´on on se ingresa en la variable dispositivo y corre a la izquierda 1 posici´on. on. Este c´odigo odigo se veria: int disposit dispositivo ivo = 0x5A
View more...
Comments