This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| de:examples:motor:dc [2010/11/10 02:31] – Wember | de:examples:motor:dc [2020/07/20 12:00] (current) – external edit 127.0.0.1 | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| + | ====== Gleichstrommotor ====== | ||
| + | // | ||
| + | |||
| + | ===== Theorie ===== | ||
| + | |||
| + | [{{ : | ||
| + | |||
| + | Ein Gleichstrommotor mit permanenten Magneten wird häufig für die verschiedensten Anwendungen genutzt, bei denen kleine Ausmaße, große Kraft und ein geringer Preis entscheidend sind. Auf Grund ihrer hohen Geschwindigkeit, | ||
| + | |||
| + | |||
| + | [{{ : | ||
| + | |||
| + | Gleichstrommotoren mit permanenten Magneten sind vom Aufbau her sehr einfache und ihre Bedienung ist relativ einfach. Aber auch wenn die Kontrolle sehr einfach ist, wird die Geschwindigkeit nicht präzise über das Steuersignal bestimmt, weil hierauf noch viele andere Faktoren, wie das Drehmoment und der Speisestrom, | ||
| + | |||
| + | Gleichstrommaschinen nutzen Gleichstrom und brauchen eigentlich keine spezielle Kontrollelektronik, | ||
| + | | ||
| + | [{{ : | ||
| + | |||
| + | Der Vierquadrantensteller besitzt vier Transistoren die den Strom lenken, um den Motor zu betreiben. Das elektrische Schaltbild des Vierquadrantenstellers ist ähnlich des Buchstaben H, daher der englische Name H-Bridge. Das Besondere am Vierquadrantensteller ist, dass man damit beide Polaritäten am Motor anlegen kann. Das Bild auf der Seite zeit das grundsätzliche Schema eines Vierquadrantenstellers am Beispiel der Schalter. Werden zwei diagonale Schalter geschlossen, | ||
| + | |||
| + | Zusätzlich zur Richtungsänderung kann der Vierquadrantensteller auch die Geschwindigkeit des Motors verändern. Dazu werden die Transistoren konstant durch Pulsweitenmodulation geöffnet und geschlossen. Damit ist die Energie, die der Motor erhält irgendwo zwischen vollem und keinem Stromdurchfluss. Die Zeit in der die Transitoren geöffnet sind, wird in der PWM-Periode Arbeitszyklus genannt, welche in % angegeben wird. Bei 0 % ist der Transistor konstant geschlossen und es fließt kein Strom. Bei 100 % ist der Transistor ist durchgehend geöffnet, und Strom fließt die ganze Zeit. Die Frequenz der PWM muss hoch genug sein, um Vibrationen der Motorwelle zu verhindern. Bei niedrigen Frequenzen produziert der Motor Geräusche, daher wird oft eine Modulationsfrequenz von über 20 kHz genutzt. Auf der anderen Seite ist die Effizienz des Vierquadrantenstellers nicht so gut bei hohen Frequenzen. Vibrationen der Motorwelle werden durch die Trägheit des Rotors und der Induktionswiderstand der Spulen reduziert. | ||
| + | |||
| + | Es gibt auch integrierte Vierquadrantensteller für niedrigere Stromstärken. Für höhere Stromstärken werden spezielle Metall-Oxid-Halbleiter-Feldeffekttransistoren verwendet. Der Vierquadrantensteller mit anderer Elektronik wird Motorcontroller oder Treiber genannt. | ||
| + | Der Teiber des Gleichstrommotors im HomeLab L293D hat 2 eingebaute Vierquadrantensteller und Ausschaltdioden. Der Motor wird mit drei digitalen Signalen gesteuert, eins davon ist das //enable// Signal, welches Funktionen einschaltet, | ||
| + | |||
| + | Beachte: Verwechslen Sie nicht RC PWM Signal und gewöhnliche PWM Signale. | ||
| + | |||
| + | ===== Übung ===== | ||
| + | |||
| + | Das Board der Motoren des HomeLab erlaubt den Anschluss von bis zu 4 Gleichstrommotoren. Das Schaltbild und die Anleitung für die Anschlüsse können im Kapitel " | ||
| + | Wenn beide Kontrollpins den gleichen Wert haben, wird der Motor gestoppt. Wenn verschiedene Werte vorliegen, wird der Motor in eine bestimmte Richtung gedreht. Der Status des Vierquadrantenstellers ist in der folgende Tabelle beschrieben: | ||
| + | |||
| + | ^ Input A ^ Input B ^ Output A ^ Output B ^ Result | ||
| + | | 0 | ||
| + | | 1 | ||
| + | | 1 | ||
| + | | 0 | ||
| + | |||
| + | Gleichstrommotoren können durch Änderung der dazugehörigen Treiberpins mit dem Mikrocontroller kontrolliert werden. Die speziellen Funktionen um den Motor zu steuern sind in der HomeLab Bibliothek enthalten. | ||
| + | |||
| + | <code c> | ||
| + | // | ||
| + | // Die Einrichtung von Pins als Treiberpins. | ||
| + | // | ||
| + | static pin dcmotor_pins[4][2] = | ||
| + | { | ||
| + | { PIN(B, 7), PIN(B, 4) }, | ||
| + | { PIN(D, 1), PIN(D, 0) }, | ||
| + | { PIN(D, 7), PIN(D, 6) }, | ||
| + | { PIN(D, 5), PIN(D, 4) } | ||
| + | }; | ||
| + | |||
| + | // | ||
| + | // Steuerung des gewählten DC Motors zulassen. | ||
| + | // | ||
| + | void dcmotor_init(unsigned char index) | ||
| + | { | ||
| + | pin_setup_output(dcmotor_pins[index][0]); | ||
| + | pin_setup_output(dcmotor_pins[index][1]); | ||
| + | } | ||
| + | |||
| + | // | ||
| + | // Festlegung der Funktion und Richtung des gewählten DC Motors. | ||
| + | // | ||
| + | void dcmotor_drive(unsigned char index, signed char direction) | ||
| + | { | ||
| + | pin_set_to(dcmotor_pins[index][0], | ||
| + | pin_set_to(dcmotor_pins[index][1], | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | Mit dem Array // | ||
| + | |||
| + | Das folgende Beispielprogramm steuert den ersten und zweiten Gleichstrommotor so, dass sie jede Sekunde ihre Drehrichtung ändern. Die Geschwindigkeit kann gesteuert werden, wenn ein Kontrollpin mit einem PWM Signal moduliert wird. | ||
| + | |||
| + | <code c> | ||
| + | // | ||
| + | // Testprogramm für den DC Motor aus dem DC Motorenmodul des HomeLab. | ||
| + | // | ||
| + | #include < | ||
| + | #include < | ||
| + | |||
| + | // | ||
| + | // Hauptprogramm | ||
| + | // | ||
| + | int main(void) | ||
| + | { | ||
| + | // Richtungsvariable | ||
| + | signed char direction = 1; | ||
| + | |||
| + | // Einrichtung von Motor 1 und 2. | ||
| + | dcmotor_init(0); | ||
| + | dcmotor_init(1); | ||
| + | |||
| + | // Endlosschleife | ||
| + | while (true) | ||
| + | { | ||
| + | // Ein Motor dreht sich in die eine, der andere in die entgegengesetzte Richtung. | ||
| + | dcmotor_drive(0, | ||
| + | dcmotor_drive(1, | ||
| + | |||
| + | // Unterbrechung für 1 Sekunde. | ||
| + | sw_delay_ms(1000); | ||
| + | |||
| + | // Umkehr der Richtung. | ||
| + | direction = -direction; | ||
| + | } | ||
| + | } | ||
| + | </ | ||