Мазмұны:

AVR микропроцессорымен қадамдық моторды басқарыңыз: 8 қадам
AVR микропроцессорымен қадамдық моторды басқарыңыз: 8 қадам

Бейне: AVR микропроцессорымен қадамдық моторды басқарыңыз: 8 қадам

Бейне: AVR микропроцессорымен қадамдық моторды басқарыңыз: 8 қадам
Бейне: Как просто научиться программировать микроконтроллеры PIC и AVR / Бегущие огни за 8 минут! 2024, Шілде
Anonim
AVR микропроцессорымен қадамдық моторды басқарыңыз
AVR микропроцессорымен қадамдық моторды басқарыңыз

Принтерлерден/диск жетектерінен/т.б тазартылған қадамдық қозғалтқыштар бар ма?

Омметрмен кейбір зондтау, содан кейін микропроцессорға қарапайым драйвер коды енгізіледі, сонда сіз стильге қарай қадам жасайсыз.

1 -қадам: Степперлермен танысыңыз

Степперлермен танысыңыз
Степперлермен танысыңыз
Степперлермен танысыңыз
Степперлермен танысыңыз

Негізінде, барлық кішкене сымдар қайда кететінін анықтау керек.

Бірінші қадам - бұл бір полярлы немесе биполярлы қозғалтқыш екенін анықтау. Джонс Степперске тереңірек қараңыз, содан кейін Ян Харрис сайтында белгісіз моторды анықтаудың қарапайым әдісін қараңыз. Кішкене оқып шығыңыз, содан кейін маған арзанға сатып алынған мотормен танысыңыз. (Олар қазір $ 0.99 -ға сатылады. Олар кішкентай, салыстырмалы түрде жеңіл, бірақ көп моментке ие емес. Бұл не үшін жақсы болатынын білмеймін.)

2 -қадам: Ортақ жерді табыңыз

Ортақ жерді табыңыз
Ортақ жерді табыңыз
Ортақ жерді табыңыз
Ортақ жерді табыңыз

Осылайша сізде бес (немесе төрт немесе алты) сым бар. Сіздің қозғалтқышыңыздың екі жартысы болады, және сіз әр сымның қай жағына тиесілі екенін біле аласыз.

Егер сіз тек төрт сымға қарасаңыз, сәттілікке жетесіз - бұл биполярлы қозғалтқыш. Сізге тек екі жұп сымның біріккенін анықтау қажет. Егер сізде бір полярлы қозғалтқыш немесе 4 сымнан көп болса, онда сіз омметрді ажыратуға мәжбүр боласыз. Сіз іздеген нәрсе - әр жартыға арналған ортақ (жердегі) сым. Сіз биполярлы қозғалтқышта қайсысы жерлендірілгенін біле аласыз, себебі ол полюстердің кез келгеніне қарағанда полюстердің кез келгеніне қарсылықтың жартысына тең. Сымдарды сымға қосудан және қарсылықты (немесе егер олар мүлдем қосылмаған болса) ескерту туралы менің жазбаларым суретте. Сіз ақ түстің төменгі үштігінің негізі екенін көре аласыз, олар қызыл немесе көкке бір -біріне қарсыласады. (Бұл мотор біртүрлі және жоғарғы магнит катушкасында орталық шүмегі жоқ. Бұл жартылай биполярлы, жартылай полярлы сияқты. Мүмкін сіз мұны Қара-Сары кезде Қызыл-Ақ-Көк катушкасында айналуды сезіну үшін қолдана аласыз. катушкалар басқарылады.)

3 -қадам: Қадамның ретін анықтаңыз

Қадамдық тәртіпті анықтаңыз
Қадамдық тәртіпті анықтаңыз

Мен бұл моторды биполярлы түрде басқаратын болдым, сондықтан мен ақ жерге қосылған сымды елемеймін. Менде алаңдайтын төрт сым ғана бар.

Сіз бір полярлы қозғалтқышты биполярлы түрде қосқыңыз келуі мүмкін, себебі ол әр катушканың екі жартысын алмастырудың орнына екі фазада бүкіл катушканы пайдаланады. Қосымша катушка = көп момент. Жұп арқылы ток өткізіңіз (сіз таңдаған полярлықты ескере отырып), содан кейін бір уақытта басқа жұп арқылы ток өткізіңіз. Екінші жұпты қосқанда, қозғалтқыштың қай жаққа бұрылғанын бақылаңыз. Осыны жаз. Енді сіз таңдаған бірінші жұптың полярлығын өзгертіңіз. Содан кейін екінші жұпты қайтадан байланыстырыңыз, олардың полярлығы өзгереді. Бағытқа назар аударыңыз. Осыдан сіз қозғалтқышты кез келген бағытта айналдыру ретін анықтауыңыз керек. Менің мысалда екеуі де сағат тіліне қарсы бұрылды, сондықтан мен таңдаған ретпен тізбектей өту CCW қозғалтқышына айналады.

4 -қадам: Қозғалтқышты тест -дискіге алу

Қозғалтқышты сынақ жүргізуге алу
Қозғалтқышты сынақ жүргізуге алу

Егер сіз микропроцессорлық бағдарламалауға әлі дайын болмасаңыз, онда сіз Ghetto Development Kit немесе PIC бағдарламашыларының кез келгенінен нашар жасай аласыз. Сымдарды микропроцессорға тікелей жалғаңыз және оны келесі кодпен жағыңыз:

/* Кішкентай қадамдық қозғалтқыштарды басқарумен ойнау. */

/ * Кешіктіру функциясын қосыңыз */ #define F_CPU 1000000UL #include/ * ATTiny2313 үшін анықтауларды бекіту *// * Сағат тілі бойынша тапсырыс беру */ #define BLUE _BV (PB0) #define BLACK _BV (PB1) #define RED _BV (PB2) #define САРЫ _BV (PB3) #decine DELAY 200 / * миллисекунд қадамдар арасында * / int main (void) {DDRB = 0xff; / * Барлық B түйреуіштерінде шығуды қосу */ PORTB = 0x00; / * Барлығын 0v */ мәніне орнатыңыз (1) {/ * негізгі цикл осында */ PORTB = BLUE; _кідіріс_көшу (кешігу); PORTB = ҚАРА; _кідіріс_көшу (кешігу); PORTB = ҚЫЗЫЛ; _кідіріс_көшу (кешігу); PORTB = САРЫ; _кідіріс_көшу (кешігу); }} Бұл код қаншалықты қарапайым? Шынында да қарапайым. Ол тек жақсы анықтамалар жасайды, сондықтан мен сымдарға олардың атауын емес, түсі бойынша сілтеме жасай аламын, содан кейін оларды реттелетін кідіріспен тізбектей қосады. Бастау үшін мен қадамдар арасындағы жарты секундтық кідірісті таңдадым. Нәтижелер туралы қысқаша бейнені қараңыз. Егер сіз шынымен ойынға қатыссаңыз, қозғалтқыштың бір сатылы бұрыштық ажыратымдылығын анықтау үшін циклдегі қадамдар санын есептеңіз. (Иә. PS. 3.6В жүктемесіз оңай жетеді. Батареяны бейнеден қараңыз.)

5 -қадам: Оны артқа және артқа бұрыңыз

Сондықтан сіз оны сағат тілімен айналдырасыз. Одан да қызықты нәрсе бар ма? Кішкене кодты тазарту, біз оны алға-артқа іске қосамыз. Мен фаза бойынша қарапайым циклмен өту үшін сағат тілімен тізбекті массивке қойдым. Енді циклды сағат тілімен немесе сағат тіліне қарсы жүру үшін жоғары немесе төмен жүргізуге болады.

int main (void) {const uint8_t delay = 50; const uint8_t сағат тілімен = {КӨК, ҚАРА, ҚЫЗЫЛ, САРЫ}; uint8_t i; DDRB = 0xff; / * Барлық B түйреуіштерінде шығуды қосу */ PORTB = 0x00; / * Барлығын 0v */ мәніне орнатыңыз (1) {/ * осында негізгі цикл */ for (i = 0; i <= 3; i ++) {/ * түстерді сағат тілімен айналдыру */ PORTB = сағат тілімен ; _кідіріс_көшу (кешігу); } үшін (i = 3; i> = 0; i-) { / * ccw * / PORTB = түстері бойынша қадам [= сағат тілі бойынша ; _кідіріс_көшу (кешігу); }}} Артқы және артқы жағындағы бейресми бейнені қараңыз.

6-қадам: Мен ешқашан жарты қадам емеспін, себебі мен жартылай қадам емеспін …

Лирикадан басқа, қозғалтқышты жартылай адымдау-ол тұрған жерде. Сіз неғұрлым жоғары ток, лездік айналу моменті және бұрыштық ажыратымдылықтан екі есе көп аласыз. Қысқаша айтқанда жартылай қадам: Сіз көк, қара, қызыл, сары емес, моторды көк, көк+қара, қара, қара+қызыл, қызыл, қызыл+сары, сары, сары+көкпен басқарасыз. Нәтиже - сіз екі уақыт ішінде екі магнитке бірден қосыласыз. Екі қондырғы қосылатын уақытта қозғалтқыш екеуінің ортасын көрсетеді, бұл «қадамдар» арасындағы бұрышты қысқартады және қозғалтқышты тегіс айналдырады. Видеодан айта аласыз ба? Мен сенімді емеспін … Енді кодтың жарты қадамды жасайтын бөлігі келесідей көрінеді:

void halfStepping (uint16_t кідіріс, uint8_t бағыты ) {uint8_t i; for (i = 0; i <= 3; i ++) {PORTB = бағыт ; / * бір орамалы бөлік */ _delay_ms (кідіріс); PORTB | = бағыт [i+1]; / * жарты қадаммен қосу */ _delay_ms (кідіріс); }} Бірінші PORTB пәрмені бір полюсті оңға, қалғандарын теріс етіп орнатады. Сосын күтеді. Содан кейін екінші PORTB пәрмені екінші полюсті (екінші орамда) оңға қояды, екі ораманы 1,4 есе крутящий (және токтан 2 есе) қосады. Бағдарламаның толық тізімі төменде берілген. Енді екі массив анықталды (сағат тілімен, сағат тіліне қарсы) және екеуінде де 5 элементтен тұрады, бұл iStopping функциясының жартысына i+1 енгізуге мүмкіндік береді.

7 -қадам: мотор драйверін қосыңыз

Мотор драйверін қосыңыз
Мотор драйверін қосыңыз
Мотор драйверін қосыңыз
Мотор драйверін қосыңыз
Мотор драйверін қосыңыз
Мотор драйверін қосыңыз

Әзірше бәрі жақсы.

Мәселе мынада, қозғалтқышта көп момент жоқ сияқты, бұл микропроцессордың бір істікке ~ 50мА ғана сөндіруіне байланысты болуы мүмкін. Келесі айқын қадам - оны шырынмен қамтамасыз ету үшін оны мотор жүргізушісіне қосу. Бірақ содан кейін сәл ойлаймын: мен оны тек 5 вольтпен басқарамын, ал орамның кедергісі ~ 125 Ом. Бұл дегеніміз, қозғалтқыштың бір істікке 40 мА болатын жалғыз сызығы және оны AVR чипі жақсы басқаруы керек. Қозғалтқыштың кернеуін жоғарылату үшін мен оны SN754410 H-көпір микросхемасына жалғадым. Схема өте қарапайым. AVR -ден әрбір түйреуіш кіріске түседі, ал сәйкес шығыс түйреуіштері қозғалтқышқа түседі. Микросхема үшін чипке 5В қажет, ал мотор бөлігінде кернеу әлдеқайда көп болуы мүмкін. Оны 11.25в (үш 3.6в батарея) бойынша іске қосу біраз көмектесті. Менің саусағыма қарағанда көбірек момент, бірақ бұл әлі де қуат көзі емес. Никельден кіші қозғалтқыш үшін жаман емес. Ал енді схема жалпы мақсаттағы биполярлы мотор драйверіне айналды. 29 қараша қосылды: Кеше түнде 12в шамасында қозғалтқыш біраз жұмыс істеді және ол қыза бастады. Мен бұл резонанстық жиілік мәселесі ме, әлде орамалар үшін тым көп ток болғанына сенімді емеспін. Қалай болғанда да, егер сіз осы үлкен қозғалтқышты басқаратын болсаңыз, абай болыңыз.

8 -қадам: Соңы

Сонымен мен не үйрендім? АВР (және H-bridge чипі) бар қадамдық моторды басқару тіпті «сәнді» жартылай қадамдық режимде де өте оңай.

Кішкентай қадамдық қозғалтқыштармен не істейтінімді әлі білмеймін. Ұсыныстар бар ма?

Ұсынылған: