© H. Hübel Würzburg
2005
FKG-Roboter |
Unser Aktor-Baukasten |
Pulsweiten-Modulation zur Steuerung von Servomotoren (Geschwindigkeit und Drehrichtung) |
Lautsprecher |
Servo-Motor |
Schrittmotor |
Getriebemotor |
Getriebemotor mit L293D als Treiber, unser billigster und nach unserer Erfahrung bester Antrieb |
Birnchen, Relais und andere Aktoren mit größeren Strömen |
Leuchtdioden-Zeile |
Leuchtbalken-Anzeige |
Ziffern-Anzeige |
Allgemeines zum Antrieb |
Pulsweitenmodulation für den Serverantrieb |
Mit den PWM-Ausgängen kann man auch Lautsprecher oder Piezosummer ansteuern, aber mit Vorsicht! Der Ausgangsport sollte nicht überlastet werden (unser Prozessor kann immerhin bis 20 mA pro Ausgangsport liefern, also Leuchtdioden direkt betreiben, 100 mA insgesamt). Vom Programm her schaltet man dann nur die PWM-Ausgabe ein oder aus. Sonst ist der Prozessor damit nicht beschäftigt. Hat man alle PWM-Ausgänge schon anderweitig verwendet, muss man sich programmgesteuert Sound erzeugen. Das hat Nachteile: 1. ist der Prozessor dann vor allem mit dieser Aufgabe beschäftigt, 2. geht das langsam und man kann nur tiefe Töne erzeugen.
Vorsicht ist angebracht, wenn man einen niederohmigen Lautsprecher anschließen möchte. Lautsprecher haben einen Widerstand von 4 Ohm oder 8 Ohm. Damit wird der PWM-Ausgang quasi kurzgeschlossen, möglicherweise überlastet! Diese Gefahr besteht bei Piezosummern weniger. Möchte man wirklich einen Lautsprecher anschließen, sollte man das PWM-Signal nur zum Schalten eines Transistors nutzen, der dann in einem getrennten Stromkreis den Strom durch den Lautsprecher fließen lässt oder nicht. Dann kann man - je nach Transistor und Beschaltung - auch viel größere Ströme durch den Lautsprecher fließen lassen. Lautsprecher mit 50 Ohm Widerstand konnten direkt betrieben werden.
Es gibt auch PIEZO-Wandler mit einem Widerstand von 800 Ohm, die direkt angeschlossen werden können.
Die Schaltung muss modifiziert werden: Statt der LED also der Lautsprecher; statt 330 Ohm - je nach Transistor - auch z.B. 100 Ohm; statt des mechanischen Schalters Verbindung des 1 kOhm-Basis-Widerstands mit dem PWM-Port |
Bei unserem Prozessor (AVR 8535) können aus einem PIN bis zu 20 mA (insgesamt max. 100 mA) herausfließen ohne den Prozessor zu überlasten. Damit kann man Leuchtdioden betreiben, besonders, wenn es sich um LOW-Current LED's handelt. Sicherheitshalber begrenzt man den Strom durch Vorwiderstände. Bei einer Flussspannung von 1,7 V (gelb) und 5 V Betriebsspanung des Prozessors gilt dann R = U / I = ( 5 V - 1,7 V) / 5 mA = 660 Ohm.
In der nebenstehenden Schaltung ist auch ein Schalterarray gezeichnet. Bei unserem Prozessor werden keine externen Pullup-Widerstände benötigt. Sie können softwaremäßig zugeschaltet werden. (Die Invertierung im Schaltbild ist softwaremäßig bewerkstelligt.)
Die Leuchtdiodenzeile kann uneingeschränkt an den Ports A oder C angeschlossen werden. Bei Port B und D sind nicht alle PINs frei verfügbar.
Leuchtbalken-Anzeige: ganz entsprechend; die Schutzwiderstände vor den LEDs sollten ebenfalls vorgesehen werden.
Normale Servo-Motoren führen in der Regel nur unvollständige Drehungen aus, z.B. eine 120º-Drehung um eine Lenkung zu bedienen. Sie werden mit periodischen pulsweitenmodulierten Signalen (Rechteckssignal mit fester Frequenz, aber unterschiedlicher Breite der High-Phasen) angesteuert. Bei einer Pulsbreite von z.B. 1,5 ms bleibt das Servo in der Mittenposition, bei 2,0 ms dreht es ganz nach rechts bis zum Anschlag, bei 1,0 ms ganz nach links zum Anschlag.
Ein umgebautes Servo kann auch als Antriebsmotor genutzt werden. Wenn man die Verbindung zwischen antreibendem Zahnrad und internem Potentiometer unterbricht, erhält es niemals die Rückmeldung "Sollposition erreicht" und dreht sich immer weiter, vorwärts oder rückwärts. Das ist die einfache Antriebsart für unseren Roboter.
Für unseren Roboter scheint derzeit das Servo FUTABA HS 3003 (von Robbe) das geeignetste zu sein. Um einen lenkbaren Roboter zu bauen, braucht man entweder zwei umgebaute Servos (für unabhängige Drehung beider Räder in Vorwärts- und Rückwärtsrichtung) oder ein umgebautes Servo für den Antrieb beider Räder einer Achse, und ein Original-Servo zur Lenkung. Statt des Antriebsservos kann aber auch ein billiger Getriebemotor eingesetzt werden, zu dem eine Treiberschaltung aufzubauen ist, die seine Drehrichtung ändern kann.
Vgl. Umbau eines Servo-Motors Servo
Servos werden mit pulsweitenmodulierten Signalen gesteuert.
Es gibt verschiedene Möglichkeiten.
a) Zwei getrennte umgebaute Servos treiben je ein Rad an. Da die beiden Motoren unabhängig voneinander vorwärts- rückwärts, schnell und langsam gesteuert werden können, ergeben sich sehr flexible Steuerungen mit relativ großen Geschwindigkeitsspielraum. Wegen des eingebauten Getriebes entwickeln sie genügend Drehmoment. Der Anlaufstrom ist in der Größenordnung von 100 mA, beim Betrieb brauchen sie ca. 50 mA, belasten also die mitfahrenden Batterien wenig; der vorgesehene Spannungsregler kann auch beim Anfahren oder gar der Richtungsänderung seine 5 V Betriebsspannung aufrecht erhalten. Eine zusätzliche Lenkung ist dann nicht nötig.
b) Zwei getrennte umgebaute Servos treiben je ein Rad und damit ein Raupenband an. Mindestens ein weiteres Rad zur Führung des Raupenbandes läuft einfach mit. Punkt a) gilt sonst entsprechend.
c) Ein umgebautes Servo oder ein preiswerter Getriebemotor treibt ein Paar von Rädern an (entsprechend dem Hinterrad-Antrieb). Vorwärts-/Rückwärtsbetrieb ist möglich, ebenfalls unterschiedliche Geschwindigkeiten. Dann wird zusätzlich noch ein normales nicht umgebautes Servo zur Lenkung benötigt. Die Kopplung der Lenkung an das Servo könnte über Schnüre oder direkt erfolgen. Bei der Wahl des Getriebemotors ist auf geringen Strombedarf zu achten, insbesondere beim Anfahren oder bei einer Richtungsänderung. Solarmotoren sind gut geeignet, völlig ungeeignet sind "Rennmotoren" oder andere Kleinspannungsmotoren aus dem Modellbau, weil sie viel zu große Ströme erfordern. Von Fa. Gräf der Motor mit dem Variogetriebe 0439B (ca. 5 DM) ist preiswert, lässt variable Übersetzungen zu und hat einen geeigneten Motor. Nachteil ist, dass er einen Treiberbaustein benötigt, der eine Richtungsumkehr zulässt. Mit dem Baustein L293D von TI oder einer anderen Schaltung ist das aber leicht zu realisieren.
d) Ein umgebautes Servo oder Getriebemotor sitzt auf der lenkbaren Achse als einziger Antriebsmotor (entsprechend dem Vorderradantrieb eines Dreirads). Die Achse muss dann mit einem normalen Servo gelenkt werden. Ankopplung könnte wieder direkt oder mit Schnüren erfolgen.
Getriebemotor
Solche Motoren sind sehr preiswert mit geeignet "schwachen" Motoren erhältlich (z.B. Firma GRÄF, Bayreuth, ca. 3 Euro). Durch Umstecken der Zahnräder lassen sich sehr variabel verschiedene Übersetzungen erreichen. Man sollte aber darauf achten, dass man sinnvolle Kombinationen verwendet, d.h. also in der Regel mehrfach nur herunter- oder herauf übersetzt, aber nicht abwechselnd herauf und herunter. Nur mit einer Treiberschaltung lassen sich Drehrichtung und Drehgeschwindigkeit vom Mikroprozessor aus ändern. Die Drehgeschwindigkeit wird mit einem der pulsweitenmodulierten Signale des Prozessors (PWM) gesteuert. Dazu dient die folgende Schaltung: |
Es gibt fertige Bausteine, wie z.B. L293D von Texas Instruments, die in der Lage sind, einen Strom (bis 0,6 A) herauszuschicken oder aufzunehmen.
Ein solcher Baustein ist z.B. für 2 Motore zu verwenden. Im logischen Symbol erkennt man die beiden Ausgänge 1Y und 2Y, die nach Wahl auf H- oder L-Potential gelegt werden. An sie wird die Wicklung eines Motors angeschlossen. Die Steuereingänge sind 1A und 2A; 1A und 1Y bzw. 2A und 2Y haben nach der Funktionstabelle gleiches logisches Potential, wenn der Enable-Eingang 1,2EN auf H-Potential gelegt ist. Wenn man nicht einen Inverter vorschaltet, der von 1A gesteuert wird und 2A immer dazu invertiert, könnte man 1A und 2A mit zwei Port-Pins verbinden. Der Enable-Eingang könnte dauerhaft auf H-Potential gelegt werden, z.B. mit einem Pullup-Widerstand gegen +5V. Der Baustein ist intern gegen Induktionsspitzenspannungen beim Umschalten des Motors geschützt, damit die Versorgungsspannung des Motors (VCC2 und auch VCC1 ) beim Umschalten nicht in die Knie geht, sollte man einen Elektrolytkondensator (und evtl. einen Tantalkondensator) noch vorsehen.
Eine mögliche Schaltung zeigt das nachfolgende Bild:
Vgl. auch Datenblatt zu L293D
Will man auch noch die Geschwindigkeit regeln, geht man nach dem Dimmer-Prinzip vor: die Spannung wird nur dann an den Motor angelegt, wenn das Signal eines Pulsweitenmodulators H ist. Wenn das Tastverhältnis T2/T1 =1 ist, wird dem Motor die ganze Periode über Energie zugeführt. Wenn das Tastverhältnis T2/T1 gegen 0 geht, wird dem Motor nur ganz kurz, also im Mittel über eine Periode kaum Energie zugeführt. Zur Steuerung der Einschaltvorgänge ist auf dem L293D-Chip ein ENABLE-Eingang vorgesehen. Liegt an ihm H-Potenzial vom PWM, arbeitet der Treiberbaustein und der Motor. Bei L-Potenzial vom PWM ist der Motor abgeschaltet.
Der PWM-Eingang ist zur Regelung der Energiezufuhr in einer Periode vorgesehen. Auf der rechten Seite kann weitgehend symmetrisch ein zweiter Motor angeschlossen werden. |
Wir verwenden einen "unipolaren Schrittmotor". Er ist an den 5 oder 6 Anschlussdrähten erkennbar, die zu 2 Paaren von Spulen führen. Um ihn anzusteuern muss ein Treiberbaustein vorgeschaltet werden, der folgende Aufgaben erfüllen muss:
Wir verwenden den Treiberbaustein ULN2803 (Datenblatt und Informationen; vgl. auch ULN2003), der zwei unipolare Schrittmotoren bedienen kann. Der Baustein kann mit 12V betrieben werden, die auch Voraussetzung für einen genügend großen Strom durch die jeweils angesteuerte Wicklung der Motorspulen sind. Der Treiberbaustein übernimmt damit auch sozusagen eine Pegelanpassung zwischen den 5 V des Prozessors und den 12 V des Schrittmotors. Vgl. auch L293D
Die Schaltung:
Anschlussschaltung für einen unipolaren Schrittmotor mit dem
Treiberbaustein ULN2803. Die übrigen 4 Ausgänge können
für einen zweiten Schrittmotor genutzt werden.
Der Elektrolyt-Kondensator von 47 µF wird als Glättungskondensator empfohlen, um die plötzlichen starken Belastungen der Stromquelle bei Strom durch die Wicklungen zu vermeiden. Ub kann größer als die 5 V des Prozessors sein. Wir verwenden unseren 9V-Pin. |
|
Der Baustein ULN2803 (Zeichnung nach Kainka, Messen
- Steuern - Regeln mit dem C-Control/BASIC-System) kann immer als Treiber
genutzt werden, wenn höhere Ströme benötigt werden, oder wenn
gefährliche Induktionsspannungen entstehen könnten. Die vom Prozessor
kommende Signale werden invertiert. (z.B. H-Potenzial an C7 =>
L-Potenzial am entsprechenden Treiberausgang.
Vgl. auch Datenblatt zu L293D |
Auf dem Platinchen ist der Treiberbaustein ULN2803 erkennbar und
der Elektrolytkondensator zum Glätten der Stromspitzen (links unten).
Das Flachbandkabel führt zum 8-poligen Portanschluss (+ Masseanschluss).
Auf dem Platinchen sind noch 8 + 1 Pins angebracht, damit eine Leuchtband-Anzeige
zur Kontrolle der Ausgangssignale angeschlossen werden kann. Dies ist nur
für die Demonstrationsversion vorgesehen.
Das Doppelkabel dient zum Anschluss an die +5V- und Masse-Stecker auf der Roboter-Platine.
|