Mundarija:

Harorat sensori (LM35) ATmega32 va LCD displey bilan o'zaro aloqa - Avtomatik fanatlar nazorati: 6 qadam
Harorat sensori (LM35) ATmega32 va LCD displey bilan o'zaro aloqa - Avtomatik fanatlar nazorati: 6 qadam

Video: Harorat sensori (LM35) ATmega32 va LCD displey bilan o'zaro aloqa - Avtomatik fanatlar nazorati: 6 qadam

Video: Harorat sensori (LM35) ATmega32 va LCD displey bilan o'zaro aloqa - Avtomatik fanatlar nazorati: 6 qadam
Video: LM 35 Temperature Sensor #shorts 2024, Iyul
Anonim
Harorat sensori (LM35) ATmega32 va LCD displey bilan o'zaro aloqa | Avtomatik fanatlar nazorati
Harorat sensori (LM35) ATmega32 va LCD displey bilan o'zaro aloqa | Avtomatik fanatlar nazorati

Harorat sensori (LM35) ATmega32 va LCD displey bilan o'zaro aloqa

1 -qadam:

Ushbu loyihada siz AVR ATmega32 mikrokontroller va LCD displey bilan harorat sensori (LM35) bilan qanday ishlashni o'rganasiz.

Loyihadan oldin siz quyidagi maqolalar haqida ma'lumotga ega bo'lishingiz kerak

avr studiyasida lcd kutubxonasini qanday qo'shish mumkin | avr mikrokontroller bo'yicha qo'llanma

AVR mikrokontrolleridagi ADC -ga kirish | yangi boshlanuvchilar uchun

Harorat sensori (LM35) - mashhur va arzon narxdagi harorat sensori. Ma'lumotlar jadvalida ko'rsatilganidek, VC 4V dan 20V gacha bo'lishi mumkin. Sensorni ishlatish uchun Vccni 5V ga, GND ni erga va tashqariga ADC (analogdan raqamli konvertor kanaliga) ulang.

Chiqish har bir santigrat gradusiga 10 MiliVolts. Shunday qilib, agar chiqish quvvati 310 mV bo'lsa, harorat 31 darajani tashkil qiladi. Ushbu loyihani amalga oshirish uchun siz AVR -larning ADC -ni, shuningdek, LCD -ni ishlatishingiz kerak. kuchlanish jihatidan

Taxminan 5/1024 = 5.1 mV

Shunday qilib, agar ADC natijasi 5.1 mV ga to'g'ri kelsa, ya'ni ADC ko'rsatkichi bo'lsa

10 x 5,1 mV = 51 mV

Adc_result (ch) funktsiyasidan foydalanib, har qanday ADC kanalining qiymatini o'qishingiz mumkin;

Bu erda ch-ATmega8 holatida kanal raqami (0-5). Agar siz LM35 -ni ADC -0 kanaliga ulagan bo'lsangiz, qo'ng'iroq qiling

adc_result0 = adc_read (0);

bu joriy ADC o'qilishini adc_value o'zgaruvchisida saqlaydi. Adc_value ma'lumot turi int bo'lishi kerak, chunki ADC qiymati 0-1023 gacha bo'lishi mumkin.

Ko'rib turganimizdek, ADC natijalari 5,1 mV omil va 1 daraja C uchun LM35 chiqishi 10 mV, shuning uchun 2 birlik ADC = 1 daraja.

Shunday qilib, haroratni olish uchun biz adc_value ni ikkiga bo'lamiz

harorat = adc_result0 /2;

Nihoyat, mikrokontroller 16X2 raqamli raqamli LCD displeyda haroratni santigrat darajasida ko'rsatadi.

2 -qadam: O'chirish diagrammasi

O'chirish diagrammasi
O'chirish diagrammasi

3 -qadam: Dastur

#ifndef F_CPU

#F_CPU 1600000UL ni aniqlang

#endif

#qo'shing

#qo'shing

#"LCD/lcd.h" ni qo'shing

yaroqsiz adc_init ()

{

// AREF = AVcc

ADMUX = (1 <

// ADC 128 -ni yoqish va oldindan hisoblash vositasi

ADCSRA = (1 <

}

// adc qiymatini o'qing

uint16_t adc_read (uint8_t ch)

{

// tegishli kanalni tanlang 0 ~ 7

ch & = 0b00000111; // VA 7 bilan ishlash

ADMUX = (ADMUX & 0xF8) | ch;

// bitta konvertatsiyani boshlang

// ADSCga '1' yozing

ADCSRA | = (1 <

// konvertatsiya tugashini kuting

// ADSC yana "0" ga aylanadi

esa (ADCSRA & (1 <

qaytish (ADC);

}

int main ()

{

DDRB = 0xff;

uint16_t adc_result0;

int temp;

int far;

char bufer [10];

// adc va lcd -ni ishga tushiring

adc_init ();

lcd_init (LCD_DISP_ON_CURSOR); // KURSOR

lcd_clrscr ();

lcd_gotoxy (0, 0);

_delay_ms (50);

vaqt (1)

{

adc_result0 = adc_read (0); // PA0 da adc qiymatini o'qing

temp = adc_result0/2.01; // haroratni topish

// lcd_gotoxy (0, 0);

// lcd_puts ("Adc =");

// itoa (adc_result0, bufer, 10); // ADC qiymatini ko'rsatish

// lcd_puts (bufer);

lcd_gotoxy (0, 0);

itoa (harorat, bufer, 10);

lcd_puts ("Harorat ="); // displey harorati

lcd_puts (bufer);

lcd_gotoxy (7, 0);

lcd_puts ("C");

uzoq = (1,8*harorat) +32;

lcd_gotoxy (9, 0);

itoa (uzoq, bufer, 10);

lcd_puts (bufer);

lcd_gotoxy (12, 0);

lcd_puts ("F");

_delay_ms (1000);

agar (temp> = 30)

{lcd_clrscr ();

lcd_home ();

lcd_gotoxy (0, 1);

lcd_puts ("FAN yoqilgan");

PORTB = (1 <

}

agar (temp <= 30)

{

lcd_clrscr ();

lcd_home ();

lcd_gotoxy (7, 1);

lcd_puts ("FAN o'chirilgan");

PORTB = (0 <

}

}

}

4 -qadam: Kodni tushuntiring

Umid qilamanki, siz bu kodda ADC -ni qanday yoqish va LCD -ni Avr mikrokontrolder bilan qanday bog'lashni bilasiz deb umid qilaman, agar harorat 30 darajadan oshsa, fan yoqilgan va siz LED displeyida FAN yoqilganligini, harorat esa 30 dan past bo'lganida ko'rishingiz mumkin. o'chirilgan va siz FAN OFF ni ko'rishingiz mumkin

5 -qadam: Siz to'liq loyihani yuklab olishingiz mumkin

Bu yerni bosing

Tavsiya: