Temperatura ambiente
Verão pra mim é a pior estação do ano, mas enfim, tem quem goste. Há tempos eu comprei um conjunto de componentes eletrônicos e veio nele um sensor térmico. Da hora a vida...
Olhando pra ele com a parte achatada voltada pra cima, a primeira perna recebe a voltagem (entre 2,7v e 5,5v); a do meio, como dito, envia o sinal analógico que vamos decodificar na temperatura e a última perna é o terra.
E só.
int pin = A0;
int refresh = 500;
//Checa o valor no pino
float temp() {
return (analogRead(pin));
}
void setup() {
//Ativa o monitor serial
Serial.begin(9600);
}
void loop() {
Serial.print("Temperatura: ");
Serial.println(temp());
delay(refresh);
}
A cada meio segundo um valor será apresentado no serial monitor. Sem tratamento ficou assim:
Meio nada a ver porque a temperatura não é 57º C nem de longe. Isso ocorre porque o valor enviado pelo LM35 e lido pelo pino A0 só pode variar entre 0 e 1023, então é preciso estabelecer uma fórmula pra converter isso aí em celsius. Fica assim:
(5 / ((2^10) - 1) * 100
Ok... esse 2^10 é a base que vamos usar. Veja que o resultado dá 1023, exatamente a gama de valores que vamos ler (de 0 até 1023 são 1024 posições, mas não rola um 5/0, né?). Já o 5 é a tensão de referência (o máximo, ou seja, o 1023, são 5v).
O código então ficou assim:
int pin = A0;
int refresh = 500;
float toCelsius = 0.48875855327468230694037145650049;
float temp() {
return (analogRead(pin) * toCelsius);
}
void setup() {
Serial.begin(9600);
}
void loop() {
Serial.print("Temperatura:\t");
Serial.println(temp());
delay(refresh);
}
Agora ficou assim:
Note que no segundo código eu use "\t" depois da string "Temperatura:". A ideia aqui é dar uma tabulação, só isso.
O LM35
É um transistor com 3 pernas. A do meio envia um sinal analógico informando a temperatura.
O LM35 em sua intimidade
Olhando pra ele com a parte achatada voltada pra cima, a primeira perna recebe a voltagem (entre 2,7v e 5,5v); a do meio, como dito, envia o sinal analógico que vamos decodificar na temperatura e a última perna é o terra.
O circuito
É bem simplão. A perna 1 recebe a voltagem (pino de 5v) e a perna 3 vai pro terra. A perna do meio vai para o pino analógico que você quiser.E só.
O código
O pino analógico pode receber valores que variam entre 0 e 1023, e será um desses números que o LM35 vai enviar pelo pino A0 (eu escolhi o A0). Primeiro vamos ao código sem qualquer tratamento da informação:int pin = A0;
int refresh = 500;
//Checa o valor no pino
float temp() {
return (analogRead(pin));
}
void setup() {
//Ativa o monitor serial
Serial.begin(9600);
}
void loop() {
Serial.print("Temperatura: ");
Serial.println(temp());
delay(refresh);
}
A cada meio segundo um valor será apresentado no serial monitor. Sem tratamento ficou assim:
Calorzão, hein? Tá certo isso?
Meio nada a ver porque a temperatura não é 57º C nem de longe. Isso ocorre porque o valor enviado pelo LM35 e lido pelo pino A0 só pode variar entre 0 e 1023, então é preciso estabelecer uma fórmula pra converter isso aí em celsius. Fica assim:
(5 / ((2^10) - 1) * 100
Ok... esse 2^10 é a base que vamos usar. Veja que o resultado dá 1023, exatamente a gama de valores que vamos ler (de 0 até 1023 são 1024 posições, mas não rola um 5/0, né?). Já o 5 é a tensão de referência (o máximo, ou seja, o 1023, são 5v).
O código então ficou assim:
int pin = A0;
int refresh = 500;
float toCelsius = 0.48875855327468230694037145650049;
float temp() {
return (analogRead(pin) * toCelsius);
}
void setup() {
Serial.begin(9600);
}
void loop() {
Serial.print("Temperatura:\t");
Serial.println(temp());
delay(refresh);
}
Agora ficou assim:
Ainda tá meio quente, mas tá valendo...
Note que no segundo código eu use "\t" depois da string "Temperatura:". A ideia aqui é dar uma tabulação, só isso.
Comentários
Postar um comentário