Мазмуну:

28BYJ-48 Stepper Motor бурчтук позициялык көзөмөлү Arduino жана аналогдук джойстик менен: 3 кадам
28BYJ-48 Stepper Motor бурчтук позициялык көзөмөлү Arduino жана аналогдук джойстик менен: 3 кадам

Video: 28BYJ-48 Stepper Motor бурчтук позициялык көзөмөлү Arduino жана аналогдук джойстик менен: 3 кадам

Video: 28BYJ-48 Stepper Motor бурчтук позициялык көзөмөлү Arduino жана аналогдук джойстик менен: 3 кадам
Video: ESPSTP-2 Отправить шаговый двигатель через WiFi с ESP32 на любой угол 2024, Ноябрь
Anonim
28BYJ-48 Stepper Motor бурчтук позициялык көзөмөлү Arduino жана аналогдук джойстик менен
28BYJ-48 Stepper Motor бурчтук позициялык көзөмөлү Arduino жана аналогдук джойстик менен

Бул менин акыркы жылдык диссертациялык долбоорумдун бир бөлүгү катары колдонуу үчүн иштеп чыккан 28BYJ-48 тепкич моторун башкаруу схемасы. Мен муну мурда көргөн эмесмин, ошондуктан мен тапканымды жүктөйм деп ойлогом. Бул башка бирөөгө жардам берет деп үмүттөнөм!

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

Менин ишке ашыруу үчүн мен джойстикти кое берүү керектигин, башкача айтканда бурчтук позициясы жок болсо, мотор "үй" багытына кайтып келүүсүн талап кылдым. Үйдүн багыты чыгышка карайт, жана мотор (же сиз чыгаруучу валга тиркелген кандай көрсөткүчтү / түзмөктү ижарага алсаңыз да) күйгүзүлгөндө ушул тарапка каралышы керек.

Жабдуулар

Arduino Uno же окшош

нан жана секирүүчү зымдарды тандоо (эркектен эркекке, эркектен ургаачысына)

5V электр менен камсыздоо

Аналогдук джойстик модулу (идеалдуу түрдө баскыч баскычы бар, бул "үй" абалын жеңил эс алууну камсыз кылат

28BYJ-48 кадам мотору жана ULN2003 тепкич айдоочусу

Калем, кагаз жана блю-так (же моторго тиркөө үчүн башка көрсөткүч түзүлүш!)

1 -кадам: 1 -кадам: Орнотуу

Stepper моторун stepper айдоочусуна туташтырыңыз жана пиндерди төмөнкүдөй туташтырыңыз:

IN1 - Arduino пин 8

IN2 - Arduino пин 9

IN3 - Arduino пин 10

IN4 - Arduino пин 11

5V электр булагыңызды нан тактаңыздагы рельске туташтырыңыз жана ULN2003 5v кириштерин жеткирүү рельсине туташтырыңыз. жер темир жолун сиздин Arduino түзмөгүңүз менен жерге туташтырыңыз.

джойстик үчүн төмөнкүдөй туташтырыңыз:

Алмаштыруучу пин - Arduino pin 2

X огу - Arduino A0 (аналоги 0де)

Y огу - Arduino A1

+5V - Arduino 5V чыгаруу

GND - Arduino GND

Акыр -аягы, өзүңүздүн табакчаңыздын негизин башка Arduino GND пинге туташтырыңыз

2 -кадам: 2 -кадам: Кодексти түшүндүрүү

Мен жүктөп алуу жана колдонуу үчүн толук Arduino кодун киргиздим. Бирок бул жерде тиешелүү бөлүктөрдү түшүндүрүү үчүн колумдан келгендин баарын кылам.

Бул коддун теориясында джойстик ээлеген мейкиндик графага бөлүнүп, борборунда 0, 0 турат. бирок джойстиктин кириштери борбордо (болжол менен) 512де турат, андыктан бул эки функция X жана Y огунан окулган маанини "нөлгө" келтирүү үчүн колдонулат. Сиз колдонгон электр энергиясына жараша, ZeroX жана ZeroY функцияларындагы баалуулуктарды өзгөртүү керек болушу мүмкүн, ошондо сиздин джойстик эс алуу учурунда 0 ишенимдүү көрсөткүчтү берет.

X, Y баалуулуктары окулганда, алар биринчи math.h китепканасындагы atan2 () функциясын колдонуп радиандарга айландырылат. Бул функцияны түшүндүрүү бул көрсөтмө берүүнүн чегинен тышкары, бирок аны карап көрүңүз - бул геометриянын өтө жөнөкөй фокусу!

Акыр -аягы, радалардын эмес, градустарда иштегендердин жашоосун жеңилдетүү үчүн atan2 () менен эсептелген раддын мааниси градуска айландырылат.

Укуруктун жогору жагында "үйдүн" жайгашкан жерин жылдыруу үчүн джойстиктин убактылуу баскычын басууга мүмкүндүк берген кичинекей код үзүндүсү бар. Бул кодду сынап жатканда абдан пайдалуу болду, бирок мен аны кээ бир учурларда кандайча пайдалуу болорун көрүп тургандай калтырдым.

Эми коддун негизги бөлүгүнө өтүңүз! Биз джойстикти окуу менен баштайбыз, Y координаттары эки жолу 10 м кечигүү менен бөлүнүп, анан алардын бирдей экендигин текшерүү менен - мен джойстик анда -санда окууларды чыгарарын жана бул кичине кечигүү мотордун бурулушун токтотуу үчүн жетиштүү болгонун көрдүм.. Бул ошондой эле жетиштүү кыска кечигүү, ал атайылап киргизүүгө тоскоолдук кылбайт окшойт.

Коддун калган бөлүгү түшүнүктүү жана мен аны документтештирүү үчүн колумдан келгендин баарын кылдым; IF билдирүүлөрүнүн сериясы учурдагы джойстиктин бурчун мотордун бурчуна салыштырып, моторду ошол бурчка жылдырат. 28BYJ-48дин 5.689 даражасы бар, ошондуктан биз керектүү кыймылды ушул кызыктай санга көбөйтүп жатабыз!

Эң көп түшүндүрүүнү талап кылган коддун бир бөлүгү - бул мен "оролгон ишти" деп атадым. Ал тургай, джойстик & мотор болгон ж. +175 °, жана джойстик кийин -175 ° (джойстикте болгону 10 ° кыймыл, батыштын түндүгүнөн батыштын түштүгүнө чейин) кыймылга келди, мотор туура эмес багытта 350 ° жылат! бул үчүн атайын иш жазылган.

Каптоо иши мотор менен джойстиктин карама -каршы белгилери бар экенин текшерүүдөн башталат, башкача айтканда мотор оң жана джойстик терс, же тескерисинче. Ошондой эле джойстиктин жана мотордун абсолюттук (башкача айтканда оң маанилердин) суммасы 180 ° жогору экенин текшерет.

Эгерде бул эки билдирүү тең чын болсо, анда функция мотордун саат жебеси боюнча (кыймылдаткычтын мааниси терс) же сааттын жебесине каршы (эгер кыймылдаткычтын мааниси оң болсо) жылышы керекпи же жокпу текшерет.

Мотор бурчунун жана джойстиктин бурчунун абсолюттук баалуулуктары жыйынтыкталып, 360 ° дан кемитиле турган аралыкты аныктайт. Акырында, мотор бурчу (азыр джойстиктин бурчун чагылдырат) ушундай жаңыртылат.

3 -кадам: БҮТКӨН

Ошентип, кодду Arduinoго жүктөп, иштетүү гана калды! Долбоордун кандай иштээрин жакшы түшүнүү үчүн жогорудагы видеону караңыз. Бул камера гимбалдары, роботтук курал жана башка көптөгөн тиркемелер үчүн пайдалуу болмок!

Эгерде сиз кодду колдонсоңуз, мага кабарлаңыз, эгерде сиз кодду жакшыртууга мүмкүн болгон жерди көрсөңүз, мен сиздин пикириңизди уккум келет.

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