Arduino Due - Monster Moto Shield- Motor läuft nicht rund/zuckt

Hallo zusammen,

ich habe mal wieder ein Problem, welches mich verzweifeln lässt. Aktuell baue ich einen Roboter, welcher auf einem Arduino Mega auch schon recht rund lief. Da ich allerdings weiterführende Berechnungen durchführen will, habe ich die Plattform gewechselt und verwende nun einen Arduino Due.

Auf diesem habe ich nun das Problem, dass meine beiden DC-Motoren nicht mehr rund laufen und die Drehzahl lustig hin und herspringt, was auch hörbar ist. Im Anhang befindet sich ein Screenshot des Serial Plotters, welcher das Problem schön zeigt. (Der grüne Graph zeigt die Umdrehungen pro Minute, gemessen mit den integrierten Encodern)

Ich gebe ein gleichbleibendes PWM-Signal auf die H-Bridge (Monster Moto Shield), bekomme bei beiden Motoren aber das gleiche unrunde Ergebnis.

Die PWM-Frequenz habe ich bereits erhöht, wodurch ich das anfängliche Fiepen der Motoren in den Griff bekommen habe, leider änderte dies aber nichts am Verhalten der Motoren.

Das Shield und der Arduino verwenden getrennte Stromquellen, so dass ich dies als Fehler ebenfalls ausschließen kann.

Auf dem Mega liefen beide Motoren mit dem Shield äußerst rund und ich weiß gerade nicht mehr was ich noch testen könnte. Habt ihr eine Idee für mich?

Läuft der Due intern nicht auf 3,3V? Könnte es sein, dass der Motortreiber evt. Probleme mit der Spannung der PWM hat? dass ihm diese mit 3V3 etwas zu kanpp ist und der nicht mehr sauber durchschaltet? Dann bräuchtest Du einen Levelschifter für die PWM-Signale. Was sagt das Datenblatt des Motor-Treibers?

LG Stefan

Vielen Dank für die Antwort Stefan. In der Tat liefert der Due 3,3V. Laut Datenblatt braucht es für die Bridge ein PWM High Current von min 3,25V. Das könnte vielleicht wirklich etwas knapp sein, wenn der Due etwas im Output schwankt.

Nun ist nur noch mein Problem wie ich den Levelshifter zwischen das Shield und den Arduino bekomme. Gibt es da praktische Tipps? Ich möchte ungern die PWM-Pins des Shield wegknipsen um dort mit einem Kabel zwischen zu kommen.

Hi

Strom wird normal in Ampere gemessen - Current ist Strom, hat recht wenig mit Volt (=Spannung) zu tun. Also zumindest in dieser Zeile des Datenblatt wirst Du nicht fündig.

MfG

Sorry mein Fehler, ich meinte auch "PWM High Level Voltage" und dort ist im Datenblatt 3,25V angegeben ;)

Hier das DB der Bridge: http://cdn.sparkfun.com/datasheets/Dev/Arduino/Shields/10832.pdf

Hallo, ja dann könnte es wirklich etwas knap sein, denn ein ausgang des Mikrokontrolers der auf HIGH ist, liefert nicht unbedingt die volle Betriebsspannung des Controllers. Also würde ich es wirklich mit nem Levelschifter versuchen.

z.B. LEVELSHIFTER

LG Stefan

Ich denke inzwischen auch, dass hier das Problem liegt. Vielen lieben Dank für den Hinweis. Ich habe jetzt bereits einen Levelshifter bestellt und werde dann wohl oder übel, die beiden PWM-Pins des Shields kappen müssen um dort mit dem Shifter zwischen zu kommen. Sobald der Levelshifter da ist, werde ich hier mal entsprechend Feedback geben.

Ja, bei nem aufgesteckten Shield ist das natürlich etwas schwieriger, da den Shifter dazwischen zu klemmen. Aber ne andere Idee als nen Levelshifter zu verwenden, hab ich leider auch nicht.

LG Stefan

Der Levelshifter ist nun angekommen und ich habe ihn auch schon verbaut, leider muss ich feststellen, dass mein Problem bestehen bleibt. Ich habe jetzt zudem noch festgestellt, dass wenn ich ein Rad festhalte, das andere ab dem Moment etwas langsamer läuft, kann aber nicht sagen ob es dort jetzt einen Zusammenhang zum eigentlich Problem gibt.

Wenn jetzt niemand mehr eine Idee hat, überlege ich den Due wieder auszubauen, den Mega wieder einzubauen und dann evtl den Due mit dem Mega zu verbinden um auf den Due die weiterführenden Berechnungen durchlaufen zu lassen (weswegen ich diesen gekauft habe) und den Mega nur noch für die Steuerung zu benutzen. Aber ich befürchte, dass dies zu zig anderen Problemen führen wird.

Es ist zum verzweifeln...

celdorado: Wenn jetzt niemand mehr eine Idee hat,

Eventuell mal statt diesem Levelshifter ein Treiber-IC wie z.B. 74HCT125 verwenden. Wenn es damit nicht geht, liegt das Problem woanders und nicht beim Spannungspegel.

Sind diese Levelshifter Module mit Transistoren nicht eher für I2C gedacht ?

Vieleicht bin ich auch einfach nur zu unfähig. Folgenden Level Shifter habe ich bestellt: https://www.pololu.com/product/2595

An LV habe ich konstante 3,3V angelegt, An HV konstante 5V (vom Due 5V Out abgenommen).

Gehe ich nun mit meinen PWM-Signal vom Due (gemessene 3,3V, da PWM = 255) auf LV1, erhalte ich an HV1 nur noch 2,7V, wobei ich dort doch jetzt eigentlich die 5V haben müsste?!

Bitte sagt mir, dass ich einfach nur einen dummen Fehler gemacht habe und das eigentlich anders verkabeln muss, ihr dürft auch gern das Wort "dumm" benutzen ;)

Ich werde mir ansonsten morgen mal einen 74HCTI125 besorgen (wenn mein Händler den da hat).

ps.: Ich habe die PWM-Frequenz sogar schon bis auf 490Hz (von 20kHz) runtergeregelt mit dem gleichen Ergebnis und bei 490Hz sollte der Shifter auf jeden Fall seine Arbeit verrichten.

Du hast den LevelShifter auf der HV-Seite aber schon an 5V angeschlossen?

Yep das habe ich. Ich habe den Levelshifter sogar zweimal bestellt und beide zeigen das gleiche Verhalten, so dass ich einen defekt ausschließen kann.

Als Ergänzung zu dem 74HCT125:

Man kann auch andere 74HCT... oder 74ACT... Typen nehmen, wenn man die so beschalten kann, dass von der Logik her am Ausgang das rauskommt, was eingangsseitig rein geht.

Das T in der Typenbezeichnung steht für TTL kompatible Eingänge. Die akzeptieren ein High schon ab 2 V. Mit 5 V Betriebsspannung kommt dann natürlich 5 V Logik an den Ausgängen raus. Damit sind die Signale praktisch identisch zu dem, was ein 5 V Controller erzeugen würde.

Der Händler meines Vertrauens hatte leider keinen 74HCT125 da (auch kein ACT), aber er hatte einen 74HC125N. Mit dem läuft das auch so weit, ich bekomme nun meine 5V auf den PWM-Port des Motortreibers, aber leider bleibt mein Problem bestehen.

Somit kann man Probleme im Spannungspegel des PWM ausschließen.

Mir ist aber etwas anderes aufgefallen, mein Motortreiber hat für jeden Motor einen Currentsensorpin, welchen man per Analog Read auslesen kann und hier sieht man dass die freilaufenden Motoren, bei gleichbleibendem PWM scheinbar keine konstante Spannung bekommen (siehe Screenshot im Anhang), ist das normal oder hat dazu jemand eine Idee?

Diesen Pin habe ich leider nie auf dem Mega auslesen lassen, weshalb ich keinen Vergleich habe.

Nachdem ich gerade den letzten Post geschrieben hatte, habe ich die externe Stromversorgung des Motortreibers ausgeschaltet und siehe da, der Currentsensepin meldet immer noch Spannung (siehe Anhang) und zwar im gleichen unregelmäßigen Muster, halt nur deutlich Tiefer. Jetzt ist für mich die Frage, woher kommt diese Spannung…