Fala Pessoal! Tudo bom?! 😎
💡 Bom, hoje falaremos sobre um assunto bacana e ao mesmo tempo de bastante utilidade: Medição de temperatura e acionamento de cargas baseado em determinado “range” ou “escala” da temperatura medida, utilizando sensor do tipo analógico e placa Arduino UNO.
Enfim, eu não quero tomar muito do tempo de vocês pessoal, então, para tentar resumir ao máximo, tudo que com certeza vocês terão acesso no video-tutorial (ou video-aula?!) que vem a seguir, vou dizer que para realizar, para completarmos a montagem deste protótipo de medidor de temperatura com amostra do resultado através de LED do tipo RGB (vermelho-verde-azul), o que necessitamos ANTES de completar a montagem “completa” na protoboard do projeto é:
Antes de tudo, precisamos saber quais os valores (obtidos através da leitura analógica da nossa entrada A0 do Arduino), desejamos utilizar com os nossos “pontos-de-corte“, ou “pontos-de-chamada” para ação!
Para isso, basta que a gente monte “metade” do circuito eletrônico mostrado no esquemático que vem aí acima deste post! Como assim, “a metade”?! 🙄
Enfim, basta que a gente monte na protoboard o “lado direito” do esquemático. Ou seja, neste momento ainda não precisamos utilizar, nem o LED RGB (ou 3 LEDs variados para quem não tem um LED RGB na mão) e nem os resistores que são necessários para interligarem o mesmo, basta simplesmente que interliguemos o sensor de temperatura LM35 à entrada A0 da nossa placa ARDUINO UNO (ou derivadas).
Para realizar esta etapa, o que necessitamos é:
- Copiar e Colar o código a seguir em nossa IDE ARDUINO, Verificar(Compilar) e Carregar em nosso MCU 328P – ATMega 328P da Atmel.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
/* * PROGRAMA: "LENDO ENTRADAS ANALOGICAS COM ARDUINO UNO - SENSOR de TEMPERATURA ANALOGICO "LM35" (ou equivalentes) com ARDUINO UNO * ====================================================================================== * 328P MCU * AUTOR: RODRIGO COSTA. * BLOG: https:EletronicaParaTodos.com * 22/06/2017 * -------------------------------------------------------------------------------------- */ const int LM35 = 0; // SENSOR LM35 no pino analogico A0 do ARDUINO UNO int val = 0; // variavel para conter a leitura analogica a partir do sensor de temperatura void setup() { Serial.begin(9600); // iniciamos a saida serial para DEBUG } void loop() { val = analogRead(LM35); // lemos o valor analogico do LM35 e armazenamos na variável "val" Serial.println(val); // imprimimos via monitor serial o valor armazenado na "val" delay(500); // esperamos por meio segundo } |
Para exemplificar o código acima:
Vamos dizer que meu ambiente de trabalho, meu quarto aqui onde na bancada de eletrônica estou, encontra-se com uma temperatura ao redor de 27 graus Celsius ( o que neste caso, utilizando o mesmo código acima, corresponde ao valor de leitura analógico de “55“)! ❗
Bom, estes números provavelmente serão diferentes para a situação de cada um de vocês, seja pela região do nosso Brasil na qual residam, assim como pela temperatura ambiente que vocês consideram se sentir em situação agradável, MAS o que deverão considerar, é que a partir destes valores analógicos, poderemos configurar o próximo código, “dizendo” ao mesmo, em qual valor de leitura “analógica” nós “acionamos” ou “desligamos” o LED RGB.
Para realizarmos então a “CONVERSÃO” de valores obtidos através da leitura da entrada ADC (A0) da nossa placa ARDUINO UNO, basta utilizarmos um código “um pouco mais avançado” que o anterior dado acima, como segue a seguir (CTRL+C >> CTRL+V):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
/* * PROGRAMA: "Sensor de temperatura usando o LM35" * ====================================================================================== * 328P MCU * AUTOR: RODRIGO COSTA. * BLOG: https://EletronicaParaTodos.com * 21/06/2017 * -------------------------------------------------------------------------------------- */ const int LM35 = A0; // Define o pino que lera a saída do LM35 float temperatura; // Variável que armazenará a temperatura medida void setup() { Serial.begin(9600); // iniciamos a comunicacao serial para DEBUG } void loop() { temperatura = (float(analogRead(LM35)*5)/1023)/0.01; // calcula a temperatura com resultados em números racionais (0.xx) Serial.print("Temperatura: "); Serial.println(temperatura, 1); // retiro uma casa decimal a direita para apresentar a temperatura estilo (30.x) delay(1500); } |
E então, finalmente, chegamos a Video-Aula onde mostramos e comentamos TUDO sobre o assunto até aqui falado, que é: como controlar cargas a partir da leitura da temperatura via sensores analógicos (do tipo LM35) e realizar amostras do resultado obtido em “Tempo Real” através de LED do tipo RGB (e/ou qualquer outro tipo de carga, incluindo drivers, relés, etc).
E AQUI, PARA QUEM FICOU AINDA COM DÚVIDAS DE COMO “MONTAR” O CÓDIGO “COMPLETO”, SEGUE O NOSSO REALIZADO POR AQUI (Atenção: os meus valores setados para temperatura aqui em Manaus/AM foram um, então vocês precisarão alterar estes valores no Sketch de vocês para os valores reais calculados pelos 2 códigos/sketches anteriores!)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 |
/* * PROGRAMA: "ACIONANDO LED RGB ATRAVES DE LEITURA DE TEMPERATURA COM LM35" * ====================================================================================== * 328P MCU * AUTOR: RODRIGO COSTA. * BLOG: https://EletronicaParaTodos.com * 18/06/2017 * -------------------------------------------------------------------------------------- */ // Alerta e temperatura const int RLED = 11; // LED vermelho no pino 11 const int GLED = 10; // LED verde no pino 10 const int BLED = 9; // LED azul no pino 9 const int LM35 = A0; // O sensor de temperatura esta no pino analogico A0 const int BlinkLED = 13; // Variavel utilizada para disparo do circuito de potencia float temperatura; // Variável que armazenará a temperatura medida const int menorTemp = 50; // limiar inferior quando lendo o sensor LM35 const int maiorTemp = 52; // limiar superior quando lendo o sensor LM35 int val = 0; // variavel para manter a leitura analogica void setup() { Serial.begin(9600); // iniciamos a saida serial para DEBUG pinMode(RLED, OUTPUT); // configura o LED vermelho como saida pinMode(GLED, OUTPUT); // configura o LED verde como saida pinMode(BLED, OUTPUT); // configura o LED azul como saida pinMode(BlinkLED, OUTPUT); // configura a saida digital 13 (BLINK) como saida } void loop() { val = analogRead(LM35); // lemos o valor na entrada do sensor de temperatura LM35 temperatura = (float(analogRead(LM35)*5)/1023)/0.01; // calcula a temperatura com resultados em numeros racionais (0.xx) //temperatura = int((float(analogRead(LM35))*5/(1023))/0.01); // calcula a temperatura com resultados em numeros inteiros if(val < menorTemp) // Temperatura FRIA { digitalWrite(RLED, HIGH); // aqui utilizo "logica invertida" porque estou utilizando LED RGB do tipo (ANODO COMUM e nao catodo comum) digitalWrite(GLED, HIGH); // aqui utilizo "logica invertida" porque estou utilizando LED RGB do tipo (ANODO COMUM e nao catodo comum) digitalWrite(BLED, LOW); // aqui utilizo "logica invertida" porque estou utilizando LED RGB do tipo (ANODO COMUM e nao catodo comum) digitalWrite(BlinkLED, LOW); // desativamos a saida digital 13 em caso de temperatura MUITO ALTA Serial.print("Valor Analog:"); Serial.println(val); // imprimimos via monitor serial o valor armazenado na "val" Serial.print("Temperatura: "); Serial.println(temperatura, 1); // retiro uma casa decimal a direita para apresentar a temperatura estilo (30.x) Serial.println(""); delay(2000); } else if (val > maiorTemp) // Temperatura QUENTE { digitalWrite(RLED, LOW); digitalWrite(GLED, HIGH); digitalWrite(BLED, HIGH); digitalWrite(BlinkLED, HIGH); // acionamos a saida digital 13 em caso de temperatura MUITO ALTA Serial.print("Valor Analog:"); Serial.println(val); // imprimimos via monitor serial o valor armazenado na "val" Serial.print("Temperatura: "); Serial.println(temperatura, 1); // retiro uma casa decimal a direita para apresentar a temperatura estilo (30.x) Serial.println(""); delay(2000); } else // Temperatura MEDIA { digitalWrite(RLED, HIGH); digitalWrite(GLED, LOW); digitalWrite(BLED, HIGH); digitalWrite(BlinkLED, LOW); // desativamos a saida digital 13 em caso de temperatura MUITO ALTA Serial.print("Valor Analog:"); Serial.println(val); // imprimimos via monitor serial o valor armazenado na "val" Serial.print("Temperatura: "); Serial.println(temperatura, 1); // retiro uma casa decimal a direita para apresentar a temperatura estilo (30.x) Serial.println(""); delay(2000); } } |
Curtam!
Compartilhem!Gratidão Eterna meus Amigos! 😉
- Medindo e Monitorando a Temperatura com Arduino (Sensor LM35) - 5 de setembro de 2021
- Controle de Cargas através de Entrada Analógica com Arduino - 30 de agosto de 2021
- REVIEW E DICAS – ALICATE AMPERÍMETRO (UNI-T UT210E PRO) - 28 de agosto de 2021