- Διαμόρφωση πλάτους παλμού (PWM)
- Προγραμματισμός ATtiny13 με χρήση του Arduino
- Απαιτούμενα στοιχεία
- Διάγραμμα κυκλώματος και εργασία
Ο σερβοκινητήρας λειτουργεί στην αρχή του Pulse Width Modulation (PWM) και η γωνία περιστροφής του ελέγχεται από τη διάρκεια του παλμού που εφαρμόζεται στον πείρο ελέγχου. Εδώ σε αυτό το σεμινάριο θα ελέγξουμε έναν σερβο κινητήρα με μικροελεγκτή ATtiny13 χρησιμοποιώντας την τεχνική PWM. Έτσι, προτού προχωρήσουμε περαιτέρω, θα μάθουμε πρώτα για το PWM, το Servo Motor και τον τρόπο προγραμματισμού του ATtiny13 με το Arduino Board.
Διαμόρφωση πλάτους παλμού (PWM)
Το Pulse Width Modulation (PWM) ορίζεται ως μέθοδος για την παραγωγή αναλογικού σήματος χρησιμοποιώντας ψηφιακή πηγή. Ένα σήμα PWM αποτελείται από δύο κύρια συστατικά - κύκλο λειτουργίας και συχνότητα. Αυτά τα στοιχεία ορίζουν τη συμπεριφορά του. Ο κύκλος λειτουργίας περιγράφει το χρονικό διάστημα που το σήμα βρίσκεται σε υψηλή κατάσταση. Δηλώνεται ως ποσοστό του συνολικού χρόνου που απαιτείται για την ολοκλήρωση ενός κύκλου.
Κύκλος λειτουργίας = Χρόνος ενεργοποίησης / (Χρόνος ενεργοποίησης + χρόνος απενεργοποίησης)
Η συχνότητα καθορίζει πόσο γρήγορα το PWM ολοκληρώνει έναν κύκλο και πόσο γρήγορα το σήμα αλλάζει μεταξύ υψηλών και χαμηλών καταστάσεων. Μια συχνότητα 100Hz σημαίνει 100 κύκλους ανά δευτερόλεπτο. Με την ενεργοποίηση και απενεργοποίηση ενός ψηφιακού σήματος με γρήγορο ρυθμό και με έναν ορισμένο κύκλο λειτουργίας, η έξοδος θα εμφανίζεται σαν ένα αναλογικό σήμα σταθερής τάσης. Ένα από τα ισχυρά οφέλη του PWM είναι ότι η απώλεια ισχύος είναι πολύ ελάχιστη.
Όλοι οι σερβοκινητήρες λειτουργούν απευθείας με τροφοδοσία + 5V, αλλά πρέπει να είμαστε προσεκτικοί σχετικά με την ποσότητα ρεύματος που θα καταναλώνει ο κινητήρας. Εάν χρησιμοποιούμε περισσότερους από δύο σερβοκινητήρες θα πρέπει να σχεδιαστεί μια κατάλληλη σερβο ασπίδα.
Πριν συνδέσετε το Servo στο Attiny13, μπορείτε να δοκιμάσετε το servo σας με τη βοήθεια αυτού του Circuit Motor Tester Circuit. Εδώ έχουμε διασυνδέσει τον σερβο κινητήρα με πολλούς μικροελεγκτές:
- Interfacing Servo Motor με ARM7-LPC2148
- Διασύνδεση Servo Motor με MSP430G2
- Έλεγχος πολλαπλών σερβοκινητήρων με το Arduino
- Interfacing Servo Motor με PIC Microcontroller χρησιμοποιώντας MPLAB και XC8
- Servo Motor Control με Raspberry Pi
- Servo Motor Control με Arduino Due
- Interfacing Servo Motor με AVR Microcontroller Atmega16
Προγραμματισμός ATtiny13 με χρήση του Arduino
Το Attiny13 μπορεί να προγραμματιστεί χρησιμοποιώντας το Arduino Uno ή οποιαδήποτε άλλη πλακέτα Arduino. Συνδέστε το Attiny13 με το Arduino Uno όπως φαίνεται στο παρακάτω σχήμα.
- Arduino 5V - ATtiny13 ακίδα 8
- Arduino GND - ATtiny13 ακίδα 4
- Arduino pin 13 - ATtiny13 pin 7
- Arduino pin 12 - ATtiny13 pin 6
- Arduino pin 11 - ATtiny13 pin 5
- Arduino pin 10 - ATtiny13 pin 1
Το Arduino έχει οριστεί ως προγραμματιστής για το πρόγραμμα ATtiny13. Αυτό γίνεται φορτώνοντας το σκίτσο ArduinoISP στο Arduino. Αυτό το σκίτσο Arduino είναι διαθέσιμο στα παραδείγματα στο Arduino IDE. Ανοίξτε το Arduino IDE και μεταβείτε στο Files> Παραδείγματα> ArduinoISP .
Τώρα θα εμφανιστεί το πρόγραμμα για το ArduinoISP. Ανεβάστε το πρόγραμμα στο Arduino Uno.
Το Arduino Uno είναι τώρα έτοιμο να προγραμματίσει το Attiny13. Αλλά πρέπει να ρυθμίσουμε το Attiny εγκαθιστώντας τα βασικά του αρχεία. Για να το κάνετε αυτό, μεταβείτε στο Αρχείο >> Προτιμήσεις στο Arduino IDE
Στη συνέχεια, θα εμφανιστεί ένα νέο παράθυρο. Και στις " Πρόσθετες διευθύνσεις URL του διοικητικού συμβουλίου " προσθέστε τον παρακάτω σύνδεσμο και κάντε κλικ στο "OK".
"Https://raw.githubusercontent.com/sleemanj/optiboot/master/dists/package_gogo_diy_attiny_index.json"
Τώρα στο Arduino IDE μεταβείτε στα Εργαλεία >> Πίνακας >> Διαχείριση πινάκων
Στη συνέχεια θα εμφανιστεί ένα άλλο παράθυρο όπου στο πλαίσιο αναζήτησης πληκτρολογήστε 'Attiny' τότε θα λάβετε το "DIY ATtiny" και στη συνέχεια κάντε κλικ στο κουμπί "εγκατάσταση" (το έχω ήδη εγκαταστήσει, γι 'αυτό το κουμπί εγκατάστασης σε γκρι χρώμα)
Για να ξεκινήσουμε τον προγραμματισμό του ATtiny 13, πρέπει να κάνουμε εγγραφή του Bootloader σε αυτό. Για αυτό, μεταβείτε στα Εργαλεία> Πίνακας> ATtiny13.
Τώρα μεταβείτε στα Εργαλεία> Έκδοση επεξεργαστή και ελέγξτε αν έχει επιλεγεί η σωστή έκδοση του ATtiny. Επιλέξτε είτε ATtiny13 είτε ATtiny13a ανάλογα με το τσιπ σας.
Στη συνέχεια, κάντε κλικ στο κουμπί Burn bootloader στο κάτω μέρος του μενού Tools.
Αφού κάψετε το bootloader, το ATtiny είναι πλέον έτοιμο να προγραμματιστεί. Τώρα μπορείτε να ανεβάσετε το πρόγραμμά σας.
Απαιτούμενα στοιχεία
- Μικροελεγκτής ATtiny13
- Βοηθητικό μοτέρ
- Ποτενσιόμετρο
- + 5V μπαταρία
- Arduino IDE
- Σύνδεση καλωδίων
Διάγραμμα κυκλώματος και εργασία
Το διάγραμμα κυκλώματος για τον έλεγχο ενός σερβο κινητήρα που χρησιμοποιεί ποτ με ATtiny13 δίνεται παρακάτω.
Παρακάτω είναι οι συνδέσεις
- Συνδέστε τον πείρο ελέγχου του σερβοκινητήρα στον ακροδέκτη 5 του ATtiny13
- Συνδέστε τη γείωση του σερβοκινητήρα στον ακροδέκτη 4 του ATtiny13
- Συνδέστε το VCC του σερβοκινητήρα στον ακροδέκτη 8 του ATtiny13
- Συνδέστε τον μεσαίο πείρο του ποτενσιόμετρου στον ακροδέκτη 7 του ATtiny13
- Συνδέστε την πρώτη και την τρίτη ακίδα του ποτενσιόμετρου στα VCC και GND.
- Συνδέστε το θετικό της μπαταρίας + 5V στον ακροδέκτη 8 του ATtiny13
- Συνδέστε το αρνητικό της + 5V μπαταρίας στον ακροδέκτη 4 του ATtiny13
Ένα ποτενσιόμετρο συνδέεται στον πείρο 7 (PB2) του ATtiny13 και το καλώδιο ελέγχου του σερβοκινητήρα συνδέεται στον πείρο 5 (PB0).
Εδώ διαβάζεται η τιμή του ποτενσιόμετρου και μετατρέπεται σε τιμή μεταξύ 0 και 180. Στη συνέχεια, αυτή η τιμή γωνίας μετατρέπεται σε μικροδευτερόλεπτα και δίνεται ένας παλμός στον πείρο ελέγχου του σερβο κινητήρα με την υπολογιζόμενη καθυστέρηση μικροδευτερολέπτων. Τώρα ο σερβοκινητήρας θα γυρίσει σύμφωνα με την τιμή του ποτενσιόμετρου, όπως φαίνεται στο παρακάτω βίντεο.