Mundarija:

AVR mikroprotsessorli qadam dvigatelini boshqaring: 8 qadam
AVR mikroprotsessorli qadam dvigatelini boshqaring: 8 qadam

Video: AVR mikroprotsessorli qadam dvigatelini boshqaring: 8 qadam

Video: AVR mikroprotsessorli qadam dvigatelini boshqaring: 8 qadam
Video: RTMP 9 ma'ruza 2024, Noyabr
Anonim
AVR mikroprotsessori bilan qadam motorini boshqaring
AVR mikroprotsessori bilan qadam motorini boshqaring

Printerlardan/disklardan va boshqalardan tozalangan qadam dvigatellari bormi?

Ba'zilar ohmetr bilan tekshiradi, so'ngra mikroprotsessoringizda oddiy haydovchi kodi paydo bo'ladi, shunda siz uslubni o'zgartirasiz.

1 -qadam: Steppers bilan tanishing

Stepperlar bilan tanishing
Stepperlar bilan tanishing
Stepperlar bilan tanishing
Stepperlar bilan tanishing

Umuman olganda, barcha kichik simlar qayerga ketishini aniqlash kerak.

Birinchi qadam - bu bir qutbli yoki bipolyar vosita ekanligini aniqlash. Noma'lum dvigatelni aniqlashning oddiy usulini bilish uchun Jonsni "Steppers on Steppers" ga qarang. Biroz o'qing, keyin menga arzon bo'lgan ushbu motorni o'rganishga qo'shiling. (Ular hozirda 0,99 dollarga sotilmoqda. Ular kichik, nisbatan yengil, lekin ko'p momentga ega emas. Hali nima yaxshi bo'lishini bilmayman.)

2 -qadam: umumiy zamin toping

Umumiy asosni toping
Umumiy asosni toping
Umumiy asosni toping
Umumiy asosni toping

Shunday qilib, sizda beshta (yoki to'rt yoki oltita) sim bor. Sizning dvigatelingiz ikkita bo'lakka ega bo'ladi va siz hatto har bir sim qaysi tomonga tegishli ekanligini bilib olishingiz mumkin.

Agar siz faqat to'rtta simga qarasangiz, omadingiz bor - bu bipolyar motor. Qaysi ikkita juft sim birlashishini aniqlash kifoya. Agar sizda bir qutbli dvigatel yoki 4 dan ortiq sim bo'lsa, siz ohmetrni uzib qo'yishingiz kerak bo'ladi. Siz qidirayotgan narsa - har bir yarmi uchun umumiy (tuproqli) sim. Qaysi biri bipolyar dvigatelda yotqizilganligini ayta olasiz, chunki u qutblarning har biriga nisbatan qarshilikning yarmiga teng. Rasmda simlarni simlarga ulash va qarshilikni qayd etish (yoki ular umuman ulangan bo'lsa) eslatmalarim ko'rsatilgan. Ko'ryapsizmi, Oq - bu pastki uchlik uchun asos bo'lib, ular qizil yoki ko'k rangga nisbatan bir xil qarshilikka ega. (Bu dvigatel g'alati va yuqori magnitli lasanning markaziy krani yo'q. U xuddi yarim bipolyar, yarim qutbli kabi. Balki siz buni Qora-Sariq paytida Qizil-Oq-Moviy rulonda aylanishni sezishingiz mumkin. rulon boshqariladi.)

3 -qadam: qadamlarni belgilang

Bosish tartibini aniqlang
Bosish tartibini aniqlang

Men bu dvigatelni ikki qutbli haydashni xohlardim, shuning uchun men Oq topraklama simiga e'tibor bermayman. Menda tashvishlanish uchun faqat to'rtta sim bor.

Siz bir qutbli dvigatelni baribir bipolyar boshqarishni xohlashingiz mumkin, chunki u har bir rulonning ikki yarmini almashtirib turish o'rniga, butun fazani ikkala bosqichda ishlatadi. Ko'proq lasan = ko'proq moment. Bir juft orqali tokni o'tkazing (siz tanlagan qutbga e'tibor bering) va keyin bir vaqtning o'zida boshqa juftlik orqali oqim o'tkazing. Ikkinchi juftni ulashda, dvigatelning qay tomonga burilishini kuzatib boring. Buni yozing. Endi siz tanlagan birinchi juftlikning qutblanishini o'zgartiring. Keyin ikkinchi juftlikni yana ulang, ularning qutblari teskari. Yo'nalishga e'tibor bering. Shundan kelib chiqib, siz dvigatelni har ikki yo'nalishda aylantirish tartibini aniqlab olishingiz kerak. Mening misolimda, ikkalasi ham soat sohasi farqli o'laroq aylandi, shuning uchun ketma -ketlikni men tanlagan usulda bosib o'tish CCW dvigatelini o'zgartiradi.

4 -qadam: Dvigatelni sinov haydovchisiga olish

Sinov haydovchisi uchun dvigatelni olish
Sinov haydovchisi uchun dvigatelni olish

Agar siz mikroprotsessor dasturlash uchun hali tayyorlanmagan bo'lsangiz, siz Getto Development Kit yoki PIC -ning har xil dasturchilaridan ko'ra yomonroq ish qilishingiz mumkin. Simlarni to'g'ridan -to'g'ri mikroprotsessorga ulang va quyidagi kod bilan yoqing:

/* Kichik pog'onali motorlarni harakatga keltirish bilan o'ynash. */

/ * Kechiktirish funktsiyasini qo'shish */ #define F_CPU 1000000UL #include/ * ATTiny2313 uchun pin defs *// * soat yo'nalishi bo'yicha buyurtma */ #define BLUE _BV (PB0) #define BLACK _BV (PB1) #define RED _BV (PB2) #define YELLOW _BV (PB3) #define DELAY 200 / * millisekund qadamlar orasidagi * / int main (void) {DDRB = 0xff; / * Hamma B pinlarida chiqishni yoqish */ PORTB = 0x00; / * Barchasini 0v */ ga o'rnating (1) {/ * bu erda asosiy halqa */ PORTB = KO'Z; _delay_ms (kechikish); PORTB = QORA; _delay_ms (kechikish); PORTB = QIZIL; _delay_ms (kechikish); PORTB = SARI; _delay_ms (kechikish); }} Bu kod qanchalik sodda? Haqiqatan ham oddiy. Bu faqat yaxshi ta'riflarni berishdir, shuning uchun men simlarni pin-nomlari emas, balki ranglari bilan atashim mumkin edi, keyin ularni ketma-ketlik bilan sozlash mumkin. Yangi boshlanuvchilar uchun men qadamlar orasidagi yarim soniya kechikishni tanladim. Natijalar uchun qisqa videoni ko'ring. Agar siz haqiqatan ham o'yiningizda bo'lsangiz, dvigatelning bir pog'onali burchak o'lchamlarini aniqlash uchun har bir tsikl uchun qadamlar sonini hisoblang. (Ha. PS. 3,6v tezlikda yuklamaydi

5 -qadam: orqaga va orqaga buriling

Shunday qilib, siz soat yo'nalishi bo'yicha harakat qilasiz. Yana qiziqroq narsa bormi? Biroz kodni tozalash, va biz uni oldinga va orqaga ishlatishimiz mumkin. Men soat yo'nalishi bo'yicha ketma -ketlikni qatorga qo'ydim, shunda siz oddiy tsikl bilan bosqichlarni bosib o'tishingiz mumkin. Endi siz soat yo'nalishi bo'yicha yoki teskari yo'nalishda aylanish uchun pastadirni yuqoriga yoki pastga boshqarishingiz mumkin.

int main (void) {const uint8_t kechikish = 50; const uint8_t soat yo'nalishi bo'yicha = {KO'K, Qora, Qizil, Sariq}; uint8_t i; DDRB = 0xff; / * Barcha B -pinlarda chiqishni yoqish */ PORTB = 0x00; / * Barchasini 0v */ ga o'rnating (1) {/ * bu erda asosiy halqa */ for (i = 0; i <= 3; i ++) {/ * ranglarni soat yo'nalishi bo'yicha aylantiring */ PORTB = soat yo'nalishi bo'yicha ; _delay_ms (kechikish); } uchun (i = 3; i> = 0; i-) { / * ccw * / PORTB = soat yo'nalishi bo'yicha ranglarini bosib o'tish; _delay_ms (kechikish); }}} Orqa va oldinga siljish uchun bema'ni videoni ko'ring.

6-qadam: Men hech qachon yarim qadam tashlamayman, chunki men yarim qadam emasman …

Lirik vazifani chetga surib, dvigatelni yarim qadam bosish-u turgan joy. Siz ko'proq tepalik tokini, bir lahzalik momentni va ikki marta burchak o'lchamlarini olasiz. Qisqacha aytganda, yarim qadam: Moviy, Qora, Qizil, Sariq o'rniga siz motorni Moviy, Moviy+Qora, Qora, Qora+Qizil, Qizil, Qizil+Sariq, Sariq, Sariq+Ko'k rangda boshqarasiz. Natijada yarim vaqtda siz ikkala magnitni bir vaqtning o'zida jalb qilasiz. Ikkala to'plam ham ishlayotgan vaqtda, dvigatel ikkalasining yarmini ko'rsatib, "qadamlar" orasidagi burchakni qisqartiradi va dvigatelning silliq aylanishini ta'minlaydi. Videodan ayta olasizmi? Ishonchim komil emas … Endi kodning yarim qadamni bajaradigan qismi shunday ko'rinadi:

void halfStepping (uint16_t kechikish, uint8_t yo'nalishi ) {uint8_t i; uchun (i = 0; i <= 3; i ++) {PORTB = yo'nalishi ; / * bitta bobinli qism */ _delay_ms (kechikish); PORTB | = yo'nalish [i+1]; / * yarim qadamda qo'shish */ _delay_ms (kechikish); }} Birinchi PORTB buyrug'i bitta qutbni musbatga, qolganini manfiy qilib belgilaydi. Keyin kutadi. Keyin ikkinchi PORTB buyrug'i ikkinchi qutbni (ikkinchi o'rashda) musbat holatga o'rnatadi, bu ikkala o'rashni 1,4 marta aylanish momentiga (va oqimdan 2 baravar) tortadi. Dasturning to'liq ro'yxati quyida biriktirilgan. Endi ikkita massiv aniqlandi (soat yo'nalishi bo'yicha, soat sohasi farqli o'laroq) va ikkalasi ham 5 elementdan iborat bo'lib, i+1 ni yarimStepping funktsiyasiga kiritish imkonini beradi.

7 -qadam: Dvigatel drayverini qo'shing

Motor haydovchi qo'shing
Motor haydovchi qo'shing
Motor haydovchi qo'shing
Motor haydovchi qo'shing
Motor haydovchi qo'shing
Motor haydovchi qo'shing

Hozircha hammasi yaxshi.

Bitta muammo shundaki, dvigatelda unchalik katta moment yo'q, chunki bu mikroprotsessor har bir pin uchun ~ 50mA ni o'chiradi. Keyingi aniq qadam, uni haydovchiga bog'lab, uni ko'proq sharbat bilan ta'minlashdir. Ammo keyin bir oz o'ylayman: men uni faqat 5v bilan boshqaraman va rulonning qarshiligi ~ 125 ohm. Bu shuni anglatadiki, dvigatel har bir pin uchun 40 mA ni tashkil qiladi va uni AVR chipi (beefy!) Yaxshi boshqarishi kerak. Shunday qilib, dvigatelning kuchlanishini oshirish uchun uni SN754410 H-ko'prikli chipga uladim. O'chirish sxemasi juda oddiy. AVR -ning har bir pimi kirishga o'tadi va mos keladigan chiqish pinlari dvigatelga o'tadi. Chipga mantiq bo'limi uchun 5v kerak bo'ladi va dvigatel bo'limida juda ko'p kuchlanishni olishi mumkin. Uni 11.25V (uchta 3.6V batareya) da ishlatish biroz yordam berdi. Barmoqlarimga nisbatan ko'proq tork, lekin u hali ham quvvat manbai emas. Nikeldan kichik dvigatel uchun yomon emas. Va endi bu davr umumiy maqsadli bipolyar qadamli haydovchi bo'lib qoldi. 29 -noyabr qo'shildi: Kecha tunda 12v da bir muddat motor yugurdi va u qiziy boshladi. Ishonchim komilki, bu rezonansli chastota muammosi yoki sarg'ish uchun juda katta oqimmi. Qanday bo'lmasin, agar siz bu kichik motorni katta kuchlanishda boshqarayotgan bo'lsangiz, biroz ehtiyot bo'ling.

8 -qadam: Oxir

Xo'sh, men nimani o'rgandim? Bosqichli dvigatelni AVR (va H-ko'prikli chip) bilan haydash, hatto "chiroyli" yarim qadam rejimida ham juda oson.

Kichik pog'onali dvigatellar bilan nima qilishim aniq emas. Har qanday taklif?

Tavsiya: