Taula de continguts:

Interfície del sensor de temperatura (LM35) amb ATmega32 i pantalla LCD - Control automàtic de ventiladors: 6 passos
Interfície del sensor de temperatura (LM35) amb ATmega32 i pantalla LCD - Control automàtic de ventiladors: 6 passos

Vídeo: Interfície del sensor de temperatura (LM35) amb ATmega32 i pantalla LCD - Control automàtic de ventiladors: 6 passos

Vídeo: Interfície del sensor de temperatura (LM35) amb ATmega32 i pantalla LCD - Control automàtic de ventiladors: 6 passos
Vídeo: Как использовать LM35 для измерения температуры в градусах Цельсия, Фаренгейта и Кельвина 2024, Desembre
Anonim
Interfície del sensor de temperatura (LM35) amb ATmega32 i pantalla LCD | Control de ventiladors automàtics
Interfície del sensor de temperatura (LM35) amb ATmega32 i pantalla LCD | Control de ventiladors automàtics

Interfície del sensor de temperatura (LM35) amb ATmega32 i pantalla LCD

Pas 1:

En aquest projecte, aprendràs a connectar un sensor de temperatura (LM35) amb el microcontrolador AVR ATmega32 i la pantalla LCD.

Abans d'aquest projecte, heu de conèixer més sobre els articles següents

com afegir una biblioteca lcd a avr studio | tutorial de microcontrolador avr

introducció a ADC al microcontrolador AVR | per a principiants

El sensor de temperatura (LM35) és un sensor de temperatura popular i de baix cost. El Vcc pot ser de 4V a 20V, tal com s’especifica al full de dades. Per utilitzar el sensor, simplement connecteu el Vcc a 5V, el GND a terra i el Out a un dels ADC (canal convertidor analògic a digital).

La sortida és de 10MilliVolts per grau centígrad. Per tant, si la sortida és de 310 mV, la temperatura és de 31 graus C. Per fer aquest projecte, heu de familiaritzar-vos amb l'ADC dels AVR i també amb LCD. en termes de tensió és

5/1024 = 5,1 mV aproximadament

Per tant, si el resultat de l’ADC correspon a 5,1 mV, és a dir, si la lectura de l’ADC és

10 x 5,1 mV = 51 mV

Podeu llegir el valor de qualsevol canal ADC mitjançant la funció adc_result (ch);

On ch és el número de canal (0-5) en cas d'ATmega8. Si heu connectat la sortida LM35 al canal ADC 0, truqueu

adc_result0 = adc_read (0);

això emmagatzemarà la lectura ADC actual a la variable adc_value. El tipus de dades de adc_value ha de ser int, ja que el valor ADC pot oscil·lar entre 0-1023.

Com hem vist, els resultats de l'ADC tenen un factor de 5,1 mV i durant 1 grau C la sortida de LM35 és de 10 mV, de manera que 2 unitats d'ADC = 1 grau.

Per obtenir la temperatura, dividim el valor adc_value per dos

temperatura = adc_result0 / 2;

Finalment, el microcontrolador mostrarà la temperatura en graus centígrads a la pantalla alfanumèrica 16X2.

Pas 2: diagrama del circuit

Esquema de connexions
Esquema de connexions

Pas 3: programa

#ifndef F_CPU

#define F_CPU 1600000UL

#endif

#incloure

#incloure

#include "LCD / lcd.h"

buit adc_init ()

{

// AREF = AVcc

ADMUX = (1 <

// Activació ADC i prescaler de 128

ADCSRA = (1 <

}

// llegeix el valor adc

uint16_t adc_read (uint8_t ch)

{

// seleccioneu el canal corresponent 0 ~ 7

ch & = 0b00000111; // I operació amb 7

ADMUX = (ADMUX & 0xF8) | ch;

// iniciar una conversió única

// escriviu '1' a ADSC

ADCSRA | = (1 <

// esperar que finalitzi la conversió

// ADSC torna a ser '0'

mentre que (ADCSRA & (1 <

retorn (ADC);

}

int main ()

{

DDRB = 0xff;

uint16_t adc_result0;

int temp;

int far;

buff buffer [10];

// inicialitzar adc i lcd

adc_init ();

lcd_init (LCD_DISP_ON_CURSOR); // CURSOR

lcd_clrscr ();

lcd_gotoxy (0, 0);

_delay_ms (50);

mentre que (1)

{

adc_result0 = adc_read (0); // llegeix el valor adc a PA0

temp = adc_result0 / 2.01; // trobar la temperatura

// lcd_gotoxy (0, 0);

// lcd_puts ("Adc =");

// itoa (adc_result0, buffer, 10); // mostra el valor ADC

// lcd_puts (memòria intermèdia);

lcd_gotoxy (0, 0);

itoa (temp, buffer, 10);

lcd_puts ("Temp ="); // mostra la temperatura

lcd_puts (memòria intermèdia);

lcd_gotoxy (7, 0);

lcd_puts ("C");

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

lcd_gotoxy (9, 0);

itoa (far, buffer, 10);

lcd_puts (memòria intermèdia);

lcd_gotoxy (12, 0);

lcd_puts ("F");

_delay_ms (1000);

si (temp> = 30)

{lcd_clrscr ();

lcd_home ();

lcd_gotoxy (0, 1);

lcd_puts ("FAN ON");

PORTB = (1 <

}

si (temp <= 30)

{

lcd_clrscr ();

lcd_home ();

lcd_gotoxy (7, 1);

lcd_puts ("FAN OFF");

PORTB = (0 <

}

}

}

Pas 4: expliqueu el codi

Espero que sàpiga que sabreu Com habilitar l'ADC i la interfície de la pantalla LCD amb el microcontrolador Avr en aquest codi quan la temperatura és superior a 30 graus i el ventilador està encès i podeu veure la pantalla LED FAN ON i quan la temperatura és inferior a 30 i el ventilador està desactivat i podeu veure FAN OFF

Pas 5: podeu descarregar el projecte complet

Clica aquí

Recomanat: