Satura rādītājs:

Vadiet pakāpju motoru ar AVR mikroprocesoru: 8 soļi
Vadiet pakāpju motoru ar AVR mikroprocesoru: 8 soļi

Video: Vadiet pakāpju motoru ar AVR mikroprocesoru: 8 soļi

Video: Vadiet pakāpju motoru ar AVR mikroprocesoru: 8 soļi
Video: Octopus Max EZ v1.0 - EZ2208 With Controller fan 2024, Jūlijs
Anonim
Vadiet pakāpju motoru ar AVR mikroprocesoru
Vadiet pakāpju motoru ar AVR mikroprocesoru

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

Iepazīstiet soļus
Iepazīstiet soļus
Iepazīstiet soļus
Iepazīstiet soļus

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

Atrodiet kopīgu pamatu
Atrodiet kopīgu pamatu
Atrodiet kopīgu pamatu
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

Izrēķiniet soļu secību
Izrēķiniet 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

Motora ņemšana testa braucienam
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

Pievienojiet motora draiveri
Pievienojiet motora draiveri
Pievienojiet motora draiveri
Pievienojiet motora draiveri
Pievienojiet motora draiveri
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: