- Τι είναι ένας κινητήρας DC;
- Απαιτούμενα στοιχεία
- Διάγραμμα κυκλώματος
- Προγραμματισμός Atmega16 για έλεγχο DC Motor
Οι κινητήρες DC είναι οι πιο διαδεδομένοι κινητήρες. Αυτοί οι κινητήρες βρίσκονται σχεδόν παντού, από μικρά έργα έως προηγμένη ρομποτική. Προηγουμένως διασυνδέσαμε το DC Motor με πολλούς άλλους μικροελεγκτές όπως το Arduino, το Raspberry pi και το χρησιμοποιήσαμε σε πολλά ρομποτικά έργα. Σήμερα μαθαίνουμε να ελέγχουμε τον κινητήρα DC με τον AVR Microcontroller Atmega16. Αλλά πριν προχωρήσουμε, ας μάθουμε περισσότερα για τον κινητήρα DC.
Τι είναι ένας κινητήρας DC;
Το DC Motor είναι μια συσκευή που μετατρέπει την ηλεκτρική ενέργεια σε μηχανική ενέργεια. Συγκεκριμένα, ένας κινητήρας DC χρησιμοποιεί ρεύμα DC για τη μετατροπή της ηλεκτρικής ενέργειας σε μηχανική ενέργεια. Η βασική αρχή του κινητήρα είναι η αλληλεπίδραση μεταξύ του μαγνητικού πεδίου και του ρεύματος για την παραγωγή μιας δύναμης εντός του κινητήρα που βοηθά τον κινητήρα να περιστρέφεται. Έτσι, όταν το ηλεκτρικό ρεύμα διέρχεται μέσω ενός πηνίου σε ένα μαγνητικό πεδίο, δημιουργείται μια μαγνητική δύναμη που παράγει μια ροπή με αποτέλεσμα την κίνηση του κινητήρα. Η κατεύθυνση του κινητήρα ελέγχεται αναστρέφοντας το ρεύμα. Επίσης η ταχύτητά του μπορεί να ποικίλει ανάλογα με την παρεχόμενη τάση. Δεδομένου ότι οι μικροελεγκτές έχουν ακίδες PWM, έτσι μπορεί να χρησιμοποιηθεί για τον έλεγχο της ταχύτητας του κινητήρα.
Σε αυτό το σεμινάριο, η λειτουργία κινητήρα DC θα παρουσιαστεί με το Atmega16. Ο οδηγός κινητήρα L293D θα χρησιμοποιηθεί για να αντιστρέψει την κατεύθυνση του ρεύματος και έτσι την κατεύθυνση κίνησης. Ο οδηγός κινητήρα L293D χρησιμοποιεί διαμόρφωση κυκλώματος H-Bridge που εξάγει απαιτούμενο ρεύμα στον κινητήρα. Χρησιμοποιούνται δύο μπουτόν για την επιλογή της κατεύθυνσης του κινητήρα. Ένα από τα κουμπιά χρησιμοποιείται για την επιλογή της περιστροφής του ρολογιού και το άλλο χρησιμοποιείται για την επιλογή της λειτουργίας κατά του ρολογιού του κινητήρα DC.
Απαιτούμενα στοιχεία
- DC Motor (5V)
- Οδηγός κινητήρα L293D
- Atmega16 Μικροελεγκτής IC
- 16Mhz Crystal Oscillator
- Δύο πυκνωτές 100nF
- Δύο πυκνωτές 22pF
- Πλήκτρο
- Καλώδια αλτών
- Ψωμί
- USBASP v2.0
- Led (Οποιοδήποτε χρώμα)
Διάγραμμα κυκλώματος
Προγραμματισμός Atmega16 για έλεγχο DC Motor
Εδώ το Atmega16 προγραμματίζεται χρησιμοποιώντας USBASP και Atmel Studio7.0. Εάν δεν ξέρετε πώς να προγραμματίσετε το Atmega16 χρησιμοποιώντας USBASP, επισκεφθείτε τον σύνδεσμο. Πλήρες πρόγραμμα δίνεται στο τέλος του έργου, απλώς ανεβάστε το πρόγραμμα στο Atmega16 και χρησιμοποιήστε τα δύο κουμπιά για να περιστρέψετε τον κινητήρα DC δεξιόστροφα και αριστερόστροφα.Ο κινητήρας DC διασυνδέεται χρησιμοποιώντας το πρόγραμμα οδήγησης κινητήρα L293D. Ο κινητήρας DC περιστρέφεται προς δύο κατευθύνσεις όταν πατηθεί το αντίστοιχο κουμπί. Το ένα κουμπί θα χρησιμοποιηθεί για την περιστροφή του κινητήρα DC σε κατεύθυνση ρολογιού και το άλλο κουμπί θα χρησιμοποιηθεί για την περιστροφή του κινητήρα DC σε κατεύθυνση σοφού ρολογιού. Κατ 'αρχάς ορίστε τη συχνότητα CPU του μικροελεγκτή και συμπεριλάβετε όλες τις απαραίτητες βιβλιοθήκες.
#define F_CPU 16000000UL #include #include
Στη συνέχεια, χρησιμοποιήστε μία μεταβλητή για να παρακολουθείτε την κατάσταση πατήματος του κουμπιού. Αυτή η μεταβλητή θα χρησιμοποιηθεί για τον καθορισμό της κατεύθυνσης του κινητήρα.
int i;
Επιλέξτε τη λειτουργία εισόδου / εξόδου του GPIO χρησιμοποιώντας τον καταχωρητή κατεύθυνσης δεδομένων. Αρχικά, κάντε την έξοδο του μοτέρ κινητήρα τόσο χαμηλή για να αποφύγετε την εκκίνηση του κινητήρα χωρίς να πατήσετε το κουμπί.
DDRA = 03; ΠΟΡΤΑ & = ~ (1 << 1); PORTA & = ~ (1 << 0);
Ελέγξτε εάν το 1ο κουμπί πιέζεται συνδεδεμένο στο PORTA4 του Atmega16 και αποθηκεύστε την κατάσταση του κουμπιού στο μεταβλητό.
αν (! bit_is_clear (PINA, 4)) { i = 1; ΠΟΡΤΑ & = ~ (1 << 1); _delay_ms (1000); }
Ομοίως, ελέγξτε αν 2 ος μπουτόν είναι πατημένο συνδέεται με PORTA5 της ATmega16 και να αποθηκεύουν την κατάσταση των μπουτόν στην μεταβλητή.
αλλιώς εάν (! bit_is_clear (PINA, 5)) { i = 2; PORTA & = ~ (1 << 0); _delay_ms (1000); }
Εάν η κατάσταση του 1ου κουμπιού είναι αληθινή, περιστρέψτε τον κινητήρα DC σε ρολόι και αν η κατάσταση του δεύτερου κουμπιού είναι αληθής, περιστρέψτε τον κινητήρα DC σε αντίστροφη ώρα.
αν (i == 1) { PORTA - = (1 << 0); ΠΟΡΤΑ & = ~ (1 << 1); } αλλιώς εάν (i == 2) { PORTA - = (1 << 1); PORTA & = ~ (1 << 0); }
Μπορείτε να συνδέσετε τις ακίδες κινητήρα σε οποιονδήποτε ακροδέκτη GPIO ανάλογα με το GPIO που χρησιμοποιείται. Επίσης, είναι σημαντικό να χρησιμοποιήσετε το Motor Driver IC για να μειώσετε το φορτίο του μικροελεγκτή, καθώς οι μικροελεγκτές δεν είναι σε θέση να παρέχουν το απαιτούμενο ρεύμα για την εκτέλεση κινητήρων DC. Για περισσότερες λεπτομέρειες και άλλα έργα που βασίζονται σε κινητήρες DC, επισκεφθείτε τον δεδομένο σύνδεσμο.
Ο πλήρης κώδικας και το βίντεο επίδειξης δίνονται παρακάτω.