Мазмұны:

Ардуиноға арналған қадамдық жылдамдықты басқару мәзірі: 6 қадам
Ардуиноға арналған қадамдық жылдамдықты басқару мәзірі: 6 қадам

Бейне: Ардуиноға арналған қадамдық жылдамдықты басқару мәзірі: 6 қадам

Бейне: Ардуиноға арналған қадамдық жылдамдықты басқару мәзірі: 6 қадам
Бейне: Complete Guide for 15A 400W MOSFET AOD4184A to control motor or load 2024, Шілде
Anonim
Ардуиноға арналған қадамдық жылдамдықты басқару мәзірі
Ардуиноға арналған қадамдық жылдамдықты басқару мәзірі
Ардуиноға арналған қадамдық жылдамдықты басқару мәзірі
Ардуиноға арналған қадамдық жылдамдықты басқару мәзірі
Ардуиноға арналған қадамдық жылдамдықты басқару мәзірі
Ардуиноға арналған қадамдық жылдамдықты басқару мәзірі

Бұл SpeedStepper кітапханасы қадам қозғалтқышының жылдамдығын басқаруға мүмкіндік беретін AccelStepper кітапханасының қайта жазылуы болып табылады. SpeedStepper кітапханасы қозғалтқыштың белгіленген жылдамдығын өзгертуге мүмкіндік береді, содан кейін AccelStepper кітапханасы сияқты алгоритмді қолдана отырып жаңа жылдамдыққа дейін жылдамдайды/баяулайды. SpeedStepper кітапханасы плюс және минус шегі мен «үй» позициясын орнатуға мүмкіндік береді. Негізгі позицияға оралу үшін goHome командасы бар.

Шектеулер: SpeedStepper кітапханасы тек бағытты және қадамды шығарады, сондықтан қадамдық қозғалтқышты басқару үшін Easy Driver сияқты мотор драйверіне қосылу қажет. AccelStepper кітапханасы қажет болған жағдайда осы кітапханаға көшіруге болатын басқа да жүргізуші опцияларын ұсынады.

Үш мысал эскиз берілген, олардың әрқайсысын қозғалтқышсыз немесе мотор жүргізушісіз жүргізуге болады. speedStepperPlot эскизі жылдамдық пәрмендері мен goHome пәрменін шығарады және алынған жылдамдық пен позицияның сызбасын жасайды. SpeedStepperSetup эскизі мотордың үйі мен шектеулерін орнатуға, содан кейін қозғалтқышты іске қосуға және жылдамдықты жоғары және төмен реттеуге және мәзірге негізделген қондыруды қамтамасыз етеді. SpeedStepperProfile эскизі жылдамдық профилін орнатудың және орындаудың мысалын көрсетеді.

AccelStepper кітапханасы позицияны жақсы бақылауды қамтамасыз етсе де, Еуропада биологиялық сынамаларды жинау үшін мұзды балқытудың прототипі үшін жылдамдықты бақылау қажет болды. Мұнда мотордың орнына салмақ қолданылған прототиптің бұрынғы нұсқасының бейнесі. Revision 1.1 қолданушы сорғының жылдамдық профилін басқару құралын сұрағаннан кейін жылдамдық профилін қосты.

Бұл кітапхана Arduino Uno және Mega2560 -те жұмыс істейді, бірақ прототипі үшін үлкенірек жады / жылдамдығы SparkFun Redboard Turbo процессоры қолданылды.

Бұл нұсқаулық сонымен қатар Arduino үшін Stepper Speed Control Library -де онлайн режимінде қол жетімді

Жабдықтар

Мысал үшін тек Arduino UNO немесе Mega2560 эскиздері мен бағдарламалық жасақтама кітапханалары қажет

Кітапхананы тестілеу үшін SparkFun Redboard Turbo Easy Driver, 200 қадам/айналым, 12В 350мА қадамдық қозғалтқыш және 12А тұрақты ток 2А немесе одан жоғары, мысалы. https://www.sparkfun.com/products/14934. USB A-Микро кабель USB-TTL сериялық кабелі Arduino IDE V1.8.9 және оны іске қосуға арналған компьютер. BlockingInput және pfodBufferedStream сыныптары үшін жылдамдықты кітапхана pfodParser кітапханасы millisDelay кітапханасы кідіріссіз.

1 -қадам: Кітапхананың функциялары

SpeedStepper кітапханасы кітапхана орнатқан шектермен шектелген қадамдық қозғалтқышты басқарады. Қол жетімді кітапханалық әдістерді алу үшін SpeedStepper.h файлын қараңыз. Міне, олардың артындағы логиканың құрылымы.

Қадамдардың (импульстардың) санын санау арқылы степпердің жағдайы бақыланады. Кітапхана setPlusLimit (int32_t) және setMinusLimit (int32_t) позициялары арасында орналасуды шектейді. Плюс шегі әрқашан> = 0, ал минус шегі әрқашан <= 0 болады. Іске қосылған кезде қозғалтқыштың орналасуы 0 (үй) және шектеулер өте үлкен +/- сандарға орнатылады (шамамен +/- 1е9 қадам). setAcceleration (float) қозғалтқыштың айналу жиілігін жоғары немесе төмен өзгерту жылдамдығын анықтайды. Қозғалтқыш плюс немесе минус шегіне жақындаған кезде, ол шектеуде тоқтағанша осы жылдамдықпен баяулайды. Іске қосылған кезде жылдамдық 1,0 қадам/сек/сек деп орнатылады. Жеделдету параметрі әрқашан +ve санынан тұрады. SetSpeed (өзгермелі) параметрінің белгісі қозғалтқыш қозғалатын бағытты белгілейді.

setSpeed (float) қозғалтқышты ағымдағы жылдамдыққа дейін жылдамдату / баяулату жылдамдығын орнатады. SetSpeed (float) арқылы орнатылатын жылдамдық абсолюттік мәнде setMaxSpeed (float), әдепкі 1000 қадам/сек және setMinSpeed (float), әдепкі бойынша 0,003 қадам/сек арқылы шектеледі. Бұл әдепкі мәндер кітапхана setMaxSpeed () және setMinSpeed () үшін қабылдайтын абсолютті қатты кодталған жылдамдық шектері болып табылады. Егер сіз максималды жылдамдықты> 1000 қадам/сек орнатқыңыз келсе, maxMaxSpeed (1000) қалаған максималды жылдамдыққа өзгерту үшін SpeedStepper.cpp файлындағы бірінші жолды өңдеу қажет болады. Іс жүзінде максималды жылдамдық кітапхананың run () әдісіне қоңыраулар арасындағы уақытпен шектеледі. 1000 қадам / сек үшін run () әдісі кем дегенде әр 1 мС сайын шақырылуы керек. Төмендегі Кідіріс бөлімін қараңыз.

Минималды жылдамдықтан төмен жылдамдықты орнатуға тырысу қозғалтқыштың тоқтап қалуына әкеледі. Бұл қондырғылардың әрқайсысында сәйкес гетер бар, SpeedStepper.h файлын қараңыз. Жылдамдық үшін getSetSpeed () setSpeed () арқылы орнатылған жылдамдықты қайтарады, ал getSpeed () қозғалтқыштың ағымдағы жылдамдығын қайтарады, ол сіз орнатқан жылдамдыққа үдегенде/баяулағанда өзгереді. Егер қозғалтқыш сіз ойлаған бағытта жүрмесе, қозғалтқыштың +жылдамдыққа ауысатын бағытын ауыстыру үшін invertDirectionLogic () деп атауға болады.

getCurrentPosition () «home» (0) салыстырғанда қозғалтқыштың ағымдағы орнын қайтарады. Қозғалтқыштың ағымдағы орнын анықтауға боладыCurrentPosition (int32_t). Жаңа позиция шектеулі плюс/минус шегінде болады.

Бастапқыда қозғалтқыш 0 күйінде тоқтатылады. SetSpeed (50.0) шақыру оның +ve бағытында максималды жылдамдықпен 50 қадам/мин жылдамдыққа шығуына әкеледі. HardStop () шақыру қозғалтқышты тұрған жерінде бірден тоқтатады. Екінші жағынан, stop () әдісін шақыру жылдамдықты нөлге орнатады және қозғалтқышты тоқтатады. StopAndSetHome () шақыру қозғалтқышты бірден тоқтатады және оның орнын 0 -ге қояды. Плюс/минус шектерінің мәндері өзгертілмейді, бірақ енді бұл жаңа 0 (үй) позициясына жіберіледі. GoHome () шақыру қадамды осы 0 (үй) күйіне қайтарады және тоқтайды. SetSpeed () қоңырау шалу үйге барудан бас тартады.

SpeedStepper кітапханасы сонымен қатар setProfile (SpeedProfileStruct* profileArray, size_t arrayLen), startProfile (), stopProfile (), іске қосылған профильді және isProfileRunning () әдістері арқылы жылдамдық профилін басқаруды қамтамасыз етеді. SpeedStepperProfile мысал эскизін қараңыз.

2 -қадам: SpeedStepperPlot мысалын қозғалтқышсыз іске қосу

SpeedStepperPlot мысалын қозғалтқышсыз іске қосу
SpeedStepperPlot мысалын қозғалтқышсыз іске қосу

Arduino IDE V1.8.9 орнатыңыз SpeedStepper кітапханасын жүктеңіз және орнатыңыз SpeedStepper.zip файлын сақтаңыз, содан кейін Arduino IDE мәзір элементін пайдаланыңыз Sketch → Кітапхананы қосу →. ZIP кітапханасын импорттау үшін кітапхананы импорттау үшін millisDelay кітапханасын жүктеңіз және орнатыңыз.

Мысалдар → SpeedStepper → speedStepperPlot мысал эскизін ашыңыз (қажет болған жағдайда IDE қайта іске қосыңыз). Бұл эскиз сериямен жұмыс істеу үшін конфигурацияланған, мысалы. UNO және Mega т.б. SparkFun Redboard Turbo -мен жұмыс істеу үшін төменде қараңыз.

Бұл мысалды жүргізуші тақтасы немесе қадамдық қозғалтқыш қажет етпейді. Бұл мысалдар шығыс ретінде D6 және D7 пайдаланады. Сіз эскиздің жоғарғы жағындағы STEP_PIN және DIR_PIN параметрлерін өзгерту арқылы шығыс түйреуіштерін кез келген сандық шығысқа өзгерте аласыз.

Эскизді тақтаға жүктеп алыңыз, содан кейін жылдамдықты (ҚЫЗЫЛ) және позицияны (КӨК) көрсету үшін 115200 баудағы Құралдар → Сериялық плоттерді ашыңыз Қосу шегі 360 -қа орнатылған, бұл жылдамдықтың шамамен 100 нүктеден нөлге дейін төмендеуіне әкеледі. х осінде. Минус шегі -510. Позиция ~ -390-да тоқтайды, себебі жылдамдық 0,0 дейін талап етілді. X осінің 380 нүктесінде, қадамды нөлге қайтаратын goHome cmd шығарылады.

Бұл SpeedStepperPlot эскизінде millisDelays әр түрлі жылдамдықтар мен үдеулер арасында ауысуға уақытты қолданады. Көптеген жағдайларда SpeedStepperProfile пайдалану, келесі мысалдағыдай, қарапайым.

3 -қадам: SpeedStepperProfile мысалын қозғалтқышсыз іске қосу

SpeedStepperProfile мысалын қозғалтқышсыз іске қосу
SpeedStepperProfile мысалын қозғалтқышсыз іске қосу

Мысалдар → SpeedStepper → speedStepperPlot мысал эскизін ашыңыз, бұл эскиз Arduino Serial Plotter көмегімен жоғарыда көрсетілген сюжетті шығарады және мысалы, егер сорғы жұмыс істесе, белгіленген жылдамдық профилін іске қосудың мысалы болып табылады.

Қадамдық жылдамдық профильдері SpeedStepper.h файлында анықталған SpeedProfileStruct жиымынан тұрады.

SpeedProfileStruct құрылымы {

жүзу жылдамдығы; // осы қадамның соңындағы мақсатты жылдамдық белгісіз ұзақ deltaTms; // ағымдағы жылдамдықтан (осы қадамның басында) мақсатты жылдамдыққа дейін жеделдету уақыты};

SpeedProfileStruct массивін анықтаңыз, бұл мақсатты жылдамдыққа алдыңғы қадамнан жылдамдыққа жету үшін әрбір қадам мен deltaTms, MS үшін уақыт. Егер deltaTms нөлге тең немесе өте аз болса, онда жылдамдық бірден жаңа мақсатты жылдамдыққа өтеді. Әйтпесе, қажетті үдеу есептеледі setAcceleration () шақырылады, содан кейін setSpeed () жаңа мақсатты жылдамдыққа шақырылады. Барлық жағдайларда профиль қолданыстағы плюс және минус позиция шектеулерімен және максималды/мин жылдамдық параметрлерімен шектеледі. Егер сіз жылдамдықты ұстағыңыз келсе, оны ұстап тұру үшін алдыңғы жылдамдықты қайталаңыз. Жаңа мақсатты жылдамдық ағымдағы жылдамдықпен бірдей болғандықтан, есептелген үдеу нөлге тең болады және жылдамдық өзгермейді.

Бұл SpeedProfileStruct массиві жоғарыдағы сюжетті шығарды

const SpeedProfileStruct profile = {{0, 0}, // тоқтатылмаса бірден тоқтатыңыз {0, 1000}, // нөлді 1 секунд ішінде ұстаңыз {-50, 0}, // -50 {-200 дейін секіру, 2000}, // рампасы -200 {-200, 6000} дейін, // -200 секундта 6 секунд {-50, 2000}, // -50 дейін төмендеу {0, 0}, // // тез тоқтайды {0, 1500}, // нөлді 1,5 секундқа ұстап тұрыңыз {50, 0}, // 50 -ге секіріңіз {200, 2000}, // 200 -ге дейін {200, 6000}, // 200 секундқа 6 секунд ұстаңыз {50, 2000}, // рампасы 50 {0, 0}, // // бірден тоқтайды {0, 1000} // шығуды сызу үшін нөлді // ұстау}; const size_t PROFILE_LEN = sizeof (profile) / sizeof (SpeedProfileStruct); // профиль массивінің өлшемін есептеңіз

Профиль setProfile (SpeedProfileStruct* profileArray, size_t arrayLen) шақыру арқылы орнатылады. stepper.setProfile (профиль, PROFILE_LEN);

Профиль орнатылғаннан кейін, оны ағымдағы қозғалтқыш жылдамдығынан бастау үшін startProfile () қызметіне қоңырау шалыңыз (әдетте сіз тоқтаудан басталады). Профильдің соңында қозғалтқыш соңғы мақсатты жылдамдықта жұмысын жалғастырады. IsProfileRunning () әдісі профильдің әлі де жұмыс істеп тұрғанын білу үшін шақырылуы мүмкін. Егер сіз профильді ертерек тоқтатқыңыз келсе, stopProfile () қоңырау шала аласыз, ол профильден бас тартып, қозғалтқышты тоқтатады.

4 -қадам: SpeedStepperSetup мысалын қозғалтқышсыз іске қосу

Мысал эскизі қадамдық моторды қолдануға арналған. Ол қозғалтқышты бастапқы күйіне жылжытуға мүмкіндік беретін мәзірге негізделген интерфейсті ұсынады, егер ол жоқ болса, плюс және минус шектерін қалпына келтіріп, содан кейін қозғалтқышты сол диапазонда іске қосады. «Жүгіру» мәзірі жылдамдықты жоғарылатуға және төмендетуге, ағымдағы жылдамдықта қатып қалуға, тоқтауға, сонымен қатар үйге қайтуға мүмкіндік береді.

Бұл эскиз циклды () сақтауға мүмкіндік беретін бағдарламалық жасақтаманың көптеген мүмкіндіктерін көрсетеді, осылайша қадамды басқару үшін өзіңіздің сенсорлық кірістеріңізді қосуға болады. Жылдамдықты реттеуге кедергі келтіретін кідірістерді болдырмау үшін көп күш қажет. (Қараңыз кешіктіру жаман)

Жоғарыда SpeedStepperPlot іске қосу үшін пайдаланылатын кітапханаларды орнатыңыз, содан кейін pfodParser кітапханасын орнатыңыз. PfodParser кітапханасы циклдің () іске қосылуын бұғаттай отырып, пайдаланушы кірісі мен мәзір шығысын өңдеу үшін пайдаланылатын NonBlockingInput және pfodBufferedStream сыныптарын береді.

Мысалдар → SpeedStepper → speedSpeedSetup мысалын ашыңыз. Бұл эскиз сериямен жұмыс істеу үшін конфигурацияланған, мысалы. UNO және Mega т.б. SparkFun Redboard Turbo -мен жұмыс істеу үшін төменде қараңыз.

Бұл мысалды жүргізуші тақтасы немесе қадамдық қозғалтқыш қажет етпейді. Бұл мысалдар шығыс ретінде D6 және D7 пайдаланады. Сіз эскиздің жоғарғы жағындағы STEP_PIN және DIR_PIN параметрлерін өзгерту арқылы шығыс түйреуіштерін кез келген сандық шығысқа өзгерте аласыз. Эскизді тақтаға жүктеңіз, содан кейін SETUP мәзірін көру үшін Tools → Serial Monitor 115200 ашыңыз.

Орнату позициясы: 0 сп: 0.00 +Лим: 500000 -Лим: -500 КЕШІКТІК: қадам: 492uS цикл: 0uS p -орнату Басты l -шектеулерді орнату h -goHome r -іске қосу>

Эскиз іске қосылғанда, қадамның қазіргі орны «үй» (0) позициясы ретінде қабылданады. Егер сізге қадамды бастапқы «үй» күйіне қайта қою қажет болса, SET HOME мәзірін көрсету үшін p пәрменін енгізіңіз.

Үйді орнату: 0 sp: 0.00 + Lim: 1073741808 -Lim: -1073741808 LATENCY: қадам: 752uS циклы: 3852uS x -setHome мұнда және шығыңыз + -Алға - -Кері s -ауыстыру Алға/Кері -hardStop >

Көріп отырғаныңыздай, эскизде кодталған шектеулер жойылды, осылайша қадамды кез келген жерге қайта орналастыруға болады. Сіз физикалық шектеулерден асып кетпеуіңіз керек, әйтпесе бірдеңені бұзып алуыңыз керек.

Қадамды алға жылжытуды бастау үшін + cmd пернесін пайдаланыңыз, егер сіз оны дұрыс емес бағытта қозғалатын болса, оны тоқтату үшін пәрменсіз немесе бос жолды енгізіңіз, содан кейін Алға бағытын ауыстыру үшін пәрменді қолданыңыз. Мұны келесі іске қосу үшін түзетуге invertDirectionLogic () шақыруын қосу үшін эскизді жаңарту керек.

Қадамды дұрыс нөлдік позицияға қою үшін + / - cmds пайдаланыңыз. Қозғалтқыш баяу басталады, содан кейін жылдамдықты жоғарылатады, оны тоқтату үшін бос жолды пайдаланыңыз. Бұл мен шектеу мәзірінің максималды жылдамдығы MAX_SETUP_SPEED арқылы setupMenus.cpp жоғарғы жағында орнатылады.

Қозғалтқыш «үй» күйіне қойылғаннан кейін, x cmd көмегімен ағымдағы орынды 0 етіп қайта орнатыңыз және РЕТТЕУ мәзіріне оралыңыз.

Егер шектеуді орнату қажет болса, әдетте тек бастапқы баптауда, l cmd көмегімен SET LIMITS мәзіріне кіріңіз.

SET LIMITS pos: 0 sp: 0.00 + Lim: 1073741808 -Lim: -1073741808 LATENCY: step: 944uS loop: 5796uS l -setLimit here + -Forward - -Кері h -goHome x -exit -hardStop>

Қосу шегіне өту үшін + cmd пернесін пайдаланыңыз, содан кейін оны қосу шегі ретінде орнату үшін l cmd пайдаланыңыз. H пәрменін 0 -ге қайту үшін қолдануға болады, ал қозғалтқыш минус шегіндегі күйге оралса - cmd жылжыту үшін. Минус шегін орнату үшін қайтадан l cmd пайдаланыңыз. Плюс және минус шектерінің орындарына назар аударыңыз және setup () әдісінің setPlusLimit және setMinusLimit мәлімдемелерін осы мәндермен жаңартыңыз.

Шектер орнатылған кезде, x cmd көмегімен SETUP мәзіріне оралыңыз, содан кейін RUN мәзірін ашу үшін r cmd пайдалана аласыз.

RUN MENU позициясы: 0 сп: 3.31 + Lim: 500000 -Lim: -500 LATENCY: stepper: 944uS loop: 5796uS + -Жылдамдық - -Speed h -goHome. -hardStop-мұздату Жылдамдық> +поз: 4 сп: 9.49 +Lim: 500000 -Lim: -500 LATENCY: step: 792uS loop: 5664uS pos: 42 sp: 29.15 +Lim: 500000 -Lim: -500 LATENCY: stepper: 792uS циклы: 5664uS позициясы: 120 сп: 49.09 +Lim: 500000 -Lim: -500 КЕШКІЛІК: қадам: 792uS цикл: 5664uS поз: 238 сп: 69.06 +Лим: 500000 -Lim: -500 LATENCY: қадам: 792uS цикл: 5664uS

+ Cmd алға қарай жылдамдықты бастайды және әр 2 секунд сайын позиция мен жылдамдықты басып шығарады. Қозғалтқыш қалаған жылдамдыққа жеткенде, жылдамдықты кез келген басқа кілтпен (немесе бос кіріспен) тоқтатуға болады. Тоқтату үшін - cmd төмен жылдамдықты төмендетуге болады. Егер тоқтатылса - cmd керісінше жылдамдайды.

Бұл RUN мәзірі сіздің жобаңызды қолмен басқаруды қамтамасыз етеді. Автоматты басқару үшін сізге басқа датчиктерді қосу қажет.

5 -қадам: кідіріс

Қадамдық қозғалтқышты басқару әр қадамды басқаратын бағдарламалық жасақтамаға байланысты. Белгіленген жылдамдықты ұстап тұру үшін, нобайға stepper.run () әдісін жиі шақыру қажет, ол ағымдағы жылдамдық үшін келесі қадамды уақытында бастау үшін жеткілікті. Датчиктер арқылы басқару үшін сіз жаңа өлшемдерді тез өңдей білуіңіз керек. Позиция/жылдамдықты басып шығару эскизіңіздің жеткілікті жылдамдығын тексеруге мүмкіндік беретін екі КЕҢІЛДІК өлшемін қамтиды.

Қадамдық кідіріс (pfodBufferedStream)

Қадамдық кідіріс stepper.run () әдісіне кезекті қоңыраулар арасындағы максималды кідірісті өлшейді. Қадамдық қозғалтқышты секундына 1000 қадаммен іске қосу үшін қадамның кідірісі 1000uS (1mS) -тен аз болуы керек. Бұл эскиздің бірінші нұсқасында көптеген миллисекундтардың кешігуі болды. Бұл қосымша қоңырауларды жою үшін код арқылы қосылған runStepper () әдісіне (stepper.run () шақырады). Бұл мәселені толықтай шеше алмады, себебі шағын Serial Tx буфері толтырылғаннан кейін мәзір мен басып шығару мәлімдемелері эскизді бұғаттады. Бұғаттауды болдырмау үшін pfodParser кітапханасынан pfodBufferedStream баспа мәлімдемелері тез жаза алатын 360 байтты шығыс баспа буферін қосу үшін пайдаланылды. Содан кейін pfodBufferedStream бұл жағдайда 115200 көрсетілген байт жылдамдығындағы байттарды шығарады. pfodBufferedStream буфер толған кезде блоктауды немесе толып кететін таңбаларды тастауды таңдауы керек. Мұнда буфер толған кезде қосымша таңбаларды тастауға болады, осылайша эскиз бұғатталмайды, бұл серия таңбаларды жіберуді күтеді.

Loop кідірісі (NonBlockingInput)

Циклдің кідірісі loop () әдісіне кезекті шақырулар арасындағы максималды кідірісті өлшейді. Бұл сенсордың жаңа өлшемдерін қаншалықты тез өңдей алатындығыңызды және қозғалтқыштың жылдамдығын реттей алатындығыңызды көрсетеді. Қаншалықты жылдам болу керек, сіз басқарғыңыз келетін нәрсеге байланысты.

Басып шығару мәлімдемелеріне байланысты кідірістер жоғарыдағы pfodBufferedStream көмегімен жойылды, бірақ пайдаланушының енгізуін өңдеу үшін кірістің бірінші таңбасын алып, қалған жолды елемеу қажет. PfodParer кітапханасындағы NonBlockingInput класы readInput () көмегімен кіру болған кезде нөлдік емес таңбаны қайтару үшін және циклды бұғаттамай 10mS ішінде ешқандай таңбалар алынбайынша clearInput () көмегімен келесі таңбаларды өшіру және жою үшін қолданылады. ()

Әрине, циклдің кідірісі сенсорларды оқу және жаңа жылдамдықты есептеу үшін қосатын қосымша кодқа артады. Көптеген сенсорлық кітапханалар өлшеуді бастау мен нәтижені алу арасындағы кідірісті (..) қолданып сұрыптауды алады. Бұл кітапханаларды millisDelay пайдалану үшін қайта жазуға тура келеді, бұғатталмайтын қолайлы кідірістен кейін өлшеуді алу үшін.

6 -қадам: SpeedStepperSetup қадамдық мотормен және SparkFun Redboard Turbo көмегімен іске қосу

SpeedStepperSetup қадамдық қозғалтқышпен және SparkFun Redboard Turbo көмегімен іске қосылады
SpeedStepperSetup қадамдық қозғалтқышпен және SparkFun Redboard Turbo көмегімен іске қосылады
SpeedStepperSetup қадамдық қозғалтқышпен және SparkFun Redboard Turbo көмегімен іске қосылады
SpeedStepperSetup қадамдық қозғалтқышпен және SparkFun Redboard Turbo көмегімен іске қосылады

SpeedStepperSetup эскизін нақты іске қосу үшін сізге мотор, драйвер және қуат көзі қажет болады және осы мысалда SparkFun Redboard Turbo қажет.

Жоғарыдағы сымдар диаграммасы (pdf нұсқасы) қосылымдарды көрсетеді. SpeedStepperSetup эскизінде SERIAL анықтамасын SERIAL Serial1 деп анықтаңыз.

Қадамдық қозғалтқыш, қуат көзі, драйвер және қорғаныс

Қадамдық қозғалтқыштардың түрлері мен өлшемдері өте көп. Мұнда тестілеу үшін 12В 350мА екі катушкалы мотор қолданылады. Бұл қадамды қуаттандыру үшін сізге 12 В немесе одан жоғары және 350 мА -дан асатын қуат көзі қажет.

Бұл кітапхана тек бағыт пен қадам шығысын қамтамасыз етеді, сондықтан сізге қадамдық қозғалтқышпен жұмыс істеу үшін драйвер қажет. Оңай жүргізуші мен үлкен жеңіл драйвер қозғалтқыштың катушкаларындағы токты басқарады, осылайша сіз жоғары кернеудің қуат көзін қауіпсіз қолдана аласыз, мысалы, 3,3В қозғалтқыш үшін 6В кернеуін қолданыңыз. Оңай жүргізуші 150мА/катушкадан 700мА/катушкаға дейін жеткізе алады. Жоғары токтар үшін Big Easy Driver бір катушкаға 2А дейін жеткізе алады. Easy Drive бетінің төменгі жағындағы жиі қойылатын сұрақтарды оқыңыз.

Бұл мысалдар Қадам мен Бағыттың шығуы ретінде D6 және D7 пайдаланады. Сіз эскиздің жоғарғы жағындағы STEP_PIN және DIR_PIN параметрлерін өзгерту арқылы шығыс түйреуіштерін кез келген сандық шығысқа өзгерте аласыз.

Sparkfun Redboard Turbo бағдарламалау

Redboard Turbo бағдарламалау қиын. Егер ол бағдарламаланбаса, алдымен қалпына келтіру түймесін бір рет басыңыз және Arduino Tools мәзіріндегі COM портын қайта таңдап, әрекетті қайталаңыз. Егер бұл көмектеспесе, қалпына келтіру түймесін екі рет басып, әрекетті қайталаңыз.

Оңай жүргізушіні қосу

Екі катушкалы қозғалтқышта 4 сым бар. Әр катушкаға қосылатын жұптарды табу үшін мультиметрді қолданыңыз, содан кейін бір катушканы Easy Driver A терминалдарына, ал екінші катушканы B терминалына жалғаңыз. Оларды қай жағынан айналдырғаныңыз маңызды емес, себебі қозғалыс бағытын ауыстыру үшін орнату мәзірінде s cmd пайдалануға болады.

Қозғалтқыштың қоректену көзі M+ және GNDS -ке 3/5V байланысы бар тақтаның логикалық деңгейін орнатады. Сілтемені SparkFun Redboard Turbo сияқты 3.3В микропроцессорлық шығыс үшін қысқаша қосыңыз (егер сіз оны ашық қалдырсаңыз, ол 5В цифрлық сигналдарға жарамды, мысалы, UNO, Mega) GND, STEP, DIR түйреуіштерін GND микропроцессорына және қадамға қосыңыз. қозғалтқышты басқару үшін басқа қосылымдар қажет емес.

USB - TTL сериялық кабелі

SpeedStepperSetup эскизін Uno/Mega -ден Redboard Turbo -ға жылжытқанда, сіз #define SERIAL Serial -ді #define SERIAL SerialUSB -ке Redboard Turbo USB сериялық қосылымына сәйкес ауыстыруыңыз мүмкін, бірақ сіз қадамның кешігуі шамамен 10 мС болатынын білесіз. Бұл БҰҰ -ға қарағанда 10 есе баяу. Бұл Redboard процессоры USB қосылымын қалай басқаратындығына байланысты. Бұған жол бермеу үшін, USB TTL сериялық кабелін D0/D1 -ге қосыңыз және қадамдық қозғалтқышты басқару үшін аппараттық сериялық қосылымды пайдалану үшін#SERIAL Serial1 анықтаңыз. Serial1 пайдалану LATENCY: stepper: 345uS циклы: 2016uS -ке қарағанда 3 есе жылдамырақ және қадамдық және циклдік кідірістерге арналған UNO -ны береді.

Терминал бағдарламасы

Arduino сериялық мониторын қадамдық қозғалтқышты басқару үшін қолдану қиынырақ, себебі сіз cmd жолында таңбаны енгізуіңіз керек, содан кейін оны жіберу үшін Enter пернесін басыңыз. Тезірек жауап беретін құрал - бұл TTL кабелінің COM портына USB арқылы қосылған компьютерге арналған TeraTerm (немесе CoolTerm Mac) терминал терезесін ашу. Содан кейін сол терезеде cmd пернесін басу оны бірден жібереді. Enter пернесін басу бос жолды жібереді.

Қозғалтқыштың айналу жиілігін реттеу

Жоғарыда көрсетілгендей, Easy Drive 1/8 қадамдарға теңшелген, сондықтан 1000 қадам/сек қозғалтқышты 1000/8/200 қадамға/айналымға айналдырады = 0,625 айн/сек немесе максималды 37,5 айн/мин. Кірістерді MS1/MS2 күйіне өзгерту арқылы 1/8, ¼, ½ және толық қадамдар арасында ауысуға болады. Толық қадамдар үшін MS1 мен MS2 екеуін де GND -ге қосыңыз. Бұл 300 айн / мин дейін жылдамдыққа мүмкіндік береді. MS1/MS2 сәйкес параметрлерін таңдау қозғалтқыш пен басқарылатын бөлік арасындағы беріліс коэффициентін реттеуге мүмкіндік береді.

Аппараттық құралдарды қорғау

SpeedStepper кітапханасы қозғалтқыштың қозғалысына позиция шектеулерін орнатуға мүмкіндік береді, ал позицияны анықтау бағдарламалық қамтамасыз ету арқылы шығатын қадамдарды санау арқылы жүзеге асады. Егер қозғалтқыш тоқтап қалса, яғни момент келесі қадамда қозғалтқышты басқаруға жеткіліксіз болса, онда бағдарламалық қамтамасыз етудің жағдайы қозғалтқыштың позициясымен сәйкес келмейді. Содан кейін 'goHome' пәрменін қолданғанда, қозғалтқыш бастапқы күйден асып түседі. Аппараттық құралдың зақымдалуын болдырмау үшін мотордың қоректену көзін ажырату үшін шектеу қосқыштарын қатаң шектеулерге қою керек

Қозғалтқыштың ток шегін орнату

Алдымен оны потенциометрдің ең төменгі параметріне қойыңыз. яғни TP1 кернеуі минималды. Потенциометр нәзік, сондықтан потенциометрді механикалық аялдамалардан өткізбеңіз. Қозғалтқышты баяу тұрақты жылдамдықпен баяу қойыңыз, содан кейін потенциометрді қозғалтқыш қадамдар арасында секірмейінше немесе серпілмейінше баяу бұраңыз.

Қорытынды

Бұл жоба SpeedStepper кітапханасын практикалық жағдайда қалай қолдану керектігін көрсетеді. AccelStepper кітапханасы позицияны жақсы басқаруды қамтамасыз етсе де, Еуропада биологиялық үлгілерді жинау үшін мұзды балқытудың прототипі үшін жылдамдықты бақылау қажет болды, сондықтан AccelStepper кітапханасы жылдамдықты шектеу мен goHome функциясымен басқаруды қамтамасыз ету үшін қайта жазылды.

Ұсынылған: