Агуулгын хүснэгт:

28BYJ-48 Stepper Motor-ийн өнцгийн байрлалын хяналт
28BYJ-48 Stepper Motor-ийн өнцгийн байрлалын хяналт

Видео: 28BYJ-48 Stepper Motor-ийн өнцгийн байрлалын хяналт

Видео: 28BYJ-48 Stepper Motor-ийн өнцгийн байрлалын хяналт
Видео: Arduino Stepper Motor - 28byj-48 #steppermotor #arduino 2024, Долдугаар сарын
Anonim
28BYJ-48 Stepper Motor-ийн өнцгийн байрлалын хяналт
28BYJ-48 Stepper Motor-ийн өнцгийн байрлалын хяналт

Энэ бол миний сүүлийн жилийн диссертацийн төслийн хүрээнд ашиглахаар боловсруулсан 28BYJ-48 шатлалт моторын хяналтын схем юм. Би өмнө нь ийм зүйл хийж байгаагүй, олж мэдсэн зүйлээ байршуулах болно гэж бодож байсан. Энэ нь өөр хэн нэгэнд туслах болно гэж найдаж байна!

Энэхүү код нь үндсэндээ stepper моторт аналоги joystick -ийн өнцгийн байрлалыг "хуулбарлах" боломжийг олгодог, өөрөөр хэлбэл хэрэв та джойстикийг урагш түлхвэл мотор "хойд зүг" рүү чиглүүлдэг. джойстикийг баруун тийш түлхэхэд хөдөлгүүр ижил чиглэлд эргэх болно.

Үүнийг хэрэгжүүлэхийн тулд хэрэв та джойстикийг суллах, өөрөөр хэлбэл өнцгийн байрлалгүй бол мотор "гэрийн" чиглэл рүү буцах шаардлагатай болсон. Гэрийн чиглэл зүүн тийш харсан бөгөөд мотор (эсвэл гаралтын босоо аманд бэхэлсэн заагч / төхөөрөмжийг түрээслүүлнэ үү) асаахад энэ чиглэл рүү харсан байх ёстой.

Хангамж

Arduino Uno эсвэл үүнтэй төстэй

талх, холбогч утас сонгох (эрэгтэй, эрэгтэй, эрэгтэй эмэгтэй)

5V цахилгаан хангамж

Аналог джойстик модуль (хамгийн тохиромжтой нь товчлуурын товчлууртай тул "гэрийн" байрлалыг хялбархан амраадаг.

28BYJ-48 stepper мотор, ULN2003 stepper жолооч

Үзэг, цаас, блю-так (эсвэл моторт холбох өөр заагч төхөөрөмж!)

Алхам 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 кодыг бүрэн орууллаа. Гэхдээ энд холбогдох хэсгүүдийг тайлбарлахын тулд би чадах бүхнээ хийх болно.

Энэ кодын онол бол joystick -ийн эзэлж буй орон зайг график болгон хуваасан бөгөөд төвд 0, 0 байх ёстой. Гэсэн хэдий ч джойстик оролт нь төв хэсэгт (ойролцоогоор) 512 дээр байрладаг тул энэ хоёр функцийг даван туулахын тулд X ба Y тэнхлэгээс уншсан утгыг "тэглэх" болно. Таны хэрэглэж буй тэжээлийн хангамжаас хамааран ZeroX ба ZeroY функцуудын утгыг өөрчлөх шаардлагатай болж магадгүй бөгөөд ингэснээр таны joystick нь амарч байхдаа 0 гэсэн найдвартай уншилт өгөх болно.

X, Y утгыг уншихад эхлээд math.h номын сан дахь atan2 () функцийг ашиглан радиан болгон хөрвүүлдэг. Энэ функцийг тайлбарлах нь энэ зааварчилгааны хамрах хүрээнээс гадуур байгаа боловч үүнийг анхаарч үзээрэй - энэ бол геометрийн маш энгийн заль мэх юм!

Эцэст нь радаас илүү градусаар ажилладаг байсан бидний амьдралыг хөнгөвчлөхийн тулд atan2 () -ээр тооцоолсон рад -ийн утгыг градус болгон хөрвүүлдэг.

Циклийн дээд талд кодын жижиг хэсэг байгаа бөгөөд энэ нь "гэрийн" байршлыг шилжүүлэхийн тулд джойстик дээрх түр зуурын товчлуур дээр дарах боломжийг олгодог. Кодыг туршиж үзэхэд энэ нь үнэхээр хэрэгтэй байсан, гэхдээ зарим тохиолдолд энэ нь хэрхэн ашигтай болохыг би харж байгаа тул үүнийг орхисон.

Одоо кодын үндсэн хэсгийг авч үзье! Бид джойстик X, Y координатыг 10м -ийн хоцрогдолоор хоёр удаа тусгаарлаж, дараа нь ижил эсэхийг шалгаснаар эхэлдэг. Жойстик хааяа хааяа нэг уншилт гаргадаг болохыг олж мэдсэн бөгөөд энэ бага зэрэг саатал нь хөдөлгүүрийн эргэлтийг зогсооход хангалттай байсан юм.. Энэ нь бас санаатай оролтод саад болохгүй мэт санагдах хангалттай богино хугацаа юм.

Кодын үлдсэн хэсэг нь өөрөө тайлбартай бөгөөд би үүнийг баримтжуулахын тулд чадах бүхнээ хийсэн; IF -ийн хэд хэдэн мэдэгдэл нь одоогийн джойстикийн өнцгийг хөдөлгүүрийн өнцөгтэй харьцуулж, моторыг тэр өнцөгт шилжүүлнэ. 28BYJ-48 нь нэг градус тутамд 5.689 алхамтай байдаг тул шаардлагатай хөдөлгөөнийг энэ сондгой тоогоор үржүүлдэг.

Хамгийн их тайлбарыг шаарддаг кодын нэг хэсэг бол миний "боодолтой хэргийг" гэж нэрлэсэн зүйл юм. Тэр ч байтугай джойстик ба мотор ойролцоогоор. +175 °, тэгээд дараа нь джойстик -175 ° руу шилжсэн (джойстик дээр ердөө 10 градусын хөдөлгөөн, баруун хойд зүгээс баруун зүг рүү урагш), мотор буруу чиглэлд 350 ° -аар хөдөлнө! Үүнийг тайлбарлахын тулд тусгай хэргийг бичсэн болно.

Мотор ба джойстик нь эсрэг талын шинж тэмдэгтэй эсэхийг шалгах замаар эхэлнэ. Түүнчлэн джойстик ба моторын үнэмлэхүй (өөрөөр хэлбэл эерэг утгууд) нийлбэр 180 ° -аас дээш байгааг шалгадаг.

Хэрэв эдгээр мэдэгдэл хоёулаа үнэн бол функц нь хөдөлгүүрийг цагийн зүүний дагуу (хөдөлгүүрийн утга сөрөг) эсвэл цагийн зүүний эсрэг (хэрэв хөдөлгүүрийн утга эерэг байвал) хөдлөх шаардлагатай эсэхийг шалгадаг.

Хөдөлгүүрийн өнцөг ба джойстик өнцгийн үнэмлэхүй утгыг нэгтгэн 360 ° -аас хасахдаа зайг тодорхойлох боломжтой. Эцэст нь хөдөлгүүрийн өнцгийг (одоо джойстикийн өнцгийг тусгасан болно) шинэчилж байна.

Алхам 3: ДУУСГАА

Тиймээс хийх ёстой зүйл бол кодыг Arduino дээрээ байршуулж ажиллуулах явдал юм! Төсөл хэрхэн ажилладаг талаар сайн мэдэхийн тулд дээрх видеог үзнэ үү. Энэ нь камерын gimbals, робот гар болон бусад олон програмуудад ашигтай байх болно!

Хэрэв та кодыг ашиглаж байгаа бол надад мэдэгдээрэй, хэрэв та кодыг сайжруулах боломжтой зүйл олж харвал таны санал хүсэлтийг сонсоход таатай байна.

Зөвлөмж болгож буй: