Sadržaj:

Vozite koračni motor s mikroprocesorom AVR: 8 koraka
Vozite koračni motor s mikroprocesorom AVR: 8 koraka

Video: Vozite koračni motor s mikroprocesorom AVR: 8 koraka

Video: Vozite koračni motor s mikroprocesorom AVR: 8 koraka
Video: Sterowanie silnika krokowego cz. 13/14 sprawdzanie kontrastu potencjometrem 2024, Novembar
Anonim
Vozite koračni motor s AVR mikroprocesorom
Vozite koračni motor s AVR mikroprocesorom

Imate li negdje okolo pospremljenih koračnih motora sa pisača/diskovnih pogona/itd?

Nekoliko sondiranja ohmetrom, nakon čega slijedi jednostavan kod upravljačkog programa na vašem mikroprocesoru i bit ćete u korak sa stilom.

Korak 1: Upoznajte Steppere

Upoznajte stepere
Upoznajte stepere
Upoznajte stepere
Upoznajte stepere

U osnovi, morat ćete otkriti kamo idu sve male žice.

Prvi korak je utvrditi radi li se o unipolarnom ili bipolarnom motoru. Za dublju pozadinu pogledajte Jones on Steppers, a zatim i web lokaciju Iana Harriesa za jednostavnu metodu otkrivanja nepoznatog motora. Pročitajte malo, a zatim mi se pridružite u obilasku ovog motora koji sam jeftino nabavio. (Trenutno su u prodaji po 0,99 USD. Mali su, relativno lagani, ali nemaju veliki okretni moment. Ne znam za šta će to još biti dobro.)

Korak 2: Pronađite zajedničku osnovu

Pronađite zajedničko tlo
Pronađite zajedničko tlo
Pronađite zajedničko tlo
Pronađite zajedničko tlo

Dakle, imate pet (ili četiri ili šest) žica. Vaš motor će imati dvije polovine, a vjerovatno možete čak i zaključiti gledajući kojoj strani pripada svaka žica.

Ako gledate samo četiri žice, imate sreće - to je bipolarni motor. Sve što trebate učiniti je shvatiti koja dva para žica idu zajedno. Ako imate unipolarni motor ili više od 4 žice, morat ćete prekinuti svoj ohmetar. Ono što tražite je zajednička (uzemljena) žica za svaku polovicu. Možete znati koje je tlo u bipolarnom motoru jer ima polovicu otpora prema bilo kojem od polova nego što polovi imaju preko sebe. Na slici su moje bilješke o spajanju žica na žice i bilježenju otpora (ili ako su uopće povezane). Možete vidjeti da je bijela osnova za donji trio b/c i da ima upola manji otpor prema crvenoj ili plavoj boji koji imaju jedno prema drugom. (Ovaj motor je čudan i nema središnji dodir na gornjoj zavojnici magneta. Kao da je polubipolarni, polu unipolarni. Možda biste ovo mogli koristiti da osjetite rotaciju u zavojnici crveno-bijelo-plavo kada je crno-žuta zavojnica se pokreće.)

Korak 3: Pronađite redoslijed koraka

Shvatite redoslijed koraka
Shvatite redoslijed koraka

Htio sam voziti ovaj motor kao bipolarni, pa ignoriram bijelu uzemljenu žicu. Moram brinuti samo o četiri žice.

Možda biste ipak htjeli pokrenuti svoj unipolarni motor kao bipolarni, jer koristi cijelu zavojnicu u obje faze, umjesto da izmjenjuje dvije polovice svake zavojnice. Više zavojnice = veći obrtni moment. Provedite struju kroz par (uzimajući u obzir polaritet koji ste odabrali), a zatim prođite kroz drugi par istovremeno. Kada spojite drugi par, pazite u kojem smjeru se motor okreće. Zapiši ovo. Sada promijenite polaritet na prvom paru koji ste odabrali. Zatim ponovno spojite drugi par s obrnutim polaritetom. Obratite pažnju na smer. Iz ovoga biste trebali moći shvatiti redoslijed okretanja motora u bilo kojem smjeru. U mom primjeru obojica su se okrenula u smjeru suprotnom od kazaljke na satu, pa će korakom kroz sekvencu na isti način koji sam odabrao koračati motor CCW.

Korak 4: Uzimanje motora na probnu vožnju

Uzimanje motora na probnu vožnju
Uzimanje motora na probnu vožnju

Ako već niste previše obučeni za programiranje mikroprocesora, mogli biste proći gore od Ghetto Development Kit -a ili bilo kojeg od različitih programera PIC -a. Priključite žice direktno na mikroprocesor i spalite ih sa sljedećim kodom:

/* Igranje sa pokretanjem malih koračnih motora. */

/ * Uključuje funkciju kašnjenja */ #define F_CPU 1000000UL #include/ * Def defs za ATTiny2313 *// * Redoslijed kazaljke na satu */ #define BLUE _BV (PB0) #define BLACK _BV (PB1) #define RED _BV (PB2) #define ŽUTI _BV (PB3) #define ODLOGA 200 / * milisekundi između koraka * / int main (void) {DDRB = 0xff; / * Omogući izlaz na svim B pinovima */ PORTB = 0x00; / * Postavite ih sve na 0v */ while (1) {/ * glavna petlja ovde */ PORTB = PLAVA; _delay_ms (DELAY); PORTB = CRNO; _delay_ms (DELAY); PORTB = CRVENO; _delay_ms (DELAY); PORTB = ŽUTI; _delay_ms (DELAY); }} Koliko je jednostavan taj kod? Zaista jednostavno. Sve što on čini su neke lijepe definicije kako bih se mogao pozivati na žice prema boji, a ne prema njihovim imenima, a zatim ih uključuje u nizu s podesivim kašnjenjem između. Za početak, odabrao sam pola sekunde kašnjenja između koraka. Za rezultate pogledajte kratki video zapis. Ako ste zaista u igri, izbrojite broj koraka po ciklusu da biste utvrdili kutnu rezoluciju motora s jednim korakom. (O da. PS. Lako vozi bez opterećenja na 3,6 V. Pogledajte bateriju u videu.)

Korak 5: Zamahnite naprijed -nazad

Znači, radi vam u smjeru kazaljke na satu. Ima li šta zanimljivije? Malo čišćenje koda i možemo ga pokrenuti naprijed-nazad. Stavio sam niz u smjeru kazaljke na satu u niz tako da možete koračati kroz faze jednostavnom for petljom. Sada možete pokrenuti petlju gore ili dolje za kretanje u smjeru kazaljke na satu ili suprotno.

int main (void) {const uint8_t kašnjenje = 50; const uint8_t u smjeru kazaljke na satu = {PLAVA, CRNA, CRVENA, ŽUTA}; uint8_t i; DDRB = 0xff; / * Omogući izlaz na svim B pinovima */ PORTB = 0x00; / * Postavite ih sve na 0v */ dok (1) {/ * glavna petlja ovdje */ for (i = 0; i <= 3; i ++) {/ * koraka kroz boje u smjeru kazaljke na satu */ PORTB = u smjeru kazaljke na satu ; _delay_ms (kašnjenje); } za (i = 3; i> = 0; i-) { / * korak kroz boje ccw * / PORTB = u smjeru kazaljke na satu ; _delay_ms (kašnjenje); }}} Za napred i nazad pogledajte video zapis o utrkama.

Korak 6: Nikad ne pravim pola koraka, jer nisam polukorak …

Ostavite tekstove na stranu, pola koraka s motorom tu je. Dobivate veću vršnu struju, trenutniji okretni moment i dvostruku kutnu rezoluciju. Ukratko u pola koraka: Umjesto plave, crne, crvene, žute, motor vozite plavom, plavom+crnom, crnom, crnom+crvenom, crvenom, crvenom+žutom, žutom, žutom+plavom. Zaključak je da polovinu vremena aktivirate oba magneta odjednom. A za vrijeme dok su oba seta uključena, motor pokazuje na pola puta između dva, smanjujući kut između "koraka" i čineći da se motor lakše okreće. Možete li reći iz videa? Nisam siguran … Sada dio koda koji radi polustepeno izgleda ovako:

void halfStepping (uint16_t kašnjenje, uint8_t pravac ) {uint8_t i; za (i = 0; i <= 3; i ++) {PORTB = pravac ; / * dio sa jednom zavojnicom */ _kašnjenje_ms (kašnjenje); PORTB | = pravac [i+1]; / * dodaj u pola koraka */ _delay_ms (kašnjenje); }} Prva PORTB naredba postavlja jedan pol na pozitivan, a svi ostali na negativan. Onda čeka. Zatim druga PORTB naredba postavlja drugi pol (na drugom namotu) na pozitivan, uključivajući oba namota za 1,4x obrtni moment (i 2x struju). Potpuni popis programa nalazi se u nastavku. Sada su definirana dva niza (u smjeru kazaljke na satu, suprotno od kazaljke na satu) i oba imaju po 5 elemenata koji omogućavaju unos i+1 u funkciji halfStepping.

Korak 7: Dodajte upravljački program motora

Dodajte upravljački program motora
Dodajte upravljački program motora
Dodajte upravljački program motora
Dodajte upravljački program motora
Dodajte upravljački program motora
Dodajte upravljački program motora

Zasada je dobro.

Jedini problem je što motor izgleda nema toliki zakretni moment, što bi moglo biti posljedica činjenice da će mikroprocesor gasiti samo ~ 50mA po pinu. Očigledan sljedeći korak bio bi spojiti ga s vozačem motora kako bi mu isporučio više soka. Ali onda malo razmišljam: vozim ga samo s 5v, a otpor namota zavojnice je ~ 125 ohma. Što znači da motor troši samo 40mA po pinu, a trebao bi ga sasvim dobro pokretati (jaki!) AVR čip. Kako bih dobio veći napon koji pokreće motor, spojio sam ga na čip SN754410 H-bridge. Krug je prilično jednostavan. Svaki pin iz AVR -a ide na ulaz, a odgovarajući izlazi na motor. Čipu je potrebno 5V za logičku sekciju i može podnijeti mnogo veći napon u dijelu motora. Pokretanje na 11.25v (tri 3.6v baterije) je malo pomoglo. Primetno veći obrtni momenat na mom prstu, ali to i dalje nije moć. Ipak, nije loše za motor koji je manji od nikla. A sada je krug postao univerzalni upravljački program bipolarnog koračnog motora. Dodano 29. novembra: Sinoć sam neko vrijeme radio na 12v i počeo se vrućiti. Nisam siguran je li to bio problem s rezonantnom frekvencijom ili je jednostavno bilo previše struje za namote. U svakom slučaju, budite malo oprezni ako vozite ovaj mali motor s većim naponima.

Korak 8: Kraj

Šta sam naučio? Upravljanje koračnim motorom s AVR-om (i čipom H-mosta) prilično je jednostavno, čak i u "otmjenom" načinu rada s pola koraka.

Ipak, nisam siguran što ću učiniti s malim koračnim motorima. Neki prijedlog?

Preporučuje se: