Οι σερβοκινητήρες είναι πολύ χρήσιμοι σε ηλεκτρονικά και ενσωματωμένα συστήματα. Μπορείτε να βρείτε τη χρήση του σερβοκινητήρα παντού γύρω σας, χρησιμοποιούνται σε παιχνίδια, ρομπότ, δίσκο CD υπολογιστή, αυτοκίνητα, αεροπλάνα κ.λπ. Ο λόγος αυτής της ευρείας εμβέλειας είναι ότι, ο σερβοκινητήρας είναι πολύ αξιόπιστος και ακριβής. Μπορούμε να το περιστρέψουμε σε οποιαδήποτε συγκεκριμένη γωνία. Διατίθενται σε μεγάλη γκάμα, από κινητήρες υψηλής ροπής έως κινητήρες χαμηλής ροπής. Σε αυτό το σεμινάριο πρόκειται να συνδέσουμε έναν σερβο κινητήρα με 8051 μικροελεγκτή (AT89S52).
Πρώτα πρέπει να κατανοήσουμε την αρχή λειτουργίας των σερβοκινητήρων. Ο σερβοκινητήρας λειτουργεί στην κύρια μονάδα PWM (Pulse width modulation), σημαίνει ότι η γωνία περιστροφής του ελέγχεται από τη διάρκεια του παλμού που εφαρμόζεται στο PIN ελέγχου. Βασικά, ο σερβοκινητήρας αποτελείται από κινητήρα DC που ελέγχεται από μεταβλητή αντίσταση (ποτενσιόμετρο) και μερικά γρανάζια. Η δύναμη υψηλής ταχύτητας του κινητήρα DC μετατρέπεται σε ροπή από την Gears. Γνωρίζουμε ότι WORK = FORCE X DISTANCE, στον κινητήρα DC Η δύναμη είναι μικρότερη και η απόσταση (ταχύτητα) είναι υψηλή και στο Servo, η δύναμη είναι υψηλή και η απόσταση είναι μικρότερη. Το ποτενσιόμετρο συνδέεται στον άξονα εξόδου του Servo, για να υπολογίσει τη γωνία και να σταματήσει τον κινητήρα DC στην απαιτούμενη γωνία.
Ο σερβοκινητήρας μπορεί να περιστραφεί από 0 έως 180 μοίρες, αλλά μπορεί να φτάσει έως και 210 μοίρες, ανάλογα με τον κατασκευαστή. Αυτός ο βαθμός περιστροφής μπορεί να ελεγχθεί εφαρμόζοντας παλμό LOGIC επιπέδου 1 για διάρκεια μεταξύ 1ms έως 2ms. Ένα 1 ms μπορεί να περιστραφεί servo σε 0 βαθμό, 1,5 ms μπορεί να περιστραφεί σε 90 μοίρες και 2 ms παλμός μπορεί να το περιστρέψει σε 180 μοίρες. Η διάρκεια μεταξύ 1 και 2 ms μπορεί να περιστρέψει τον σερβοκινητήρα σε οποιαδήποτε γωνία μεταξύ 0 και 180 μοιρών.
Διάγραμμα κυκλώματος και εξήγηση εργασίας
Ο σερβοκινητήρας έχει τρία καλώδια Κόκκινο για Vcc (τροφοδοτικό), Καφέ για Γείωση και Πορτοκαλί είναι καλώδιο ελέγχου. Το καλώδιο ελέγχου μπορεί να συνδεθεί στο 8051, το έχουμε συνδέσει στον ακροδέκτη 2.1 του 8051. Τώρα πρέπει να κρατήσουμε αυτόν τον πείρο στη λογική 1 για 1ms για να το περιστρέψουμε 0 μοίρες, 1,5 ms για 90 μοίρες, 2 ms για 180 μοίρες. Χρησιμοποιήσαμε χρονοδιακόπτες chip του 8051 για να δημιουργήσουμε καθυστέρηση. Έχουμε δημιουργήσει καθυστέρηση 50us μέσω της λειτουργίας "servo_delay" και χρησιμοποιήσαμε το "for" loop για να δημιουργήσουμε καθυστέρηση σε πολλαπλάσια των 50us.
Χρησιμοποιούμε το Χρονοδιακόπτη 0 και στη Λειτουργία 1, οπότε έχουμε βάλει 01H στο μητρώο TMOD. Η λειτουργία 1 είναι λειτουργία χρονοδιακόπτη 16 bit και το TH0 περιέχει High byte και το TL0 περιέχει χρονοδιακόπτη χαμηλού byte 16 bit. Έχουμε τοποθετήσει το FFD2 σε 16 bit χρονοδιακόπτη, FF σε TH0 και D2 σε TL0. Η τοποθέτηση του FFD2 θα δημιουργήσει καθυστέρηση περίπου. 50 us με τον κρύσταλλο των 11.0592MHz. Τα TR0 και TF0 είναι τα bit του καταχωρητή TCON, ο πείρος TR χρησιμοποιείται για την εκκίνηση του χρονοδιακόπτη κατά τη ρύθμιση και τη διακοπή κατά την επαναφορά (0). Το TF είναι υπερχείλιση, ορίζεται από το υλικό κατά την υπερχείλιση και πρέπει να το επαναφέρετε από λογισμικό. Βασικά, το TF λέει την ολοκλήρωση του Χρονοδιακόπτη και ορίζεται από το υλικό όταν 16 χρονόμετρο διαμετακόμιση από FFFFH σε 0000H. Μπορείτε να διαβάσετε σχετικά με το "8051 Timers" για να κατανοήσετε τον υπολογισμό της τιμής στους καταχωρητές χρονομετρητών, για να δημιουργήσετε την καθυστέρηση 50 us.
Τώρα όταν μετριέται από CRO, 13 βρόχοι της συνάρτησης servo_delay θα δώσουν την καθυστέρηση 1 ms, οπότε ξεκινήσαμε από 1 mms (13 βρόχους) και πήγαμε στα 2 ms (26 loop) για να περιστρέψουμε το servo από 0 σε 180 μοίρες. Αλλά έχουμε αργά αυξήσει την καθυστέρηση από 1ms, χωρίσαμε το παράθυρο 1ms σε 2 ms σε 7 μέρη όπως 1,14ms, 1,28 ms, 1,42ms και ούτω καθεξής, έτσι το σερβο θα περιστραφεί σε πολλαπλάσια περίπου. 26 μοίρες (180/7). Μετά το 180 θα επιστρέψει αυτόματα σε 0 βαθμό.