- Vereiste materialen
- Stappenmotor (28BYJ-48)
- ULN2003 Motorbesturing IC
- Schakelschema en aansluitingen
- Roterende stappenmotor met STM32F103C8
- PROGRAMMERING STM32 voor stappenmotor
Stappenmotor is een borstelloze DC-motor, die in kleine hoeken kan worden gedraaid, deze hoeken worden stappen genoemd. Over het algemeen gebruikt de stappenmotor 200 stappen om 360 graden rotatie te voltooien, wat betekent dat hij 1,8 graden per stap roteert. Stappenmotor wordt gebruikt in veel apparaten die een nauwkeurige rotatiebeweging nodig hebben, zoals robots, antennes, harde schijven enz. We kunnen de stappenmotor in een bepaalde hoek draaien door hem de juiste instructies te geven. Er zijn hoofdzakelijk twee soorten stappenmotoren beschikbaar, unipolair en bipolair. Unipolair is gemakkelijker te bedienen, te besturen en ook gemakkelijker te krijgen. Hier in deze tutorial koppelen we de stappenmotor aan het STM32F103C8-bord (blauwe pil).
Vereiste materialen
- STM32F103C8 (Blauwe pil)
- Stappenmotor (28BYJ-48)
- ULN2003 IC
- Potentiometer 10k
- Breadboard
- Doorverbindingsdraden
Stappenmotor (28BYJ-48)
28BYJ-48 is een unipolaire stappenmotor die 5V-voeding vereist. De motor heeft een unipolaire opstelling met 4 spoelen en elke spoel is geschikt voor + 5V, dus het is relatief eenvoudig te besturen met microcontrollers zoals Arduino, Raspberry Pi ook STM32. Maar we hebben een Motor Drive IC zoals ULN2003 nodig om hem aan te drijven, omdat verbruiken hoge stroom en het kan microcontrollers beschadigen.
Een ander belangrijk gegeven om op te merken is de pashoek: 5.625 ° / 64. Dit betekent dat de motor, wanneer hij in een 8-stappenreeks werkt, voor elke stap 5,625 graden beweegt en dat er 64 stappen nodig zijn (5,625 * 64 = 360) om een volledige rotatie te voltooien. Andere specificaties worden gegeven in het onderstaande gegevensblad:
Controleer ook de koppeling met de stappenmotor met andere microcontrollers:
- Stappenmotor koppelen met Arduino Uno
- Stappenmotorbesturing met Raspberry Pi
- Stappenmotor-interface met 8051 Microcontroller
- Interfacestappenmotor met PIC-microcontroller
Stappenmotor kan ook worden bestuurd zonder enige Microcontroller, zie dit Stepper Motor Driver Circuit.
ULN2003 Motorbesturing IC
Het wordt gebruikt om de motor aan te drijven volgens pulsen die worden ontvangen van de microcontroller. Hieronder is het beelddiagram van ULN2003:
Pinnen (IN1 tot IN7) zijn invoerpinnen en (OUT 1 tot OUT 7) zijn overeenkomstige uitvoerpinnen. COM krijgt een positieve bronspanning die nodig is voor uitvoerapparaten. Verdere aansluitingen voor stappenmotor worden hieronder gegeven in het gedeelte over het schakelschema.
Schakelschema en aansluitingen
Hieronder vindt u de uitleg van de aansluitingen voor het bovenstaande schakelschema.
STM32F103C8 (blauwe pil)
Zoals we in het onderstaande diagram kunnen zien, zijn de PWM-pinnen aangegeven in golfformaat (~), er zijn 15 van dergelijke pinnen die kunnen worden gebruikt voor pulsuitvoer naar stappenmotor. We hebben slechts vier pinnen nodig, we gebruiken (PA0 tot PA3).
STM32F103C8 met ULN2003 Motor Driver IC
Pinnen (PA0 tot PA3) worden beschouwd als outputpinnen die zijn verbonden met inputpinnen (IN1-IN4) van de ULN2003 IC.
PINS VAN STM32F103C8 |
SPELDEN VAN ULN2003 IC |
PA0 |
IN 1 |
PA1 |
IN 2 |
PA2 |
IN3 |
PA3 |
IN4 |
5V |
COM |
GND |
GND |
ULN2003 IC met stappenmotor (28BYJ-48)
De outputpinnen (OUT1-OUT4) van ULN2003 IC zijn verbonden met de stappenmotorenpinnen (oranje, geel, roze en blauw).
SPELDEN VAN ULN2003 IC |
SPELDEN VAN STAPPENMOTOR |
UIT1 |
ORANJE |
UIT2 |
GEEL |
UIT3 |
ROZE |
UIT4 |
BLAUW |
COM |
ROOD |
STM32F103C8 met Potentiometer
Een potentiometer wordt gebruikt om de snelheid van de stappenmotor in te stellen.
POTENTIOMETER |
STM32F103C8 |
LINKS (INPUT) |
3.3 |
CENTRUM (UITGANG) |
PA4 |
RECHTS (GND) |
GND |
Roterende stappenmotor met STM32F103C8
Hieronder volgen enkele stappen om de stappenmotor te bedienen:
- Stel de snelheid van de stappenmotor in door de potentiometer te variëren.
- Voer vervolgens handmatig stappen voor rotatie in met de klok mee (+ waarden) of tegen de klok in (-waarden) via SERIAL MONITER aanwezig in ARDUINO IDE (Tools-> Seriële monitor) of CTRL + SHIFT + M.
- Volgens de invoerwaarde die in de seriële monitor wordt gegeven, vinden bepaalde rotatiestappen plaats in de stappenmotor.
Bijvoorbeeld
WAARDE GEGEVEN IN SERIËLE MONITER |
ROTATIE |
2048 |
(360) CLK WISE |
1024 |
(180) CLK WISE |
512 |
(90) CLK WISE |
-2048 |
(-360) ANTI CLK WISE |
-1024 |
(-180) ANTI CLK WISE |
-512 |
(-90) ANTI CLK WISE |
PROGRAMMERING STM32 voor stappenmotor
Net als de vorige tutorial hebben we de STM32F103C8 geprogrammeerd met Arduino IDE via USB-poort zonder FTDI-programmeur te gebruiken. Volg de link voor meer informatie over het programmeren van STM32 met Arduino IDE. We kunnen doorgaan met het programmeren als een Arduino. De volledige code wordt aan het einde van het project gegeven.
Eerst moeten we de stepper-bibliotheekbestanden #include opnemen
# omvatten
Dan definiëren we nee. van stappen die moeten worden voltooid bij rotatie, hier gebruiken we 32 omdat we Full-Step (4-stappenreeks) dus (360/32 = 11,25 graden) gebruiken. Dus voor één stap beweegt de schacht 11,25 graden, dat is de pashoek. In een reeks van 4 stappen zijn 4 stappen vereist voor een volledige rotatie.
#define STAPPEN 32
We kunnen ook de modus Halve stap gebruiken als er een 8-stapsequentie (360/64 = 5,625) staphoek is.
Stappen per omwenteling = 360 / STAPHOEK
Omdat we de snelheid instellen, moeten we de analoge waarde van PA4 nemen die is verbonden met de potentiometer. Dus daarvoor moeten we pin declareren
const int speedm = PA4
Vervolgens hebben we de analoge waarde omgezet in digitaal door die waarden op te slaan in een variabele van het type integer, daarna moeten we de ADC-waarden in kaart brengen voor het instellen van de snelheid, dus we gebruiken de onderstaande verklaring. Lees hier meer over het gebruik van ADC met STM32.
int adc = analogRead (speedm); int resultaat = kaart (adc , 0, 4096, 1, 1023);
Om snelheid in te stellen, gebruiken we stepper.setSpeed (resultaat); We hebben een snelheidsbereik van (1-1023).
We moeten een voorbeeld maken zoals hieronder om de pinnen in te stellen die op de motor zijn aangesloten. Wees voorzichtig bij deze stappen, want de meeste maken hier een fout in dit patroon. Ze geven een verkeerd patroon en daardoor kunnen spoelen niet worden bekrachtigd.
Stepper stepper (STEPS, PA0, PA2, PA1, PA3);
Onderstaande instructie wordt gebruikt om de waarde van stappen van een seriële monitor te krijgen. We hebben bijvoorbeeld 2048 waarden nodig voor één volledige rotatie (32 * 64 = 2048), dat wil zeggen 64 is de overbrengingsverhouding en 32 is een halve stapsequentie voor één rotatie.
rotate = Serial.parseInt ();
De onderstaande code wordt gebruikt om de instantie aan te roepen en de motor te laten draaien . Als de rotatiewaarde 1 is, wordt de functie stepper één keer aangeroepen en wordt één beweging uitgevoerd.
stepper.step (roteren);
De volledige code met demonstratievideo wordt hieronder gegeven. Bekijk hier ook alle projecten met betrekking tot stappenmotoren, met interfacing met verschillende andere microcontrollers