Arduino DF-Robot Motor Shield

Veröffentlicht von

IMG_3871Da ich die Arduino Shields komplett ohne Dokumentation bekommen habe, musste ich mal wieder Google bemühen und fand hier zumindest eine grobe Übersicht mit einigen Beispielprogrammen. Wie man dort auf Seite 12 sieht ist es doch nicht so einfach alle Shields zusammen zu stecken und davon auszugehen das alles läuft. Das Arduino Board hat „nur“ 13 digitale Pins die sich alle Shields teilen müssen.

Probleme bekam ich aber auch noch von anderer Seite. Für Roboter „Daisy“ verwende ich das Motor und das I/O Shield um mit letzterem ein paar Servos anzusteuern. Sobald ich aber ein Servo.attach(x) aufrief, lief einer der Motoren nur noch in eine Richtung.
Nachdem ich mir den Schaltplan der Schaltung aufgemalt hatte sah ich auch warum. Für enable1 des L293 wird Pin 9 verwendet. Die Pins 9 und 10 kann man zusammen mit der Servo Lib aber nicht verwenden.

Hier ein Auszug aus der Doku:

„This library uses a 16 bit timer for each group of 12 servos so PWM output with analogWrite() for pins associated with these timers are disabled when the first servo is attached to the timer. For example on a standard Arduino board, Timer1 is used, so once you attach a servo, analogWrite on pins 9 and 10 are disabled.“

IMG_3881Da ja noch einige PWM Ausgänge übrig sind verwende ich statt Pin9 nun Pin3. So arbeiten Servos und Motor Shield zusammen, nur nach einem Reset läuft der Motor gleich los bis ich ihn ausschalte. Aber damit kann ich ersteinmal leben.

Jetzt kommt das nächste Problem, zwei Servos mit dem Spannungsregler des Arduno Boards versorgen funktioniert nicht. Es gibt sporadische Resets weil die Spannung zusammenbricht. Ist aber auch kein großes Problem,  ich muss nur eine extra Spannungsversorgung in Form eines weiteren 7805/2940 einbauen oder sie einfach nacheinander ansteuern.


Hier noch ein preview auf „Daisy“, mehr in kürze.

IMG_3873



Kommentar verfassen