| Next revision | Previous revision |
| de:examples:motor:dc [2010/09/10 18:13] – angelegt Wember | de:examples:motor:dc [2020/07/20 09:00] (current) – external edit 127.0.0.1 |
|---|
| ====== DC Motor ====== | ====== Gleichstrommotor ====== |
| |
| //Necessary knowledge: [HW] [[en:hardware:homelab:motor]], [AVR] [[en:avr:io]], [LIB] [[en:software:homelab:library:module:motor]], [LIB] [[en:software:homelab:library:delay]]// | //Notwendiges Wissen: [HW] [[en:hardware:homelab:motor]], [AVR] [[en:avr:io]], [LIB] [[en:software:homelab:library:module:motor]], [LIB] [[en:software:homelab:library:delay]]// |
| |
| ===== Theorie ===== | ===== Theorie ===== |
| |
| [{{ :examples:motor:dc:motor_dc_picture.jpg?220|DC motor}}] | [{{ :examples:motor:dc:motor_dc_picture.jpg?220|DC Motor}}] |
| |
| Ein DC Motor mit permanenten Magneten ist in den verschiedensten Anwendungen verbreitet, in denen kleine Ausmaße, große Kraft und ein geringer Preis wichtig sind. Auf Grund ihrer hohen Geschwindigkeit, werden sie oft mit einer Übersetzung genutzt. (Um einen niedrigere Outputgeschwindkeit und höheres Drehmoment zu bekommen.) | 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, werden sie oft mit einer Übersetzung genutzt. (Um eine niedrigere Output-Geschwindkeit und höheres Drehmoment zu erreichen.) |
| |
| |
| [{{ :examples:motor:dc:motor_dc_performance.png?220|The perfect graph of relationship between speed (V), current (I), power (P), efficiency (η)and torque (T)of a DC motor. }}] | [{{ :examples:motor:dc:motor_dc_performance.png?220|Der perfekte Graph des Verhältnisses von Geschwindigkeit (V), Stromstärke(I), Kraft(P), Effizienz (η) und Drehmoment (T) eines DC Motors. }}] |
| |
| DC Motoren mit permanenten Magneten haben eine sehr einfachen Aufbau und ihre Bedienung ist trivial. Aber auch wenn die Kontrolle sehr einfach ist, wird die Geschwindigkeit nicht präzise über das Steuersignal bestimmt, weil noch viele andere Faktoren mitspielen, wie das Drehmoment und der Speisestrom. Das Verhältnis zwischen Drehmoment und Geschwindigkeit ist in einem idealen DC Motor linear, das bedeutet, um so höher das zu erzeugende Drehmoment ist, um so geringer die Geschwindigkeit und um so höher der Strom in der Spule. | 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, einwirken. Das Verhältnis zwischen Drehmoment und Geschwindigkeit ist in einem idealen Gleichstrommotor linear. Das bedeutet, je höher das zu erzeugende Drehmoment ist, desto geringer die Geschwindigkeit und desto höher der Strom in der Spule. |
| |
| Gleichstrommaschinen nutzen Gleichstrom und brauchen eigentlich keine spezielle Kontrollelektronik, da die Notwendige Kommunikation im Motor selbst passiert. Wenn der Motor arbeitet gleiten zwei statische Schleifbürsten an dem sich drehenden Kommutator und halten die Spannung an den Spulen. Die Richtung in der sich der Motor dreht, hängt von der Richtung ab in der Strom druch den Motor fließt. Wenn der Motor sich nur in eine Richtung bewwegen muss kann der Strom über ein Relay oder ein einfache Schaltung kommen. Falls der Motor sich in zwei Richtungen drehen muss, dann wird ein Schaltkreis benutzt der sich Vierquadrantensteller nennt (H-bridge). | Gleichstrommaschinen nutzen Gleichstrom und brauchen eigentlich keine spezielle Kontrollelektronik, da dienNotwendige Kommunikation im Motor selbst passiert. Wenn der Motor arbeitet gleiten zwei statische Schleifbürsten an dem sich drehenden Kommutator und halten die Spannung an den Spulen. Die Richtung in der sich der Motor dreht, hängt davon ab, wie der der Strom durch den Motor fließt. Wenn der Motor sich nur in eine Richtung bewegen muss kann der Strom über ein Relais oder ein einfache Schaltung kommen. Falls der Motor sich in zwei Richtungen drehen muss, wird ein Schaltkreis, der Vierquadrantensteller (H-Bridge), genutzt. |
| | |
| [{{ :examples:motor:dc:motor_h_bridge_principle.png?220|The working principle of H-bridge used on switches.}}] | [{{ :examples:motor:dc:motor_h_bridge_principle.png?220|Die Arbeitsweise eines Vierquadrantenstellers, genutzt an Schaltern.}}] |
| |
| In dem Vierquadrantensteller sind 4 Transistoren die den Strom richten um den Motor zu betreiben. Das elektrische Schaltbild des Vierquadrantensteller ist ähnlich des Buchstaben H und daher kommt der name (H-bridge). Das besondere am Vierquadrantensteller ist, dass man damit beide Polaritäten am Motor anlegen kann. | 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, arbeitet der Motor. Die Drehrichtung des Motors hängt davon ab welche diagonalen Schalter geschlossen werden. Im wirklichen Vierquadrantensteller sind die Schalter durch Transistoren ersetzt, welche je nach Stromstärke und Spannung des Motors gewählt werden. |
| Das Bild an der Seite zeit das grundätzliche Schema eines Vierquadrantensteller an Beispiel der Schalter. Wenn zwei diagonale Schalter geschlossen werden, arbeitet der Motor. Die Drehrichtung des Motos hängt davon ab welche diagonalen Schalter geschlossen werden. | |
| Im wirklichen Vierquadrantensteller sind die Schalter durch Transistoren ersetztm wekcge je nach Stromstärke und Spannungs des Motors gewählt werden. | |
| |
| Zusätzlich zur Richtungsänderung kann der Vierquadrantenstellerauch die Geschwindigkeit des Motors verändern. Um dies zu bewerkstelligen werden die Transistoren konstant durch Pulsweitenmodulation geöffnet und geschlossen. Damit ist die Energie die der Motor erhält irgendwo zwischen vollem Stromdruchfluss und keinem Stromdurchfluss. Während der Offen-Zeit wird die PWM Periode Arbeitszyklus genannt, welche in % angegeben wird. Bei 0% ist der Transistor konstant geschlossen, und bei 100% ist der Transistor ist konstant geöffnent, und Strom fließt die ganze Zeit. | 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. |
| Die Frequenz der PWM muss hoch genug sein um Vibrationen im Motor zu verhindern. Bei niedrigen Frequenzen produziert der Motor Geräusche, daher wird oft eine Modulationsfrequenz von über 20kHz genutzt. Auf der anderen Seite ist die Effizienz des Vierquadrantenstellers nicht so gut bei hohen Frequenzen. Vibrationen der Motorachse 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 werdem spezielle Metall-Oxid-Halbleiter-Feldeffekttransistoren verwendet. Der Vierquadrantensteller mit anderer Elektronik wird Motorcontroller oder Driver genannt. | |
| Der Driver des DC Motors im HomeLab L293D hat 2 eingebaute Vierquadrantensteller und Circuit Breaking Dioden.Der Motor wird mit drei digitalen Signalen gesteuert, eins davon ist das //enable// Signal , die anderen beiden bestimmten den Status der Transistoren der H-Brücke. Dabei drüfen nicht beide vertikalen Transistoren geöffnet werden, da es sonst zu einem Kurzschluss kommen würde. Das beudeutet, dass der Driver Idiotensicher gemacht worden ist, und nur eine Option bzgl. der Transistoren auf einer Seite der H-Brücke ausgewählt werden kann. Anders gesagt, die Polarität wird mit den 2 Driving Signalen ausgewählt welche an den 2 Enden der Spule des Motors anliegt. | |
| | |
| Beachte: Verwechsel nicht RC PWM Signal und normle PWM Signale. | |
| |
| | 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, die anderen beiden bestimmten den Status der Transistoren des Vierquadrantenstellers. Dabei dürfen niemals beide vertikalen Transistoren geöffnet werden, da dadurch ein Kurzschluss verursacht wird. Damit wurde der Treiber "idiotensicher" gemacht, und nur eine Option bzgl. der Transistoren auf einer Seite des Vierquadrantenstellers ausgewählt werden kann. Anders gesagt, die Polarität wird ausgewählt, indem die beiden Treibersignalen, die an den beiden Enden der Spule des Motors anliegen, genutzt werden. |
| |
| | Beachte: Verwechslen Sie nicht RC PWM Signal und gewöhnliche PWM Signale. |
| |
| ===== Übung ===== | ===== Übung ===== |
| |
| Das Board der Motoren von HomeLab erlaubt den Anschluss von bis zu 4 DC Motoren. Das Schaltbild und die Anleitung für die Anschlüsse können im Kapitel "Motormodul" gefunden werden. Für jeden Motor gibt es eine H-Brücke, welche über zwei digitalen Output-Pins des Microcontrollers kontrolliert werden, da der //enable// Pin konstant "high" ist. | 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 "Motormodul" gefunden werden. Für jeden Motor gibt es einen Vierquadrantensteller, welcher über zwei digitale Output-Pins des Mikrocontrollers kontrolliert wird, da der //enable// Pin konstant "high" ist. |
| Wenn beide Kontrollpins den gleichen Wert haben, wird der Motor gestoppt, aber wenn verschiedene Werte vorliegen wird der Motor in eine bestimmte Richtung gedreht. Der Status der H-Brücke ist in der folgende Tabelle beschrieben: | 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 ^ | ^ Input A ^ Input B ^ Output A ^ Output B ^ Result ^ |
| | 0 | 0 | - | - | The motor is stopped | | | 0 | 0 | - | - | Der Motor wird gestoppt | |
| | 1 | 1 | + | + | The motor is stopped | | | 1 | 1 | + | + | Der Motor wird gestoppt | |
| | 1 | 0 | + | - | The motor revolves in direction 1 | | | 1 | 0 | + | - | Der Motor dreht in Richtung 1 | |
| | 0 | 1 | - | + | The motor revolves in direction 2 | | | 0 | 1 | - | + | Der Motor dreht in Richtung 2 | |
| |
| DC Motoren können über das Verändern der dazugehörigen Driverpins mit dem Microcontroller kontrolliert werden. | 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. |
| Die speziellen Funktionen um den Motor zu steuern sind in der HomeLab Library. | |
| |
| <code c> | <code c> |
| // | // |
| // The setup of the pins driving pins. | // Die Einrichtung von Pins als Treiberpins. |
| // | // |
| static pin dcmotor_pins[4][2] = | static pin dcmotor_pins[4][2] = |
| |
| // | // |
| // Allowing the control of the chosen DC motor. | // Steuerung des gewählten DC Motors zulassen. |
| // | // |
| void dcmotor_init(unsigned char index) | void dcmotor_init(unsigned char index) |
| | |
| // | // |
| // Determining the operation and the direction of the chosen DC motor. | // Festlegung der Funktion und Richtung des gewählten DC Motors. |
| // | // |
| void dcmotor_drive(unsigned char index, signed char direction) | void dcmotor_drive(unsigned char index, signed char direction) |
| </code> | </code> |
| |
| Mit dem Array //dcmotor_pins// aus der Library, werden die Kontrollpins der 4 Motorcontroller angegeben. Bevor man den Motor steuert, muss die funktion //dcmotor_init// mit der Nummer des Motorcontrollers (0-3) benannt werden. Sie setzt die Pins als Output. Zum Steuern ist die Funktion //dcmotor_drive// da, der negative //direction// Parameter gibt die Richtung der Motordrehung an, die andere Richtung wird mit dem Positiven Parameter angegeben, und 0 um den Motor anzuhalten. | Mit dem Array //dcmotor_pins// aus der Bibliothek, werden die Kontrollpins der vier Motorcontroller bestimmt. Bevor der Motor gesteuert wird, muss die Funktion //dcmotor_init// mit der Nummer des Motorcontrollers (0-3) benannt werden. Sie setzt die Pins als Output. Für die Steuerung ist die Funktion //dcmotor_drive// vorhanden, der negative //direction// Parameter gibt die Richtung der Motordrehung an, die andere Richtung wird mit dem positiven Parameter angegeben. 0 dient dazu, den Motor anzuhalten. |
| |
| Das folgende Beispielprogramm steuert den ersten und zweiten DC Motor so, dass sie jede Sekunde ihre Drehrichtung ändern. Die Geschwindigkeit kann gesteuert werden, wenn ein Kontrollpin mit einem PWMSignal moduliert wird. | 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> | <code c> |
| // | // |
| // Testing program of the DC motor of the motor's module of the home-lab. | // Testprogramm für den DC Motor aus dem DC Motorenmodul des HomeLab. |
| // | // |
| #include <homelab/module/motors.h> | #include <homelab/module/motors.h> |
| |
| // | // |
| // Main program | // Hauptprogramm |
| // | // |
| int main(void) | int main(void) |
| { | { |
| // Variable of direction | // Richtungsvariable |
| signed char direction = 1; | signed char direction = 1; |
| |
| // Setup of motors no 1 and 2. | // Einrichtung von Motor 1 und 2. |
| dcmotor_init(0); | dcmotor_init(0); |
| dcmotor_init(1); | dcmotor_init(1); |
| | |
| // Endless loop | // Endlosschleife |
| while (true) | while (true) |
| { | { |
| // One motor revolves in one direction and the other one to other direction. | // Ein Motor dreht sich in die eine, der andere in die entgegengesetzte Richtung. |
| dcmotor_drive(0, -direction); | dcmotor_drive(0, -direction); |
| dcmotor_drive(1, +direction); | dcmotor_drive(1, +direction); |
| |
| // Break for 1 second. | // Unterbrechung für 1 Sekunde. |
| sw_delay_ms(1000); | sw_delay_ms(1000); |
| |
| // Reversing the direction. | // Umkehr der Richtung. |
| direction = -direction; | direction = -direction; |
| } | } |
| } | } |
| </code> | </code> |