Arduino Masterclass - Μάθημα 3.3 | Σερβοκινητήρες: Ακριβής κίνηση και μηχανισμοί
Arduino Masterclass - Μάθημα 3.3
Σερβοκινητήρες: Ακριβής κίνηση και μηχανισμοί
Στα προηγούμενα μαθήματα είδαμε πώς να κινούμε τους τροχούς του ρομπότ μας. Τι γίνεται όμως αν θέλουμε να στρίψουμε μια κάμερα, να ανοίξουμε μια δαγκάνα ή να κουνήσουμε έναν αισθητήρα σε μια συγκεκριμένη γωνία θ; Εδώ έρχονται οι Σερβοκινητήρες (Servos).
🎯 Τι είναι ο Σερβοκινητήρας;
Σε αντίθεση με τα απλά μοτέρ που περιστρέφονται συνεχώς, ένας τυπικός σερβοκινητήρας μπορεί να περιστραφεί με ακρίβεια σε μια γωνία μεταξύ 0 και 180.
Πώς λειτουργεί: Χρησιμοποιεί ένα σήμα PWM (Pulse Width Modulation) για να καταλάβει τη θέση που του ζητάμε.
Feedback: Διαθέτει εσωτερικό κύκλωμα που "ξέρει" πού βρίσκεται ανά πάσα στιγμή.
🛠️ Τι θα χρειαστείτε
Έναν σερβοκινητήρα (π.χ. τον κλασικό μπλε SG90 ή τον μεταλλικό MG90S).
Το Arduino Uno σας.
3 καλώδια Jumper (Male-to-Male).
🔌 Η Συνδεσμολογία
Οι σερβοκινητήρες έχουν τρία καλώδια:
Καφέ (ή Μαύρο): GND (Γείωση).
Κόκκινο:
$5V$ (Τροφοδοσία).Πορτοκαλί (ή Κίτρινο): Signal (Σήμα - σύνδεση σε PWM pin, π.χ. Pin 9).
💻 Ο Κώδικας (The Sweep)
Το Arduino διαθέτει μια έτοιμη βιβλιοθήκη, την Servo.h, που κάνει τον έλεγχο πανεύκολο.
#include <Servo.h>
Servo myServo; // Δημιουργία αντικειμένου servo
void setup() {
myServo.attach(9); // Σύνδεση του servo στο pin 9
}
void loop() {
// Κίνηση από 0 έως 180 μοίρες
for (int pos = 0; pos <= 180; pos += 1) {
myServo.write(pos);
delay(15); // Περιμένουμε 15ms για να φτάσει το servo στη θέση
}
// Κίνηση από 180 έως 0 μοίρες
for (int pos = 180; pos >= 0; pos -= 1) {
myServo.write(pos);
delay(15);
}
}
🧠 Η Λογική της Unique Tech: Ο "Σαρωτής" (The Radar)
Στο project μας MLA, χρησιμοποιήσαμε έναν σερβοκινητήρα στη βάση του αισθητήρα υπερήχων.
Γιατί το κάναμε:
Αντί να στρίβουμε ολόκληρο το ρομπότ για να δούμε αν υπάρχει εμπόδιο δεξιά ή αριστερά, στρίβουμε μόνο τον "λαιμό" (το servo).
Το servo κοιτάζει στις 45, 90 και 135.
Το Arduino παίρνει τις μετρήσεις απόστασης.
Αποφασίζει ποια κατεύθυνση είναι η πιο ελεύθερη πριν ξεκινήσει τα μοτέρ!
💡 Pro-Tip από το Εργαστήριο
"Οι σερβοκινητήρες τραβάνε πολύ ρεύμα τη στιγμή που ξεκινούν να κουνιούνται. Αν το Arduino σας κάνει επανεκκίνηση (reset) μόλις συνδέσετε το servo, δοκιμάστε να προσθέσετε έναν πυκνωτή (π.χ. 100 MF έως 470 MF) μεταξύ των 5V και GND του servo για να σταθεροποιήσετε την τάση."
🚀 Πρόκληση (Challenge)
Μπορείτε να συνδέσετε ένα ποτενσιόμετρο (από το Μάθημα 1.2) και να προγραμματίσετε το servo να ακολουθεί ακριβώς τη θέση της περιστροφής του χεριού σας; (Hint: Χρησιμοποιήστε τη συνάρτηση map()).
Συγχαρητήρια! Ολοκληρώσατε την Ενότητα 3. Στην Ενότητα 4, θα δώσουμε στο ρομπότ σας "νοημοσύνη" και δυνατότητα επικοινωνίας με το Internet!
Σχόλια
Δημοσίευση σχολίου