jueves, 23 de marzo de 2017

Arduino Project 3: Love-o-Meter

En esta práctica, construiremos un termómetro rudimentario, para lo que necesitaremos los siguientes materiales:

  • 3 led, usaré el color rojo
  • 1 sensor de temperatura TMP-36
  • resistencias de 220 Ω para cada led
El sensor TMP-36 podemos encontrarlo por 2 € en casi cualquier tienda de electrónica, y nos aporta la ventaja de que el voltaje de salida es directamente proporcional a la temperatura que mide.

El esquema de conexión es el que aparece en la imágen.

Las conexiones son las siguientes:
                                       

De nuevo, esta práctica está enfocada a aprender algo de programación, con la diferencia de que usaremos sensores y, por ende, a tratar señales analógicas.

Usaremos el siguiente código, otra vez comentado por mí para aclarar que hace cada una de sus partes:


const int sensorPin = A0; //establece cual será el pin análogico de entrada de datos (para el sensor)
const float baselineTemp = 20.0; //determina la temperatura base entorno a la cual programaremos

void setup(){
  Serial.begin(9600); //inicia el monitor serial, que podemos abrir arriba a la derecha en la consola de                                    //programación
  for (int pinNumber = 2; pinNumber < 5; pinNumber++){
       pinMode(pinNumber, OUTPUT);
       digitalWrite(pinNumber, LOW);
       }
       }
       
       void loop(){
         int sensorVal = analogRead(sensorPin); //
         Serial.print("Sensor Value:: ");
         Serial.print (sensorVal);
         
         //convierte la señal ADC leída en voltaje
         float voltage = (sensorVal/1024.0)*5.0;
         Serial.print(", Volts: ");
         Serial.print(voltage);
         Serial.print(", degress C: ");

                      //convierte el voltaje en temperatura, en grados centígrados
                      float temperature = (voltage - .5)*100;
                      Serial.println(temperature); //con el siguiente if, haremos que se enciendan los leds                                                                            // que queremos según la temperatura
                      if(temperature < baselineTemp){
                        digitalWrite(2, LOW);
                        digitalWrite(3, LOW);
                        digitalWrite(4, LOW);
                      }
         else if(temperature >= baselineTemp+2 && temperature < baselineTemp+4){
                        digitalWrite(2, HIGH);
                        digitalWrite(3, LOW);
                        digitalWrite(4, LOW);
                      }
                      else if(temperature >= baselineTemp+4 && temperature < baselineTemp+6){
                        digitalWrite(2, HIGH);
                        digitalWrite(3, HIGH);
                        digitalWrite(4, LOW);
                      }
                      else if(temperature >= baselineTemp+6){
                        digitalWrite(2, HIGH);
                        digitalWrite(3, HIGH);
                        digitalWrite(4, HIGH);
                      }
                      delay(1);
                      }

Este código, dará el siguiente resultado en la simulación:




Y su construcción en formato físico nos dará este otro resultado:


No hay comentarios:

Publicar un comentario