Σε αυτό το σεμινάριο πρόκειται να ελέγξουμε έναν σερβο κινητήρα από το ARDUINO UNO. Τα Servo Motors χρησιμοποιούνται όταν υπάρχει ανάγκη για ακριβή κίνηση ή θέση άξονα. Αυτά δεν προτείνονται για εφαρμογές υψηλής ταχύτητας. Αυτά προτείνονται για χαμηλή ταχύτητα, μέση ροπή και ακριβή εφαρμογή θέσης. Αυτοί οι κινητήρες χρησιμοποιούνται σε μηχανές ρομποτικών βραχιόνων, χειριστήρια πτήσης και συστήματα ελέγχου.
Οι σερβοκινητήρες διατίθενται σε διάφορα σχήματα και μεγέθη. Ένας σερβοκινητήρας θα έχει κυρίως καλώδια, το ένα είναι για θετική τάση και το άλλο για γείωση και το τελευταίο για ρύθμιση θέσης. Το καλώδιο ΚΟΚΚΙΝΟ συνδέεται στην τροφοδοσία, το μαύρο καλώδιο συνδέεται στη γείωση και το ΚΙΤΡΙΝΟ καλώδιο συνδέεται στο σήμα.
Ένας σερβοκινητήρας είναι ένας συνδυασμός κινητήρα DC, συστήματος ελέγχου θέσης, γραναζιών. Η θέση του άξονα του κινητήρα DC ρυθμίζεται από τα ηλεκτρονικά στοιχεία ελέγχου στο σερβο, με βάση την αναλογία λειτουργίας του σήματος PWM του πείρου SIGNAL.
Με απλά λόγια, τα ηλεκτρονικά χειριστήρια ρυθμίζουν τη θέση του άξονα ελέγχοντας τον κινητήρα DC. Αυτά τα δεδομένα σχετικά με τη θέση του άξονα αποστέλλονται μέσω του πείρου SIGNAL. Τα δεδομένα θέσης στο χειριστήριο πρέπει να αποστέλλονται με τη μορφή σήματος PWM μέσω του πείρου σήματος του σερβοκινητήρα.
Η συχνότητα του σήματος PWM (Pulse Width Modulated) μπορεί να διαφέρει ανάλογα με τον τύπο του σερβοκινητήρα. Το σημαντικό πράγμα εδώ είναι το DUTY RATIO του σήματος PWM. Με βάση αυτό το DUTY RATION τα ηλεκτρονικά χειριστήρια ρυθμίζουν τον άξονα.
Όπως φαίνεται στο παρακάτω σχήμα, για να μετακινηθεί ο άξονας σε ρολόι 9ο, το ΣΤΡΟΦΟΛΟ ΤΡΟΝΟΥ πρέπει να είναι 1 / 18.ie. Χρόνος ON 1ms και χρόνος OFF 17ms σε σήμα 18ms.
Για να μετακινηθεί ο άξονας σε ρολόι 12o, ο χρόνος ON του σήματος πρέπει να είναι 1,5ms και ο χρόνος OFF πρέπει να είναι 16,5ms. Αυτός ο λόγος αποκωδικοποιείται από το σύστημα ελέγχου σε σερβο και προσαρμόζει τη θέση βάσει αυτού. Αυτό το PWM εδώ δημιουργείται χρησιμοποιώντας το ARDUINO UNO.
Εξαρτήματα κυκλώματος
Υλικό: ARDUINO UNO, τροφοδοτικό (5v), πυκνωτής 100uF, κουμπιά (δύο τεμάχια), αντίσταση 1KΩ (δύο τεμάχια), σερβοκινητήρας (που έπρεπε να δοκιμαστεί).
Λογισμικό: arduino IDE (Arduino nightly).
Διάγραμμα και επεξήγηση Arduino Servo Motor Circuit
Σε κανονικές περιπτώσεις, πρέπει να πάμε στα μητρώα του ελεγκτή για να ρυθμίσουμε τη συχνότητα και για να λάβουμε την απαιτούμενη αναλογία λειτουργίας για τον ακριβή έλεγχο της θέσης του σερβο, στο ARDUINO δεν χρειάζεται να κάνουμε αυτά τα πράγματα.
Στο ARDUINO έχουμε προκαθορισμένες βιβλιοθήκες, οι οποίες θα ορίσουν τις συχνότητες και τους λόγους λειτουργίας ανάλογα με την κλήση ή τη συμπερίληψη του αρχείου κεφαλίδας. Στο ARDUINO πρέπει απλώς να δηλώσουμε τη θέση του σερβο που απαιτείται και το PWM προσαρμόζεται αυτόματα από το UNO.
Τα πράγματα που πρέπει να κάνουμε για να έχουμε ακριβή θέση του σερβο είναι:
|
Πρώτα πρέπει να ρυθμίσουμε τη συχνότητα του σήματος PWM και για αυτό πρέπει να καλέσουμε "# include
Τώρα πρέπει να ορίσουμε ένα όνομα για το servo "Servo sg90sevo", εδώ το "sg90servo" είναι το όνομα που επιλέγεται, οπότε ενώ γράφουμε για φίλτρο πρόκειται να χρησιμοποιήσουμε αυτό το όνομα, αυτή η λειτουργία είναι χρήσιμη όταν έχουμε πολλά servos για έλεγχο, μπορούμε να ελέγξουμε έως και οκτώ σερβο από αυτό.
Τώρα λέμε στο UNO πού είναι συνδεδεμένος ο πείρος σήματος του σερβο ή πού χρειάζεται να δημιουργήσει το σήμα PWM. Για να το κάνουμε αυτό έχουμε το "Sg90. Attach (3);", εδώ λέμε στο UNO ότι συνδέσαμε τον ακροδέκτη σήματος του σερβο στο PIN3.
Όλα αριστερά είναι να ρυθμίσουμε τη θέση, πρόκειται να ορίσουμε τη θέση του σερβο χρησιμοποιώντας το "Sg90.write (30);", με αυτήν την εντολή το σερβο χέρι κινείται 30 μοίρες, έτσι αυτό είναι. Μετά από αυτό, όποτε χρειαστεί να αλλάξουμε τη θέση του σερβο, πρέπει να καλέσουμε την εντολή "Sg90.write (required_position_ angle);". Σε αυτό το κύκλωμα θα έχουμε δύο κουμπιά το ένα κουμπί αυξάνει τη θέση του σερβο και το άλλο είναι για τη μείωση της θέσης του σερβο.
Ο οδηγός ελέγχου Arduino Servo Motor εξηγείται βήμα προς βήμα του κώδικα C που δίνεται παρακάτω.