Steuerung
Wir haben uns mit der Steuerung von Schrittmotoren über einen Programmierbaren Microcontroller den wir in in der Prgrammiersprache ABEL programmierten beschäftigt!
Die Steuereinheit inklusive Schrittmotor von der Seite...
... und von der Oben!
Wir haben den Motor im Voll- und im Halbschrittbetrieb angesteuert was man mit volgender Codefolge ereicht (siehe dazu auch
Funktionsweise):
Schritt |
L3 |
L2 |
L1 |
L0 |
voll |
1 |
0 |
0 |
1 |
halb |
1 |
0 |
0 |
0 |
voll |
1 |
0 |
1 |
0 |
halb |
0 |
0 |
1 |
0 |
voll |
0 |
1 |
1 |
0 |
halb |
0 |
1 |
0 |
0 |
voll |
0 |
1 |
0 |
1 |
halb |
0 |
0 |
0 |
1 |
Wir haben den Schrittmotor über die Pins 58,59,60 und 61 angesteuert.
MODULE schrittmotor
TITLE 'Schrittmotorsteuerung'
// Autor: Georg Sauer Datum: 28.06.2010
// Funktion: der Schritmotor wird im Vollschrittbetrieb entweder vorwaerz oder Rueckwaets laufen gelassen.
// Dies wird durch die stellung des Schalters "vor" auf pin 31 gesteuert, vor==1->Rechtsdrehung, vor==0->Linksdrehung.
// Die geschwindigkeit wird durch den Tackt auf pin 88 gesteuert der durch ein Pitentiometer gesteuerd werden kann!
vor,Takt PIN 31,88;
Q1,Q0 NODE ISTYPE 'REG';
D,C,B,A PIN 61,60,59,58 ISTYPE 'COM';
EQUATIONS
[Q1..Q0].clk=Takt;
TRUTH_TABLE // Zähler
([vor,Q1,Q0]:>[Q1,Q0]);
[ 0, 0, 0]:>[ 1, 1]; // Linksdrehung
[ 0, 0, 1]:>[ 0, 0];
[ 0, 1, 0]:>[ 0, 1];
[ 0, 1, 1]:>[ 1, 0];
[ 1, 0, 0]:>[ 0, 1]; // Rechtsdrehung
[ 1, 0, 1]:>[ 1, 0];
[ 1, 1, 0]:>[ 1, 1];
[ 1, 1, 1]:>[ 0, 0];
TRUTH_TABLE // Codeumsetzer
([Q1,Q0]->[D,C,B,A]); // (Ausgangsschaltnetz)
[ 0, 0]->[1,0,1,0];
[ 0, 1]->[1,0,0,1];
[ 1, 0]->[0,1,0,1];
[ 1, 1]->[0,1,1,0];
END
MODULE schrittmotor
TITLE 'Schrittmotorsteuerung'
// Autor: Georg Sauer Datum: 28.06.2010
// Funktion: der Schritmotor wird im Halbschrittbetrieb entweder vorwaerz oder Rueckwaets laufen gelassen.
// Dies wird durch die stellung des Schalters "vor" auf pin 31 gesteuert, vor==1->Rechtsdrehung, vor==0->Linksdrehung.
// Die geschwindigkeit wird durch den Tackt auf pin 88 gesteuert der durch ein Pitentiometer gesteuerd werden kann!
vor,Takt PIN 31,88;
Q1,Q0 NODE ISTYPE 'REG';
D,C,B,A PIN 61,60,59,58 ISTYPE 'COM';
EQUATIONS
[Q2..Q0].clk=Takt;
TRUTH_TABLE // Zähler
([vor,Q2,Q1,Q0]:>[Q2,Q1,Q0]);
[ 0, 0, 0, 0]:>[ 1, 1, 1]; // Linksdrehung
[ 0, 0, 0, 1]:>[ 0, 0, 0];
[ 0, 0, 1, 0]:>[ 0, 0, 1];
[ 0, 0, 1, 1]:>[ 0, 1, 0];
[ 0, 1, 0, 0]:>[ 0, 1, 1];
[ 0, 1, 0, 1]:>[ 1, 0, 0];
[ 0, 1, 1, 0]:>[ 1, 0, 1];
[ 0, 1, 1, 1]:>[ 1, 1, 0];
[ 1, 0, 0, 0]:>[ 0, 0, 1]; // Rechtsdrehung
[ 1, 0, 0, 1]:>[ 0, 1, 0];
[ 1, 0, 1, 0]:>[ 0, 1, 1];
[ 1, 0, 1, 1]:>[ 1, 0, 0];
[ 1, 1, 0, 0]:>[ 1, 0, 1];
[ 1, 1, 0, 1]:>[ 1, 1, 0];
[ 1, 1, 1, 0]:>[ 1, 1, 1];
[ 1, 1, 1, 1]:>[ 0, 0, 0];
TRUTH_TABLE // Codeumsetzer
([Q2,Q1,Q0]->[D,C,B,A]); // (Ausgangsschaltnetz)
[ 0, 0, 0]->[1,0,1,0];
[ 0, 0, 1]->[1,0,0,0];
[ 0, 1, 0]->[1,0,1,0];
[ 0, 1, 1]->[0,0,1,0];
[ 1, 0, 0]->[0,1,1,0];
[ 1, 0, 1]->[0,1,0,0];
[ 1, 1, 0]->[0,1,0,1];
[ 1, 1, 1]->[0,0,0,1];
END
© 2010 Georg Sauer, Löhliswälderstraße 63 77746 Schutterwald