Мазмуну:

Ардуиного багытталган Stepper Speed Control менюсу: 6 кадам
Ардуиного багытталган Stepper Speed Control менюсу: 6 кадам

Video: Ардуиного багытталган Stepper Speed Control менюсу: 6 кадам

Video: Ардуиного багытталган Stepper Speed Control менюсу: 6 кадам
Video: Leslie Kean on David Grusch (UFO Whistleblower): Non-Human Intelligence, Recovered UFOs, UAP, & more 2024, Июль
Anonim
Ардуино үчүн Stepper Speed Control менюсу иштейт
Ардуино үчүн Stepper Speed Control менюсу иштейт
Ардуино үчүн Stepper Speed Control менюсу иштейт
Ардуино үчүн Stepper Speed Control менюсу иштейт
Ардуино үчүн Stepper Speed Control менюсу иштейт
Ардуино үчүн Stepper Speed Control менюсу иштейт

Бул SpeedStepper китепканасы кадам моторунун ылдамдыгын көзөмөлдөөгө мүмкүндүк берүү үчүн AccelStepper китепканасынын кайра жазылышы болуп саналат. SpeedStepper китепканасы сизге белгиленген мотор ылдамдыгын өзгөртүүгө, андан кийин AccelStepper китепканасы менен бирдей алгоритмди колдонуп, жаңы ылдамдыкты ылдамдатууга/жайлатууга мүмкүндүк берет. SpeedStepper китепканасы плюс жана минус чегин жана "үй" абалын коюуга мүмкүнчүлүк берет. Үй абалына кайтуу үчүн goHome буйругу бар.

Чектөөлөр: SpeedStepper китепканасы багытты жана кадамды гана айдайт, андыктан степпердин моторун айдаш үчүн Easy Driver сыяктуу мотор драйверине туташуу керек. AccelStepper китепканасы, эгер керек болсо, бул китепканага көчүрүлө турган дагы айдоочулук мүмкүнчүлүктөрдү камсыз кылат.

Үч мисал эскиздер берилген, алардын ар бирин моторсуз же мотор айдоочусуз иштетсе болот. speedStepperPlot эскизи мисал ылдамдык командаларын жана goHome командасын чыгарат жана натыйжада ылдамдык менен позициянын сюжетин түзөт. SpeedStepperSetup эскизи мотордун үйүн жана чектерин орнотуу үчүн менюга негизделген орнотууну камсыз кылат, андан кийин моторду иштетип, ылдамдыкты өйдө -ылдый жөнгө салып, бүтүрүү үчүн goHome'ду камсыз кылат. SpeedStepperProfile эскизи ылдамдык профилин орнотуунун жана аткаруунун мисалын көрсөтөт.

AccelStepper китепканасы жакшы позицияны көзөмөлдөөнү камсыз кылса да, Европада биологиялык үлгүлөрдү чогултуу үчүн муздун эрүү зонтуна ылдамдыкты көзөмөлдөө керек болгон. Бул жерде мотордун ордуна салмагын колдонгон прототиптин мурунку версиясынын видеосу. Колдонуучу насостун ылдамдык профилин көзөмөлдөө каражатын сурагандан кийин Revision 1.1 ылдамдык профилин кошту.

Бул китепкана Arduino Uno жана Mega2560 менен иштейт, бирок прототип үчүн чоңураак эс / тез SparkFun Redboard Turbo процессору колдонулган.

Бул көрсөтмө Arduino үчүн Stepper Speed Control Libraryден онлайн режиминде да жеткиликтүү

Жабдуулар

Мисалдын эскиздерин иштетүү үчүн бир гана Arduino UNO же Mega2560 жана программалык китепканалар керек

Китепкананын отургучтарын тестирлөө үчүн Easy Driver менен 200 SparkFun Redboard Turbo колдонулган, 200 кадам/айлампа, 12V 350mA тепкичтүү мотор жана 12A DC 2A же андан чоңураак, мис. https://www.sparkfun.com/products/14934. USB Aдан Микро кабелге USB TTL Serial Cable үчүн Arduino IDE V1.8.9 жана аны иштетүү үчүн компьютер. SpeedStepper librarypfodParser китепканасы nonBlockingInput үчүн

1 -кадам: Китепкананын функциялары

SpeedStepper китепканасы китепкана тарабынан белгиленген чектер менен чектелген тепкич моторун иштетет. Китепкананын ар кандай методдору үчүн SpeedStepper.h файлын караңыз. Бул жерде алардын артындагы логиканын схемасы.

Баскычтын абалы кадамдардын санын (импульстар) эсептөө аркылуу көзөмөлдөнөт. Китепкана setPlusLimit (int32_t) жана setMinusLimit (int32_t) позицияларынын ортосундагы абалды чектейт. Плюс чеги ар дайым> = 0 жана минус чеги дайыма <= 0. Ишке киргенде мотордун позициясы 0 (үй) жана чектер абдан чоң +/- сандарга коюлган (болжол менен +/- 1e9 кадам). setAcceleration (float) кыймылдаткычтын ылдамдыгын өйдө же ылдый өзгөртүү ылдамдыгын аныктайт. Мотор плюс же минус чегине жакындап калганда, бул чекте токтоп калганга чейин бул ылдамдыкта басаңдайт. Ишке кирерде ылдамдануу 1,0 кадам/сек/сек деп белгиленет. Ылдамдануу жөндөөсү ар дайым +ve саны болуп саналат. SetSpeed (float) жөндөө белгиси мотор кыймылдай турган багытты белгилейт.

setSpeed (float) моторду учурдагы ылдамдыгынан ылдамдатуу / жайлатуу ылдамдыгын орнотот. SetSpeed (float) аркылуу орнотула турган ылдамдык чектелген, абсолюттук мааниде, орнотуулар, setMaxSpeed (калкып жүрүү), демейки 1000 кадам/сек жана setMinSpeed (калкып чыгуу), демейки 0.003 кадам/сек. Бул демейки шарттар китепкана setMaxSpeed () жана setMinSpeed () үчүн кабыл ала турган абсолюттук катуу коддуу ылдамдык чектери. Эгерде сиз максималдуу ылдамдыкты> 1000 кадам/сек орнотууну кааласаңыз, maxMaxSpeed (1000) каалаган максималдуу ылдамдыкка өзгөртүү үчүн SpeedStepper.cpp файлындагы биринчи сапты түзөтүшүңүз керек болот. Иш жүзүндө максималдуу ылдамдык китепкананын run () ыкмасына чалуулар ортосундагы убакыт менен да чектелген. 1000 кадам / сек үчүн run () методу жок дегенде 1мС деп аталышы керек. Төмөндөгү Кечигүү бөлүмүн караңыз.

Ылдамдыкты минималдуу ылдамдыкка коюуга аракет кылуу мотордун токтоп калышына алып келет. Бул жөндөгүчтөрдүн ар биринде тиешелүү гетер бар, SpeedStepper.h файлын караңыз. Ылдамдык үчүн getSetSpeed () setSpeed () аркылуу койгон ылдамдыгыңызды кайтарат, ал эми getSpeed () учурдагы мотор ылдамдыгын кайтарат, ал ылдамдыкты ылдамдатууга/басаңдатууга жараша өзгөрөт. Эгерде мотор сиз ойлогон багытта бара жатпаса, анда invertDirectionLogic () деп чалып, мотордун кыймылын +жана ылдамдыкка алмаштыра аласыз.

getCurrentPosition () "home" (0) менен салыштырганда учурдагы мотор абалын кайтарат. Сиз учурдагы мотордун абалын setCurrentPosition (int32_t) жокко чыгара аласыз. Жаңы позиция плюс/минус чектеринде болуу менен чектелет.

Башында мотор 0 позициясында токтойт. SetSpeed (50.0) чалуусу +кадамында максималдуу 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 → speedStepperPlot мисалынын эскизин (эгер зарыл болсо, IDEди өчүрүп күйгүзүңүз). Бул эскиз Serial менен иштөө үчүн конфигурацияланган, мис. UNO жана Mega ж.б. SparkFun Redboard Turboдо иштөө үчүн төмөндө караңыз.

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

Эскизди тактага жүктөңүз, андан кийин Аспаптар → Сериалдык Плоттер 115200 bodда ачылып, ылдамдыктын (КЫЗЫЛ) жана позициясынын (КӨК) сюжетин көрсөтөт Плюс чеги 360ка коюлган, бул ылдамдыкты болжол менен 100 чекиттен нөлгө чейин төмөндөтөт. x огунда. Минус чеги -510. Позиция ~ -390да токтойт, анткени ылдамдык 0.0га чейин талап кылынган. X огунда 380 чекитинде, goHome cmd баскычын нөлгө кайтарат.

Бул speedStepperPlot эскизи millisDelaysти колдонуп, ар кандай ылдамдык менен ылдамдыкты алмаштырат. Көп учурларда SpeedStepperProfile колдонуу, кийинки мисалда болгондой, жөнөкөй.

3 -кадам: SpeedStepperProfile мисалын моторсуз иштетүү

SpeedStepperProfile мисалын моторсуз иштетүү
SpeedStepperProfile мисалын моторсуз иштетүү

Мисалдарды ачуу → SpeedStepper → speedStepperPlot мисалынын эскизи, бул эскиз Arduino Serial Plotterди колдонуу менен жогорудагы сюжетти чыгарат жана мисалы, насосту иштетип жаткан болсо, белгиленген ылдамдык профилин иштетүүнүн мисалы болуп саналат.

Stepper Speed Profiles SpeedStepper.h файлында аныкталган SpeedProfileStruct массивинен турат.

структурасы SpeedProfileStruct {

сүзүү ылдамдыгы; // бул кадамдын аягындагы максаттуу ылдамдык кол коюлбаган узак deltaTms; // учурдагы ылдамдыктан (бул кадамдын башында) максаттуу ылдамдыкка чейин ылдамдануу убактысы};

Ар бир кадам үчүн максаттуу ылдамдыкты камтыган SpeedProfileStruct массивин аныктаңыз, deltaTms, мСте, мурунку максаттуу ылдамдыктан ошол ылдамдыкка жетүү үчүн. Эгерде 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 китепканасы loop () иштебей туруп, колдонуучунун киришин жана менюсун чыгаруу үчүн колдонулган NonBlockingInput жана pfodBufferedStream класстарын камсыздайт.

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

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

SETUP pos: 0 sp: 0.00 +Lim: 500000 -Lim: -500 LATENCY: stepper: 492uS loop: 0uS p -set Home l -set limits h -goHome r -run>

Эскиз чуркаганда, степпердин учурдагы абалы "үй" (0) позициясы катары кабыл алынат. Степперди чыныгы "үй" абалына кайра жайгаштыруу керек болсо, SET HOME менюсун көрсөтүү үчүн p буйругун киргизиңиз

Үйдү орнотуу pos: 0 sp: 0.00 + Lim: 1073741808 -Lim: -1073741808 LATENCY: stepper: 752uS loop: 3852uS x -setHome here and exit + -Forward - -Reverse s -swap Forward/Reverse -hardStop >

Көрүнүп тургандай, эскизде коддолгон чектөөлөр алынып салынды, андыктан сиз тепкичти каалаган жерге кайра жайгаштыра аласыз. Сиз физикалык чектен өтпөңүз же бир нерсени сындырып алышыңыз керек.

Степперди алдыга жылдырууну баштоо үчүн + cmd колдонуңуз, эгер сиз аны туура эмес багытта жылып баратканын байкасаңыз, аны токтотуу үчүн буйрук эмес же бош сызыкты киргизиңиз, андан кийин Алга багытын алмаштыруу үчүн scommand колдонуңуз. Кийинки иштөө үчүн муну оңдоо үчүн, эскизди invertDirectionLogic () чакыруусун орнотууга жаңыртуу керек.

Степперди туура нөлгө жайгаштыруу үчүн + / - cmds колдонуңуз. Мотор жай иштей баштайт, андан кийин ылдамдыгы жогорулайт, аны токтотуу үчүн жөн эле бош линияны колдонуңуз. Бул үчүн максималдуу ылдамдык жана чектер менюсу setupMenus.cppтин үстүндөгү MAX_SETUP_SPEED тарабынан белгиленет.

Мотор "үй" позициясына жайгашкандан кийин, x папкасын колдонуп, учурдагы абалды 0 кылып, SETUP менюсуна кайтыңыз.

Эгерде сиз чектөөнү орнотушуңуз керек болсо, адатта баштапкы орнотууда гана, l cmd менен SET LIMITS менюсун колдонуңуз.

SET LIMITS pos: 0 sp: 0.00 + Lim: 1073741808 -Lim: -1073741808 LATENCY: stepper: 944uS loop: 5796uS l -setLimit here + -Forward - -Reverse h -goHome x -exit -hardStop>

Плюс чегине карай алдыга жылуу үчүн + cmd колдонуңуз, андан кийин плюс чеги катары коюу үчүн l cmd колдонуңуз. H буйругун андан кийин 0ге кайтуу үчүн колдонсо болот жана моторду минус чегиндеги абалга баш ийсе, cmd менен жылыш үчүн. Кайра минус чекти коюу үчүн l cmd колдонуңуз. Плюс жана минус чектеринин позициясына көңүл буруңуз жана setup () методунун setPlusLimit жана setMinusLimit билдирүүлөрүн ушул маанилер менен жаңыртыңыз.

Чектөөлөр коюлганда, x cmdди колдонуп, SETUP менюсунан кайтыңыз, андан кийин RUN менюсун ачуу үчүн r cmd колдоно аласыз.

RUN MENU pos: 0 sp: 3.31 + Lim: 500000 -Lim: -500 LATENCY: stepper: 944uS loop: 5796uS + -Speed up - -Speed down h -goHome. -hardStop-тоңдуруу Speed> +pos: 4 sp: 9.49 +Lim: 500000 -Lim: -500 LATENCY: step: 792uS loop: 5664uS pos: 42 sp: 29.15 +Lim: 500000 -Lim: -500 LATENCY: stepper: 792uS loop: 5664uS pos: 120 sp: 49.09 +Lim: 500000 -Lim: -500 LATENCY: stepper: 792uS loop: 5664uS pos: 238 sp: 69.06 +Lim: 500000 -Lim: -500 LATENCY: step: 792uS loop: 5664uS

+ Cmd алдыга карай ылдамдай баштайт жана 2 секунд сайын абалын жана ылдамдыгын басып чыгарат. Мотор сиз каалаган ылдамдыкка жеткенде, ылдамдатууну башка ачкыч (же бош киргизүү) менен токтото аласыз. Токтотуу үчүн - cmd аркылуу ылдамдыкты азайта аласыз. Эгерде токтотулса - cmd тескерисинче ылдамдайт.

Бул RUN менюсу сиздин долбоорду кол менен башкарууну камсыз кылат. Авто көзөмөлдөө үчүн башка сенсорлорду кошуу керек болот.

5 -кадам: Кечигүү

Степпер моторун башкаруу ар бир кадамга буйрук берген программадан көз каранды. Орнотулган ылдамдыкты сактоо үчүн, эскизиңиз stepper.run () ыкмасын чакырып, кийинки кадамды учурдагы ылдамдык үчүн керектүү убакта баштоо үчүн жетиштүү болот. Сенсорлор аркылуу көзөмөлдөө үчүн сиз жаңы өлчөөлөрдү тез арада иштете билишиңиз керек. Позицияны/ылдамдыгын басып чыгаруу эскиздин жетишерлик тез экендигин текшерүү үчүн эки LATENCY өлчөөсүн камтыйт.

Stepper кечигүүсү (pfodBufferedStream)

Stepper кечигүүсү stepper.run () методуна кийинки чалуулардын ортосундагы максималдуу кечигүүнү өлчөйт. Step моторун секундасына 1000 кадам менен иштетүү үчүн, кадамдын кечигүүсү 1000uSтен (1mS) азыраак болушу керек. Бул эскиздин биринчи версиясы көп миллисекунддарга созулган. Бул кошумча чалууларды жеңүү үчүн код аркылуу кошулган runStepper () ыкмасына (stepper.run () деп аталат). Бул көйгөйдү толугу менен чече алган жок, анткени меню жана чыгаруу басма сөздөрү кичинекей Serial Tx буфери толгондон кийин эскизди тосуп коюшту. Бул тоскоолдукту болтурбоо үчүн, pfodParser китепканасынан pfodBufferedStream, 360 байттык басып чыгаруу буферин кошуу үчүн колдонулган, бул басып чыгаруу билдирүүлөрү тез жазыла турган. Андан кийин pfodBufferedStream бул учурда байттарды 115200 -жылы көрсөтүлгөн байдын ылдамдыгына чыгарат. pfodBufferedStream буфер толуп калганда же бөгөттөө же жөн эле толуп кеткен тамгаларды түшүрүү мүмкүнчүлүгүн тандап алышы керек. Бул жерде эскиз бөгөттөлбөшү үчүн, буфер толуп калганда, кошумча тамгаларды түшүрүү белгиленген, ал сериалдын тамгаларды жөнөтүшүн күтөт.

Loop кечигүүсү (NonBlockingInput)

Циклдин кечигүүсү loop () усулуна кийинки чалуулардын ортосундагы максималдуу кечигүүнү өлчөйт. Бул сенсордун жаңы өлчөөлөрүн иштетүү жана мотордун ылдамдыгын тууралоо жөндөмдүүлүгүн аныктайт. Канчалык ылдам болушу керек, сиз көзөмөлдөөгө аракет кылып жатканыңыздан көз каранды.

Басып чыгаруу боюнча кечигүүлөр жогорудагы pfodBufferedStream жардамы менен жок кылынды, бирок колдонуучунун киргизүүсүн иштетүү үчүн, киргизүүнүн биринчи символын алып, саптын калган бөлүгүн этибарга албоо керек. PfodParer китепканасындагы NonBlockingInput классы readInput () аркылуу кирүү болгондо нөлдүк эмес чарды кайтаруу үчүн колдонулат жана clearInput () аркылуу төмөнкү символдорду тазалоо жана жок кылуу үчүн колдонулат, циклды бөгөбөй 10мС үчүн эч кандай символ алынбайт. ()

Албетте, циклдин кечигүүсү сенсорлорду окуу жана жаңы коюлган ылдамдыкты эсептөө үчүн кошумча код менен көбөйтүлөт. Көптөгөн сенсордук китепканалар өлчөөнү баштоо менен натыйжаны алуу ортосундагы кечигүүнү (..) колдонуунун түрүн алышат. Бул китепканаларды millisDelayди колдонуу үчүн кайра жазышыңыз керек, ылайыктуу тоскоолдуксуз кечигүүдөн кийин өлчөөнү алуу үчүн.

6 -кадам: SpeedStepperSetupту Step Motor жана SparkFun Redboard Turbo менен иштетүү

StepStepperSetup бир Step Motor жана SparkFun Redboard Turbo менен иштейт
StepStepperSetup бир Step Motor жана SparkFun Redboard Turbo менен иштейт
StepStepperSetup бир Step Motor жана SparkFun Redboard Turbo менен иштейт
StepStepperSetup бир Step Motor жана SparkFun Redboard Turbo менен иштейт

SpeedStepperSetup эскизин чындап иштетүү үчүн сизге тепкич мотору, айдоочу жана электр энергиясы керек болот жана бул мисалда SparkFun Redboard Turbo.

Жогорудагы электр схемасы (pdf версиясы) байланыштарды көрсөтөт. SpeedStepperSetup эскизинде SERIALдин аныктамасын #SERIAL Serial1 деп аныктаңыз

Stepper мотору, электр менен камсыздоо, айдоочу жана коргоо

Степпердик моторлордун көптөгөн түрлөрү жана өлчөмдөрү бар. Бул жерде сыноо үчүн эки катушка 12V 350mA тепкич мотору колдонулат. Бул тепкичти иштетүү үчүн сизге 12В же андан көп жана 350мАдан чоң электр энергиясы керек.

Бул китепкана бир гана багытты жана кадамдын чыгышын камсыз кылат, андыктан сизге stepper мотору менен иштөө үчүн драйвер керек. Оңой айдоочу жана чоң оңой драйвер кыймылдаткычтын тогун көзөмөлдөйт, андыктан сиз жогорку чыңалуудагы электр энергиясын коопсуз колдоно аласыз, мисалы, 3.3В мотор үчүн 6В камсыздоону колдонуу. Easy Driver 150mA/coil жана 700mA/coil ортосунда камсыздай алат. Жогорку агымдар үчүн Big Easy Driver бир катушкага 2А чейин жеткире алат. Easy Drive баракчасынын ылдый жагындагы FAQтарды окуңуз.

Бул мисалдар D6 жана D7ди Step and Direction жыйынтыгы катары колдонушат. Сиз эскиздин чокусуна жакын STEP_PIN жана DIR_PIN орнотууларын өзгөртүү аркылуу чыгуучу пиндерди каалаган санариптик чыгууга өзгөртө аласыз.

Sparkfun Redboard Turbo программалоо

Redboard Turbo программалоо көйгөйлүү. Эгерде ал программалай албаса, адегенде баштапкы абалга келтирүү баскычын бир жолу басыңыз жана Arduino Tools менюсунда COM портун кайра тандап, кайра аракет кылыңыз. Эгер бул иштебей калса, баштапкы абалга келтирүү баскычын эки жолу басып, кайра аракет кылыңыз.

Оңой драйверди иштетүү

Эки катушка кыймылдаткычта 4 зым бар. Мультиметрди колдонуп, ар бир катушка туташкан жуптарды табыңыз, андан кийин бир катушканы Easy Driver A терминалдарына, экинчисин B терминалына өткөрүңүз. Сиз аларды кайсы тарапка зымдап жатканыңыздын мааниси жок, анткени сиз кыймылдын багытын алмаштыруу үчүн орнотуу менюсунда s cmd колдоно аласыз.

Мотордун электр энергиясы 3+ 5V шилтемеси менен тактанын логикалык деңгээлин M+ жана GNDSetке туташтырылган. Шилтемени SparkFun Redboard Turbo сыяктуу 3.3V микропроцессордук чыгымдар үчүн кыска кылыңыз (эгер аны ачык калтырсаңыз 5V санариптик сигналдарга ылайыктуу, мисалы, UNO, Mega) GND, STEP, DIR казыктарын GND микропроцессоруна туташтырыңыз. dir чыгаруу казыктары. Моторду айдаш үчүн башка байланыштын кереги жок.

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

SpeedStepperSetup эскизин Uno/Megaдан Redboard Turboго жылдырууда, сиз жөн эле #define SERIAL Serialди #define SERIAL SerialUSB менен алмаштырып, Redboard Turbo usb сериялык туташуусуна ылайыкташтырсаңыз болот, бирок натыйжада кадамдын күтүү убактысы болжол менен 10mS деп табасыз. Бул БУУ үчүн 10 эсе жай. Бул Redboard CPUнын USB туташуусун кантип башкарганына байланыштуу. Бул үчүн, TTL сериялык кабелине USB'ди D0/D1ге туташтырыңыз жана кадам моторун башкаруу үчүн аппараттык сериялык туташууну колдонуу үчүн SERIAL Serial1 аныктаңыз. Serial1ди колдонуу LATENCY берет: stepper: 345uS loop: 2016uS, бул 3 эсе ылдамыраак, БУУнун кадамы жана циклинин кечигүүсү үчүн.

Терминал программасы

Arduino Serial Monitorду тепкич моторун башкаруу үчүн колдонуу бир аз кыйыныраак, анткени сиз cmd линиясына char киргизип, анан аны жөнөтүү үчүн Enter баскычын басыңыз. Тезирээк жооп берүүчү ыкма - бул TTL кабелинин COM портуна USB менен туташкан терминалдык терезени, PC үчүн TeraTerm (же CoolTerm Mac) ачуу. Анан ошол терезеде cmd баскычын басуу аны дароо жөнөтөт. Enter басуу менен бош сапты жөн эле жөнөтүңүз.

Мотор ылдамдыгынын диапазонун орнотуу

Жогоруда айтылгандай, Easy Drive 1/8 -кадамдар үчүн конфигурацияланган, ошондуктан 1000 кадам/сек моторду 1000/8/200 кадам/революция = 0.625 сек/сек же 37.5 rpm максимумга айландырат. Кириштерди MS1/MS2ге өзгөртүү менен сиз 1/8, ¼, ½ жана толук кадамдарды алмаштыра аласыз. Толук кадамдар үчүн MS1 менен MS2ди GNDге туташтырыңыз. Бул 300 айлануу ылдамдыгына чейин мүмкүндүк берет. Тийиштүү MS1/MS2 орнотууларын тандоо мотор менен башкарылуучу бөлүктүн ортосундагы орнотулган тиш катышын тууралоого мүмкүндүк берет.

Аппараттык коргоо

SpeedStepper китепканасы мотор кыймылына позициянын чектөөлөрүн коюуга мүмкүндүк берсе да, позицияны аныктоо программалык камсыздоонун кадамдарын эсептөө менен жүргүзүлөт. Эгерде мотор токтоп калса, башкача айтканда момент моторду кийинки кадамга жеткирүү үчүн жетишсиз болсо, анда программалык камсыздоонун абалы мотордун позициясына шайкеш келбейт. Анан "goHome" буйругун колдонгондо, мотор үй позициясын ашып кетет. Аппараттын бузулушуна жол бербөө үчүн, мотордун электр менен камсыздалышын ажыратуу үчүн катуу чектердеги чектөө которгучтарын орнотушуңуз керек

Мотордун ток чегин коюу

Биринчиден, аны потенциометрдин эң төмөнкү абалына коюңуз. башкача айтканда TP1деги чыңалуу минималдуу. Потенциометр назик, ошондуктан потенциометрди механикалык токтоолордун жанынан мажбурлабаңыз. Моторду жай ылдамдыкта ылдамдык менен айдап коюңуз, андан кийин потенциометрди акырын буруңуз, мотор кадамдардын ортосунда секирип кетпейт.

Жыйынтык

Бул долбоор SpeedStepper китепканасын практикалык колдонууда кантип колдонууну көрсөтөт. AccelStepper китепканасы жакшы позицияны көзөмөлдөөнү камсыз кылса да, Европада биологиялык үлгүлөрдү чогултуу үчүн муздун эришинин прототипине ылдамдыкты контролдоо керек болгон, ошондуктан AccelStepper китепканасы ылдамдыкты көзөмөлдөө үчүн кайра жазылган жана goHome функциясы.

Сунушталууда: