Hallo zusammen, ich besitze einen Meccanoid und möchte diesen Open-Source programmieren. Auf http://cdn.meccano.com/open-source/Meccano_SmartModuleProtocols_2015.pdf auf der letzten Seite ist eine Skizze, die den Anschluss der Servos an einem Controller zeigt. Ich möchte die Servos mit einem Arduino Uno betreiben und habe mir hierfür auch einen L293D Motortreiber gekauft. Wenn ich nun einen Motortreiber benutze, benötige ich die im Protokoll erwähnten 1kOhm und 22kOhm Widerstände trotzdem?
Du brauchst für Modelbauservos keinen Motortreiber wie den L293, sowas ist da schon eingebaut. Die brauchen nur Spannung und ein PWM-Signal das über das Tastverhältnis den Auslenkungswinkel vorgibt. Das soll der Arduino in der Software eingebaut haben.
:
Bearbeitet durch User
Ja, wenn er in beide Richtungen drehen soll. Ansonsten genügt ein Transistor.
Und wie finde ich heraus, welche Widerstände ich davor schalten muss, wie im verlinkten Beispiel weiter oben erwähnt?
Mal davon abgesehen heissen die Teile Servo Shield und bei einem anderen Projekt, wo Servos mit eingebauter Mikroelektronik verbaut waren, kam ebenfalls ein Servo Shield zum Einsatz, wieso?
An ein Servo-Shield kannst Du 16 Servos anschließen, weil da ein Chip drauf ist, der 16 unabhängige PWMs erzeugen kann. Der Arduino kann von sich aus einige PWMs ausgeben, Du mußt jetzt sehen wieviele Du brauchst und ob der Arduino alleine reicht.
Mal eine andere Frage. Für die Servos gibt es eine Lib vom Hersteller. Wenn ich die Servos aber ganz simpel an den Arduino anschließe und folgenden COde, der mit jedem Servo funktionieren dürfte, eingebe, reagiert der Servo nicht:
1 | #include <Servo.h> |
2 | |
3 | Servo myservo; // create servo object to control a servo |
4 | // twelve servo objects can be created on most boards
|
5 | |
6 | int pos = 0; // variable to store the servo position |
7 | |
8 | void setup() { |
9 | myservo.attach(5); // attaches the servo on pin 9 to the servo object |
10 | }
|
11 | |
12 | void loop() { |
13 | for (pos = 0; pos <= 180; pos += 1) { // goes from 0 degrees to 180 degrees |
14 | // in steps of 1 degree
|
15 | myservo.write(pos); // tell servo to go to position in variable 'pos' |
16 | delay(15); // waits 15ms for the servo to reach the position |
17 | }
|
18 | for (pos = 180; pos >= 0; pos -= 1) { // goes from 180 degrees to 0 degrees |
19 | myservo.write(pos); // tell servo to go to position in variable 'pos' |
20 | delay(15); // waits 15ms for the servo to reach the position |
21 | }
|
22 | }
|
Gibt es dafür einen Grund, dass die Servos nur mit der Lib vom Hersteller und nicht mit der Servo.h Lib vom Arduino funktionieren? Andere Servos funktionieren doch auch.
Peter H. schrieb: > Gibt es dafür einen Grund, dass die Servos nur mit der Lib vom > Hersteller und nicht mit der Servo.h Lib vom Arduino funktionieren? Schau Dir mal Deine verlinkte Beschreibung - S. 7 - an. Fällt Dir was auf? Daisy Chain ... kann das ein Standard-Servo? Datenpakete - kann ein Standard-Servo etwas damit anfangen? Also ist an den Servos irgendeine Art von Intelligenz / Chip dran, der die Kommandos liest und ausführt (ist sogar auf den Bildern näherungsweise erkennbar). -> Protokoll loggen und nachmachen ist angesagt - oder die Lib des Herstellers nutzen (wozu ist die sonst da?)
Ich hätte dazu eine andere Frage. Auf folgendem Bild sieht man die Spannungsversorgung der Servos unabhängig von der des Arduino: http://www.netlabtoolkit.org/wp-content/uploads/2015/01/servo_connection.png Ich lese aber immer wieder, dass der Ground-Anschluss des Arduino gemeinsam mit dem Ground/Minuspol einer Batterie angeschlossen werden, warum ist das so? Mein Arduino wird per USB betrieben und läuft auch ohne Ground-Anschluss. Und meine Servos werden über eine Batterie betrieben. Wozu den Arduino-GND-Pin dann mit dem Minuspol der Batterie verbinden, wenn beide unabhängig voneinander laufen? Verstehe den Sinn nicht.
Weil der Steuersignalstrom vom Arduino zum Servo wieder zum Arduino zurück muß. Das geschieht über GND. Der Stromkreis muß geschlossen sein und im Allgemeinen geschieht das über die GND Verbindung . Sonst fließt kein Strom, keine Reaktion auf Steuersignal. Um dir zu erklären, warum das bei dir anscheinend ohne die GND-GND Verbindung trotzdem geht, braucht man eine detailierte Schaltung und Aufbaubeschreibung/-foto.
Die Servos werden doch versorgt und der Arduino per USB ebenfalls. Deshalb ist mir das unklar.
Timo schrieb: > Die Servos werden doch versorgt und der Arduino per USB ebenfalls. > Deshalb ist mir das unklar. Schade :(
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.