Όπως συζητήθηκε προηγουμένως, το Arduino Due είναι ένας πίνακας βασισμένος σε ελεγκτή ARM σχεδιασμένος για ηλεκτρονικούς μηχανικούς και χόμπι. Αυτή η πλακέτα DUE μπορεί να χρησιμοποιηθεί για την κατασκευή μηχανών CNC, τρισδιάστατων εκτυπωτών, ρομποτικών βραχιόνων κ.λπ. Όλα αυτά τα έργα έχουν ένα κοινό χαρακτηριστικό που είναι ο έλεγχος θέσης. Οποιοδήποτε από αυτά τα έργα χρειάζεται ακρίβεια ως προς τη θέση τους. Οι ακριβείς θέσεις σε αυτά τα μηχανήματα μπορούν να επιτευχθούν από τη Servo Motors. Σε αυτή τη συνεδρία θα ελέγξουμε τη θέση ενός Servo Motor με το Arduino Due. Έχουμε ήδη καλύψει τη διεπαφή Servo Motor με το Arduino Uno και το Servo Motor Interfacing με τον 8051 Microcontroller.
Servo Motors:
Οι Servo Motors είναι γνωστοί για την ακριβή κίνηση του άξονα ή τη θέση τους. Αυτά δεν προτείνονται για εφαρμογές υψηλής ταχύτητας. Αυτά προτείνονται για χαμηλή ταχύτητα, μέση ροπή και ακριβή εφαρμογή θέσης. Αυτοί οι κινητήρες χρησιμοποιούνται σε ρομποτικούς βραχίονες, χειριστήρια πτήσης και συστήματα ελέγχου. Οι σερβοκινητήρες χρησιμοποιούνται επίσης σε ορισμένους εκτυπωτές και φαξ.
Οι σερβοκινητήρες διατίθενται σε διάφορα σχήματα και μεγέθη. Σε αυτό το σεμινάριο θα χρησιμοποιήσουμε το SG90 Servo Motor. Το SG90 είναι ένας σερβοκινητήρας 180 μοιρών. Έτσι με αυτό το σερβο μπορούμε να τοποθετήσουμε τον άξονα από 0 έως 180 μοίρες.
Ένας Servo Motor έχει κυρίως τρία καλώδια, το ένα είναι για θετική τάση, ένα άλλο για γείωση και το τελευταίο για ρύθμιση θέσης. Το καλώδιο ΚΟΚΚΙΝΟ συνδέεται στην τροφοδοσία, το καλώδιο καφέ συνδέεται στη γείωση και το ΚΙΤΡΙΝΟ καλώδιο (ή ΛΕΥΚΟ) συνδέεται στο σήμα.
Το Servo Motor είναι ένας συνδυασμός κινητήρα DC, συστήματος ελέγχου θέσης και γραναζιών. Σε σερβο, έχουμε ένα σύστημα ελέγχου που παίρνει το σήμα PWM από τον πείρο σήματος. Αποκωδικοποιεί το σήμα και λαμβάνει την αναλογία λειτουργίας από αυτό. Μετά από αυτό συγκρίνει την αναλογία με τις προκαθορισμένες τιμές θέσεων. Εάν υπάρχει διαφορά στις τιμές, προσαρμόζει ανάλογα τη θέση του σερβο. Έτσι, η θέση του άξονα του σερβοκινητήρα βασίζεται στην αναλογία λειτουργίας του σήματος PWM προς τον πείρο SIGNAL.
Η συχνότητα του σήματος PWM (Pulse Width Modulated) μπορεί να ποικίλει ανάλογα με τον τύπο του σερβοκινητήρα. Το σημαντικό πράγμα εδώ είναι το DUTY RATIO του σήματος PWM. Ελέγξτε αυτό για PWM με το Arduino Due. Ωστόσο, σε αυτήν την περίπτωση, δεν χρειάζεται καν να ανησυχούμε για την επιλογή Duty Ratio. Στο Arduino έχουμε μια ειδική λειτουργία. Μόλις το καλέσουμε, μπορούμε να προσαρμόσουμε τη θέση του σερβο, απλώς δηλώνοντας τη γωνία. Θα μιλήσουμε για αυτό στην ενότητα εργασίας παρακάτω.
Πριν από τη διασύνδεση του Servo Motor στο Arduino Due, μπορείτε να δοκιμάσετε το servo σας με τη βοήθεια αυτού του Servo Motor Tester Circuit. Ελέγξτε επίσης αυτά τα έργα στο Control Servo by Flex Sensor ή στο Force Sensor.
Συστατικά:
Υλικό: Arduino Due, τροφοδοτικό (5v), Servo motor.
Λογισμικό: Arduino κάθε βράδυ, κατεβάστε το από τον παρακάτω σύνδεσμο (https://www.arduino.cc/en/Main/Software)
Για λεπτομέρειες σχετικά με τον τρόπο λήψης και εγκατάστασης αυτού του λογισμικού, επισκεφθείτε το πρώτο σεμινάριο Ξεκινώντας με το Arduino Due.
Διάγραμμα κυκλώματος και εξήγηση εργασίας:
Όπως είπαμε νωρίτερα στο ARDUINO, έχουμε προκαθορισμένες βιβλιοθήκες, οι οποίες θα ορίσουν τις συχνότητες και τους λόγους λειτουργίας ανάλογα, όταν το αρχείο κεφαλίδας καλείται ή συμπεριληφθεί. Στο ARDUINO πρέπει απλώς να δηλώσουμε τη θέση του σερβο που χρειαζόταν και το DUE παράγει κατάλληλο σήμα PWM για το σερβο. Τα πράγματα που πρέπει να κάνουμε για να έχουμε ακριβή θέση του σερβο είναι,
#περιλαμβάνω
Σέρβο myservo;
myservo.attach (servo_signal_pin_attached_to);
myservo.write (απαιτείται_position_ angle);
Το αρχείο κεφαλίδας "#include
Δεύτερον, ένα όνομα πρέπει να επιλεγεί για το σερβο χρησιμοποιώντας το "Servo myservo" , εδώ το myservo είναι το όνομα που επιλέχθηκε, οπότε ενώ γράφουμε για τη θέση που θα χρησιμοποιήσουμε αυτό το όνομα, αυτή η λειτουργία έρχεται σε πρακτική όταν έχουμε πολλά servos για έλεγχο, μπορούμε να ελέγξουμε έως και 12 servos από αυτό.
Με το Arduino Due να έχει 12 κανάλια PWM, πρέπει να πούμε στο DUE πού είναι συνδεδεμένος ο πείρος σήματος του σερβο ή πού πρέπει να δημιουργήσει το σήμα PWM. Για να το κάνουμε αυτό έχουμε το "myservo.attach (2);" , εδώ λέμε στο DUE ότι έχουμε συνδέσει τον ακροδέκτη σήματος του servo στο PIN2.
Όλα αριστερά είναι να ορίσετε τη θέση, πρόκειται να ορίσουμε τη θέση του σερβο χρησιμοποιώντας το " myservo.write (45);" , με αυτήν την εντολή το σερβο χέρι κινείται 45 μοίρες. Εάν αλλάξουμε «45» σε «175», ο σερβο άξονας γωνιώνει στους 175 μοίρες και παραμένει εκεί. Μετά από αυτό, όποτε χρειαστεί να αλλάξουμε τη θέση του σερβο, πρέπει απλώς να καλέσουμε την εντολή " myservo.write (required_position_angle);" .
Στο πρόγραμμα, πρόκειται να αυξήσουμε και να μειώσουμε τις γωνίες χρησιμοποιώντας βρόχους. Έτσι, το σερβο σαρώνει από 0 έως 180, μετά από 180 έως 0 και ούτω καθεξής. Το Servo Motor Control της Arduino Due εξηγείται καλύτερα στο βήμα προς βήμα του κώδικα C παρακάτω.