En aquesta pràctica, a diferència de l'anterior, utilitzarem un sensor de temperatura que ens ajudarà a mesurar la calor de l'exterior tant en graus Celsius com en graus Fahrenheit
Sensor de temperatura
QUÈ ÉS?
Un sensor de temperatura és un dispositiu capaç de detectar, en graus Kelvin, Celsius o Fahrenheit, la temperatura convertint aquesta en un voltatge elèctric perquè així pugui ser llegit per un a un altre dispositiu electrònic, com ara un ordinador, perquè aquest la pugui representar amb un valor corresponent a les mesures anteriorment mencionades.
El que nosaltres utilitzarem es tracta del model TMP36 que té el mateix encapsulat (TO92) que els transistors. Aquests són de tipus analògic i poden detectar valors entre -50 °C i 125 °C sent el valor del voltatge de sortida el mateix valor de la temperatura.
COM FUNCIONA?
En aquest sensors, com ja hem explicat, el voltatge és proporcional a la temperatura, però cada grau té una equivalència a 10 mV. És per això que en tots els programes haurem de multiplicar el voltatge per 100.
ESQUEMA ELÈCTRIC
En aquest circuit, el sensor de temperatura anirà connectat als 5V, per poder rebre energia, al "ground" per tancar el circuit i al pin A0. Com que l'entrada al sensor ha de ser analògica el connectarem al pin analògic 0 o el pin A0.
CODI 1 (gràfic CELSIUS)
En aquest programa es farà un gràfic en el qual la línia seguirà la temperatura en Celsius detectada en aquell moment pel sensor.
Primerament, es declara la variable "temperaturePin" amb el valor 0
Seguidament, en el "setup" es configura una velocitat de 9600 bauds per segon amb la instrucció "Serial.begin" per així permetre la comunicació entre l'ordinador i l'Arduino
Després, en el "loop" es crea una variable "float" de nom "temperature" que serà igual a detectar el voltatge de la temperatura obtinguda per la variable "temperaturePIn" (on està connectat el sensor)
Després, la variable "temperature" s'inicialitza amb el valor del voltatge llegit prèviament, i s'aplica una fórmula matemàtica per convertir aquest valor en una temperatura en graus Celsius i s'emmagatzema novament a la variable "temperature."
Finalment, la temperatura s'imprimeix al serial monitor utilitzant la funció "Serial.println", i es fa una pausa d'1 segon mitjançant la funció "delay" . Aquest últim "ln" ("Serial.println") permet que la següent línia de text se situï sota l'anterior
Seguidament, la funció "getVoltage" dins una variable "float" és responsable de llegir el voltatge analògic al pin i convertir-lo en un valor de voltatge multiplicant el valor llegit per 004882814, o dit d'una altra manera, una regla de tres entre els valors de 0 a 1023 i els de 0 a 5V.
D'aquesta manera, utilitzant la funció de "serial plotter" podrem veure el gràfic amb les temperatures en
int temperaturePin = 0;
void setup()
{
Serial.begin(9600);
}
void loop()
{
float temperature = getVoltage(temperaturePin);
temperature = (temperature - .5) * 100;
Serial.println(temperature);
delay(1000);
}
float getVoltage(int pin){
return (analogRead(pin) * .004882814);
}
CODI 2 (gràfic FAHRENHEIT)
int temperaturePin = 0;
void setup()
{
Serial.begin(9600);
}
void loop()
{
float temperature = getVoltage(temperaturePin);
temperature = (((temperature - .5) * 100)*1.8) + 32;
Serial.println(temperature);
delay(1000);
}
float getVoltage(int pin){
return (analogRead(pin) * .004882814);
}
Aquest codi és el mateix que l'anterior simplement canviant la fórmula en què obtenim la unitat dels graus.
En el primer utilitzàvem la dels Celsius i en aquest hem d'utilitzar la dels Fahrenheit que és aquesta d'aquí: (temperature - .5) * 100)*1.8) + 32;
CODI 1 (SERIAL MONITOR)
En aquest codi representarem els valors de les temperatures en Fahrenheit i Celsius de manera escrita dins de la funció "serial monitor" de l'Arduino
Primerament, es declara la variable "integer" "temperaturePin" amb el valor 0
Seguidament, en el "setup" es configura el"Serial.begin".
Després, es fa servir l'equació de conversió de voltatge a temperatura per calcular la temperatura en graus Celsius i Fahrenheit. El valor de temperatura en graus Celsius s'emmagatzema a la variable de tipus "float" (inclou decimals) "temperatureC", mentre que el valor de temperatura en graus Fahrenheit s'emmagatzema a la variable "float" "temperatureF".
Posteriorment, s'imprimeixen els valors de temperatura al "serial monitor" utilitzant les funcions Serial.print() i Serial.println().
Finalment, s'introdueix un "delay" de 1000 mil·lisegons.
int temperaturePin = 0;
void setup()
{
Serial.begin(9600);
}
void loop()
{
float temperatureC = getVoltage(temperaturePin);
float temperatureF = getVoltage(temperaturePin);
temperatureC = (temperatureC - .5) * 100;
temperatureF = (temperatureC*1.8) + 32;
Serial.print("temperatura en ºc= ");
Serial.println(temperatureC);
Serial.print("temperatura en F= ");
Serial.println(temperatureF);
delay(1000);
}
float getVoltage(int pin){
return (analogRead(pin) * .004882814);
}