Das CarBot
besitzt als Antrieb zwei voneinander unabhängige Gleichstrommotoren, je
einer pro Raupe. Die Versorgungsspannung der Motoren beträgt 7,2V DC
und die Höchstdrehzahl erreichen sie bei etwa 0,75A je Motor.
Die Drehzahl soll nun genau und ruckelfrei geregelt werden. Realisiert man
das durch eine Stromregelung (z.B. mit Transistor), so ruckelt der Motor bei
niedrigen Drehzahlen, bzw. läuft erst ab etwa 0,5A an. Geringe
Geschwindigkeiten sind somit schlecht zu erreichen.
Genau dies ermöglicht aber die Pulsweitenmodulation (PWM). Bei der PWM wird ein periodisches Signal mit einer Frequenz von etwa 500-1000Hz erzeugt. Während einer Periodendauer dieses Signals schaltet man die Spannung für eine gewisse Zeit ein. Diese Zeit liegt zwischen Null und der Periodendauer und bestimmt die Drehzahl des Motors.
Der Signalverlauf könnte dann etwa so aussehen:
Die Induktivität des Motors bildet aus diesen Pulsen wieder ein
analoges Signal.
Mit diesem Verfahren kann der Motor ruckelfrei (hoffentlich ;-) ) von Null auf
Höchstdrehzahl geregelt werden.
Der auf unserem Board verwendete 80C537 bietet mit seiner
Capture/Compare-Unit (CCU) eine sehr einfache Möglichkeit der
Realisierung der Pulsweitenmodulation.
Der Compare-Timer wird mit einer Frequenz von 187,5kHz angesteuert und der
automatische Reload bei einem Timerüberlauf wird auf 0FF00h gesetzt.
Der Compare-Timer zählt somit periodisch von 0FF00h bis 0FFFFh mit
einer Overflowfrequenz von 732,4Hz.
Der 80C537 besitzt außerdem noch acht Compare-Register, die jeweils
einem Ausgang zugeordnet sind. Bei einem Compare-Timer-Überlauf werden
alle acht Ausgänge auf logisch Null gestetzt. Stimmt der Zählerinhalt
nun mit dem Inhalt eines Compareregisters überein, wird der entsprechende
Portpin auf logisch Eins gesetzt. Dieser Vorgang wiederholt sich nun periodisch
mit der Overflowfrequenz und ergibt z.B. obigen Signalverlauf. Das
Ausgangssignal wird nun einfach über einen Treiber direkt an den Motor
gelegt.
Ein kleines Problem gibt es noch. Soll der Motor mit
Höchstdrehzahl laufen, so gibt es keine Probleme, der
Signalverlauf sieht dann so aus:
Soll nun aber der Motor angehalten werden, setzt man ja normalerweise das Compare-Register auf FFFFh. Das ist aber nicht sehr geschickt, da sich dann nämlich dieses Signal ergibt:
Der Ausgang liefert eine Torzeit vor dem Overflow einen Peak von hier 5,3µs. Man muß ausprobieren, ob das überhaupt stört, aber sinnvoller wäre es, hier eine Sonderbehandlung für den Stillstand einzubauen. Möglich wäre es, das Compare-Register einfach unter FF00h zu setzten, dann würde der Ausgang nicht mehr auf Eins springen.
Am Anfang wollten wir den Motortreiber LMD18200 verwenden.
Eine genaue Beschreibung des
LMD18200 gibt es hier. Dieser Treiber liefert einen max. Strom von 3A, hat
einen Eingang zur Drehrichtungsumschaltung, einen Bremseingang und nimmt ohne
murren ein PWM-Signal. Außerdem hat er Übertemperaturschutz,
interne Freilaufdioden und ist kurzschlußfest. Er ist also
für diese Anwendung ideal.
Allerdings haben wir gestern erfahren, daß dieser Chip von National
Semiconductor bei Farnell 34,80DM + MwSt kostet! Das ist dann doch etwas
viel. Wir suchen im Moment schon nach einem Ersatz.
Eventuell kommt der LM293D in einer modifizierten Version zum Einsatz. Die
Originalversion hat nämlich einen Ausgangsstrom von nur 0,6A, und das
ist zu wenig. Aber wie gesagt: es soll eine modifizierte Variante geben, die
dann mehr Strom treibt!
Eine weitere Möglichkeit für den Motortreiber bietet der LM18298.
Die Idee ist so neu, daß wir noch nicht wissen wo und für wieviel
es diesen Treiber gibt, hat jemand Tips?
So, die Beschreibung des LM18298
steht hier.
Eine Anwendung des Bremseinganges gibt es auch: vorne und hinten
erhält das CarBot Stoßstangen mit Microschaltern.
Wird einer davon betätigt, so bremst der Motortreiber
unabhängig von der CPU die Motoren ab.
Dies ist deshalb wichtig, damit ein Schutz vor amoklaufenden
Programmen gegeben ist, denn normal sollte der CarBot ja nie
ein Hindernis berühren ;-).
Bei Anregungen und Tips zum Thema schickt mir doch einfach eine eMail!
Die Carbot Seite