Practica 005 Sensor Temp miniSD Boton LCD I2C
Practica 005 Sensor Temp miniSD Boton LCD I2C
Objetivo de la práctica:
El alumno empleará el sensor Lm35 y un botón para escribir y leer los datos de temperatura en una
Memoria MicroSD y usará un bus I2C para controlar un LCD que muestre la temperatura y los datos
guardados en la SD.
Resultados esperados.
Medición de temperatura por medio del LM35, el almacenamiento de sus datos por medio de una
memoria MicroSD y si visualización por medio de un botón.
Marco teórico.
Sensor LM35
El LM35 es un sensor de temperatura con una precisión calibrada de 1 °C. Su rango de medición abarca
desde -55 °C hasta 150 °C. La salida es lineal y cada grado Celsius equivale a 10 mV, por lo tanto:
150 °C = 1500 mV
-55 °C = -550 mV1
Opera de 4v a 30v.
El LM35 no requiere de circuitos adicionales para calibrarlo externamente. La baja impedancia de salida,
su salida lineal y su precisa calibración hace posible que este integrado sea instalado fácilmente en un
circuito de control. Debido a su baja corriente de alimentación se produce un efecto de auto
calentamiento muy reducido.
Esta forma de comunicación es usada por varios dispositivos para el intercambio de información, uno
de ellos es el lector de memorias SD.
En las memorias tenemos tres tamaños que son: Estándar, mini y micro SD.
En cuanto a su capacidad tenemos: Estandar capacity, High Capacity, Extended Capacity y entrada-
salida. Las más utilizadas en Arduino son las dos primeras.
Para conectar el módulo de memoria es necesario emparejar sus pines que marca el sistema SPI para
la comunicación del dispositivo que son básicamente la siguiente
Es un protocolo de transmisión que permite alcanzar velocidades muy altas y que se diseñó pensando
en comunicar un micro controlador con distintos periféricos y que funciona a full dúplex.SPI utiliza una
solución síncrona, porque utiliza unas líneas diferentes para los datos y el Clock. El Clock es una señal
que indica al que escucha exactamente cuándo leer las líneas de datos, con lo que el problema de
perdida de sincronía se elimina completamente.
Para la comunicación de la memoria y el Arduino es necesario conectar estos tres pines más el pin SS
(standard-slave) que es indicada por los fabricantes.
Es un estándar creado por Phillips y ofrece una norma que especifica la velocidad, niveles de tensión y
protocolo a seguir para poder realizar la comunicación entre dispositivos. Esa norma se llamó Inter
Integrated Circuits bus, o IIC =I2C, y se convirtió en un estándar en la industria.
Es un protocolo de dos hilos de control, uno para transmitir los datos, SDA y otro, el reloj asíncrono que
indica cuando leer los datos SCL, GND y 5V. Esto nos ahorra puertos y su implementación es más fácil.
Los pines I2C varían de acuerdo al modelo de Arduino, en la siguiente tabla se muestra cuáles son los
pines I2C para cada modelo de Arduino.
Cada dispositivo conectado al bus I2C y cada uno tiene su dirección exclusiva, de 7 bits, con lo que
podemos conectar (2 7 ) 128 dispositivos.
Uno de estos componentes, debe actuar como master, es decir controla el reloj.
No se requiere una velocidad de reloj estricta, ya que es el master quien controla el Clock.
El I2C permite la conexión Master Slave, siendo el microcontrolador el master y los demás dispositivos
los esclavos. Es importante destacar que cada slave tiene una dirección asignada que permitirá indicar
a cuál de ellos se está refiriendo en el control de la información.
También se debe de tener presentes las resistencias de Pull-Up que pueden ser requeridas o no
dependiendo del dispositivo. En nuestro caso para el LCD no son necesarias.
Las siglas LCD significan “Liquid Cristal Display” ó pantalla de cristal líquido. Es una pantalla plana
basada en el uso de una sustancia líquida atrapada entre dos placas de vidrio, haciendo pasar por este
una corriente eléctrica a una zona específica, para que así esta se vuelva opaca, y además cuenta
(generalmente) con iluminación trasera.
También hay las pantallas LCD de color, cada pixel individual se divide en tres cédulas o sub pixeles
con los colores RGB (Rojo, Verde y Azul) respectivamente. Y así cada pixel puede controlarse para
producir una gran variedad de colores distintos.
Son una opción muy sencilla de usar, y por eso los displays LCD, han ganado terreno en los proyectos
electrónicos de todo tipo. Esto se debe a que:
Pueden ser configurados en su forma normal conectando todos sus pines hacia el Arduino más un
potenciómetro externo para controlar el brillo del display. También se puede usar el I2C, que nos
permite ahorrar puertos de conexión.
Para usar este tipo de dispositivo es necesario descargar su librería tanto para conexión normal como
en base a I2C. Por el momento, se hará usando el I2C debido a que permitirá hacer más fácil la conexión
para la continuación del ejercicio del lector de SD.
Método o función que crea un objeto de la clase LiquidCrystal_I2C, con dirección, columnas y filas
indicadas.
lcd.init()
Inicializa el módulo adaptador LCD a I2C, esta función internamente configura e inicializa el I2C y el
LCD.
lcd.clear()
Borra la pantalla LCD y posiciona el cursor en la esquina superior izquierda (posición (0,0)).
lcd.setCursor(col, row)
Posiciona el cursor del LCD en la posición indicada por col y row(x,y); es decir, establecer la ubicación
en la que se mostrará posteriormente texto escrito para la pantalla LCD.
lcd.print() o lcd.write()
Escribe un texto o mensaje en el LCD, su uso es similar a un Serial.print
lcd.scrollDisplayLeft()
Desplaza el contenido de la pantalla (texto y el cursor) un espacio hacia la izquierda.
lcd.scrollDisplayRight()
Se desplaza el contenido de la pantalla (texto y el cursor) un espacio a la derecha.
lcd.backlight();
Enciende la Luz del Fondo del LCD
lcd.noBacklight();
Apaga la Luz del Fondo del LCD
Material requerido.
Computadora, Arduino Uno, Cables, sensor LM35, memoria microSD, adaptador o lector, protoboard,
cable USB y cables dupont, resistencia de 10 kohms y 220 ohms
Desarrollo de la práctica
c) Escritura y lectura de datos del sensor LM35 a la memoria microSD por medio de
un botón y mostrar la escritura y lectura por medio de un Display de Cristal
Líquido (lcd) utilizando el bus I2C ( inter integrated
#include <SD.h>
#include <Wire.h> // librería para el I2C
#include <LiquidCrystal_I2C.h> //librería para el LCD e I2C
LiquidCrystal_I2C lcd(0x27,16,2); //lcd(dirección para I2C, 16 caracteres, 2 renglones)
// por lo general 0x27 es la dirección asignada para el lcd
File archivo;
float tempC;
int LED =7;
int BOTON =8;
int val = 0;
int estado = 0;
int viejo_estado = 0;
void setup(){
pinMode(LED,OUTPUT);
pinMode(BOTON,INPUT);
lcd.init(); // iniciamos el lcd
lcd.backlight(); // método que indica si se prende la luz de atrás.
Serial.println("Iniciando la MicroSD");
if (!SD.begin(4)) {
Serial.println("No se pudo leer la SD");
return;
}
Serial.begin(9600);
}
void loop() {
val= digitalRead(BOTON);
if ((val == HIGH) && (viejo_estado == LOW)){
estado=1-estado;
delay(1000);
}