Sadržaj:

Pogon koračnog motora s mikroprocesorom AVR: 8 koraka
Pogon koračnog motora s mikroprocesorom AVR: 8 koraka

Video: Pogon koračnog motora s mikroprocesorom AVR: 8 koraka

Video: Pogon koračnog motora s mikroprocesorom AVR: 8 koraka
Video: Octopus Max EZ v1.0 - EZ2208 With Controller fan 2024, Studeni
Anonim
Vozite koračni motor s AVR mikroprocesorom
Vozite koračni motor s AVR mikroprocesorom

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

Malo sondiranja ohmetrom, nakon čega slijedi jednostavan kod upravljačkog programa na vašem mikroprocesoru i bit ćete u stilu.

1. korak: Upoznajte stepere

Upoznajte koračnike
Upoznajte koračnike
Upoznajte koračnike
Upoznajte koračnike

U osnovi, morat ćete shvatiti 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 web stranicu Iana Harriesa za jednostavnu metodu otkrivanja nepoznatog motora. Pročitaj malo pa mi se pridruži u detaljnom opisu ovog motora koji sam nabavio jeftino. (Trenutno su u prodaji po 0,99 USD. Mali su, relativno lagani, ali nemaju veliki okretni moment. Ne znam za što će to još biti dobro.)

Korak 2: Pronađite zajedničko tlo

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š će motor imati dvije polovice, a vjerojatno 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 spojene). Možete vidjeti da je bijela osnova za donji trio b/c, 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, poluunipolarni. Možda biste ovo mogli upotrijebiti da osjetite rotaciju u crveno-bijelo-plavoj zavojnici kad je crno-žuta zavojnica se pokreće.)

Korak 3: Odredite redoslijed koraka

Odredite redoslijed koraka
Odredite redoslijed koraka

Htio sam voziti ovaj motor kao bipolarni, pa ignoriram bijelu uzemljenu žicu. Moram se 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 okretni moment. Provedite struju kroz par (uzimajući u obzir polaritet koji ste odabrali), a zatim u isto vrijeme prođite kroz drugi par. Kad spojite drugi par, pazite u kojem smjeru se motor okreće. Zapišite ovo. Sada promijenite polaritet na prvom paru koji ste odabrali. Zatim ponovno spojite drugi par s obrnutim polaritetom. Zabilježite smjer. Iz ovoga biste trebali moći shvatiti slijed okretanja motora u bilo kojem smjeru. U mom primjeru obojica su se okrenula u smjeru suprotnom od kazaljke na satu, pa će korakom kroz slijed na isti način koji sam odabrao stupnjevati 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 učiniti gore od Ghetto Development Kit -a ili bilo kojeg od različitih programera PIC -a. Priključite žice izravno na mikroprocesor i spalite ih sa sljedećim kodom:

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

/ * Uključi funkciju odgode */ #define F_CPU 1000000UL #include/ * Def defs za ATTiny2313 *// * Redoslijed u smjeru 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 ovdje */ PORTB = PLAVA; _kašnjenje_ms (DELAY); PORTB = CRNO; _kašnjenje_ms (DELAY); PORTB = CRVENO; _kašnjenje_ms (DELAY); PORTB = ŽUTI; _kašnjenje_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 pin imenima, a zatim ih uključuje u nizu s podesivim kašnjenjem između. Za početak, odabrao sam pola sekunde odgode između koraka. Rezultate pogledajte u kratkom videu. Ako ste stvarno 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 natrag i naprijed

Dakle, radite u smjeru kazaljke na satu. Ima li što zanimljivije? Malo čišćenja koda i možemo ga pokrenuti naprijed-natrag. 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 */ while (1) {/ * glavna petlja ovdje */ for (i = 0; i <= 3; i ++) {/ * korak kroz boje u smjeru kazaljke na satu */ PORTB = u smjeru kazaljke na satu ; _kašnjenje_ms (kašnjenje); } za (i = 3; i> = 0; i-) { / * korak kroz boje ccw * / PORTB = u smjeru kazaljke na satu ; _kašnjenje_ms (kašnjenje); }}} Za napred i nazad pogledajte video zapis o utrkama.

Korak 6: Nikad ne koračam polako, jer nisam polukorak …

Odmaknite se od stihova, pola koraka s motorom tu je gdje ste. Dobivate veću vršnu struju, trenutniji okretni moment i dvostruku kutnu razlučivost. 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 polovicu vremena aktivirate oba magneta odjednom. A tijekom vremena dok su oba seta uključena, motor pokazuje na pola puta između dva, smanjujući kut između "koraka" i čineći motor glatkijim okretanjem. Možete li reći iz videa? Nisam siguran … Sada dio koda koji radi polukorak izgleda ovako:

void halfStepping (uint16_t kašnjenje, uint8_t smjer ) {uint8_t i; za (i = 0; i <= 3; i ++) {PORTB = smjer ; / * dio s jednom zavojnicom */ _kašnjenje_ms (kašnjenje); PORTB | = smjer [i+1]; / * dodaj u pola koraka */ _kašnjenje_ms (kašnjenje); }} Prva naredba PORTB postavlja jedan pol na pozitivan, a svi ostali na negativan. Onda se čeka. Zatim druga naredba PORTB postavlja drugi pol (na drugom namotu) u pozitivan položaj, uključujući oba namota za 1,4x okretni 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ćuju 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 je problem što motor izgleda nema toliko veliki okretni 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 pokretati (snažan!) AVR čip. Kako bih povećao 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 motornom dijelu. Rad sa 11.25v (tri 3.6v baterije) je malo pomogao. Primjetno veći zakretni moment na mojem prstu, ali to ipak 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. studenoga: Provjerio sam motor sinoć na 12V neko vrijeme i počeo se vrućiti. Nisam siguran je li to bio problem s rezonantnom frekvencijom ili je jednostavno imao previše struje za namote. U svakom slučaju, budite malo oprezni ako vozite ovaj mali motor s većim naponima.

Korak 8: Kraj

Pa što sam naučio? Vožnja koračnim motorom s AVR-om (i H-bridge čipom) prilično je jednostavna, čak i u "fancy" načinu rada s pola koraka.

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

Preporučeni: