Satura rādītājs:
- 1. solis: iepazīstieties ar Steppers
- 2. darbība. Atrodiet kopīgu pamatu
- 3. solis: noskaidrojiet soļu secību
- 4. solis: Motora ņemšana testa braucienam
- 5. solis: pagrieziet to atpakaļ un uz priekšu
- 6. solis: es nekad nesperu soli, jo es neesmu pussolītis…
- 7. darbība: pievienojiet motora draiveri
- 8. solis: beigas
Video: Vadiet pakāpju motoru ar AVR mikroprocesoru: 8 soļi
2024 Autors: John Day | [email protected]. Pēdējoreiz modificēts: 2024-01-30 10:58
Vai jums apkārt ir daži iztīrīti soļu motori no printeriem/diskdziņiem/utt?
Dažas zondēšanas ar ommetru, kam seko vienkāršs vadītāja kods jūsu mikroprocesorā, un jūs solīsit stilā.
1. solis: iepazīstieties ar Steppers
Būtībā jums būs jāizdomā, kur iet visi mazie vadi.
Pirmais solis ir noskaidrot, vai tas ir vienpolārs vai bipolārs motors. Apskatiet Džonsu vietnē Steppers, lai iegūtu sīkāku priekšstatu, pēc tam Ian Harries vietnē, lai iegūtu vienkāršu metodi, kā noskaidrot nezināmu motoru. Nedaudz palasiet, tad pievienojieties man šī lētā motora aprakstā. (Šobrīd tie tiek pārdoti par 0,99 ASV dolāriem. Tie ir mazi, salīdzinoši viegli, bet tiem nav daudz griezes momenta. Vēl nezinu, kam tas noderēs.)
2. darbība. Atrodiet kopīgu pamatu
Tātad jums ir pieci (vai četri vai seši) vadi. Jūsu motoram būs divas puses, un jūs, iespējams, pat varat pateikt, tikai paskatoties, kurā pusē katrs vads pieder.
Ja skatāties tikai uz četriem vadiem, jums ir paveicies - tas ir bipolārs motors. Viss, kas jums jādara, ir izdomāt, kuri divi vadu pāri iet kopā. Ja jums ir vienpolārs motors vai vairāk nekā 4 vadi, jums būs jāizrauj ommetrs. Jūs meklējat kopējo (zemējuma) vadu katrai pusei. Jūs varat noteikt, kurš ir slīpēts bipolārā motorā, jo tam ir puse pretestības pret abiem poliem nekā poliem. Attēlā ir manas piezīmes no vadu savienošanas ar vadiem un pretestības atzīmēšanas (vai ja tās vispār ir savienotas). Jūs varat redzēt, ka balts ir pamats apakšējam trio b/c tam ir puse no pretestības pret sarkano vai zilo krāsu, kāda tiem ir viens pret otru. (Šis motors ir dīvains un tam nav centrālā pieskāriena augšējai magnēta spolei. Tas ir tā, it kā tas būtu daļēji bipolārs, daļēji vienpolārs. Varbūt jūs varētu to izmantot, lai uztvertu rotāciju sarkanbaltsarkanā spolē, kad melni dzeltena tiek darbināta spole.)
3. solis: noskaidrojiet soļu secību
Es gatavojos vadīt šo motoru kā bipolāru, tāpēc es ignorēju balto zemējuma vadu. Man jāuztraucas tikai par četriem vadiem.
Jūs, iespējams, vēlēsities palaist savu vienpolāro motoru kā bipolāru, jo tas izmanto visu spoli abās fāzēs, nevis pārmaiņus starp katras spoles pusēm. Vairāk spoles = lielāks griezes moments. Izvadiet strāvu pārī (atzīmējot izvēlēto polaritāti) un pēc tam vienlaikus ar otru pāri. Pievienojot otro pāri, skatieties, uz kuru pusi griežas motors. Pierakstiet šo. Tagad mainiet pirmā izvēlētā pāra polaritāti. Pēc tam atkal savienojiet otro pāri ar pretējo polaritāti. Ievērojiet virzienu. No tā jums vajadzētu būt iespējai noskaidrot secību, kādā motors griežas jebkurā virzienā. Manā piemērā abi pagriezās pretēji pulksteņrādītāja virzienam, tāpēc, izkāpjot secību tādā pašā veidā, kā es izvēlējos, tiks aktivizēts motora CCW.
4. solis: Motora ņemšana testa braucienam
Ja vēl neesat sagatavojies mikroprocesoru programmēšanai, jūs varat darīt sliktāk nekā Ghetto Development Kit vai kāds no dažādiem PIC programmētājiem. Pievienojiet vadus tieši pie sava mikroprocesora un sadedziniet to ar šādu kodu:
/* Spēlē ar mazu pakāpju motoru piedziņu. */
/ * Iekļaut aizkaves funkciju */ #define F_CPU 1000000UL #include/ * Pin defs ATTiny2313 *// * secība pulksteņrādītāja virzienā */ #define BLUE _BV (PB0) #define BLACK _BV (PB1) #define RED _BV (PB2) #define DZELTENS _BV (PB3) #define DELAY 200 / * milisekundes starp soļiem * / int main (void) {DDRB = 0xff; / * Iespējot izvadi visās B tapās */ PORTB = 0x00; / * Iestatiet tos visus uz 0v */ while (1) {/ * šeit galvenā cilpa */ PORTB = BLUE; _delay_ms (DELAY); PORTB = MELNA; _delay_ms (DELAY); PORTB = SARKANS; _delay_ms (DELAY); PORTB = DZELTENS; _delay_ms (DELAY); }} Cik vienkāršs ir šis kods? Tiešām vienkārši. Viss, kas jādara, ir dažas jaukas definīcijas, lai es varētu atsaukties uz vadiem pēc krāsas, nevis to pin nosaukumiem, un pēc tam tas tos ieslēdz secīgi ar regulējamu aizkavi starp tiem. Iesācējiem es izvēlējos pus sekundes aizkavi starp soļiem. Rezultātus skatiet īsajā video. Ja jūs patiešām domājat par spēli, saskaitiet soļu skaitu ciklā, lai noskaidrotu motora vienpakāpju leņķisko izšķirtspēju. (Ak, jā. PS. Viegli brauc bez slodzes pie 3,6 V sprieguma. Skatiet akumulatoru video.)
5. solis: pagrieziet to atpakaļ un uz priekšu
Tātad jums ir jāstrādā pulksteņrādītāja virzienā. Kaut kas interesantāks? Neliela koda tīrīšana, un mēs varam to palaist turp un atpakaļ. Es ievietoju secību pulksteņrādītāja virzienā masīvā, lai jūs varētu iziet cauri fāzēm ar vienkāršu cilpu. Tagad jūs varat palaist cilpu uz augšu vai uz leju, lai virzītos pulksteņrādītāja virzienā vai pretēji pulksteņrādītāja virzienam.
int main (void) {const uint8_t delay = 50; const uint8_t pulksteņrādītāja virzienā = {ZILA, MELNA, SARKANA, DZELTENA}; uint8_t i; DDRB = 0xff; / * Iespējot izvadi visās B tapās */ PORTB = 0x00; / * Iestatiet tos visus uz 0v */ kamēr (1) {/ * šeit galvenā cilpa */ par (i = 0; i <= 3; i ++) {/ * iziet krāsas pulksteņrādītāja virzienā */ PORTB = pulksteņrādītāja virzienā ; _delay_ms (kavēšanās); }, lai (i = 3; i> = 0; i-) { / * izietu cauri krāsām ccw * / PORTB = pulksteņrādītāja virzienā ; _delay_ms (kavēšanās); }}} Skatiet satriecošo videoklipu, lai uzzinātu, kā atgriezties.
6. solis: es nekad nesperu soli, jo es neesmu pussolītis…
Jautājumu lirika malā, pa pusei pakāpjot motoru, tas ir vietā. Jūs saņemat lielāku maksimālo strāvu, lielāku momentāno griezes momentu un divreiz lielāku leņķisko izšķirtspēju. Īsumā-pakāpieni: zilas, melnas, sarkanas, dzeltenas vietā jūs vadāt motoru ar zilu, zilu+melnu, melnu, melnu+sarkanu, sarkanu, sarkanu+dzeltenu, dzeltenu, dzeltenu+zilu krāsu. Rezultāts ir tāds, ka pusi laika jūs piesaista abus magnētus vienlaikus. Un laikā, kad abi komplekti ir ieslēgti, motors norāda pusceļā starp abiem, samazinot leņķi starp "soļiem" un padarot motoru vienmērīgāku griešanos. Vai varat pateikt no video? Es neesmu pārliecināts … Tagad tā koda daļa, kas veic pakāpienu, izskatās šādi:
void halfStepping (uint16_t kavēšanās, uint8_t virziens ) {uint8_t i; par (i = 0; i <= 3; i ++) {PORTB = virziens ; / * viena spoles daļa */ _delay_ms (kavēšanās); PORTB | = virziens [i+1]; / * pievienojiet pussolī */ _delay_ms (kavēšanās); }} Pirmā PORTB komanda nosaka vienu polu uz pozitīvu un visu pārējo uz negatīvu. Tad tas gaida. Pēc tam otrā PORTB komanda nosaka otru polu (otrā tinumā) uz pozitīvu, ieslēdzot abus tinumus 1,4x griezes momentam (un 2x straumei). Pilns programmu saraksts ir pievienots zemāk. Tagad ir definēti divi masīvi (pulksteņrādītāja virzienā, pretēji pulksteņrādītāja virzienam), un abos ir pa 5 elementiem, lai HalStepping funkcijā varētu ievadīt i+1.
7. darbība: pievienojiet motora draiveri
Tik tālu, labi.
Vienīgā problēma ir tā, ka šķiet, ka motoram nav tik daudz griezes momenta, kas varētu būt saistīts ar faktu, ka mikroprocesors izvadīs tikai ~ 50 mA uz vienu tapu. Acīmredzamais nākamais solis būtu to savienot ar motora vadītāju, lai tas piegādātu vairāk sulas. Bet tad mazliet aizdomājos: es braucu tikai ar 5v, un tinumu pretestība ir ~ 125 omi. Tas nozīmē, ka motora vienīgais spriegums ir 40 mA uz vienu tapu, un tas būtu labi jādarbina ar (spēcīgu!) AVR mikroshēmu. Tātad, lai iegūtu lielāku spriegumu, darbinot motoru, es to savienoju ar SN754410 H tilta mikroshēmu. Ķēde ir diezgan vienkārša. Katrs AVR kontakts tiek ievadīts ieejā, bet atbilstošās izejas tapas - pie motora. Mikroshēmai loģikas sadaļai ir nepieciešami 5 volti, un motora sadaļā var būt daudz vairāk sprieguma. Nedaudz palīdzēja tā darbināšana ar 11,25 V (trīs 3,6 V baterijas). Manam pirkstam ievērojami lielāks griezes moments, bet tas joprojām nav spēkstacija. Tomēr nav slikti motoram, kas ir mazāks par niķeli. Un tagad ķēde ir kļuvusi par vispārējas nozīmes bipolāru soļu motora vadītāju. Pievienots 29. Es neesmu pārliecināts, vai tā bija rezonējošas frekvences problēma, vai arī tā vienkārši bija pārāk liela strāva tinumiem. Jebkurā gadījumā esiet nedaudz uzmanīgs, ja braucat ar šo mazo motoru ar lielāku spriegumu.
8. solis: beigas
Ko tad es iemācījos? Stepper motora vadīšana ar AVR (un H-tilta mikroshēmu) ir diezgan vienkārša pat “iedomātā” puspakāpju režīmā.
Tomēr vēl neesmu pārliecināts, ko es darīšu ar mazajiem soļu motoriem. Kādi ieteikumi?
Ieteicams:
Vadiet līdzstrāvas motoru ar kodētāja optiskā sensora moduli FC-03: 7 soļi
Vadīt līdzstrāvas motoru ar kodētāja optiskā sensora moduli FC-03: Šajā apmācībā mēs iemācīsimies skaitīt optiskā kodētāja pārtraukumus, izmantojot līdzstrāvas motoru, OLED displeju un Visuino. Noskatieties video
Kā izmantot 28BYJ-48 pakāpju motoru ar 3 spiedpogām: 5 soļi
Kā lietot soļu motoru 28BYJ-48 ar 3 spiedpogām: Vai vēlaties kontrolēt savu pakāpju motoru, izmantojot spiedpogas? To var izdarīt pulksteņrādītāja virzienā, pretēji pulksteņrādītāja virzienam un pēc tam apturēšanas funkcijai? Tad šis video ir domāts jums
Pakāpju motors Kontrolēts pakāpju motors bez mikrokontrollera !: 6 soļi
Stepper Motor kontrolēts pakāpju motors bez mikrokontrollera! Šim projektam nav nepieciešamas sarežģītas shēmas vai mikrokontrolleris. Tāpēc bez papildu piepūles sāksim darbu
Atkārtoti izmantojiet vecā klēpjdatora skārienpaliktni, lai kontrolētu pakāpju motoru: 11 soļi (ar attēliem)
Atkārtoti izmantojiet vecā klēpjdatora skārienpaliktni, lai kontrolētu pakāpju motoru: Es šo projektu izveidoju pirms dažiem mēnešiem. Dažas dienas atpakaļ vietnē Reddit es ievietoju projekta video vietnē r/Arduino. Redzot, ka cilvēki interesējas par projektu, es nolēmu padarīt šo Instructable, kur esmu veicis dažas izmaiņas Arduino kodā un
Pakāpju motors Kontrolēts pakāpju motors - Soļu motors kā rotācijas kodētājs: 11 soļi (ar attēliem)
Pakāpju motors Kontrolēts pakāpju motors | Pakāpju motors Kā rotācijas kodētājs: Vai pāris stepper motori atrodas apkārt un vēlaties kaut ko darīt? Šajā instrukcijā izmantosim pakāpju motoru kā rotējošu kodētāju, lai kontrolētu cita soļa motora stāvokli, izmantojot Arduino mikrokontrolleru. Tāpēc bez liekas piepūles pieņemsim