תוכן עניינים:

חיישן טמפרטורה (LM35) ממשק עם ATmega32 ותצוגת LCD - בקרת מאוורר אוטומטית: 6 שלבים
חיישן טמפרטורה (LM35) ממשק עם ATmega32 ותצוגת LCD - בקרת מאוורר אוטומטית: 6 שלבים

וִידֵאוֹ: חיישן טמפרטורה (LM35) ממשק עם ATmega32 ותצוגת LCD - בקרת מאוורר אוטומטית: 6 שלבים

וִידֵאוֹ: חיישן טמפרטורה (LM35) ממשק עם ATmega32 ותצוגת LCD - בקרת מאוורר אוטומטית: 6 שלבים
וִידֵאוֹ: LM35 - Temperature Sensor - Fluctuating And High Temperature Reading | Solution | Krishna Verma 2024, יולי
Anonim
חיישן טמפרטורה (LM35) ממשק עם ATmega32 ותצוגת LCD | בקרת מאוורר אוטומטית
חיישן טמפרטורה (LM35) ממשק עם ATmega32 ותצוגת LCD | בקרת מאוורר אוטומטית

חיישן טמפרטורה (LM35) ממשק עם ATmega32 ותצוגת LCD

שלב 1:

בפרויקט זה, תלמד כיצד ממשק חיישן טמפרטורה (LM35) עם מיקרו -בקר AVm ATmega32 ותצוגת LCD.

לפני פרויקט זה עליך ללמוד על המאמרים הבאים

כיצד להוסיף ספריית lcd ב avr studio | הדרכה של מיקרו בקר avr

היכרות עם ADC במיקרו -בקר AVR | למתחילים

חיישן טמפרטורה (LM35) הוא חיישן טמפרטורה פופולרי בעלות נמוכה. ה- Vcc יכול להיות בין 4V ל 20V כפי שצוין בגליון הנתונים. כדי להשתמש בחיישן פשוט חבר את ה- Vcc ל- 5V, GND to Ground and the Out לאחד מערוצי ה- ADC (ערוץ ממיר אנלוגי לדיגיטלי).

התפוקה היא 10 מילי -וולט לכל מעלות צלזיוס. אז אם הפלט הוא 310 mV אז הטמפרטורה היא 31 מעלות צלזיוס. כדי לבצע את הפרויקט הזה אתה צריך להכיר את ה- ADC של AVR וגם להשתמש ב- LCD אז הרזולוציה של AVRs ADC היא 10bit ולמתח התייחסות אתה משתמש ב- 5V כך שהרזולוציה מבחינת המתח הוא

5/1024 = 5.1mV בערך

אז אם התוצאה של ADC תואמת 5.1mV כלומר אם קריאת ADC היא

10 x 5.1mV = 51mV

אתה יכול לקרוא את הערך של כל ערוץ ADC באמצעות הפונקציה adc_result (ch);

כאשר ch הוא מספר הערוץ (0-5) במקרה של ATmega8. אם חיברת את ה- LM35 של out put ל- ערוץ ADC 0, התקשר

adc_result0 = adc_read (0);

זה יאחסן את קריאת ה- ADC הנוכחית במשתנה adc_value. סוג הנתונים של adc_value צריך להיות int מכיוון שערך ADC יכול לנוע בין 0-1023.

כפי שראינו תוצאות ה- ADC הן בגורם של 5.1mV ועבור מעלה אחת C התפוקה של LM35 היא 10mV, אז 2 יחידות ADC = מעלה אחת.

אז כדי לקבל את הטמפרטורה נחלק את הערך adc_value לשניים

טמפרטורה = adc_result0 /2;

לבסוף המיקרו -בקר יציג את הטמפרטורה ברמה -צלזיוס ב- LCD האלפאנומרי 16X2.

שלב 2: תרשים מעגלים

תרשים מעגלים
תרשים מעגלים

שלב 3: תכנית

#ifndef F_CPU

#הגדר F_CPU 1600000UL

#endif

#לִכלוֹל

#לִכלוֹל

#כלול "LCD/lcd.h"

void adc_init ()

{

// AREF = AVcc

ADMUX = (1 <

// ADC הפעלה ומעריכה מראש של 128

ADCSRA = (1 <

}

// קרא ערך adc

uint16_t adc_read (uint8_t ch)

{

// בחר את הערוץ המתאים 0 ~ 7

ch & = 0b00000111; // AND פעולה עם 7

ADMUX = (ADMUX & 0xF8) | ch;

// התחל המרה בודדת

// כתוב '1' ל- ADSC

ADCSRA | = (1 <

// המתן להשלמת ההמרה

// ADSC הופך שוב ל -0

בעוד (ADCSRA & (1 <

החזרה (ADC);

}

int main ()

{

DDRB = 0xff;

uint16_t adc_result0;

int temp;

int רחוק;

חיץ חרוך [10];

// אתחול adc ו- lcd

adc_init ();

lcd_init (LCD_DISP_ON_CURSOR); //סַמָן

lcd_clrscr ();

lcd_gotoxy (0, 0);

_ עיכוב_מס (50);

בעוד (1)

{

adc_result0 = adc_read (0); // קרא ערך ADC ב- PA0

temp = adc_result0/2.01; // מציאת הטמפרטורה

// lcd_gotoxy (0, 0);

// lcd_puts ("Adc =");

// itoa (adc_result0, חיץ, 10); // להציג ערך ADC

// lcd_puts (מאגר);

lcd_gotoxy (0, 0);

itoa (טמפ ', חיץ, 10);

lcd_puts ("Temp ="); // טמפרטורת תצוגה

lcd_puts (מאגר);

lcd_gotoxy (7, 0);

lcd_puts ("C");

רחוק = (1.8*טמפ ') +32;

lcd_gotoxy (9, 0);

itoa (רחוק, חיץ, 10);

lcd_puts (מאגר);

lcd_gotoxy (12, 0);

lcd_puts ("F");

_ delay_ms (1000);

אם (טמפ '> = 30)

{lcd_clrscr ();

lcd_home ();

lcd_gotoxy (0, 1);

lcd_puts ("FAN ON");

PORTB = (1 <

}

אם (טמפ '<= 30)

{

lcd_clrscr ();

lcd_home ();

lcd_gotoxy (7, 1);

lcd_puts ("FAN OFF");

PORTB = (0 <

}

}

}

שלב 4: הסבר קוד

אני מקווה שאתה יודע שתדע כיצד להפעיל ADC וכיצד להתממשק LCD עם מיקרו בקר Avr בקוד זה כשהטמפרטורה גבוהה מ -30 מעלות ואז המאוורר דולק ותוכל לראות ב- FAN Display FAN ON וכאשר הטמפרטורה פחות מ -30 ואז המאוורר כבוי ותוכל לראות FAN OFF

שלב 5: אתה יכול להוריד את הפרויקט המלא

לחץ כאן

מוּמלָץ: