EASY Möller 719-AC-RC


Google-Suche auf MEINE-SCHALTUNG.de :





Dauerkalender


Scheibenwischer mit Schrittmotor
(und Mikrocontroller HT46F47E)


Scheibenwischer

Scheibenwischer

In dem folgenden Versuch prüfen wir, ob der kleine Mikrocontroller HT46F47E dazu geeignet ist, einen Schrittmotor zu steuern. Als Anwendungsbeispiel wählen wir dabei einen Scheibenwischer. Sollte dies gelingen, wird der Vorteil einer solchen Lösung gleich sichtbar. Da man einen Schrittmotor dank Schrittzählung exakt positionieren kann, entfallen die Endlage-Sensoren. Man spart also an der Sensorik und Verdrahtung. Zusätzlich verringert sich die Zahl der möglichen Störquellen.
Um die Aufgabe zu vereinfachen, wird der Motor mit einem Treiber angetrieben. Damit werden für die eigentliche Ansteuerung des Motors nur zwei Ausgänge des Mikrocontrollers benötigt. Zwei weitere stehen dann für andere Aufgaben zur Verfügung. Um die Achse des Motors jeweils in die gewünschte Position zu bringen, müssen die Pulse, die die Anzahl der Schritte des Motors bestimmen, gezählt werden. Das Hantieren mit Zahlen, die größer als 15 sind, stellt dabei jeden Hobby-Programmierer vor einigen neuen Herausforderungen.

Schrittmotor

ACT MOTOR 16HS2404L14.5P1-X

ACT MOTOR 16HS2404L14.5P1-X

DM420

DM420

Notizbuch: ACT Motor
Schrittmotor mit Arduino

Bei dem Motor handelt es sich um einen Zweiphasenmotor, der mit einem Treiber gesteuert wird. Damit beschränkt sich unsere Steuerung auf Steuerung des Motortreibers. Von dem Mikrocontroller führen wir zwei Leitungen zu dem Treiber. Mit DIR wird die Drehrichtung des Motors bestimmt, mit PUL (Pulse) der Weg und Geschwindigkeit. Der Eingang ENBL (Enable) wird konstant mit 5V versorgt. Mit mehreren Dipschaltern auf dem Treiber kann man die Strombegrenzung und Auflösung einstellen. Für den Versuch wird die Auflösung auf 400 Impulse pro Umdrehung eingestellt. Der Strom wird auf ca. 400 mA begrenzt.

Mikrocontroller

HT46F47E

HT46F47E

Pinbelegung
Grundbefehle
Programmierung

Die Schaltung

Scheibenwischer - Schaltplan

Scheibenwischer - Schaltplan

Mit dem Schalter S0 wird die Schaltung mit Spannung versorgt. Die Eingangsspannung von 12 VDC wird für die Steuerung mit einem Spannungsregler mit LM317 auf 5 V runtergeregelt. Als Einspeisung für den Mikrocontroller könnten auch drei Batterien je 1,5 V verwendet werden. Mit den Tasten S1 und S2 kann der Motor zu Test- und Einstellzwecken manuell bewegt werden. Mit dem rastenden Schalter S3 wird der automatische Ablauf gestartet. Anstelle des Schalters S3 oder mit ihm kombiniert könnte ein Regensensor angeschlossen werden.
Mit einem Widerstand zwischen den Pins 12 (Vcc) und 13 (Osc1) kann die interne Taktfrequenz des Mikrocontrollers eingestellt werden. Die maximale Taktfrequenz, die eingestellt werden kann, beträgt 12 MHz. Diese Aufgabe übernimmt in der Schaltung der Widerstand R1. Zusätzlich wird in der Reihe mit R1 der Potenziometer P1 angeschlossen. Mit dem Potenziometer kann Taktfrequenz im bestimmten Bereich stufenlos reguliert werden. Die Taktfrequenz wirkt sich dann auf die im Programm eingestellten Zeiten aus. In diesem Fall wird mit dem Potenziometer die Geschwindigkeit des Motors beeinflusst.

Scheibenwischer - Testschaltung

Scheibenwischer - Testschaltung

Das Programm

Der HT46F47E kann sehr gut mit Zahlen 0-15 (0h-Fh) umgehen. Müssen größere Zahlen bearbeitet werden, ist ein zusätzlicher Programmierungsaufwand notwendig. Bei dem Versuch wollen wir, dass der Motor bei einem Wischvorgang (volle Bewegung in eine Richtung) ca. eine halbe Umdrehung um eigene Achse absolviert. Der Treiber ist auf 400 Schritte pro Umdrehung eingestellt. Um das Ziel der halben Drehung zu erreichen, muss der Mikrocontroller pro einen Wischvorgang ca. 200 Impulse liefern. Einen solchen Wert kann keine der zur Verfügung stehenden Variablen annehmen.
Das Problem wird in dem Unterprogramm ZÄHLER gelöst. Die Zählung der Impulse wird mithilfe der Variablen A, B und C realisiert. Mit dem Befehl „A“ (C-Schlaufe) wird die Variable C nach jedem Impuls dekrementiert. Davor wird sie mit dem Startwert Fh (Dezimal 15) geladen. Das Dekrementieren läuft, bis sie den Wert 0 erreicht hat. Pro eine C-Schlaufe werden damit 15 Impulse generiert. Nach jedem Ablauf der C-Schlaufe wird die Variable A, die mit dem Wert 0 beginnt, um 1 erhöht und die C-Schlaufe neu gestartet. Der Ablauf wiederholt sich, bis die Variable A den Wert erreicht hat, den wir als Vergleichswert in der Variable B gespeichert haben. Dieser beträgt in dem Beispiel Dh (Dezimal 13).
Folglich werden pro Bewegung in eine Richtung 13x15=195 Impulse generiert. Mit 195 Impulsen führt der Motor eine (fast) 180° - Drehung aus.

Listing mit Kommentaren
         
                  TASTER - ABFRAGE
000 (00h)  11  Blaue LED ein, Steuerung bereit
001 (01h)  80  Sprungbereich festlegen (Seite 0)
002 (02h)  C8  Überspringe folgenden Befehl, wenn Taste HAND LINKS betätigt
003 (03h)  95  Springe zur Zeile 5 (Adresse 05h), um Taste HAND RECHTS zu prüfen
004 (04h)  9D  Springe zu der Programmsequenz HAND LINKS
005 (05h)  C9  Überspringe folgenden Befehl, wenn Taste HAND RECHTS betätigt
006 (06h)  99  Springe zur Zeile 9 (Adresse 09h), um Schalter AUTOMATIK zu prüfen
007 (07h)  81  Sprungbereich festlegen (Seite 1)
008 (08h)  92  Springe zu der Programmsequenz HAND RECHTS
009 (09h)  CA  Überspringe folgenden Befehl, wenn Schalter AUTOMATIK betätigt
010 (0Ah)  3A  Springe zurück -10 auf 0 und wiederhole die Abfragen
011 (0Bh)  81  Setze Sprungbereich (Seite 1)
012 (0Ch)  97  Springe zu der Programmsequenz AUTOMATIK

                  HAND LINKS
013 (0Dh)  11  Ausgang LINKS auf LOW (LED bleibt an)
014 (0Eh)  83  Sprungbereich festlegen (Seite 3)
015 (0Fh)  D0  Unterprogramm SCHRITT LINKS aufrufen
016 (10h)  80  Sprungbereich festlegen (Seite 0)
017 (11h)  90  Springe zurück auf 0

                  HAND RECHTS
018 (12h)  13  Ausgang RECHTS setzen (LED bleibt an)
019 (13h)  83  Sprungbereich festlegen (Seite 3)
020 (14h)  D5  Unterprogramm SCHRITT RECHTS  aufrufen
021 (15h)  80  Sprungbereich festlegen (Seite 0)
022 (16h)  90  Springe zurück auf 0

                  AUTOMATIK
023 (17h)  4D  A=D, A wird mit 13 vorbelegt
024 (18h)  51  B=A, Vergleichswert in B laden
025 (19h)  4F  A=F, C-Schlaufe
026 (1Ah)  52  C=A, C vorbelegen
027 (1Bh)  40  A=0,  Startwert für Variable A
028 (1Ch)  83  Sprungbereich festlegen (Seite 3)
029 (1Dh)  D5  Unterprogramm SCHRITT RECHTS aufrufen
030 (1Eh)  DA  Unterprogramm ZÄHLER aufrufen
031 (1Fh)  81  Sprungbereich festlegen (Seite 1)
032 (20h)  C3  Überspringe den folgenden Befehl, wenn A=B
033 (21h)  9C  Springe zur Zeile 28 (Adresse 1Ch) und wiederhole alles
034 (22h)  40  A=0,  Startwert für Variable A
035 (23h)  83  Sprungbereich festlegen (Seite 3)
036 (24h)  D0  Unterprogramm SCHRITT LINKS  aufrufen
037 (25h)  DA  Unterprogramm ZÄHLER aufrufen
038 (26h)  82  Sprungbereich festlegen (Seite 2)
039 (27h)  C3  Überspringe den folgenden Befehl, wenn A=B
040 (28h)  93  Springe zur Zeile 35 (Adresse 23h) und wiederhole alles
041 (29h)  80  Sprungbereich festlegen (Seite 0)
042 (2Ah)  90  Zurück zum Anfang

                  UNTERPROGRAMM SCHRITT LINKS 
048	(30h)  15  Impuls HIGH (Ausgang PA2 + LED ein, Richtung aus)
049	(31h)  20  Impulslänge (Wartezeit)
050	(32h)  11  Impuls LOW (Ausgang PA2 aus, LED ein, Richtung bleibt aus)
051	(33h)  20  Wartezeit
052	(34h)  E0  RETURN

                  UNTERPROGRAMM SCHRITT RECHTS
053	(35h)  17  Impuls HIGH (Ausgang PA2 + LED + Richtung ein)
054	(36h)  20  Impulslänge (Wartezeit)
055	(37h)  13  Impuls LOW (Ausgang PA2 aus, LED + Richtung bleiben an)
056	(38h)  20  Wartezeit
057	(39h)  E0  RETURN

                  UNTERPROGRAMM ZÄHLER
058	(3Ah)  83  Sprungbereich festlegen (Seite 3)
059	(3Bh)  AD  Dekrementiere C, springe auf 3Dh, wenn C noch nicht 0
060	(3Ch)  9E  Schlaufe abgelaufen, springe auf 3Eh
061	(3Dh)  E0  RETURN
062	(3Eh)  53  D=A, Zwischenspeicherung von A
063	(3Fh)  4F  A=F, C-Schlaufe Startwert
064	(40h)  52  C=A, C vorbelegen
065	(41h)  63  A=D, A aktualisieren
066	(42h)  71  A=A+1, erhöhe A um 1
067	(43h)  E0  RETURN

 11 80 C8 95 9D C9 99 81 92 CA 3A 81 97 
 11 83 D0 80 90 
 13 83 D5 80 90 
 4D 51 4F 52 40 83 D5 DA 81 C3 9C 40 83 D0 DA 82 C3 93 80 90 
 15 20 11 20 E0 
 17 20 13 20 E0 
 83 AD 9E E0 53 4F 52 63 71 E0 
        

Kurzvideo

Kurzvideo


Weitere Themen:


Google-Suche auf MEINE-SCHALTUNG.de :


Home Impressum Datenschutz