SENSOR DE TEMPERATURA.

Texto completo

(1)

• OBJETIVO DEL PROYECTO:

Crear un programa que permita mostrar • ELEMENTOS UTILIZADOS:

o Netbook (“Conectar I

o Software de Arduino •

o Placa arduino (MEGA)

o x1 Resistencia.

SENSOR DE TEMPERATURA.

que permita mostrar en “serial monitor” la temperatura ambiente. (“Conectar Igualdad”).

Arduino (programa).

(MEGA).

(2)

o Cables.

o Mini protoboard.

o Sensor de temperatura (DHT11). (PRIMER PROYECTO) // lm35 arduino (SEGUNDO PROYECTO).

(3)

LM 35 características más relevantes son:

• Está calibrado directamente en grados Celsius. • La tensión de salida es proporcional a la temperatura. • Tiene una precisión garantizada de 0.5°C a 25°C. • Opera entre 4 y 30 voltios de alimentación. • Baja impedancia de salida.

• Baja corriente de alimentación (60uA).

• Bajo costo.

• PASO A PASO: • CODIGO FUENTE:

1: http://tallerarduino.com/2012/12/24/sensor-dht11-humedad-y-temperatura-con-arduino/ //Programa test para sensor DHT11 de humedad y temperatura

#define DHTPIN 8// Indicamos el pin del arduino donde conectamos el sensor byte bGlobalErr; //para pasar el codigo de error de vuelta de las funciones byte DHTDAT[5]; //Array para almacenar los bytes enviados por el sensor

int maxh=0,minh=100,maxt=0,mint=100,t,h; //variables para ir guardando las maximas de // humedad y temperatura y las minimas de humedad y temperatura

void setup() {

InitDHT(); // Inicializamos el pin empleado para leer el sensor

Serial.begin(9600); //Iniciamos comunicacion serie con el pc para ver los datos leidos Serial.println("Test sensor DHT11:");

(4)

}

void loop() {

ReadDHT(); // Leemos el sensor y almacenamos el resultados en variables globales switch (bGlobalErr)

{

case 0:

//Como en este sensor la humedad y la temperatura no nos sale con decimales, //podemos desechar los bytes 1 y 3 de la lectura del sensor

h=DHTDAT[0]; t=DHTDAT[2]; Serial.print("Humedad relativa: "); Serial.print(h); Serial.print(" %\t"); Serial.print("Temperatura: "); Serial.print(t); Serial.println("*C");

//Comprobacion de maximos y minimos de humedad y temperatura if (maxh<h) maxh=h; if (h<minh) minh=h; if (maxt<t) maxt=t; if (t<mint) mint=t; Serial.print("Max: "); Serial.print(maxh); Serial.print(" % "); Serial.print("Min: "); Serial.print(minh); Serial.print(" %\t"); Serial.print("Max: "); Serial.print(maxt); Serial.print(" *C "); Serial.print("Min: "); Serial.print(mint); Serial.println(" *C\n"); break; case 1:

Serial.println("Error 1: Condicion de start 1 no conocida."); break;

case 2:

Serial.println("Error 2: Condicion de start 2 no conocida."); break;

case 3:

Serial.println("Error 3: DHT checksum error."); break;

(5)

default:

Serial.println("Error: Encontrado codigo irreconocible."); break;

}

delay(1000);// Esperamos 1 segundo para la siguiente lectura }

// Initilize pin for reading void InitDHT(){ pinMode(DHTPIN,OUTPUT); digitalWrite(DHTPIN,HIGH); } void ReadDHT(){ bGlobalErr=0; byte dht_in; byte i;

// Enviamos el comando "start read and report" al sensor // Primero: ponemos a "0" el pin durante 18ms

digitalWrite(DHTPIN,LOW); delay(18);

delay(5);//TKB, frm Quine at Arduino forum

//Segundo: ponemos a "1" el pin durante 40us,enviamos el comando de "start read" al sensor digitalWrite(DHTPIN,HIGH);

delayMicroseconds(40);

//Tercero: Cambiamos el pin de Arduino a entrada de datos pinMode(DHTPIN,INPUT);

delayMicroseconds(40); //Esperamos 40 us dht_in=digitalRead(DHTPIN);

//si hay un 1 en la lectura del pin, indicamos que hay error de tipo 1 if(dht_in)

{

bGlobalErr=1; return; }

delayMicroseconds(80); //Esperamos 80us dht_in=digitalRead(DHTPIN);

//si no hay un 1 en la lectura del pin, indicamos que hay error de tipo 2 if(!dht_in){

bGlobalErr=2; return; }

/*Despues de 40us a nivel bajo, el pin deberia de estar durante 80us a nivel alto. Despues de esto comienza el envio del primer bit hasta alcanzar los 40 bits enviados. The routine "read_dht_dat()" expects to be called with the system already into this low.*/ delayMicroseconds(80); //Esperamos 80us

//Ahora comienza la recepcion de datos, son 5 bytes de datos, es decir 40 bits, almacenamos en un array de 5 bytes

(6)

for (i=0; i<5; i++)

DHTDAT[i] = read_dht_dat();

//Cuarto: Volvemos a configurar el pin del arduino como salida pinMode(DHTPIN,OUTPUT);

//Quinto:Ponemos a "1" el pin de salida digitalWrite(DHTPIN,HIGH);

//Comprobamos si los datos recibidos coinciden con el checksum recibido byte DHTCHECKSUM = DHTDAT[0]+DHTDAT[1]+DHTDAT[2]+DHTDAT[3];

//Si no coincide el byte recibido de checksum con la suma de los 4 primeros bytes enviamos error tipo 3 if(DHTDAT[4]!= DHTCHECKSUM)

bGlobalErr=3; };

byte read_dht_dat() {

//Cogemos 8 de los bits recibidos y los devolvemos como un byte. //Si por ejemplo recibimos 00000100 , devolvemos en decimal 4 byte i = 0;

byte result=0; for(i=0; i< 8; i++) {

//Entramos mientras dura el primer bit de start (a nivel bajo durante 50us) del byte

//Esperamos hasta que el pin se pone a nivel alto señalizando fin del la transmision del bit de start while(digitalRead(DHTPIN)==LOW);

//La linea de datos debera estar ahora a nivel alto durante 27 o 70us, //dependiendo si un "0" o un "1" está siendo enviado respectivamente delayMicroseconds(30); //Esperamos 30 us

if (digitalRead(DHTPIN)==HIGH)

result |=(1<<(7-i)); //Si despues de los 30us el pin permanece a "1" añadimos un 1 al byte, sino queda un "0"

//Esperamos hasta que el pin se vuelve a poner a nivel bajo, // el cual indica la señal de start del siguiente bit de la transmision while (digitalRead(DHTPIN)==HIGH);

}

return result; //devolvemos el resultado } --- LM35 float temp; int tempPin = 0; void setup() { Serial.begin(9600); } void loop() {

(7)

temp = analogRead(tempPin); temp = temp * (50.0 / 1024); Serial.print("TEMPRATURA = "); Serial.print(temp); Serial.print("°C"); Serial.println(); delay(1000); } --- http://hanez.org/2011/04/11/arduino-lm35-temperature-sensor/ float temp; int tempPin = 0; void setup() { Serial.begin(9600); } void loop() { temp = analogRead(tempPin); temp = temp * 0.48828125; Serial.println(temp); delay(1000); } MODIFICADO float temp; int tempPin = 0; void setup() { Serial.begin(9600); } void loop() { temp = analogRead(tempPin); temp = temp * 0.48828125; Serial.print("TEMPRATURA = "); Serial.print(temp); Serial.print("°C"); Serial.println(); delay(1000); } ---

(8)
(9)
(10)

• CREDITOS: (AUTOR, AGRADECIMIENTO) Elaborado por: Baltazar Lavallén.

Programa/s que fueron utilizado: Arduino ERW 1.0.4 música: -

Lugar de filmación o imágenes: Junín (BS.AS) E.E.S.T, N°2 “Patricias Argentinas”, LABORATORIO 4. Producción general: Baltazar Lavallén.

Personas importantes o todas que estan en el video: Baltazar Lavallén. Colaboración de: Esteban Beato, Maximiliano Torreta (profesores). Elaborado y editado por: Baltazar Lavallén.

Días anteriores:

Estuve tratando de bajar la librería e “instalarla” en el programa de arduino. . . Conectando los cables del arduino al protoboard, DHT11. . . Tengo problemas con internet. . .

Lunes 21 de octubre:

Hoy estoy por conectar el sensor DHT11 y encuentro que para poder funcionar en todos lados se menciona que es necesario tener una librería. La librería se llama rDHT11. Encontré unas líneas de programación sin utilizar la Librería. Tengo problema con arduino ya que lo tengo que prestarlo a los compañeros. Tengo problemas con internet. . . Jueves 24 de octubre:

Sigo intentando con el profesor Maxi. . . No lo pude hacer funcionar . . . Tengo problemas con internet. . . Viernes 25 de octubre:

(11)

Cambie de sensor, se llama lm35, preste el arduino, luego de intentar toda la mañana ANDA. Lunes 5 de noviembre:

Tengo problemas con internet. . . Miercoles 7 noviembre:

Tengo problemas con internet. . . sigo probando con el sensor. Lo hicimos funcionar. Viernes 9 noviembre:

Lo estoy retocando para que funcione bien. Lunes 18 noviembre:

Trabajo terminado. Conclusión:

Este proyecto se puede complementar con el de mi compañera Daiana para poder subir a la web la información de la temperatura que bien puede ser en un lugar remoto o no accesible y poder monitorear así el estado a la distancia de las distintas temperaturas.

Figure

Actualización...

Referencias

Actualización...