- Was ist ein Gleichstrommotor?
- Erforderliche Komponenten
- Schaltplan
- Programmierung von Atmega16 für die Gleichstrommotorsteuerung
Gleichstrommotoren sind die am häufigsten verwendeten Motoren. Diese Motoren sind fast überall zu finden, von kleinen Projekten bis hin zu fortschrittlicher Robotik. Wir haben zuvor Gleichstrommotoren mit vielen anderen Mikrocontrollern wie Arduino, Raspberry pi verbunden und ihn in vielen Roboterprojekten verwendet. Heute lernen wir, Gleichstrommotoren mit dem AVR-Mikrocontroller Atmega16 zu steuern. Aber bevor wir fortfahren, lassen Sie uns mehr über Gleichstrommotoren wissen.
Was ist ein Gleichstrommotor?
Der Gleichstrommotor ist ein Gerät, das elektrische Energie in mechanische Energie umwandelt. Insbesondere verwendet ein Gleichstrommotor Gleichstrom, um elektrische Energie in mechanische Energie umzuwandeln. Das Grundprinzip des Motors ist die Wechselwirkung zwischen Magnetfeld und Strom, um eine Kraft innerhalb des Motors zu erzeugen, die dem Motor hilft, sich zu drehen. Wenn also der elektrische Strom in einem Magnetfeld durch eine Spule geleitet wird, wird eine Magnetkraft erzeugt, die ein Drehmoment erzeugt, das zur Bewegung des Motors führt. Die Richtung des Motors wird durch Umkehren des Stroms gesteuert. Auch seine Geschwindigkeit kann durch Variieren der zugeführten Spannung variiert werden. Da Mikrocontroller PWM-Pins haben, können sie zur Steuerung der Motordrehzahl verwendet werden.
In diesem Tutorial wird der Betrieb von Gleichstrommotoren mit Atmega16 demonstriert. Der Motortreiber L293D wird verwendet, um die Stromrichtung und damit die Bewegungsrichtung umzukehren. Der Motortreiber L293D verwendet eine H-Bridge-Schaltungskonfiguration, die den erforderlichen Strom an den Motor ausgibt. Mit zwei Drucktasten wird die Richtung des Motors ausgewählt. Einer der Druckknöpfe dient zur Auswahl der Drehung im Uhrzeigersinn und der andere zur Auswahl des Anti-Uhr-Betriebs des Gleichstrommotors.
Erforderliche Komponenten
- Gleichstrommotor (5V)
- L293D Motortreiber
- Atmega16 Mikrocontroller IC
- 16 MHz Kristalloszillator
- Zwei 100nF Kondensatoren
- Zwei 22pF-Kondensatoren
- Druckknopf
- Überbrückungsdrähte
- Steckbrett
- USBASP v2.0
- LED (beliebige Farbe)
Schaltplan
Programmierung von Atmega16 für die Gleichstrommotorsteuerung
Hier wird der Atmega16 mit USBASP und Atmel Studio7.0 programmiert. Wenn Sie nicht wissen, wie Atmega16 mit USBASP programmiert wird, besuchen Sie den Link. Das vollständige Programm finden Sie am Ende des Projekts. Laden Sie einfach das Programm in Atmega16 hoch und drehen Sie den Gleichstrommotor mit den beiden Drucktasten im und gegen den Uhrzeigersinn.Der Gleichstrommotor wird über den Motortreiber L293D angeschlossen. Der Gleichstrommotor dreht sich in zwei Richtungen, wenn der entsprechende Druckknopf gedrückt wird. Der eine Druckknopf wird verwendet, um den Gleichstrommotor im Uhrzeigersinn zu drehen, und der andere Druckknopf wird verwendet, um den Gleichstrommotor gegen den Uhrzeigersinn zu drehen. Definieren Sie zunächst die CPU-Frequenz des Mikrocontrollers und schließen Sie alle erforderlichen Bibliotheken ein.
#define F_CPU 16000000UL #include #include
Verwenden Sie dann eine Variable, um den Status des gedrückten Druckknopfs zu verfolgen. Diese Variable wird verwendet, um die Richtung des Motors zu definieren.
int i;
Wählen Sie den Ein- / Ausgabemodus von GPIO mithilfe des Datenrichtungsregisters. Stellen Sie den Ausgang des Motorstifts zunächst auf niedrig, um ein Starten des Motors ohne Drücken des Druckknopfs zu vermeiden.
DDRA = 03; PORTA & = ~ (1 << 1); PORTA & = ~ (1 << 0);
Überprüfen Sie, ob 1 st Druckknopf gedrückt wird, um PORTA4 von Atmega16 verbunden und speichert den Status der Druckknopf in der Variablen.
if (! bit_is_clear (PINA, 4)) { i = 1; PORTA & = ~ (1 << 1); Verzögerung (1000); }}
Ebenso überprüfen, ob 2 nd Druckknopf gedrückt wird, um PORTA5 von Atmega16 verbunden und speichern den Status des Druckknopfes in den Variablen.
sonst wenn (! bit_is_clear (PINA, 5)) { i = 2; PORTA & = ~ (1 << 0); Verzögerung (1000); }}
Wenn der Status der 1 st Taste wahr dreht dann DC - Motor in Uhrzeigersinn Richtung und wenn Status des zweiten Druckknopfes ist wahr dreht dann DC - Motor in anti-Uhrzeigersinn.
if (i == 1) { PORTA - = (1 << 0); PORTA & = ~ (1 << 1); } else if (i == 2) { PORTA - = (1 << 1); PORTA & = ~ (1 << 0); }}
Sie können die Motorstifte je nach verwendetem GPIO mit jedem GPIO-Stift verbinden. Es ist auch wichtig, einen Motortreiber-IC zu verwenden, um die Belastung des Mikrocontrollers zu verringern, da Mikrocontroller nicht in der Lage sind, den erforderlichen Strom für den Betrieb von Gleichstrommotoren bereitzustellen. Für weitere Details und andere Projekte, die auf Gleichstrommotoren basieren, besuchen Sie bitte den angegebenen Link.
Der vollständige Code und das Demonstrationsvideo sind unten angegeben.