Das Thema wird wohl für die Meisten als "Pillepalle" eingestuft werden.
Ich hänge aber hier gerade mit einem Praktikanten in den Seilen und es
will einfach nicht, peinlich aber wahr. Es soll nur eine ganz einfache
"Funktions-Studie" sein, geht aber nicht.
Hardware: Arduino Uno, 4 Pins (8,9,10,11) auf Output, direkt da dran ein
ULN2003 als 4-fach-Treiber, dahinter ein bipolarer Schrittmotor (4
Anschlüsse).
Die beigefügte Grafik wurde einem Youtube-Video entnommen, vertikal
jeweils die Bestromung bzw. Polarität der Spulen, die oberen beiden
Werte Spule A, die unteren beiden Werde Spule B. Nebeninander die 4
Phasen für einen Zyklus. Leere Felder meinen "kein Strom". Da das mit
LOW & HIGH nicht so einfach ist, habe ich in diesem Falle beide
Anschlüsse jeweils auf den selben Wert gesetzt. Etwas unübersichtlich
wird es dadurch, dass der ULN2003 invertiert.
Problem: Der Schrittmotor "rubbelt" nur leicht auf der Stelle, Drehen
tut er absolut nicht :-( Dessen 4 Anschlusskabel wurden auch "zur
Sicherheit", aber ohne jedes Ergebnis, schon mal durchpermutiert.
1 | int d = 20;
|
2 |
|
3 | void setup()
|
4 | {
|
5 | pinMode(8,OUTPUT);
|
6 | pinMode(9,OUTPUT);
|
7 | pinMode(10,OUTPUT);
|
8 | pinMode(11,OUTPUT);
|
9 | }
|
10 |
|
11 | void loop()
|
12 | {
|
13 | digitalWrite(8,HIGH);
|
14 | digitalWrite(9,LOW);
|
15 | digitalWrite(10,LOW);
|
16 | digitalWrite(11,LOW);
|
17 | delay(d);
|
18 |
|
19 | digitalWrite(8,LOW);
|
20 | digitalWrite(9,LOW);
|
21 | digitalWrite(10,HIGH);
|
22 | digitalWrite(11,LOW);
|
23 | delay(d);
|
24 |
|
25 | digitalWrite(8,LOW);
|
26 | digitalWrite(9,HIGH);
|
27 | digitalWrite(10,LOW);
|
28 | digitalWrite(11,LOW);
|
29 | delay(d);
|
30 |
|
31 | digitalWrite(8,LOW);
|
32 | digitalWrite(9,LOW);
|
33 | digitalWrite(10,LOW);
|
34 | digitalWrite(11,HIGH);
|
35 | delay(d);
|
Was ist so falsch, dass es überhaupt nicht geht?