- Tarvittavat materiaalit
- Askelmoottori (28BYJ-48)
- ULN2003-moottorin ohjaimen IC
- Piirikaavio ja liitännät
- Pyörivä askelmoottori STM32F103C8: lla
- STM32-OHJELMOINTI askelmoottorille
Askelmoottori on harjaton tasavirtamoottori, jota voidaan pyörittää pienissä kulmissa. Näitä kulmia kutsutaan vaiheiksi. Yleensä askelmoottori käyttää 200 askelta 360 asteen pyörimisen loppuunsaattamiseen, mikä tarkoittaa, että se pyörii 1,8 astetta per askel. Askelmoottoria käytetään monissa laitteissa, jotka tarvitsevat tarkkaa pyörimisliikettä, kuten robotit, antennit, kiintolevyt jne. Voimme kääntää askelmoottoria mihin tahansa tiettyyn kulmaan antamalla sille asianmukaiset ohjeet. Saatavana on pääasiassa kahden tyyppisiä askelmoottoreita, Unipolar ja Bipolar. Unipolaria on helpompi käyttää, hallita ja myös helpompi saada. Tässä opetusohjelmassa yhdistämme askelmoottorin STM32F103C8 (sininen pilleri) -levyyn.
Tarvittavat materiaalit
- STM32F103C8 (sininen pilleri)
- Askelmoottori (28BYJ-48)
- ULN2003 IC
- Potentiometri 10k
- Leipälauta
- Hyppääjän johdot
Askelmoottori (28BYJ-48)
28BYJ-48 on Unipolar Stepper -moottori, joka vaatii 5 V: n virtalähteen. Moottorissa on 4-kelainen unipolaarinen järjestely ja kutakin kelaa on mitoitettu + 5 V: lle, joten sitä on suhteellisen helppo hallita millä tahansa mikrokontrollerilla, kuten Arduino, Raspberry Pi ja STM32, mutta tarvitsemme moottorikäyttöisen IC: n, kuten ULN2003, sen ajamiseksi, koska askelmoottorit kuluttaa suurta virtaa ja se voi vahingoittaa mikro-ohjaimia.
Toinen tärkeä huomioitava tieto on juoksukulma: 5.625 ° / 64. Tämä tarkoittaa, että moottori, kun se toimii 8-vaiheisessa järjestyksessä, liikkuu 5,625 astetta kussakin vaiheessa ja se vie 64 vaihetta (5,625 * 64 = 360) yhden täyden kierroksen suorittamiseksi. Muut tekniset tiedot ovat alla olevassa tietolomakkeessa:
Tarkista myös liitäntä askelmoottoriin muiden mikrokontrollerien kanssa:
- Yhdistetty askelmoottori Arduino Unon kanssa
- Askelmoottorin ohjaus Raspberry Pi: llä
- Askelmoottori liitetään 8051-mikrokontrolleriin
- Liitäntäaskelmamoottori PIC-mikrokontrollerilla
Askelmoottoria voidaan ohjata myös ilman mikro-ohjainta, katso tämä askelmoottorin ohjainpiiri.
ULN2003-moottorin ohjaimen IC
Sitä käytetään moottorin käyttämiseen mikro-ohjaimelta vastaanotettujen pulssien mukaan. Alla on ULN2003: n kuvakaavio:
Nastat (IN1 - IN7) ovat tuloliittimiä ja (OUT 1 - OUT 7) ovat vastaavia lähtönastoja. COM annetaan lähtölaitteille vaadittava positiivinen lähdejännite. Muut askelmoottorin liitännät on annettu alla olevassa piirikaavio-osassa.
Piirikaavio ja liitännät
Alla on yllä olevan piirikaavion liitäntöjen selitys.
STM32F103C8 (sininen pilleri)
Kuten voimme nähdä alla olevasta kaaviosta, PWM-nastat on merkitty aaltomuodossa (~), on 15 tällaista nastaa, joita voidaan käyttää pulssilähtöön askelmoottoriin. Tarvitsemme vain neljä nastaa, käytämme (PA0 - PA3).
STM32F103C8 ULN2003-moottorin ohjaimen IC: llä
Nastoja (PA0 - PA3) pidetään lähtönastoina, jotka on kytketty ULN2003 IC: n tuloliittimiin (IN1-IN4).
STM32F103C8 PINNAT |
ULN2003 IC: n PINNAT |
PA0 |
KOHDASSA 1 |
PA1 |
IN2 |
PA2 |
IN3 |
PA3 |
IN4 |
5 V |
KOM |
GND |
GND |
ULN2003 IC askelmoottorilla (28BYJ-48)
ULN2003 IC: n ulostulotapit (OUT1-OUT4) on kytketty askelmoottorin nastoihin (oranssi, keltainen, vaaleanpunainen ja sininen).
ULN2003 IC: n PINNAT |
VAIHEELLISEN MOOTTORIN PINNAT |
OUT1 |
ORANSSI |
OUT2 |
KELTAINEN |
OUT3 |
VAALEANPUNAINEN |
OUT4 |
SININEN |
KOM |
PUNAINEN |
STM32F103C8 potentiometrillä
Potentiometriä käytetään askelmoottorin nopeuden asettamiseen.
POTENTIOMETRI |
STM32F103C8 |
VASEN (INPUT) |
3.3 |
KESKUS (LÄHTÖ) |
PA4 |
OIKEA (GND) |
GND |
Pyörivä askelmoottori STM32F103C8: lla
Alla on muutama vaihe askelmoottorin käyttämiseksi:
- Aseta askelmoottorin nopeus vaihtelemalla potentiometriä.
- Anna sitten kiertovaiheet manuaalisesti joko myötäpäivään (+ arvot) tai vastapäivään (-arvot) ARDUINO IDE: ssä (Työkalut-> Sarjamonitori) tai CTRL + VAIHTO + M sisältävän SARJAMONITORIN kautta.
- Sarjamonitorissa annetun tuloarvon mukaan askelmoottorissa tapahtuu tiettyjä pyörimisvaiheita.
Esimerkiksi
SARJAMITTARISSA ANNETTU ARVO |
KIERTO |
2048 |
(360) CLK WISE |
1024 |
(180) CLK WISE |
512 |
(90) CLK WISE |
-2048 |
(-360) VASTUU CLK |
-1024 |
(-180) ANT CLK WISE |
-512 |
(-90) CLK-VASTUU |
STM32-OHJELMOINTI askelmoottorille
Kuten edellinen opetusohjelma, ohjelmoimme STM32F103C8: n Arduino IDE: llä USB-portin kautta ilman FTDI-ohjelmoijaa. Jos haluat oppia STM32: n ohjelmoinnista Arduino IDE: llä, seuraa linkkiä. Voimme jatkaa sen ohjelmointia kuin Arduino. Täydellinen koodi annetaan projektin lopussa.
Ensin meidän on sisällytettävä stepper-kirjastotiedostot #include
#sisältää
Sitten määritämme ei. vaiheita loppuun kiertämisen aikana, tässä käytämme 32, koska käytämme Full-Step (4-vaihe-sekvenssi) niin (360/32 = 11,25 astetta). Joten yksi askel, akseli liikkuu 11,25 astetta, joka on juoksukulma. Neljän vaiheen jaksossa tarvitaan 4 vaihetta yhdelle täydelle pyörimiselle.
#define VAIHEET 32
Voimme käyttää myös puolivaiheista tilaa, jossa on 8 askeljakson (360/64 = 5,625) askelkulma.
Vaiheet kierrosta kohden = 360 / VAIHEKULMA
Kun asetamme nopeutta, meidän on otettava analoginen arvo potentiometriin liitetystä PA4: stä. Joten meidän on ilmoitettava tappi siitä
const int nopeus = PA4
Sitten olemme muuttaneet analogisen arvon digitaaliseksi tallentamalla nämä arvot kokonaislukutyyppiseen muuttujaan, minkä jälkeen meidän on kartoitettava ADC-arvot nopeuden asettamiseksi, jotta käytämme alla olevaa lausetta. Lisätietoja ADC: n käytöstä STM32: n kanssa on täällä.
int adc = analogRead (nopeus); int tulos = kartta (adc , 0, 4096, 1, 1023);
Nopeuden asettamiseksi käytämme stepper.setSpeed (tulos); Nopeusalueemme on (1-1023).
Meidän on luotava esimerkki kuten alla, jotta voidaan asettaa moottoriin liitetyt nastat. Ole varovainen näissä vaiheissa, sillä suurin osa heistä tekee virheen tässä kuviossa. Ne antavat väärän kuvion ja sen vuoksi kelat eivät voi virrata.
Askelmoottori (STEPS, PA0, PA2, PA1, PA3);
Alla olevaa lausetta käytetään vaiheiden arvon saamiseen sarjavalvojalta. Tarvitaan esimerkiksi 2048 arvoa yhdelle täydelle pyörinnälle (32 * 64 = 2048), joka on 64 on välityssuhde ja 32 on puolen vaiheen jakso yhdelle kierrokselle.
kiertää = Serial.parseInt ();
Alla olevaa koodia käytetään ilmentymän kutsumiseen ja moottorin ajamiseen. Jos kiertoarvo on 1, se kutsuu toiminnon vaiheittaiseksi kerran ja yksi siirto suoritetaan.
stepper.step (kiertää);
Täydellinen koodi esittelyvideolla on annettu alla. Tarkista myös kaikki askelmoottoreihin liittyvät projektit täältä, liitännöillä useiden muiden mikro-ohjainten kanssa