Cuprins:
2025 Autor: John Day | [email protected]. Modificat ultima dată: 2025-01-23 15:04
Senzor de temperatură (LM35) Interfață cu ATmega32 și afișaj LCD
Pasul 1:
În acest proiect, veți învăța cum să interfațați un senzor de temperatură (LM35) cu microcontrolerul AVR ATmega32 și afișajul LCD.
Înainte de acest proiect trebuie să aflați mai multe despre următoarele articole
cum se adaugă o bibliotecă lcd în avr studio | tutorial avr microcontroler
introducere în ADC în microcontrolerul AVR | pentru incepatori
Senzorul de temperatură (LM35) este un senzor de temperatură popular și cu costuri reduse. Vcc-ul poate fi de la 4V la 20V conform specificațiilor din foaia tehnică. Pentru a utiliza senzorul, pur și simplu conectați Vcc la 5V, GND la masă și ieșirea la unul dintre ADC (canal analogic la convertor digital).
Producția este de 10MilliVolts pe grad centigrad. Deci, dacă ieșirea este de 310 mV, atunci temperatura este de 31 de grade C. Pentru a face acest proiect, ar trebui să fiți familiarizați cu ADC-ul AVR-urilor și, de asemenea, cu ajutorul LCD-ului. din punct de vedere al tensiunii este
5/1024 = 5,1mV aproximativ
Deci, dacă rezultatul ADC corespunde la 5,1 mV, adică dacă citirea ADC este
10 x 5,1 mV = 51 mV
Puteți obține citirea valorii oricărui canal ADC utilizând funcția adc_result (ch);
Unde ch este numărul canalului (0-5) în cazul ATmega8. Dacă ați conectat ieșirea LM35 la canalul ADC 0, atunci sunați
adc_result0 = adc_read (0);
aceasta va stoca citirea ADC curentă în variabila adc_value. Tipul de date al adc_value ar trebui să fie int deoarece valoarea ADC poate varia de la 0-1023.
După cum am văzut, rezultatele ADC au un factor de 5,1mV și pentru 1 grad C, ieșirea LM35 este de 10mV, deci 2 unități de ADC = 1 grad.
Deci, pentru a obține temperatura, împărțim valoarea adc_value la două
temperature = adc_result0 / 2;
În cele din urmă, microcontrolerul va afișa temperatura în grade centigrade pe ecranul alfanumeric 16X2.
Pasul 2: Diagrama circuitului
Pasul 3: Program
#ifndef F_CPU
#define F_CPU 1600000UL
#endif
#include
#include
#includeți „LCD / lcd.h”
anula adc_init ()
{
// AREF = AVcc
ADMUX = (1 <
// Activare ADC și prescaler de 128
ADCSRA = (1 <
}
// citiți valoarea adc
uint16_t adc_read (uint8_t ch)
{
// selectați canalul corespunzător 0 ~ 7
ch & = 0b00000111; // ȘI operațiune cu 7
ADMUX = (ADMUX & 0xF8) | ch;
// pornește o singură conversie
// scrieți „1” la ADSC
ADCSRA | = (1 <
// așteptați finalizarea conversiei
// ADSC devine din nou „0”
în timp ce (ADCSRA & (1 <
returnare (ADC);
}
int main ()
{
DDRB = 0xff;
uint16_t adc_result0;
int temp;
int far;
tampon char [10];
// inițializați adc și lcd
adc_init ();
lcd_init (LCD_DISP_ON_CURSOR); //CURSOR
lcd_clrscr ();
lcd_gotoxy (0, 0);
_delay_ms (50);
în timp ce (1)
{
adc_result0 = adc_read (0); // citiți valoarea adc la PA0
temp = adc_result0 / 2.01; // găsirea temperaturii
// lcd_gotoxy (0, 0);
// lcd_puts ("Adc =");
// itoa (adc_result0, buffer, 10); // afișează valoarea ADC
// lcd_puts (tampon);
lcd_gotoxy (0, 0);
itoa (temp, tampon, 10);
lcd_puts ("Temp ="); // afișează temperatura
lcd_puts (tampon);
lcd_gotoxy (7, 0);
lcd_puts ("C");
far = (1,8 * temp) +32;
lcd_gotoxy (9, 0);
itoa (far, tampon, 10);
lcd_puts (tampon);
lcd_gotoxy (12, 0);
lcd_puts ("F");
_delay_ms (1000);
dacă (temp> = 30)
{lcd_clrscr ();
lcd_home ();
lcd_gotoxy (0, 1);
lcd_puts ("FAN ON");
PORTB = (1 <
}
dacă (temp <= 30)
{
lcd_clrscr ();
lcd_home ();
lcd_gotoxy (7, 1);
lcd_puts ("FAN OFF");
PORTB = (0 <
}
}
}
Pasul 4: Explicați codul
Sper că știți că veți ști cum să activați ADC și cum să interfațați LCD-ul cu microcontrolerul Avr în acest cod atunci când temperatura este mai mare de 30 de grade, apoi ventilatorul este pornit și puteți vedea pe afișajul LED FAN ON și când temperatura este mai mică de 30, apoi ventilatorul este oprit și puteți vedea FAN OFF
Pasul 5: Puteți descărca proiectul complet
Click aici
Recomandat:
Noțiuni introductive despre interfața senzorului I2C ?? - Interfață MMA8451 folosind ESP32s: 8 pași
Noțiuni introductive despre interfața senzorului I2C ?? - Interfața MMA8451 folosind ESP32s: În acest tutorial, veți afla totul despre cum să porniți, să conectați și să obțineți dispozitivul I2C (accelerometru) care funcționează cu controlerul (Arduino, ESP32, ESP8266, ESP12 NodeMCU)
Cum să faci un afișaj POV al ventilatorului: 6 pași (cu imagini)
Cum să faci un afișaj POV al ventilatorului: În acest proiect îți voi arăta cum am transformat un ventilator vechi obișnuit într-un afișaj POV cu LED, care îți poate prezenta modele luminoase, cuvinte sau chiar timpul. Să începem
Interfață Arduino cu senzor cu ultrasunete și senzor de temperatură fără contact: 8 pași
Interfață Arduino cu senzor cu ultrasunete și senzor de temperatură fără contact: În prezent, producătorii, dezvoltatorii preferă Arduino pentru dezvoltarea rapidă a prototipurilor de proiecte. Arduino este o platformă electronică open-source bazată pe hardware și software ușor de utilizat. Arduino are o comunitate de utilizatori foarte bună. În acest proiect
Tutorial Arduino LCD 16x2 - Interfață afișaj LCD 1602 cu Arduino Uno: 5 pași
Tutorial Arduino LCD 16x2 | Interfațarea afișajului LCD 1602 cu Arduino Uno: Bună băieți, deoarece multe proiecte au nevoie de un ecran pentru a afișa datele, fie că este vorba de un contor de bricolaj sau de un număr de abonați pe YouTube sau de un calculator sau o blocare a tastaturii cu afișaj și dacă toate aceste tipuri de proiecte sunt realizate cu arduino vor definitivel
Interfață afișaj LCD 20X4 la Nodemcu: 3 pași
Interfațarea afișajului LCD 20X4 cu Nodemcu: Am decis să împărtășesc acest lucru deoarece am fost confruntat cu dificultăți cu sarcina mea anterioară, am încercat să interfațez LCD grafic (128x64) cu Nodemcu, dar fără rezultat, am eșuat. Îmi dau seama că acest lucru trebuie să aibă legătură cu biblioteca (Biblioteca pentru grafic