This is an old revision of the document!
Vajalikud teadmised: [HW] Mootorite moodul, [AVR] Digitaalsed sisendid-väljundid, [LIB] Mootorid
Samm-mootoreid kasutatakse laialdaselt täpsust nõudvates rakendustes. Erinevalt alalisvoolumootorist puuduvad samm-mootoris harjad ja kommutaator - selleks on seal mitu eraldiseisvat mähist, mida kommuteeritakse välise elektroonikaga (ajuriga). Rootori pööramine toimub mähiseid sammhaaval kommuteerides, ilma tagasisideta. Siit avaldub ka üks samm-mootorite puudus - mehhaanilise ülekoormuse korral, kui rootor ei pöörle, lähevad sammud sassi ja liikumine muutub ebatäpseks. Mähiste järgi eristatakse kahte liiki samm-mootoreid: unipolaarsed- ja bipolaarsed samm-mootorid. Ehituse järgi jaotatakse neid veel kolmeks:
Muutuva magnetilise takistusega samm-mootorites on hambulised mähised ja hambuline rauast rootor. Suurim tõmbejõud tekib mõlema poole hammaste kattumisel. Püsimagnetiga samm-mootorites on, nagu nimigi ütleb, püsimagnet, mis orienteerub vastavalt mähise polaarsusele. Hübriidides on kasutusel mõlemad tehnoloogiad.
Sõltuvalt samm-mootori mudelist läheb mootori võlli ühe täispöörde (360 kraadi) tegemiseks vaja sadu kommuteerimissamme. Stabiilse ja sujuva liikumise tagamiseks kasutatakse sobivat juhtelektroonikat, mis juhib mootorit vastavalt selle parameetritele (rootori inerts, pöördemoment, resonants jne.). Lisaks võib juhtelektroonikas rakendada erinevaid kommuteerimise meetodeid. Järjest ühe mähise kaupa kommuteerimist nimetatakse täissammuks, kuid vaheldumisi ühe ja kahe mähise kommuteerimist nimetatakse poolsammuks. Kasutatakse ka sinusoidaalset mikrosammu, mis annab eriti täpse ja sujuva juhtimise.
Unipolaarne samm-mootor
Unipolaarne samm-mootor on viie või kuue juhtmega. Vastavalt ajami skeemile käivitatakse korraga ainult üks neljandik mähistest. Vcc liinid on tavaliselt ühendatud mootori positiivse toitepingega. Mähiste otsad 1a, 1b, 2a, ja 2b ühendatakse kommuteerimisel läbi transistoride ainult maaga, mistõttu nende juhtelektroonika on suhteliselt lihtne.
Bipolaarne samm-mootor
Bipolaarne samm-mootor erineb unipolaarsest samm-mootorist selle poolest, et mähiste polaarsust muudetakse kommutatsiooni ajal. Korraga aktiveeritakse pooled mähised, mis tagab võrreldes unipolaarse samm-mootoritega suurema efektiivsuse. Bipolaarsetel samm-mootoritel on neli juhet, mis ühendatakse kõik eraldi poolsillaga. Kommuteerimisel rakendavad poolsillad mähiste otstele kas positiivset või negatiivset pinget. Unipolaarseid samm-mootoreid saab käivitada ka bipolaarse ajuri abil: selleks tuleb ühendada vaid mähiste liinid 1a, 1b, 2a ja 2b (Vcc jääb ühendamata).
Mõlemat liiki mähisega samm-mootori juhtimiseks vajalikku kommutatsiooni täissammu ja poolsammu režiimis kujutab järgnev tabel. Kuna unipolaarsete samm-mootorite ajurite puhul toimub vaid transistoride avamine, siis nende samme on kujutatud loogiliste arvudega 0 ja 1. Bipolaarse samm-mootori juhtimine võib vajada rohkem signaale, ja selle samme on kujutatud ajuri väljundite polaarsusega.
| Unipolaarne | Bipolaarne | |||||||
|---|---|---|---|---|---|---|---|---|
| Samm | 1A | 2A | 1B | 2B | 1A | 2A | 1B | 2B |
| Täissamm | ||||||||
| 1 | 1 | 0 | 0 | 0 | + | - | - | - |
| 2 | 0 | 1 | 0 | 0 | - | + | - | - |
| 3 | 0 | 0 | 1 | 0 | - | - | + | - |
| 4 | 0 | 0 | 0 | 1 | - | - | - | + |
| Poolsamm | ||||||||
| 1 | 1 | 0 | 0 | 0 | + | - | - | - |
| 2 | 1 | 1 | 0 | 0 | + | + | - | - |
| 3 | 0 | 1 | 0 | 0 | - | + | - | - |
| 4 | 0 | 1 | 1 | 0 | - | + | + | - |
| 5 | 0 | 0 | 1 | 0 | - | - | + | - |
| 6 | 0 | 0 | 1 | 1 | - | - | + | + |
| 7 | 0 | 0 | 0 | 1 | - | - | - | + |
| 8 | 1 | 0 | 0 | 1 | + | - | - | + |
Harjutuse eesmärk on tööle panna bipolaarne samm-mootor, mille asemel saab eespool nimetatud meetodil kasutada ka unipolaarset samm-mootorit. Mootorite mooduli plaadil on olemas kaks ajurit L293D, mida tuleb mikrokontrollerist nelja sisendviiguga juhtida. Iga viik tähistab ühe mähise otsa polaarsust. Mähiseotsa pinge on positiivne, kui viik on kõrge, ja negatiivne, kui viik on madal. Otstele 1A, 1B, 2A ja 2B vastavad mikrokontrolleri viigud on PB0, PB1, PB2 ja PB3.
Bipolaarse samm-mootori juhtimiseks on Kodulabori teegis olemas funktsioon bipolar_init, mis seadistab viigud väljundiks ja funktsioon bipolar_halfstep, mis teostab pöörlemist määratud arvu poolsammude võrra. Kommuteerimine toimub poolsammude tabeli järgi, mille tekitamiseks kasutatakse keerukamaid bitioperatsioone.
// // Bipolaarse samm-mootori juhtimise ettevalmistamine // void bipolar_init(void) { DDRB |= 0x0F; PORTB &= 0xF0; } // // Bipolaarse samm-mootori liigutamine poolsammudega // void bipolar_halfstep(signed char dir, unsigned short num_steps, unsigned char speed) { unsigned short i; unsigned char pattern, state1 = 0, state2 = 1; // Suuna kindlustamine +- 1 dir = ((dir < 0) ? -1 : +1); // Poolsammude teostamine for (i = 0; i < num_steps; i++) { state1 += dir; state2 += dir; // Mustri loomine pattern = (1 << ((state1 % 8) >> 1)) | (1 << ((state2 % 8) >> 1)); // Väljundi määramine PORTB = (PORTB & 0xF0) | (pattern & 0x0F); // Pausi tegemine sammu teostamise ootamiseks sw_delay_ms(speed); } // Mootori peatamine PORTB &= 0xF0; }
Funktsioonide kasutamist demonstreerib näiteprogramm, mis pöörab mootorit vaheldumisi ühele ja teisele poole 200 poolsammu. Mootori pöörlemise kiiruse määrab sammude vahel tehtava pausi pikkus. Kui paus liiga väikeseks seada, ei jõua mootor rootori intertsi tõttu pööret teostada ja võll ei liigu.
// // Kodulabori mootorite mooduli bipolaarse // samm-mootori testprogramm // #include <homelab/module/motors.h> // // Põhiprogramm // int main(void) { // Mootori seadistamine bipolar_init(); // Lõputu tsükkel while (true) { // Pööramine ühele poole 200 poolsammu kiirusega 30 ms/samm bipolar_halfstep(+1, 200, 30); // Pööramine teisele poole 200 poolsammu kiirusega 30 ms/samm bipolar_halfstep(-1, 200, 30); } }