Stepper-0: unipolaire stappenmotor
Doel: kennismaking met unipolaire stappenmotoren en de besturing daarvan. | Nodig:
|
Schakeling Verbind de stappenmotor met de ULN 2003. Verbind de Arduino uitgangen met de ingangen van de ULN 2003:
Verbind de Arduino power met ULN 2003:
| |
Een stappenmotor heeft meerdere spoelen (coils) die je apart kunt bekrachtigen. Bij een unipolaire stappenmotor kun je een spoel alleen bekrachtigen, of niet. De richting van de stroom kun je niet instellen. Elke bekrachtiging "duwt" de rotor van de motor een stapje verder. Door de spoelen in de juiste volgorde te bekrachtigen draait de rotor rond. | Bij een bipolaire stappenmotor kun je de richting van de stroom door de spoelen ook instellen. Hierdoor krijg je een combinatie van duw- en trekkrachten; dit levert in het algemeen een krachtiger motor op. Stappenmotoren worden o.a. gebruikt in 3D-printers, robots, numeriek bestuurde machines; een voordeel is dat je deze heel precies kunt besturen, en dat ze tegelijk heel krachtig kunnen zijn. |
Programma De pin-definitie in het programma moet overeenkomen met de aangesloten pinnen. Dit zijn de opeenvolgende spoelen (coils) van de stappenmotor. De snelheid van de stappenmotor regelen we door de tijd tussen de stappen in te stellen; deze is aan een minimum gebonden. Een "complete" stap bestaat uit 4 opeenvolgende fasen, waarbij in elke fase de volgende spoel bekrachtigd wordt. | #define IN1 8 #define IN2 9 #define IN3 10 #define IN4 11 int stepTime = 10; void setup() { Serial.begin(9600); pinMode(IN1, OUTPUT); pinMode(IN2, OUTPUT); pinMode(IN3, OUTPUT); pinMode(IN4, OUTPUT); delay(2000); } void loop() { digitalWrite(IN1, LOW); digitalWrite(IN2, LOW); digitalWrite(IN3, LOW); digitalWrite(IN4, HIGH); delay(stepTime); digitalWrite(IN1, LOW); digitalWrite(IN2, LOW); digitalWrite(IN3, HIGH); digitalWrite(IN4, LOW); delay(stepTime); digitalWrite(IN1, LOW); digitalWrite(IN2, HIGH); digitalWrite(IN3, LOW); digitalWrite(IN4, LOW); delay(stepTime); digitalWrite(IN1, HIGH); digitalWrite(IN2, LOW); digitalWrite(IN3, LOW); digitalWrite(IN4, LOW); delay(stepTime); } |
Opdracht 1 Probeer de motor iets sneller te laten draaien. (Een werkbare minimale vertraging tussen de stappen is 3 msec.) | |
Opdracht 2 Maak een variant van dit programma waarin de motor de andere kant opdraait. In welke volgorde moeten de spoelen nu bekrachtigd worden? | |
Opdracht 3 In het bovenstaande programma gebruiken we 4 verschillende opeenvolgende fasen. Je kunt ook met 8 verschillende fasen werken: daarin gebruik je tussen-fasen waarin beide spoelen bekrachtigd worden, van de vorige en van de volgende volledige fase. Probeer een programma te maken met 8 verschillende fasen. | vb: HLLL, HHLL, LHLL, LHHL, LLHL, enz. |
Opdracht 4 In de bovenstaande schakeling gebruiken we de voeding van de Arduino. Een stappenmotor gebruikt al snel meer stroom dan deze voeding aan kan, zeker als deze motor belast wordt. Verander de schakeling zo dat je de motor met een extra voeding bekrachtigt. Tip: je moet de GND van de Arduino en van de extra voeding aan elkaar verbinden. Dat gaat wat lastig met 1 pin op het ULN2003-bordje. Maar daarom deze GND-verbinding op het breadboard, en maak een verbinding tussen de breadboard GND en de GND (-) op het ULN2003-bordje. |
Stepper-0 --