Benutzer-Werkzeuge

Webseiten-Werkzeuge


skript:servos

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen gezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
skript:servos [2015/04/30 11:22]
fbonowski
skript:servos [2017/05/03 12:20] (aktuell)
d.golovko [Mein Programm stürzt dauernd ab!]
Zeile 18: Zeile 18:
  
 ===== Probleme und deren Lösungen ===== ===== Probleme und deren Lösungen =====
-==== Mein Servo macht nicht das, was er soll! (Pulslänge einstellen ​für Servo Modell "​MC-410") ====+==== Mein Servo macht nicht das, was er soll! (Pulslänge einstellen"​) ====
  
-Die Servos mit der Modellbezeichnung "​MC-410"​ benötigen zur Ansteuerung eine andere Pulslänge als die Standardeinstellung in Arduino. Deshalb funktionieren sie mit den Beispielprogrammen nur sehr unzuverlässig. Typischerweise funktionieren kleine langsame Änderungen im mittleren Winkelbereich problemlos, während schnelle Bewegungen oder solche in Randbereichen einfach ignoriert werden.+Einige ​Servos ​(z.B. die mit der Modellbezeichnung "​MC-410"​benötigen zur Ansteuerung eine andere Pulslänge als die Standardeinstellung in Arduino. Deshalb funktionieren sie mit den Beispielprogrammen nur sehr unzuverlässig. Typischerweise funktionieren kleine langsame Änderungen im mittleren Winkelbereich problemlos, während schnelle Bewegungen oder solche in Randbereichen einfach ignoriert werden.
  
 +**Glücklicherweise lässt sich die Servo-Library problemlos auf eine andere Pulslänge umstellen!**
  
-Glücklicherweise lässt sich die Servolibrary problemlos auf eine andere Pulslänge umstellen!+Um die richtigen Einstellungen zu finden, könnt ihr verschiedene Zeiten durchprobieren. 
 +Das geht z.B. mit folgendem Programm:
  
 +<code c++>
 +// Aufbau:
 +// Servo mit Signalpin an Pin D3 des Arduino
 +
 +// Poti zum einstellen an 5V--(Poti)--GND
 +//                              |
 +//                              A0
 +
 +// Wenn der Servo fiept und rattert, ist er außerhalb des erlaubten Bereichs - 
 +// das solltet ihr nicht ihm nicht allzu lange zumuten...
 +#include <​Servo.h>​
 +Servo myServo;
 +int servoPin = 3;
 +int potiPin = A0;
 +
 +void setup() {
 +  Serial.begin(115200);​
 +  myServo.attach(servoPin);​
 +}
 +
 +void loop() {
 +  //Lese Potiposition und rechne auf eine Zahl zw. 400 und 2500 um:
 +  int servoMicros = map(analogRead(potiPin),​ 0, 1023, 400, 2500);
 +  Serial.println(servoMicros);​ // Zeit zum Ablesen ausgeben
 +  myServo.writeMicroseconds(servoMicros);​ //Servo einstellen
 +  delay(10);
 +}
 +</​code>​
  
-Dazu ändert ihr im Setup eures Programms ​die Zeile+Im Anschluss ​ändert ihr die Zeile
  
 <code c++> <code c++>
Zeile 32: Zeile 62:
 </​code>​ </​code>​
  
-in+z.B. in
  
 <code c++> <code c++>
 myServo.attach(pinNummer,​ 800, 2100); myServo.attach(pinNummer,​ 800, 2100);
-// die minimale (800µs) und maximale (2100) Pulslänge wurden von Felix experimentell ermittelt+// die minimale (800µs) und maximale (2100µs) Pulslänge wurden von Felix für das Model MC410 experimentell ermittelt
 </​code>​ </​code>​
  
Zeile 53: Zeile 83:
  
 === Die "​Richtige"​ Lösung: getrennte Stromversorgungen für Servo und Steuerelektronik === === Die "​Richtige"​ Lösung: getrennte Stromversorgungen für Servo und Steuerelektronik ===
-Wenn iher mehrere, stärkere Servos oder empfindliche Sensorik einsetzt oder ein wirklich zuverlässiges des Systems erforderlich ist, empfielt es sich, getrennte Stromversorgungen für die Motoren bzw. Servos und die Elektronik zu verwenden. Fragt dazu einfach bei den DozentInnen nach - die helfen euch weiter...+Wenn ihr mehrere, stärkere Servos oder empfindliche Sensorik einsetzt oder ein wirklich zuverlässiges des Systems erforderlich ist, empfielt es sich, getrennte Stromversorgungen für die Motoren bzw. Servos und die Elektronik zu verwenden. Fragt dazu einfach bei den DozentInnen nach - die helfen euch weiter...
skript/servos.1430385747.txt.gz · Zuletzt geändert: 2016/01/21 12:45 (Externe Bearbeitung)