Ejercicio: construir un datalogger
2
INSTRUMENTACIÓN AVANZADADepartamento de Ingeniería Eléctrica y Electromecánica
Facultad de Ingeniería – Universidad Nacional de Mar del Plata
El datalogger o registrador debe sensar la temperatura ambiente cada 1s y
guardarla junto a la fecha y hora de adquisición en un archivo .txt alojado
en una memoria µSD. Las mediciones y el estado del registro se deben
mostrar en una pantalla LCD imitando algunas versiones comerciales como
se muestran a continuación:
Componentes necesarios
3
INSTRUMENTACIÓN AVANZADADepartamento de Ingeniería Eléctrica y Electromecánica
Facultad de Ingeniería – Universidad Nacional de Mar del Plata
• Sensor de temperatura LM 35
- Opera con una tensión de 4 a 30 V.
- Entrega una tensión de salida linealmente proporcional a la temperatura
en grados Celsius: 10mV/˚C.
- Exactitud a 25˚C de 0.5˚C.
- Rango de medición: -55˚C a 150˚C
Componentes necesarios
4
INSTRUMENTACIÓN AVANZADADepartamento de Ingeniería Eléctrica y Electromecánica
Facultad de Ingeniería – Universidad Nacional de Mar del Plata
• Sensor de temperatura LM 35
Componentes necesarios
5
INSTRUMENTACIÓN AVANZADADepartamento de Ingeniería Eléctrica y Electromecánica
Facultad de Ingeniería – Universidad Nacional de Mar del Plata
• Microcontrolador
ARDUINO UNO ó ARDUINO MEGA
Componentes necesarios
6
INSTRUMENTACIÓN AVANZADADepartamento de Ingeniería Eléctrica y Electromecánica
Facultad de Ingeniería – Universidad Nacional de Mar del Plata
• LCD (Liquid Crystal Display) 20x4 (20 columnas y 4 filas)
- Se comunica con Arduino a través del protocolo I2C.
- Se comanda a través de la librería LiquidCrystal_I2C.h
Adaptador paralelo/I2C
LCD 20x4
Componentes necesarios
7
INSTRUMENTACIÓN AVANZADADepartamento de Ingeniería Eléctrica y Electromecánica
Facultad de Ingeniería – Universidad Nacional de Mar del Plata
LCD 20x4
Adaptador paralelo/I2C
Componentes necesarios
8
INSTRUMENTACIÓN AVANZADADepartamento de Ingeniería Eléctrica y Electromecánica
Facultad de Ingeniería – Universidad Nacional de Mar del Plata
• RTC (Real Time Clock ó Reloj de Tiempo Real)
- Se basa en el intregrado DS1307.
- Se comunica con Arduino o PIC a través del protocolo I2C. (pines SCL y SDA)
- Posee una salida de señal de clok (pin SQ).
- Se comanda a través de la librería Wire.h y DS1307RTC.h
- Además:
- Posee una memoria EEPROM I2C: 24c32 que se puede usar para almacenar variables.
- Posee terminales para agregar un sensor de temperatura (salida sobre pin DS)
Componentes necesarios
9
INSTRUMENTACIÓN AVANZADADepartamento de Ingeniería Eléctrica y Electromecánica
Facultad de Ingeniería – Universidad Nacional de Mar del Plata
• Lecto-grabadora de SDcard
- Se comunica con Arduino a través del protocolo de comunicación SPI.
- Se comanda a través de la librería SD.h
Otra opción es usar un Shields disponible
10
INSTRUMENTACIÓN AVANZADADepartamento de Ingeniería Eléctrica y Electromecánica
Facultad de Ingeniería – Universidad Nacional de Mar del Plata
• Datalogger shield
Tensión de alimentación 5V (se alimenta
directamente desde la tarjeta Arduino).
Reloj de Tiempo Real (RTC) basado en el
chip DS1307.
Pila de litio para mantener el chip en hora
cuando el Arduino está sin alimentación.
Lecto-grabadora de memoria SD.
Conexión con Arduino a través del bus
SPI (pines 10, 11, 12, 13). El pin 10 es el pin de selección para utilizar la memoria SD.
El RTC se controla a través de los pines SCL y SDA (bus I2C).
Comando desde librería DS1307RTC.h, Time.h , y SD.h.
Dispone de un área experimental para soldar conectores, componentes y sensores.
Se monta arriba de una Arduino UNO, o se conecta con cables a una Arduino Mega.
11
INSTRUMENTACIÓN AVANZADADepartamento de Ingeniería Eléctrica y Electromecánica
Facultad de Ingeniería – Universidad Nacional de Mar del Plata
• Ethernet shield
Tensión de alimentación 5V (se alimenta
directamente desde la tarjeta Arduino).
Controlador ethernet: chip Wiznet W5100
con memoria flash de 16K.
Proporciona una red IP con capacidad de
comunicación TCP y UDP.
Puede operar como cliente o servidor.
Hasta 4 conexiones simultáneas.
Velocidad: 10/100Mbps Conexión con Arduino a través del Puerto SPI (pines 10, 11, 12, 13).
El pin 10 es para seleccionar la conexión Ethernet.
Provista con lecto-grabadora de memoria micro-SD (pin 4 para seleccionar la
memoria).
Comando desde librería SPI.h Ethernet.h y SD.h.
Se monta arriba de una Arduino UNO, Mega o compatibles y permite que se apilen
otros shields sobre ella.
Otra opción es usar un Shields disponible
I2C bus (Inter-Intergrated Circuit)
12
INSTRUMENTACIÓN AVANZADADepartamento de Ingeniería Eléctrica y Electromecánica
Facultad de Ingeniería – Universidad Nacional de Mar del Plata
• Hay dos líneas comunes entre todos los dispositivos:
-SDA (Serial Data): línea de datos semibidireccional.
-SCL (Serial Clock): línea de pulsos de clock generados por el maestro
que sincronizan la transmisión de datos.
• Cada esclavo tiene una dirección única de 7 bits que lo identifica. La
misma se puede configurar por hardware o por software.
I2C bus (Inter-Intergrated Circuit)
13
INSTRUMENTACIÓN AVANZADADepartamento de Ingeniería Eléctrica y Electromecánica
Facultad de Ingeniería – Universidad Nacional de Mar del Plata
• El bus I2C tiene una arquitectura de tipo maestro-esclavo. El dispositivo
maestro inicia la comunicación con los esclavos, y puede mandar o recibir
datos de los esclavos. Los esclavos no pueden iniciar la comunicación (el
maestro tiene que preguntarles), ni hablar entre si directamente.
• Es posible disponer de más de un maestro, pero solo uno puede ser el
maestro cada vez. El cambio de maestro supone una alta complejidad, por
lo que no es algo frecuente.
• El bus I2C es síncrono. El maestro proporciona una señal de reloj, que
mantiene sincronizados a todos los dispositivos del bus. De esta forma, se
elimina la necesidad de que cada dispositivo tenga su propio reloj, de tener
que acordar una velocidad de transmisión y mecanismos para mantener la
transmisión sincronizada (como en UART).
I2C bus (Inter-Intergrated Circuit)
14
INSTRUMENTACIÓN AVANZADADepartamento de Ingeniería Eléctrica y Electromecánica
Facultad de Ingeniería – Universidad Nacional de Mar del Plata
• Para poder realizar la comunicación con solo un cable de datos, el bus I2C
emplea una trama (formato de los datos enviados) amplia. La comunicación
costa de:
- 7 bits con la dirección del dispositivo esclavo a comunicar,
- 1 bit de sentido (indica si el maestro quiere enviar o recibor datos),
- 1 bit de validación,
- 1 o más bytes de datos enviados o recibidos del esclavo,
- 1 bit de validación.
Funcionamiento del I2C bus (Inter-Intergrated Circuit)
15
INSTRUMENTACIÓN AVANZADADepartamento de Ingeniería Eléctrica y Electromecánica
Facultad de Ingeniería – Universidad Nacional de Mar del Plata
• Con estos 7 bits de dirección es posible acceder a 112 dispositivos en un
mismo bus (16 direcciones de las 128 direcciones posibles se reservan para
usos especiales)
• Este incremento de los datos enviados (18bits por cada 8bits de datos) supone
que, en general, la velocidad del bus I2C es reducida. La velocidad estándar
de transmisión es de 100khz, con un modo de alta velocidad de 400khz.
Funcionamiento del I2C bus (Inter-Intergrated Circuit)
16
INSTRUMENTACIÓN AVANZADADepartamento de Ingeniería Eléctrica y Electromecánica
Facultad de Ingeniería – Universidad Nacional de Mar del Plata
I2C bus (Inter-Intergrated Circuit)
17
INSTRUMENTACIÓN AVANZADADepartamento de Ingeniería Eléctrica y Electromecánica
Facultad de Ingeniería – Universidad Nacional de Mar del Plata
• Ventajas:
- Requiere menos cables que el SPI bus.
- Dispone de mecanismos para chequear que la información ha llegado.
• Desventajas:
- Su velocidad es media o baja en comparación con otros buses.
- La comunicación no es full duplex, sino half duplex.
- No hay verificación de que el contenido del mensaje sea correcto.
I2C bus (Inter-Intergrated Circuit)
18
INSTRUMENTACIÓN AVANZADADepartamento de Ingeniería Eléctrica y Electromecánica
Facultad de Ingeniería – Universidad Nacional de Mar del Plata
• Arduino dispone de soporte I2C por hardware vinculado físicamente a ciertos
pines. También es posible emplear cualquier otro grupo de pines como bus I2C
a través de sofware, pero en ese caso la velocidad será mucho menor.
• Los pines a los que está asociado varían de un modelo a otro. La siguiente
tabla muestra la disposición en alguno de los principales modelos.
SPI bus (Serial Peripheral Interface)
19
INSTRUMENTACIÓN AVANZADADepartamento de Ingeniería Eléctrica y Electromecánica
Facultad de Ingeniería – Universidad Nacional de Mar del Plata
SPI bus (Serial Peripheral Interface)
20
INSTRUMENTACIÓN AVANZADADepartamento de Ingeniería Eléctrica y Electromecánica
Facultad de Ingeniería – Universidad Nacional de Mar del Plata
• Hay tres líneas comunes entre todos los dispositivos:
- MISO (Master In Slave Out): por la cuál el esclavo envía datos al maestro,
- MOSI (Master Out Slave In): por la cuál el maestro envía datos al esclavo,
- SCK (Serial Clock): línea de pulsos de clock emitidos por el maestro que
sincronizan la transmisión de datos.
• Y una línea específica para cada periférico o esclavo:
- SS (Slave Select): pin a través del cuál el maestro habilita o deshabilita la
comunicación.
SPI bus (Serial Peripheral Interface)
21
INSTRUMENTACIÓN AVANZADADepartamento de Ingeniería Eléctrica y Electromecánica
Facultad de Ingeniería – Universidad Nacional de Mar del Plata
• La comunicación de datos entre maestro y esclavo se realiza en dos líneas
independientes, una del maestro a los esclavos, y otra de los esclavos al
maestro. Por tanto la comunicación es Full Duplex, es decir, el maestro puede
enviar y recibir datos simultáneamente.
Funcionamiento del SPI bus (Serial Peripheral Interface)
22
INSTRUMENTACIÓN AVANZADADepartamento de Ingeniería Eléctrica y Electromecánica
Facultad de Ingeniería – Universidad Nacional de Mar del Plata
• Por defecto el maestro mantiene en estado HIGH todas las líneas SS. Cuando
el maestro quiere establecer comunicación con un esclavo pone a LOW la
línea SS correspondiente, lo que indica al esclavo que debe iniciar la
comunicación.
Funcionamiento del SPI bus (Serial Peripheral Interface)
23
INSTRUMENTACIÓN AVANZADADepartamento de Ingeniería Eléctrica y Electromecánica
Facultad de Ingeniería – Universidad Nacional de Mar del Plata
• En cada pulso de la señal de reloj, normalmente en el flanco de subida, el
dispositivo maestro envía un bit al esclavo a la vez que puede recibir un
bit del esclavo seleccionado.
Funcionamiento del SPI bus (Serial Peripheral Interface)
24
INSTRUMENTACIÓN AVANZADADepartamento de Ingeniería Eléctrica y Electromecánica
Facultad de Ingeniería – Universidad Nacional de Mar del Plata
• La trama (los datos enviados) no sigue ninguna regla, es decir, se puede
enviar cualquier secuencia arbitraria de bits. Esto hace que los dispositivos
conectados necesiten tener pre-acordado la longitud y significado de lo que
van a enviar y recibir.
SPI bus (Serial Peripheral Interface)
25
INSTRUMENTACIÓN AVANZADADepartamento de Ingeniería Eléctrica y Electromecánica
Facultad de Ingeniería – Universidad Nacional de Mar del Plata
• Ventajas:
- Alta velocidad de trasmisión (hasta 8 Mhz en Arduino) y Full Duplex
- Integrado en muchos dispositivos.
- Permite enviar secuencias de bit de cualquier tamaño.
• Desventajas:
- Se requieren 3 cables (SCK, MOSI y MISO) + 1 cable adicional (SS) por
cada dispositivo esclavo.
- Solo es adecuado a corta distancias (hasta 30cm)
- No se dispone de ningún mecanismo de control que permita saber si el
mensaje ha sido recibido correctamente.
- La longitud de los mensajes enviados y recibidos tiene que ser conocida
por ambos dispositivos.
SPI bus (Serial Peripheral Interface)
26
INSTRUMENTACIÓN AVANZADADepartamento de Ingeniería Eléctrica y Electromecánica
Facultad de Ingeniería – Universidad Nacional de Mar del Plata
Circuito a realizar: opción 1 (Arduino UNO + Datalogger shield)
28
INSTRUMENTACIÓN AVANZADADepartamento de Ingeniería Eléctrica y Electromecánica
Facultad de Ingeniería – Universidad Nacional de Mar del Plata
LM 35