Proyecto Arduino 15. Medidor de temperatura.

La segunda práctica del libro de iniciación hace uso de un sensor de temperatura. El esquema es muy parecido al de la práctica anterior, cambiando el interruptor por un sensor.

Aprovecho para dejar la circuitería un poco más ordenada. También añado el esquema, realizado en LibreOffice-Draw que me servirá de plantilla para los siguientes ejemplos.

Aquí está el esquema del circuito:

He trasladado el código a mi plantilla de programación:
/* +----------------------------------------------------------+
 ! ** A R D U I N O ** !
 ! PROGRAMA : Medidor de temperatura !
 ! AUTOR : David Santaolalla !
 ! FECHA : 19/04/2015 !
 ! DESCRIPCION : !
 ! Tres leds: rojo, ambar y verde en pines 4, 3 y 2 y un !
 ! sensor de temperatura en Analog 0. !
 ! Según aumenta la temperatura pase de verde a amarillo y !
 ! luego a rojo. Como un VU-meter. !
 ! !
 ! CIRCUITO : !
 ! El correspondiente al Arduino Starter Kit ! 
 ! Project 3 - Love-o-meter !
 ! !
 +----------------------------------------------------------+
*/
// Constantes
const int Meter = A0;
const int Rojo = 4;
const int Ambar = 3;
const int Verde = 2;

const float Tbase = 22.0; // Temperatura base
const float L1 = 1.0; // incremento de nivel
const float L2 = 3.0; // incremento de nivel
const float L3 = 5.0; // incremento de nivel


// Variables globales
int switchstate = 0;

void setup() {
 // initialize serial communication at 9600 bits per second:
 Serial.begin(9600);
 // Declaracion de pines entrada
// Entrada analogica por A0
 // Declaracion de pines de salida
 pinMode(Rojo, OUTPUT);
 pinMode(Ambar, OUTPUT);
 pinMode(Verde, OUTPUT);
 

}
// PROGRAMA PRINCIPAL -----------------------------
void loop() {
 // main code
 // read the value of the input


 // read the value on AnalogIn pin 0
 // and store it in a variable
 int sensorVal = analogRead(Meter);

 // send the 10-bit sensor value out the serial port
 Serial.print("sensor Value: ");
 Serial.print(sensorVal);

 // convert the ADC reading to voltage
 float voltage = (sensorVal / 1024.0) * 5.0;

 // Send the voltage level out the Serial port
 Serial.print(", Volts: ");
 Serial.print(voltage);

 // convert the voltage to temperature in degrees C
 // the sensor changes 10 mV per degree
 // the datasheet says there's a 500 mV offset
 // ((volatge - 500mV) times 100)
 Serial.print(", degrees C: ");
 float temperature = (voltage - .5) * 100;
 Serial.print(temperature);

 // if the current temperature is lower than the baseline
 // turn off all LEDs
 if (temperature < Tbase) {
// level 0;
 digitalWrite(Rojo, LOW); 
 digitalWrite(Ambar, LOW); 
 digitalWrite(Verde, LOW); 
 Serial.println(" - - -");
 } // if the temperature rises, turn an LED on
 else if (temperature >= Tbase + L1 && temperature < Tbase + L2) {
// level 1;
 digitalWrite(Rojo, LOW); 
 digitalWrite(Ambar, LOW); 
 digitalWrite(Verde, HIGH); 
 Serial.println(" V - -");
 } // if the temperature rises, turn a second LED on
 else if (temperature >= Tbase + L2 && temperature < Tbase + L3) {
// level 2;
 digitalWrite(Rojo, LOW); 
 digitalWrite(Ambar, HIGH); 
 digitalWrite(Verde, HIGH); 
 Serial.println(" V A -");
 } // if the temperature rises more, turn all LEDs on
 else if (temperature >= Tbase + L3) {
// level 3;
 digitalWrite(Rojo, HIGH); 
 digitalWrite(Ambar, HIGH); 
 digitalWrite(Verde, HIGH); 
 Serial.println(" V A R");
 }
 else {
 Serial.println(" ");
 }
 
 delay(100);
}

// DEFINICION DE FUNCIONES-------------------------

// FIN DEL PROGRAMA -------------------------------

Anuncios

Un comentario en “Proyecto Arduino 15. Medidor de temperatura.

  1. Una variación sobre el programa: simplificación de código. Funciona igual de bien y me parece más sencillo.

    /* +———————————————————-+
    ! ** A R D U I N O ** !
    ! PROGRAMA : Medidor de temperatura !
    ! AUTOR : David Santaolalla !
    ! FECHA : 19/04/2015 !
    ! DESCRIPCION : !
    ! Tres leds: rojo, ambar y verde en pines 4, 3 y 2 y un !
    ! sensor de temperatura en Analog 0. !
    ! Según aumenta la temperatura pase de verde a amarillo y !
    ! luego a rojo. Como un VU-meter. !
    ! !
    ! CIRCUITO : !
    ! El correspondiente al Arduino Starter Kit !
    ! Project 3 – Love-o-meter !
    ! !
    +———————————————————-+
    */
    // Constantes
    const int Meter = A0;
    const int Rojo = 4;
    const int Ambar = 3;
    const int Verde = 2;

    const float Tbase = 23.0; // Temperatura base
    const float L1 = 2.0; // incremento de nivel
    const float L2 = 4.0; // incremento de nivel

    // Variables globales
    int switchstate = 0;

    void setup() {
    // initialize serial communication at 9600 bits per second:
    Serial.begin(9600);
    // Declaracion de pines entrada
    // Entrada analogica por A0
    // Declaracion de pines de salida
    pinMode(Rojo, OUTPUT);
    pinMode(Ambar, OUTPUT);
    pinMode(Verde, OUTPUT);

    }
    // PROGRAMA PRINCIPAL —————————–
    void loop() {
    // main code
    // read the value of the input

    // read the value on AnalogIn pin 0
    // and store it in a variable
    int sensorVal = analogRead(Meter);

    // convert the ADC reading to voltage
    float voltage = (sensorVal / 1024.0) * 5.0;

    // convert the voltage to temperature in degrees C
    // the sensor changes 10 mV per degree
    // the datasheet says there’s a 500 mV offset
    // ((volatge – 500mV) times 100)
    Serial.print(“Grados C: “);
    float temperature = (voltage – .5) * 100;
    Serial.println(temperature);

    // turn off all LEDs
    // level 0;
    digitalWrite(Rojo, LOW);
    digitalWrite(Ambar, LOW);
    digitalWrite(Verde, LOW);
    // if the temperature rises, turn an LED on
    if (temperature > Tbase) {
    // level 1;
    digitalWrite(Verde, HIGH);
    }
    // if the temperature rises, turn a second LED on
    if (temperature > Tbase + L1) {
    // level 2;
    digitalWrite(Ambar, HIGH);
    }
    // if the temperature rises more, turn all LEDs on
    if (temperature > Tbase + L2) {
    // level 3;
    digitalWrite(Rojo, HIGH);
    }

    delay(100);
    }

    // DEFINICION DE FUNCIONES————————-

    // FIN DEL PROGRAMA ——————————-

    Me gusta

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s