Πίνακας περιεχομένων:

Αισθητήρας θερμοκρασίας (LM35) Διασύνδεση με οθόνη ATmega32 και LCD - Αυτόματος έλεγχος ανεμιστήρα: 6 βήματα
Αισθητήρας θερμοκρασίας (LM35) Διασύνδεση με οθόνη ATmega32 και LCD - Αυτόματος έλεγχος ανεμιστήρα: 6 βήματα

Βίντεο: Αισθητήρας θερμοκρασίας (LM35) Διασύνδεση με οθόνη ATmega32 και LCD - Αυτόματος έλεγχος ανεμιστήρα: 6 βήματα

Βίντεο: Αισθητήρας θερμοκρασίας (LM35) Διασύνδεση με οθόνη ATmega32 και LCD - Αυτόματος έλεγχος ανεμιστήρα: 6 βήματα
Βίντεο: LDmicro 20: I2C Liquid Crystal Display Resolved(Microcontroller PLC Ladder Programming with LDmicro) 2024, Νοέμβριος
Anonim
Αισθητήρας θερμοκρασίας (LM35) Διασύνδεση με οθόνη ATmega32 και LCD | Αυτόματος έλεγχος ανεμιστήρα
Αισθητήρας θερμοκρασίας (LM35) Διασύνδεση με οθόνη ATmega32 και LCD | Αυτόματος έλεγχος ανεμιστήρα

Αισθητήρας θερμοκρασίας (LM35) Διασύνδεση με ATmega32 και οθόνη LCD

Βήμα 1:

Σε αυτό το έργο, θα μάθετε πώς να διασυνδέετε έναν αισθητήρα θερμοκρασίας (LM35) με μικροελεγκτή AVR ATmega32 και οθόνη LCD.

Πριν από αυτό το έργο, πρέπει να μάθετε για τα παρακάτω άρθρα

πώς να προσθέσετε βιβλιοθήκη LCD στο στούντιο avr | φροντιστήριο μικροελεγκτή avr

εισαγωγή στο ADC στον μικροελεγκτή AVR | για αρχάριους

Ο αισθητήρας θερμοκρασίας (LM35) είναι ένας δημοφιλής και χαμηλού κόστους αισθητήρας θερμοκρασίας. Το Vcc μπορεί να είναι από 4V έως 20V όπως καθορίζεται από το φύλλο δεδομένων. Για να χρησιμοποιήσετε τον αισθητήρα, απλώς συνδέστε το Vcc σε 5V, το GND στο Ground και το Out σε ένα από τα ADC (κανάλι μετατροπέα αναλογικού σε ψηφιακό).

Η έξοδος είναι 10MilliVolts ανά βαθμό Κελσίου. Έτσι, εάν η έξοδος είναι 310 mV, τότε η θερμοκρασία είναι 31 βαθμοί C. Για να κάνετε αυτό το έργο, θα πρέπει να είστε εξοικειωμένοι με το ADC των AVR και επίσης με την οθόνη LCD. όσον αφορά την τάση είναι

5/1024 = 5,1mV περίπου

Επομένως, εάν το αποτέλεσμα ADC αντιστοιχεί σε 5,1mV, δηλαδή εάν είναι ανάγνωση ADC

10 χ 5,1 mV = 51 mV

Μπορείτε να διαβάσετε την τιμή οποιουδήποτε καναλιού ADC χρησιμοποιώντας τη συνάρτηση adc_result (ch).

Όπου ch είναι ο αριθμός καναλιού (0-5) σε περίπτωση ATmega8. Εάν έχετε συνδέσει τα LM35 out out στο κανάλι ADC 0, καλέστε

adc_result0 = adc_read (0);

Αυτό θα αποθηκεύσει την τρέχουσα ανάγνωση ADC σε μεταβλητή adc_value. Ο τύπος δεδομένων της adc_value πρέπει να είναι int καθώς η τιμή ADC μπορεί να κυμαίνεται από 0-1023.

Όπως είδαμε τα αποτελέσματα ADC είναι σε συντελεστή 5,1mV και για 1 βαθμό C η έξοδος LM35 είναι 10mV, άρα 2 μονάδες ADC = 1 βαθμός.

Έτσι για να πάρουμε τη θερμοκρασία διαιρούμε την τιμή adc_value με δύο

θερμοκρασία = adc_result0 /2;

Τέλος, ο μικροελεγκτής θα εμφανίσει τη θερμοκρασία σε βαθμούς Κελσίου στην αλφαριθμητική οθόνη LCD 16X2.

Βήμα 2: Διάγραμμα κυκλώματος

Διάγραμμα κυκλώματος
Διάγραμμα κυκλώματος

Βήμα 3: Πρόγραμμα

#ifndef F_CPU

#define F_CPU 1600000UL

#τέλος εαν

#περιλαμβάνω

#περιλαμβάνω

#include "LCD/lcd.h"

άκυρο adc_init ()

{

// AREF = AVcc

ADMUX = (1 <

// ADC Enable and prescaler of 128

ADCSRA = (1 <

}

// ανάγνωση τιμής adc

uint16_t adc_read (uint8_t ch)

{

// επιλέξτε το αντίστοιχο κανάλι 0 ~ 7

ch & = 0b00000111; // ΚΑΙ λειτουργία με 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 μακριά?

buff buff [10];

// αρχικοποίηση adc και lcd

adc_init ();

lcd_init (LCD_DISP_ON_CURSOR); //ΔΡΟΜΕΑΣ

lcd_clrscr ();

lcd_gotoxy (0, 0);

_delay_ms (50);

ενώ (1)

{

adc_result0 = adc_read (0); // διαβάστε την τιμή adc στο PA0

temp = adc_result0/2.01; // εύρεση της θερμοκρασίας

// lcd_gotoxy (0, 0);

// lcd_puts ("Adc =");

// itoa (adc_result0, buffer, 10); // εμφάνιση της τιμής ADC

// lcd_puts (buffer);

lcd_gotoxy (0, 0);

itoa (temp, buffer, 10)?

lcd_puts ("Temp ="); // οθόνη θερμοκρασίας

lcd_puts (buffer);

lcd_gotoxy (7, 0);

lcd_puts ("C");

μακριά = (1,8*θερμοκρασία) +32;

lcd_gotoxy (9, 0);

itoa (μακριά, buffer, 10)?

lcd_puts (buffer);

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 μοίρες και ο ανεμιστήρας είναι ενεργοποιημένος και μπορείτε να δείτε στο led Display FAN ON και όταν η θερμοκρασία είναι μικρότερη από 30 και στη συνέχεια ο ανεμιστήρας είναι απενεργοποιημένο και μπορείτε να δείτε FAN OFF

Βήμα 5: Μπορείτε να κατεβάσετε το πλήρες έργο

Κάντε κλικ ΕΔΩ

Συνιστάται: