terça-feira, 12 de agosto de 2014

Simulação no Proteus - Arduino e o Sensor LM-35

       Exemplo de como ler um sensor de Temperatura (LM-35) utilizando o Arduino e converter o sinal analógico lido,  na temperatura correspondente, em grau Celsius, e enviar para o computador via USB (Serial).
Circuito


Arquivos



- O Arduino possui seis portas analógicas, que vão de A0 à A5, com resolução de 10 bits, e faixa de leitura 0 à 5v (0 à 1023).

Código do Sketch:

/*
  Projeto - Temômetro LCD com sensor LM35 e Arduino
  By - Zedequias Fonseca  -  08/2014
  http://vfeletronica.blogspot.com.br
*/

#include <LiquidCrystal.h> // Biblioteca para o LCD

// Variáveis
int tempPin = 0;          // Declaração do pino de entrada analógica 0 (A0) no Arduino
float mAmostra[8];     // matriz para armazenar oito amostras para o cálculo da temperatura média
float mLeitura = 0.00; // variavel para armazena leitura da temperatura

LiquidCrystal lcd(13, 12, 11, 10, 9, 8); // Inicialização do display e pinos correspondentes

void setup()
{
  Serial.begin(9600);                     // inicia comunicação serial
 
  lcd.begin(16, 2);                          // inicia e configura o número de linhas e colunas do LCD
  lcd.setCursor(1, 0);                      // seta posição do cursor (coluna, linha) do LCD
  lcd.print("Projeto com LM35");  // imprime texto no LCD
 
  delay(1000);   // aguarda 1s
}

void loop()
{
  // Início dos cálculos
  for(int i = 0; i <= 7; i++) // pega 8 amostras de temperatura
  {
    // ler porta analogica e faz a conversão matemática para amostra
    // legível de temperatura do LM35 e armazena resultado de conjunto de amostras.
    // 1024 é a profundidade de bits (quantização) do Arduino.
    // 5 é a voltagem fornecida ao LM35. 
    mAmostra[i] = (5 * analogRead(tempPin) * 100.0) / 1024.0;
          
    lcd.setCursor(1, 1);        // seta posição do cursor LCD
    lcd.print(" Temp: ");       // imprime no LCD
    lcd.setCursor(9, 1);        // seta posição do cursor LCD
    lcd.print(mAmostra[i]); // imprime amostra da temperatura atual no LCD
    lcd.print(" C");               // imprime caractere C

    mLeitura = analogRead(tempPin);  // ler porta analogica
    Serial.println(mLeitura);                 // imprime valor lido na porta analogica no Virtual Terminal 
    delay(500);                                      // aguarda 500ms
  }
}
 


Nenhum comentário:

Postar um comentário