Բովանդակություն:

Քշեք stepper շարժիչով AVR միկրոպրոցեսորով `8 քայլ
Քշեք stepper շարժիչով AVR միկրոպրոցեսորով `8 քայլ

Video: Քշեք stepper շարժիչով AVR միկրոպրոցեսորով `8 քայլ

Video: Քշեք stepper շարժիչով AVR միկրոպրոցեսորով `8 քայլ
Video: Ինչպես է Stepper Motor աշխատում? 2024, Հուլիսի
Anonim
Քշեք stepper շարժիչով AVR միկրոպրոցեսորով
Քշեք stepper շարժիչով AVR միկրոպրոցեսորով

Ունե՞ք տպիչներից/սկավառակների կրիչներից և այլն հավաքված տափակ շարժիչներ:

Ոմանք ստուգում են ohmeter- ով, որին հաջորդում է միկրոպրոցեսորի վրա դրված վարորդի մի պարզ կոդ, և դուք կհայտնվեք ոճով:

Քայլ 1: Getանոթացեք Steppers- ին

Getանոթացեք Steppers- ին
Getանոթացեք Steppers- ին
Getանոթացեք Steppers- ին
Getանոթացեք Steppers- ին

Հիմնականում, դուք պետք է պարզեք, թե ուր են գնում բոլոր փոքր լարերը:

Առաջին քայլը պարզելն է ՝ դա միաբևեռ է, թե երկբևեռ շարժիչ: Նայեք Jones- ին Steppers- ին ՝ ավելի խորը նախապատմության համար, այնուհետև Ian Harries 'Site- ին ՝ անհայտ շարժիչը պարզելու պարզ մեթոդի համար: Մի քիչ կարդացեք, ապա միացեք ինձ այս էժան գնով ձեռք բերած այս շարժիչի հետքերով: (Նրանք այժմ վաճառվում են 0,99 դոլարով: Նրանք փոքր են, համեմատաբար թեթև, բայց մեծ ոլորող մոմենտ չունեն: Չգիտեմ, թե ինչի համար դա դեռ լավ կլինի):

Քայլ 2: Գտեք ընդհանուր հիմք

Գտեք ընդհանուր հիմք
Գտեք ընդհանուր հիմք
Գտեք ընդհանուր հիմք
Գտեք ընդհանուր հիմք

Այսպիսով, դուք ունեք հինգ (կամ չորս, կամ վեց) լար: Ձեր շարժիչը կունենա երկու կես, և, հավանաբար, կարող եք նույնիսկ ասել ՝ նայելով, թե յուրաքանչյուր մետաղալարին որ կողմին է պատկանում:

Եթե դուք միայն չորս լար եք նայում, ապա հաջողակ եք, դա երկբևեռ շարժիչ է: Մնում է պարզել, թե որ երկու զույգ լարերն են միասին գնում: Եթե ունեք միաբևեռ շարժիչ կամ 4 -ից ավելի լարեր, ապա ստիպված կլինեք ճեղքել ձեր ohmeter- ը: Այն, ինչ դուք փնտրում եք, յուրաքանչյուր կիսամյակի ընդհանուր (գրունտային) մետաղալարն է: Դուք կարող եք ասել, թե որն է երկբևեռ շարժիչի մեջ հիմնավորված, քանի որ այն ունի բևեռներից որևէ մեկին դիմադրության կեսը, քան բևեռներն իրենց վրա: Նկարում պատկերված են իմ գրառումները ՝ լարերը միացնելով լարերին և նշելով դիմադրությունը (կամ եթե դրանք ընդհանրապես կապված են): Դուք կարող եք տեսնել, որ Սպիտակ գույնը ստորին եռ/բ եռյակի համար է, այն ունի Կարմիր կամ Կապույտ դիմադրության կեսը, որ նրանք ունեն միմյանց նկատմամբ: (Այս շարժիչը տարօրինակ է և չունի կենտրոնական թակել վերին մագնիսական կծիկի վրա: Կարծես այն կիսաբևեռ է, կիսաբևեռ: Միգուցե դա կարող եք օգտագործել կարմիր-սպիտակ-կապույտ կծիկում պտույտը զգալու համար, երբ Սև-դեղին կծիկ է քշվում)

Քայլ 3: Պարզեք աստիճանների կարգը

Պարզեք քայլերի կարգը
Պարզեք քայլերի կարգը

Ես պատրաստվում էի այս շարժիչը քշել որպես երկբևեռ, այնպես որ ես անտեսում եմ Սպիտակ հողալարերը: Ես միայն չորս լար ունեմ անհանգստանալու համար:

Դուք միգուցե ամեն դեպքում ցանկանում եք միաբևեռ շարժիչը գործարկել որպես երկբևեռ, քանի որ այն օգտագործում է ամբողջ կծիկը երկու փուլերում ՝ յուրաքանչյուր կծիկի երկու կեսերի միջև փոխարինման փոխարեն: Ավելի շատ կծիկ = ավելի մեծ ոլորող մոմենտ: Ընթացիկ ընթացք մի զույգի միջով (նշելով ձեր ընտրած բևեռականությունը), այնուհետև ընթացեք մյուս զույգի միջով միաժամանակ: Երբ միացնում եք երկրորդ զույգը, դիտեք, թե որ կողմից է շրջվում շարժիչը: Գրեք սա: Այժմ հակադարձեք ձեր ընտրած առաջին զույգի բևեռականությունը: Այնուհետև նորից միացրեք երկրորդ զույգին, քանի որ նրանց բևեռականությունը նույնպես հակառակն է: Նշեք ուղղությունը: Դրանից դուք պետք է կարողանաք պարզել շարժիչը երկու ուղղությամբ պտտելու հաջորդականությունը: Իմ օրինակում երկուսն էլ ավարտվեցին ժամացույցի սլաքի հակառակ ուղղությամբ, ուստի հաջորդականությամբ նույն ընտրած ճանապարհով շարժվելու է CCW շարժիչը:

Քայլ 4. Շարժիչը վերցնել փորձարկման համար

Փորձնական քշելու համար շարժիչը վերցնելը
Փորձնական քշելու համար շարժիչը վերցնելը

Եթե դուք դեռ չափից դուրս պատրաստ չեք միկրոպրոցեսորային ծրագրավորման համար, կարող եք ավելի վատ անել, քան Ghetto Development Kit- ը կամ տարբեր PIC ծրագրավորողներից որևէ մեկը: Կցեք լարերը անմիջապես ձեր միկրոկրոտրիկի վրա և այրեք այն հետևյալ կոդով.

/* Խաղալով փոքր տափաստանային շարժիչները քշելիս: */

/ * Ներառել հետաձգման գործառույթը */ #սահմանել F_CPU 1000000UL #include/ * Pin defs for ATTiny2313 *// * Clockwise order */ #define BLUE _BV (PB0) #define BLACK _BV (PB1) #define RED _BV (PB2) #define YELLOW _BV (PB3) #սահմանել ՀՈELՍՈՄ 200 / * միլիվայրկյան քայլերի միջև * / int հիմնական (անվավեր) {DDRB = 0xff; / * Միացնել ելքը B բոլոր կապում */ PORTB = 0x00; / * Բոլորը սահմանեք 0v */ մինչ (1) {/ * հիմնական հանգույց այստեղ */ PORTB = BLUE; _delay_ms (ՈELՇԱԴՐՈԹՅՈՆ); PORTB = ՍԵՎ; _delay_ms (ՈELՇԱԴՐՈԹՅՈՆ); PORTB = ԿԱՐՄԻՐ; _delay_ms (ՈELՇԱԴՐՈԹՅՈՆ); ՊՈՐՏԲ = ԴԵELLԻՆ; _delay_ms (ՈELՇԱԴՐՈԹՅՈՆ); }} Որքան պարզ է այդ կոդը: Իսկապես պարզ: Այն ամենը, ինչ անում է, մի քանի գեղեցիկ սահմանումներ է տալիս, որպեսզի ես կարողանայի հաղորդել լարերը ըստ գույնի, այլ ոչ թե նրանց անունների, և այնուհետև դրանք հաջորդաբար միացնում է ՝ դրանց միջև կարգավորելի ուշացումով: Սկսնակների համար ես ընտրեցի քայլերի միջև կես վայրկյան ուշացում: Արդյունքների համար տես կարճ տեսանյութը: Եթե դուք իսկապես ձեր խաղին եք մասնակցում, հաշվարկեք քայլերի քանակը մեկ ցիկլի համար `պարզելու համար շարժիչի մեկ քայլով անկյունային լուծումը: (Օհ, այո: Հ. Գ. Հեշտությամբ վարում է առանց բեռի 3.6 վ լարման դեպքում: Մարտկոցը դիտեք տեսանյութում):

Քայլ 5: Թեքեք այն ետ և առաջ

Այսպիսով, դուք ստացել եք այն ժամացույցի սլաքի ուղղությամբ: Ավելի հետաքրքիր բան կա՞: Մի փոքր կոդի մաքրում, և մենք կարող ենք այն հետ ու առաջ գործարկել: Theամացույցի սլաքի հաջորդականությունը տեղադրեցի զանգվածի մեջ, որպեսզի կարողանաք փուլերով անցնել պարզ օղակի համար: Այժմ դուք կարող եք օղակը վարել վեր կամ վար ՝ ժամացույցի սլաքի կամ հակառակ ուղղությամբ շարժվելու համար:

int հիմնական (անվավեր) {const uint8_t հետաձգում = 50; const uint8_t ժամացույցի սլաքի ուղղությամբ = {ԿԱՊՈ,, ՍԵՎ, ԿԱՐՄԻՐ, ԴԵELLԻՆ}; uint8_t i; DDRB = 0xff; / * Միացնել ելքը B բոլոր կապում */ PORTB = 0x00; / * Բոլորը սահմանեք 0v */ մինչ (1) {/ * հիմնական հանգույցն այստեղ */ for (i = 0; i <= 3; i ++) {/ * գույների ժամացույցի սլաքի ուղղությամբ */ PORTB = ժամացույցի սլաքի ուղղությամբ ; _delay_ms (ուշացում); } (i = 3; i> = 0; i-) { / * գույների միջով ccw * / PORTB = ժամացույցի սլաքի ուղղությամբ ; _delay_ms (ուշացում); }}} Դիտեք զվարճալի տեսահոլովակը հետ-ամրացման համար:

Քայլ 6: Ես երբեք կիսաքայլ չեմ անում, որովհետև ես կիսաքայլ չեմ…

Մի կողմ թողեք քնարերգությունը, ձեր շարժիչը կիսով չափ քայլելով այն տեղում է: Դուք ստանում եք ավելի շատ գագաթնակետային հոսանք, ավելի ակնթարթային ոլորող մոմենտ ստեղծելու հնարավորություն և կրկնակի անկյունային թույլատրելիություն: Կիսամյակային արտահայտություն. Կապույտի, Սևի, Կարմիրի, Դեղինի փոխարեն շարժիչը շարժում եք Կապույտ, Կապույտ+Սև, Սև, Սև+Կարմիր, Կարմիր, Կարմիր+Դեղին, Դեղին, Դեղին+Կապույտ: Արդյունքն այն է, որ կես անգամ դուք միանգամից ներգրավում եք երկու մագնիսները: Եվ երկու հավաքածուների ներգրավման ժամանակ շարժիչը ցույց է տալիս երկուսի կեսը ՝ փոքրացնելով «քայլերի» անկյունը և ստիպելով շարժիչն ավելի սահուն պտտվել: Տեսանյութից կարո՞ղ եք ասել: Վստահ չեմ… Այժմ կոդի այն հատվածը, որը կատարում է կիսաքայլը, այսպիսին է.

անվավեր կես Քայլ (uint16_t հետաձգում, uint8_t ուղղություն ) {uint8_t i; համար (i = 0; i <= 3; i ++) {PORTB = ուղղություն ; / * մեկ կծիկ մաս */ _delay_ms (ուշացում); PORTB | = ուղղություն [i+1]; / * ավելացնել կիսաքայլ */ _delay_ms (հետաձգում); }} Առաջին PORTB հրամանը մեկ բևեռը սահմանում է դրական, իսկ մնացածը ՝ բացասական: Հետո սպասում է: Այնուհետև երկրորդ PORTB հրահանգը երկրորդ բևեռը (մյուս ոլորուն) դնում է դրական ՝ ներգրավելով երկու ոլորուն 1.4x ոլորող մոմենտի համար (և 2 անգամ ընթացիկ): Ստորև կցվում է ծրագրի ամբողջական ցանկը: Երկու զանգված այժմ սահմանվում են (ժամացույցի սլաքի ուղղությամբ, ժամացույցի սլաքի հակառակ ուղղությամբ) և երկուսն էլ ունեն 5 տարր, որոնցից յուրաքանչյուրը թույլ է տալիս մուտքագրել i+1 գործառույթը կիսով չափ:

Քայլ 7: Ավելացրեք շարժիչի վարորդ

Ավելացնել շարժիչի վարորդ
Ավելացնել շարժիչի վարորդ
Ավելացնել շարժիչի վարորդ
Ավելացնել շարժիչի վարորդ
Ավելացնել շարժիչի վարորդ
Ավելացնել շարժիչի վարորդ

Առայժմ ամեն ինչ լավ է:

Միակ խնդիրն այն է, որ շարժիչը կարծես այդքան մեծ ոլորող մոմենտ չունի, ինչը կարող է պայմանավորված լինել այն հանգամանքով, որ միկրոպրոցեսորը միայն 50 մԱ ֆունտ կթողնի մեկ կապում: Ակնհայտ հաջորդ քայլը կլինի այն միացնել շարժիչով աշխատող վարորդին `ավելի շատ հյութ մատակարարելու համար: Բայց հետո մի փոքր մտածեք. Դա նշանակում է, որ շարժիչը միայն 40 մԱ է քաշում մեկ կապում, և այն պետք է միանգամայն լավ վարվի (տխուր!) AVR չիպով: Այսպիսով, շարժիչն ավելի մեծ լարման հասցնելու համար ես այն կապեցի SN754410 H- կամուրջի չիպի հետ: Շղթան բավականին պարզ է: AVR- ի յուրաքանչյուր կապում անցնում է մուտքի, իսկ համապատասխան ելքային կապերը շարժիչին: Տրամաբանական հատվածի համար չիպին անհրաժեշտ է 5 վ, իսկ շարժիչի հատվածում կարող է շատ ավելի մեծ լարվածություն վերցնել: 11.25v (երեք 3.6 վ մարտկոց) աշխատելը մի փոքր օգնեց: Նկատելիորեն ավելի մեծ ոլորող մոմենտ իմ մատին, բայց դա դեռ հզորություն չէ: Չնայած վատ չէ նիկելից փոքր շարժիչի համար: Եվ այժմ շղթան դարձել է ընդհանուր նշանակության երկբևեռ արագաչափ շարժիչ: Ավելացված է նոյեմբերի 29 -ին. Անցած գիշեր 12v- ով մի փոքր շարժեք շարժիչը, և այն սկսեց տաքանալ: Ես վստահ չեմ, որ դա ռեզոնանսային հաճախականության խնդիր էր, թե պարզապես այն շատ ընթացիկ էր ոլորունների համար: Ամեն դեպքում, մի փոքր զգույշ եղեք, եթե այս փոքր շարժիչն ավելի մեծ լարում եք վարում:

Քայլ 8: Վերջ

Այսպիսով, ինչ սովորեցի: AVR- ով (և H-Bridge չիպով) սլացիկ շարժիչ վարելը բավականին հեշտ է, նույնիսկ «շքեղ» կիսաքայլ ռեժիմում:

Չգիտեմ, թե ինչ կանեմ փոքր տափաստանային շարժիչների հետ: Suggestionsանկացած առաջարկությու՞ն:

Խորհուրդ ենք տալիս: