PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Hilfe, absolutes Unverständnis!



tobhu
03.02.2007, 12:38
Hallo, ich habe ein RN Control Mega32 Board und habe an diesem zwei Getriebemotoren angeschlossen, die ich nun über PWM Drehzahl steuern möchte. So gut, so schön, aber diese Dinger laufen absolut unrund, ich hab schon versucht die Frequenzen zu verstellen, aber das bringt absolut nichts.
Noch dazu kommt, wenn ich einen Motor laufen lasse und der sich halbwegs vernünftigt dreht und lasse dann den zweiten Motor mitlaufen, wird der andere plötzlich total langsam, obwohl doch beide Motoren das selbe PWM Signal bekommen, oder?Habe dann mal die Spannung an den beiden Kanälen des Motortreibers gemessen und siehe da, der eine Motor bekommt ca. 1V, der andere aber nur ein halbes, warum?
Vielleicht kann sich ja mal jemand meinen C Code ansehen und mir einen Tip geben. Vielen Dank.

linux_80
03.02.2007, 14:15
Hallo,
wieviel A kann Deine Stromquelle liefern, und
wieviel A benötigen die Motoren ?
Der Motortreiber kann nur ca. 2*600mA

Zum Programm,
Es werden insgesamt 6 Ports (Ausgänge) zum Steuern der zwei Motoren gebraucht, diese muss man alle auf Ausgang stellen.
Um nun die Drehrichtung der Motoren einzustellen müssen immer zwei zusammengehörige Ports gesetzt werden.
Das sind PB0, PB1 für den einen, und PC6, PC7 für den anderen Motor,
PWM kommt an PD4 und PD5 raus.

In Deinem Programm werden die Ports überhaupt nicht verwendet !

Um eine Richtung für einen Motor einzustellen muss dann zB. PB0 auf 1 und PB1 auf 0 gestellt werden, oder genau anders rum für die andere Richtung.
Wenn beide auf 0 oder beide auf 1 sind kann sich nichts drehen.


PORTB &= ~((1<<PB0)|(1<<PB1)); // beide auf 0
PORTB |= (1<<PB0); // einen auf 1

PS:
Datenrichtungsregister und Drehrichtung für den Motor nicht verwechseln, das sind verschiedene Sachen.

tobhu
03.02.2007, 18:29
bin einfach davon ausgegangen, dass wenn ich den einen Pin auf 1 setze, dass der andere dann automatisch auf 0 steht.
Habe es geändert, hat nur leider auch nicht viel geändert.
Komisch ist halt, dass die Motoren beim Inbetrieb nehmen des Boards gleichmäßig liefen und nach einer bestimmten Zeit immer langsamer wurden bis zum Stillstand. Nachdem wir sie an einem Netzteil ein Weilchen laufen lassen haben, um zu sehen ob sie da auch nach einer Weile einbrechen-was aber nicht passiert ist-haben wir sie wieder ans Board angeschlossen und siehe da, jetzt laufen sie plötzlich ohne einzubrechen, keiner weiß warum.
Aber vielen Dank nochmal.Gruß Tobias.

linux_80
03.02.2007, 19:46
In dem Beispiel-Code von Dir wurden die Ausgänge ja überhaupt nicht gesetzt, es wurde nur auf Ausgang gestellt und sonst nix, deshalb kanns schon sein, das die Motoren zufällig was machen.

Die Richtung wird so gesetzt, wie ich das gezeigt hab, vorher müssen natürlich alle auf Ausgang gestellt sein, das geht mit den DDRx Registern.