This is an old revision of the document!


Table of Contents

DC Motor

Necessary knowledge: [HW] Motor Module, [AVR] Digital Inputs/Outputs, [LIB] Motors, [LIB] Delay

Theorie

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.)

The perfect graph of relationship between speed (V), current (I), power (P), efficiency (η)and torque (T)of a DC motor.

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.

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).

The working principle of H-bridge used on switches.

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. 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. 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.

Ü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. 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:

Input A Input B Output A Output B Result
0 0 - - The motor is stopped
1 1 + + The motor is stopped
1 0 + - The motor revolves in direction 1
0 1 - + The motor revolves in direction 2

DC Motoren können über das Verändern der dazugehörigen Driverpins mit dem Microcontroller kontrolliert werden. Die speziellen Funktionen um den Motor zu steuern sind in der HomeLab Library.

//
// The setup of the pins driving pins.
//
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) }
};
 
//
// Allowing the control of the chosen DC motor.
//
void dcmotor_init(unsigned char index)
{	
	pin_setup_output(dcmotor_pins[index][0]);
	pin_setup_output(dcmotor_pins[index][1]);
}
 
//
// Determining the operation and the direction of the chosen DC motor.
//
void dcmotor_drive(unsigned char index, signed char direction)
{	
	pin_set_to(dcmotor_pins[index][0], direction < 0);			
	pin_set_to(dcmotor_pins[index][1], direction > 0);
}

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.

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.

//
// Testing program of the DC motor of the motor's module of the home-lab.
//
#include <homelab/module/motors.h>
#include <homelab/delay.h>
 
//
// Main program
//
int main(void)
{
	// Variable of direction
	signed char direction = 1;
 
	// Setup of motors no 1 and 2.
	dcmotor_init(0);
	dcmotor_init(1);
 
	// Endless loop
	while (true)
	{
		// One motor revolves in one direction and the other one to other direction.
		dcmotor_drive(0, -direction);
		dcmotor_drive(1, +direction);
 
		// Break for 1 second.
		sw_delay_ms(1000);
 
		// Reversing the direction.
		direction = -direction;
	}
}
de/examples/motor/dc.1284142400.txt.gz · Last modified: 2020/07/20 09:00 (external edit)
CC Attribution-Share Alike 4.0 International
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0