Índice:

Sensor de temperatura (LM35) Fazendo interface com ATmega32 e display LCD - Controle de Ventilador Automático: 6 Passos
Sensor de temperatura (LM35) Fazendo interface com ATmega32 e display LCD - Controle de Ventilador Automático: 6 Passos

Vídeo: Sensor de temperatura (LM35) Fazendo interface com ATmega32 e display LCD - Controle de Ventilador Automático: 6 Passos

Vídeo: Sensor de temperatura (LM35) Fazendo interface com ATmega32 e display LCD - Controle de Ventilador Automático: 6 Passos
Vídeo: Medindo Temperatura com LM35 2024, Novembro
Anonim
Sensor de temperatura (LM35) Fazendo interface com ATmega32 e display LCD | Controle de Ventilador Automático
Sensor de temperatura (LM35) Fazendo interface com ATmega32 e display LCD | Controle de Ventilador Automático

Sensor de temperatura (LM35) Fazendo interface com ATmega32 e display LCD

Passo 1:

Neste projeto, você aprenderá a fazer a interface de um sensor de temperatura (LM35) com o microcontrolador AVR ATmega32 e display LCD.

Antes deste projeto, você deve aprender sobre os seguintes artigos

como adicionar biblioteca lcd no avr studio | tutorial do microcontrolador avr

introdução ao ADC no microcontrolador AVR | para iniciantes

Sensor de temperatura (LM35) é um sensor de temperatura popular e de baixo custo. O Vcc pode ser de 4 V a 20 V conforme especificado na folha de dados. Para usar o sensor basta conectar o Vcc a 5V, o GND ao Terra e a Saída a um dos ADC (canal conversor analógico para digital).

A saída é de 10MilliVolts por grau centígrado. Portanto, se a saída for 310 mV, a temperatura é 31 graus C. Para fazer este projeto você deve estar familiarizado com o ADC dos AVRs e também usando LCD. Portanto, a resolução do ADC dos AVRs é de 10 bits e para a tensão de referência você está usando 5V, então a resolução em termos de voltagem é

5/1024 = 5,1 mV aproximadamente

Portanto, se o resultado do ADC corresponder a 5,1 mV, ou seja, se a leitura do ADC for

10 x 5,1 mV = 51 mV

Você pode ler o valor de qualquer canal ADC usando a função adc_result (ch);

Onde ch é o número do canal (0-5) no caso de ATmega8. Se você conectou a saída do LM35 ao canal 0 ADC, ligue

adc_result0 = adc_read (0);

isso armazenará a leitura ADC atual na variável adc_value. O tipo de dados de adc_value deve ser int, pois o valor ADC pode variar de 0 a 1023.

Como vimos, os resultados do ADC estão em um fator de 5,1 mV e para 1 grau C a saída do LM35 é de 10 mV, então 2 unidades de ADC = 1 grau.

Então, para obter a temperatura, dividimos o adc_value por dois

temperatura = adc_result0 / 2;

Finalmente, o microcontrolador exibirá a temperatura em graus centígrados no LCD alfanumérico 16X2.

Etapa 2: Diagrama de Circuito

Diagrama de circuito
Diagrama de circuito

Etapa 3: Programa

#ifndef F_CPU

#define F_CPU 1600000UL

#fim se

#incluir

#incluir

#include "LCD / lcd.h"

void adc_init ()

{

// AREF = AVcc

ADMUX = (1 <

// ADC Enable e prescaler de 128

ADCSRA = (1 <

}

// leia o valor adc

uint16_t adc_read (uint8_t ch)

{

// selecione o canal correspondente 0 ~ 7

ch & = 0b00000111; // Operação AND com 7

ADMUX = (ADMUX & 0xF8) | ch;

// inicia uma conversão única

// escreve '1' para ADSC

ADCSRA | = (1 <

// aguarde a conclusão da conversão

// ADSC torna-se '0' novamente

enquanto (ADCSRA & (1 <

retorno (ADC);

}

int main ()

{

DDRB = 0xff;

uint16_t adc_result0;

int temp;

int far;

buffer char [10];

// inicializa adc e lcd

adc_init ();

lcd_init (LCD_DISP_ON_CURSOR); //CURSOR

lcd_clrscr ();

lcd_gotoxi (0, 0);

_delay_ms (50);

enquanto (1)

{

adc_result0 = adc_read (0); // leia o valor adc em PA0

temp = adc_result0 / 2.01; // encontrando a temperatura

// lcd_gotoxy (0, 0);

// lcd_puts ("Adc =");

// itoa (adc_result0, buffer, 10); // exibe o valor ADC

// lcd_puts (buffer);

lcd_gotoxi (0, 0);

itoa (temp, buffer, 10);

lcd_puts ("Temp ="); // exibir a temperatura

lcd_puts (buffer);

lcd_gotoxi (7, 0);

lcd_puts ("C");

longe = (1,8 * temp) +32;

lcd_gotoxi (9, 0);

itoa (longe, buffer, 10);

lcd_puts (buffer);

lcd_gotoxi (12, 0);

lcd_puts ("F");

_delay_ms (1000);

if (temp> = 30)

{lcd_clrscr ();

lcd_home ();

lcd_gotoxi (0, 1);

lcd_puts ("FAN ON");

PORTB = (1 <

}

if (temp <= 30)

{

lcd_clrscr ();

lcd_home ();

lcd_gotoxi (7, 1);

lcd_puts ("FAN OFF");

PORTB = (0 <

}

}

}

Etapa 4: Explique o código

Eu espero que você saiba que você saberá como habilitar ADC e como fazer a interface do LCD com o microcontrolador Avr neste código quando a temperatura está acima de 30 graus, a ventoinha está ligada e você pode ver no display LED FAN ON e quando a temperatura é menor que 30, então a ventoinha está desligado e você pode ver FAN OFF

Etapa 5: Você pode baixar o projeto completo

Clique aqui

Recomendado: