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

AVR микропроцессор бүхий Stepper мотор жолоодох: 8 алхам
AVR микропроцессор бүхий Stepper мотор жолоодох: 8 алхам

Видео: AVR микропроцессор бүхий Stepper мотор жолоодох: 8 алхам

Видео: AVR микропроцессор бүхий Stepper мотор жолоодох: 8 алхам
Видео: Программирование МК AVR. Урок 18. Подключаем шаговый двигатель. Часть 3 2024, Долдугаар сарын
Anonim
AVR микропроцессор ашиглан stepper мотор жолоодоорой
AVR микропроцессор ашиглан stepper мотор жолоодоорой

Хэвлэгч/дискний хөтөч/гэх мэт хог хаягдал хөдөлгүүртэй байсан уу?

Зарим нь ohmeter ашиглан шалгаж, дараа нь микропроцессор дээрээ драйверын энгийн кодыг оруулаад та загварлаг байдлаар алхах болно.

Алхам 1: Steppers -тэй танилцах

Steppers -тэй танилцах
Steppers -тэй танилцах
Steppers -тэй танилцах
Steppers -тэй танилцах

Үндсэндээ та бүх жижиг утаснууд хаашаа явж байгааг олж мэдэх хэрэгтэй болно.

Эхний алхам бол нэг туйлт эсвэл хоёр туйлт мотор эсэхийг тодорхойлох явдал юм. Жонс дээр Steppers -ийг илүү гүнзгий судалж үзээрэй, дараа нь Иан Харрисын сайт дээрээс үл мэдэгдэх моторыг олох энгийн аргыг олж мэдээрэй. Бага зэрэг уншаад надад хямд үнээр худалдаж авсан энэхүү моторыг танилцуулаарай. (Тэд яг одоо 0.99 доллараар зарагдаж байна. Тэд жижиг хэмжээтэй, харьцангуй хөнгөн боловч эргүүлэх момент тийм ч их байдаггүй. Энэ нь юунд сайн болохыг одоогоор мэдэхгүй байна.)

Алхам 2: Нийтлэг үндэслэлийг олох

Нийтлэг үндэслэлийг олох
Нийтлэг үндэслэлийг олох
Нийтлэг үндэслэлийг олох
Нийтлэг үндэслэлийг олох

Тиймээс танд таван (эсвэл дөрөв, зургаа) утас байна. Таны мотор хоёр талтай байх бөгөөд утас бүр аль талдаа хамааралтай болохыг хараад л мэдэх боломжтой.

Хэрэв та зөвхөн дөрвөн утас харж байгаа бол азтай байна - энэ бол хоёр туйлт мотор юм. Таны хийх ёстой зүйл бол аль хоёр хос утас хоорондоо нийлж байгааг олж мэдэх явдал юм. Хэрэв та нэг туйлт мотортой, эсвэл 4 -өөс дээш утастай бол ohmeter -ээ таслах шаардлагатай болно. Таны хайж буй зүйл бол хагас бүрийн нийтлэг (газардуулсан) утас юм. Хоёр туйлт моторт аль нь газардуулагдсан болохыг та хэлж чадна, учир нь энэ нь туйлуудын аль алинд нь эсэргүүцэх чадвартай байдаг. Утаснуудаа утсандаа холбож, эсэргүүцлийг нь тэмдэглэсэн (эсвэл огт холбогдоогүй бол) миний тэмдэглэлийг зурагт үзүүлэв. Цагаан нь доод трио б/с -ийн үндэс суурь бөгөөд улаан эсвэл цэнхэр өнгийн бие биентэйгээ харьцуулж үзэхэд хагас эсэргүүцэлтэй байгааг та харж байна. (Энэ мотор нь хачирхалтай бөгөөд дээд соронзны ороомог дээр төвийн цорго байхгүй. Энэ нь хагас туйлт, хагас туйлт юм шиг байна. Хар-шар үед Улаан-Цагаан-Цэнхэр ороомог дотор эргэлдэж байгааг мэдрэхийн тулд үүнийг ашиглаж болно. ороомог жолоодож байна.)

Алхам 3: Алхам хийх дарааллыг олж мэд

Алхах дарааллыг тодорхойл
Алхах дарааллыг тодорхойл

Би энэ моторыг хоёр туйлт хөдөлгүүрээр жолоодох гэж байсан тул Цагаан газрын утсыг үл тоомсорлож байна. Надад санаа зовох дөрвөн утас л байна.

Та нэг туйлт мотороо хоёр туйлт байдлаар ажиллуулахыг хүсч магадгүй юм, учир нь энэ нь бүх ороомогыг ороомог бүрийн хоёр талыг ээлжлэн солихын оронд хоёр үе шаттайгаар ашигладаг. Илүү их ороомог = илүү их эргэлт. Хосоор гүйдэл гүйлгэж (таны сонгосон туйлыг тэмдэглээд), дараа нь нөгөө хосоор гүйдлийг гүйлгэнэ. Хоёрдахь хосыг холбохдоо мотор ямар чиглэлд эргэхийг анхаарч үзээрэй. Үүнийг бичээрэй. Одоо таны сонгосон эхний хосын туйлыг өөрчил. Дараа нь хоёр дахь хосыг дахин холбоно уу. Чиглэлийг анхаарч үзээрэй. Эндээс та моторыг аль ч чиглэлд эргүүлэх дарааллыг олж мэдэх боломжтой байх ёстой. Миний жишээн дээр хоёулаа цагийн зүүний эсрэг эргэж дууссан тул миний сонгож авсан дарааллаар дараалан алхах нь CCW моторыг алхам алхамаар хийх болно.

Алхам 4: Моторыг туршилтын хөтөч болгох

Туршилтын хөтөч болгон мотор авах
Туршилтын хөтөч болгон мотор авах

Хэрэв та микропроцессорын програмчлалд хараахан бэлтгэгдээгүй байгаа бол Ghetto Development Kit эсвэл PIC -ийн янз бүрийн програмистуудаас муу зүйл хийх боломжтой. Утсыг микропрокт руу шууд холбоод дараах кодыг ашиглан шатаана уу.

/* Жижиг stepper моторыг жолоодох замаар тоглох. */

/ * Хойшлуулах функцийг оруулах */ #define F_CPU 1000000UL #include/ * ATTiny2313 -ийн зүсэлтүүдийг тогтоох *// * Цагийн зүүний дагуу захиалах */ #define BLUE _BV (PB0) #define BLACK _BV (PB1) #define RED _BV (PB2) #define YELLOW _BV (PB3) #тодорхойлох DELAY 200 / * миллисекунд алхмуудын хооронд * / int main (void) {DDRB = 0xff; / * Бүх B зүү дээр гаралтыг идэвхжүүлэх */ PORTB = 0x00; / * Бүгдийг нь 0v */ болгож тохируулна уу (1) {/ * энд үндсэн давталт */ PORTB = BLUE; _хойшлох_хугацаа (DELAY); PORTB = ХАР; _хойшлох_хугацаа (DELAY); PORTB = RED; _хойшлох_хугацаа (DELAY); ПОРТБ = ШАР; _хойшлох_хугацаа (DELAY); }} Энэ код хэр энгийн вэ? Үнэхээр энгийн. Ганцхан гоё тодорхойлолт гаргахад л би утаснуудаа зүү нэрээр нь бус өнгөөр нь нэрлээд дараа нь хооронд нь тохируулах боломжтой хоцролттой дарааллаар нь асаадаг. Эхлээд би алхамуудын хооронд хагас секундын хоцролтыг сонгосон. Үр дүнгийн талаар богино видеог үзнэ үү. Хэрэв та үнэхээр тоглоомондоо оролцож байгаа бол моторын нэг алхамтай өнцгийн нарийвчлалыг олж мэдэхийн тулд нэг мөчлөгийн хэдэн алхамыг тоол. (Өө тийм. PS. 3.6v -ийн ачаалалгүй амархан жолооддог. Батерейг видеоноос үзнэ үү.)

Алхам 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 = цагийн зүүний дагуу ; _хойшлох_ms (саатал); } for (i = 3; i> = 0; i-) { / * ccw * / PORTB = цагийн зүүний дагуу өнгөөр дамжих алхам; _хойшлох_ms (саатал); }}} Арагшаа чиглүүлж буй гоёмсог видеог үзээрэй.

Алхам 6: Би хэзээ ч хагас алхам хийдэггүй, учир нь би хагас алхам биш …

Уянгын даалгаврыг хажуу тийш нь тавь, мотороо хагас гишгэх нь яг хаана байгаа юм. Та илүү их оргил гүйдэл, агшин зуурын эргэлт, өнцгийн нарийвчлалыг хоёр дахин нэмэгдүүлдэг. Товчхондоо хагас алхам: Цэнхэр, хар, улаан, шар өнгийн оронд та моторыг цэнхэр, цэнхэр+хар, хар, хар+улаан, улаан, улаан+шар, шар, шар+цэнхэр өнгөөр жолооддог. Үр дүн нь хагас цагийн турш та хоёулаа соронзыг нэгэн зэрэг татдаг явдал юм. Мөн хоёулаа хоёуланг нь ажиллуулж байх үед мотор хоёрын дундуур зааж, "алхам" хоорондын өнцгийг багасгаж, хөдөлгүүрийг илүү жигд эргүүлэх болно. Видео бичлэгээс та хэлж чадах уу? Би сайн мэдэхгүй байна … Одоо хагас алхам хийдэг кодын хэсэг иймэрхүү харагдаж байна.

void halfStepping (uint16_t саатал, uint8_t чиглэл ) {uint8_t i; for (i = 0; i <= 3; i ++) {PORTB = чиглэл ; / * дан ороомог хэсэг */ _хойшлох_ms (саатал); PORTB | = чиглэл [i+1]; / * хагас алхмаар нэмэх */ _delay_ms (саатал); }} Эхний PORTB тушаал нь нэг туйлыг эерэг, бусад бүх зүйлийг сөрөг гэж тохируулдаг. Дараа нь хүлээж байна. Дараа нь PORTB -ийн хоёр дахь тушаал нь хоёр дахь туйлыг (нөгөө ороомог дээр) эерэг болгож, хоёр ороомгийг 1.4 дахин эргүүлэх хүчээр (мөн гүйдэлээс 2 дахин) тохируулна. Хөтөлбөрийн бүрэн жагсаалтыг доор хавсаргасан болно. Одоо хоёр массивыг тодорхойлсон байна (цагийн зүүний дагуу, цагийн зүүний эсрэг), хоёулаа 5 элементтэй бөгөөд i+1 -ийг хагасаар оруулах функцийг StepStping функцэд оруулах боломжийг олгодог.

Алхам 7: Мотор драйвер нэмнэ үү

Мотор драйвер нэмэх
Мотор драйвер нэмэх
Мотор драйвер нэмэх
Мотор драйвер нэмэх
Мотор драйвер нэмэх
Мотор драйвер нэмэх

Одоогоор маш сайн.

Ганц асуудал бол моторт тийм их эргэлт байхгүй юм шиг байгаа нь микропроцессор нэг зүү тутамд ~ 50мА -ыг унтраасантай холбоотой байж болох юм. Дараагийн тодорхой алхам бол илүү их шүүс нийлүүлэхийн тулд мотор жолоочтой холбож өгөх явдал юм. Гэхдээ дараа нь жаахан бодоод үзэхэд: Би үүнийг зөвхөн 5 вольтоор жолоодож байгаа бөгөөд ороомгийн ороомгийн эсэргүүцэл ~ 125 ом байна. Энэ нь мотор нь нэг зүү тутамд 40 мА -ийн зураг зурдаг бөгөөд үүнийг AVF чипээр нарийн жолоодох ёстой гэсэн үг юм. Хөдөлгүүрийг жолоодоход илүү хүчдэл авахын тулд би үүнийг SN754410 H гүүрний чиптэй холбосон. Хэлхээ нь маш энгийн. AVR -ийн зүү бүр оролт руу ордог бөгөөд харгалзах гаралтын зүү нь мотор руу ордог. Чипт логик хэсэгт 5 вольт хэрэгтэй бөгөөд мотор хэсэгт илүү их хүчдэл авах боломжтой. Үүнийг 11.25V (3.6V гурван батерей) дээр ажиллуулах нь бага зэрэг тусалсан. Илүү их эргэлт нь миний хуруун дээр байгаа боловч энэ нь цахилгаан станц биш хэвээр байна. Никельээс бага хэмжээтэй моторын хувьд тийм ч муу биш. Одоо энэ хэлхээ нь ерөнхий зориулалттай хоёр шатлалт моторын жолооч болжээ. Арваннэгдүгээр сарын 29 -нд нэмсэн: Өчигдөр орой 12в -т хэсэг хугацаанд мотор гүйж, халж эхлэв. Энэ нь резонансын давтамжийн асуудал байсан уу эсвэл ороомгийн хувьд хэт их гүйдэл байсан эсэхийг би сайн мэдэхгүй байна. Аль ч тохиолдолд, хэрэв та энэ жижиг моторыг илүү хүчдэлтэй жолоодож байгаа бол жаахан болгоомжтой байгаарай.

Алхам 8: Төгсгөл

Тэгэхээр би юу сурсан бэ? AVR (ба H-bridge чип) бүхий stepper мотор жолоодох нь "гоёмсог" хагас алхамтай горимд ч гэсэн маш хялбар байдаг.

Бяцхан stepper мотороор би юу хийхээ мэдэхгүй байна. Ямар нэгэн санал байна уу?

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