- Erforderliche Komponenten
- Pin Beschreibung des Schrittmotors
- Schaltplan für die Schrittmotorsteuerung mit dem ULN2003-Modul
- Schaltplan für die Schrittmotorsteuerung mit dem L293D-Modul:
- Schrittmotor mit AVR ATmega16 steuern
Schrittmotoren sind bürstenlose Gleichstrommotoren, die sich schrittweise von 0 0 bis 360 0 drehen können. Der Schrittmotor verwendet elektronische Signale, um den Motor schrittweise zu drehen, und jedes Signal dreht die Welle in einem festen Inkrement (ein Schritt). Der Rotationsengel wird durch Anlegen einer bestimmten Signalfolge gesteuert. Im Gegensatz zu Servomotoren können Schrittmotoren mithilfe von GPIO-Pins des Mikrocontrollers anstelle von PWM-Pins angetrieben werden und sich in (+360 0) und (-360 0 drehen). Die Reihenfolge der Signale bestimmt die Richtung des Schrittmotors im und gegen den Uhrzeigersinn. Um die Drehzahl des Motors zu steuern, müssen wir nur die Rate der angelegten Steuersignale ändern. Die Schrittmotoren drehen sich schrittweise. Es gibt verschiedene Arten von Schritten, um den Schrittmotor zu betreiben, wie z. B. Vollschritt, Halbschritt und Mikroschritt. Um mehr über die Grundlagen, Theorie und Funktionsweise des Schrittmotors zu erfahren, folgen Sie dem Link.
Wir haben zuvor den Schrittmotor mit vielen Mikrocontrollern verbunden:
- Schrittmotor mit ARM7-LPC2148 verbinden
- Schrittmotor mit Arduino Uno verbinden
- Schrittmotor mit MSP430G2 verbinden
- Schrittmotor mit STM32F103C8 verbinden
- Schrittmotor mit PIC-Mikrocontroller verbinden
- Schrittmotor mit 8051 Mikrocontroller verbinden
- Schrittmotor mit Raspberry Pi verbinden
In diesem Tutorial werden wir den 28BYJ-48- Schrittmotor mit dem Atmega16 AVR-Mikrocontroller unter Verwendung von Atmel Studio 7.0 verbinden. Der Schrittmotor ist für 5 V ausgelegt. Wir werden den Schrittmotor mit den beiden Motortreibern ULN2003 und L293 verbinden. Beide werden mit 5V versorgt. Um die Schnittstelle zu vereinfachen, verwenden wir das Prebuild-Modul beider Motortreiber. Sie können auch eigenständige ICs ULN2003 und L293D verwenden. Die Anzahl der Drähte und Steckbrücken kann höher sein. Seien Sie also vorsichtig, wenn Sie alle Verbindungen anschließen.
Erforderliche Komponenten
- Schrittmotor (28BYJ-48)
- ULN2003 Modul / 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)
Pin Beschreibung des Schrittmotors
Schaltplan für die Schrittmotorsteuerung mit dem ULN2003-Modul
Schließen Sie bei Verwendung von ULN2003 alle Komponenten wie in der folgenden Abbildung gezeigt an. In ähnlicher Weise werden wir es im nächsten Schritt mit L293D verbinden. Wir verwenden PORTA von Atmega16, um den Schrittmotor für beide Motortreiber zu verbinden. Der 5-V-Pin des Schrittmotors muss nicht angeschlossen werden. Zum Bewegen des Schrittmotors sind nur die Spulenstifte erforderlich. Die Stiftreihenfolge ist sehr wichtig, um den Schrittmotor anzutreiben, da die Erregung der Spulen erfolgen sollte, um Schritte zu erreichen. In diesem Projekt werden vier Eingänge von ULN2003 und vier Ausgänge von ULN2003 verwendet. Die Eingänge werden mit PORTA-Pins und die Ausgänge mit den Stiften des Schrittmotorsignals verbunden. Schließen Sie außerdem einen Druckknopf an den Reset-Pin an, um Atmega16 bei Bedarf zurückzusetzen. Verbinden Sie Atmega16 mit der richtigen Quarzoszillatorschaltung. Das gesamte System wird mit 5 V versorgt.
Unten sehen Sie das aktuelle Bild des Motortreibermoduls ULN2003:
Im Folgenden haben wir Atmega16-Pin-Verbindungen mit ULN2003 und L293D angegeben, um den Schrittmotor zu drehen. Die Verbindung des Schrittmotors mit dem L293D-Modul wird in einem späteren Abschnitt erläutert. Beachten Sie, dass für die Steuerung des Schrittmotors nur ein Modul erforderlich ist, entweder ULN2003 oder L293D.
Die Pin-Verbindungen für INPUT sind wie folgt:
Atmega16 |
ULN2003 |
L293D |
A0 |
IN1 (PIN1) |
IN1 (PIN2) |
A1 |
IN2 (PIN2) |
IN2 (PIN7) |
A2 |
IN3 (PIN3) |
IN3 (PIN10) |
A3 |
IN4 (PIN4) |
IN4 (PIN15) |
Die Pin-Verbindungen für OUTPUT sind wie folgt:
Schrittmotor |
ULN2003 |
L293D |
Orange |
OUT1 (PIN16) |
OUT1 (PIN3) |
Gelb |
OUT2 (PIN15) |
OUT2 (PIN6) |
Rosa |
OUT3 (PIN14) |
OUT3 (PIN11) |
Blau |
OUT4 (PIN13) |
OUT4 (PIN14) |
Schaltplan für die Schrittmotorsteuerung mit dem L293D-Modul:
Schrittmotor mit AVR ATmega16 steuern
Wie bereits erwähnt, benötigen Schrittmotoren im Gegensatz zu Servomotoren externe Treiber, z. B. ULN2003- oder L293D-Motortreiber. Schließen Sie also einfach die Schaltung wie oben an und laden Sie das am Ende angegebene main.c-Programm hoch.
Die Skizze zeigt den Schrittmotor, der sich auf beiden Seiten dreht, dh im Uhrzeigersinn und gegen den Uhrzeigersinn. Wenn Sie den Stepper in eine Richtung drehen möchten, kommentieren Sie einfach die Codezeilen einer anderen Richtung in der Skizze aus.
Der vollständige AVR-Code zur Steuerung des Schrittmotors ist unten angegeben. Code ist einfach und leicht verständlich. Nachfolgend sind zwei Codes angegeben, einer für den rotierenden Schrittmotor mit ULN2003 und der zweite mit dem L293D-Modul.
Schließen Sie Ihren USBASP v2.0 an und befolgen Sie die Anweisungen in diesem Link, um den Atmega16 AVR-Mikrocontroller mit USBASP und Atmel Studio 7.0 zu programmieren. Erstellen Sie einfach die Skizze und laden Sie sie mit einer externen Toolchain hoch.
Der vollständige Code mit dem Demonstrationsvideo ist unten angegeben.