Sommario:

Interfaccia del sensore di temperatura (LM35) con ATmega32 e display LCD - Controllo automatico della ventola: 6 passaggi
Interfaccia del sensore di temperatura (LM35) con ATmega32 e display LCD - Controllo automatico della ventola: 6 passaggi

Video: Interfaccia del sensore di temperatura (LM35) con ATmega32 e display LCD - Controllo automatico della ventola: 6 passaggi

Video: Interfaccia del sensore di temperatura (LM35) con ATmega32 e display LCD - Controllo automatico della ventola: 6 passaggi
Video: Automatic Temperature control system using ATMEGA32 2024, Luglio
Anonim
Interfaccia del sensore di temperatura (LM35) con ATmega32 e display LCD | Controllo automatico della ventola
Interfaccia del sensore di temperatura (LM35) con ATmega32 e display LCD | Controllo automatico della ventola

Sensore di temperatura (LM35) Interfaccia con ATmega32 e display LCD

Passo 1:

In questo progetto imparerai come interfacciare un sensore di temperatura (LM35) con il microcontrollore AVR ATmega32 e il display LCD.

Prima di questo progetto devi avere informazioni sui seguenti articoli

come aggiungere la libreria lcd in avr studio| tutorial sul microcontrollore avr

introduzione all'ADC nel microcontrollore AVR | per principianti

Il sensore di temperatura (LM35) è un sensore di temperatura popolare ea basso costo. Il Vcc può essere da 4V a 20V come specificato dal datasheet. Per utilizzare il sensore è sufficiente collegare il Vcc a 5V, GND a Ground e l'Out a uno degli ADC (canale convertitore analogico-digitale).

L'uscita è 10 MilliVolt per grado centigrado. Quindi, se l'uscita è 310 mV, la temperatura è 31 gradi C. Per realizzare questo progetto dovresti avere familiarità con l'ADC degli AVR e anche utilizzando l'LCD Quindi la risoluzione degli AVR ADC è 10 bit e per la tensione di riferimento stai usando 5 V quindi la risoluzione in termini di tensione è

5/1024 = 5,1 mV circa

Quindi, se il risultato dell'ADC corrisponde a 5,1 mV, ovvero se la lettura dell'ADC è

10 x 5,1 mV = 51 mV

Puoi leggere il valore di qualsiasi canale ADC usando la funzione adc_result(ch);

Dove ch è il numero del canale (0-5) in caso di ATmega8. Se hai collegato l'uscita dell'LM35 al canale 0 dell'ADC, chiama

adc_result0 = adc_read(0);

questo memorizzerà la lettura ADC corrente nella variabile adc_value. Il tipo di dati di adc_value deve essere int poiché il valore ADC può variare da 0-1023.

Come abbiamo visto, i risultati dell'ADC sono in un fattore di 5,1 mV e per 1 grado C l'uscita di LM35 è 10 mV, quindi 2 unità di ADC = 1 grado.

Quindi per ottenere la temperatura dividiamo adc_value per due

temperatura = risultato_adc0 /2;

Infine il microcontrollore visualizzerà la temperatura in gradi centigradi nel LCD alfanumerico 16X2.

Passaggio 2: schema elettrico

Schema elettrico
Schema elettrico

Passaggio 3: programma

#ifndef F_CPU

#define F_CPU 1600000UL

#finisci se

#includere

#includere

#include "LCD/lcd.h"

void adc_init()

{

// AREF = AVcc

ADMUX = (1<

// Abilitazione ADC e prescaler di 128

ADCSRA = (1<

}

// legge il valore adc

uint16_t adc_read(uint8_t ch)

{

// seleziona il canale corrispondente 0~7

ch &= 0b00000111; // Operazione AND con 7

ADMUX = (ADMUX & 0xF8)|ch;

// avvia la conversione singola

// scrivi '1' in ADSC

ADCSRA |= (1<

// attendo il completamento della conversione

// ADSC diventa di nuovo '0'

mentre(ADCSRA & (1<

ritorno (ADC);

}

intero principale()

{

DDRB=0xff;

uint16_t adc_result0;

temperatura interna;

int lontano;

buffer di caratteri[10];

// inizializza adc e lcd

adc_init();

lcd_init(LCD_DISP_ON_CURSOR); //CURSORE

lcd_clrscr();

lcd_gotoxy(0, 0);

_delay_ms(50);

mentre(1)

{

adc_result0 = adc_read(0); // legge il valore adc su PA0

temp=adc_result0/2.01; // trovare la temperatura

//lcd_gotoxy(0, 0);

//lcd_puts("Adc=");

//itoa(adc_result0, buffer, 10); //visualizza il valore ADC

//lcd_puts(buffer);

lcd_gotoxy(0, 0);

itoa(temp, buffer, 10);

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

lcd_puts(buffer);

lcd_gotoxy(7, 0);

lcd_puts("C");

lontano=(1.8*temp)+32;

lcd_gotoxy(9, 0);

itoa(lontano, buffer, 10);

lcd_puts(buffer);

lcd_gotoxy(12, 0);

lcd_puts("F");

_delay_ms(1000);

se(temp>=30)

{lcd_clrscr();

lcd_home();

lcd_gotoxy(0, 1);

lcd_puts("VENTILAZIONE ATTIVA");

PORTAB=(1<

}

se (temp<=30)

{

lcd_clrscr();

lcd_home();

lcd_gotoxy(7, 1);

lcd_puts("VENTILATORE SPENTO");

PORTAB=(0<

}

}

}

Passaggio 4: Spiegazione del codice

Spero che tu sappia che saprai come abilitare l'ADC e come interfacciare l'LCD con il microcontrollore Avr in questo codice quando la temperatura è superiore a 30 gradi, quindi la ventola è accesa e puoi vedere sul display a LED FAN ON e quando la temperatura è inferiore a 30 quindi la ventola è spento e puoi vedere FAN OFF

Passaggio 5: puoi scaricare il progetto completo

Clicca qui

Consigliato: