Мазмуну:

AVR микропроцессору менен тепкич моторун айдаңыз: 8 кадам
AVR микропроцессору менен тепкич моторун айдаңыз: 8 кадам

Video: AVR микропроцессору менен тепкич моторун айдаңыз: 8 кадам

Video: AVR микропроцессору менен тепкич моторун айдаңыз: 8 кадам
Video: Как просто научиться программировать микроконтроллеры PIC и AVR / Бегущие огни за 8 минут! 2024, Июль
Anonim
AVR микропроцессору менен тепкичтүү моторду башкарыңыз
AVR микропроцессору менен тепкичтүү моторду башкарыңыз

Принтерлерден/дисктерден/ж.б.дан тазаланган тепкич моторлоруңуз барбы?

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

1 -кадам: Степперлер менен таанышыңыз

Steppers менен таанышыңыз
Steppers менен таанышыңыз
Steppers менен таанышыңыз
Steppers менен таанышыңыз

Негизинен, бардык кичинекей зымдар кайда кеткенин аныктоо керек болот.

Биринчи кадам - бул униполярдуу же биполярдуу мотор экенин аныктоо. Белгисиз моторду табуунун жөнөкөй ыкмасын билүү үчүн Джонсту Степперске карап көрүңүз, андан кийин Ян Харрис сайтында. Бир аз окугула, анан мага кошулгула, бул моторду арзан сатып алдым. (Алар азыр 0,99 долларга сатылууда. Алар кичинекей, салыштырмалуу жеңил, бирок көп моментке ээ эмес. Азырынча эмне жакшы болорун билбейм.)

2 -кадам: Жалпы жерди табыңыз

Жалпы жерди табуу
Жалпы жерди табуу
Жалпы жерди табуу
Жалпы жерди табуу

Ошентип, сизде беш (же төрт же алты) зым бар. Сиздин моторуңуз эки бөлүктөн турат жана сиз ар бир зым кайсы тарапка таандык экенин карап көрсөңүз болот.

Эгерде сиз төрт зымды гана карап жатсаңыз, анда сизде ийгилик - бул биполярдуу мотор. Болгону, кайсы эки жуп зым чогуу кетерин аныктоо керек. Эгерде сизде бир полярдуу мотор болсо, же 4төн ашык зым болсо, анда сиз омметрди сындырышыңыз керек болот. Сиз издеген нерсе - ар бир жарым үчүн жалпы (жер) зым. Сиз биполярдык мотордо кайсынысы негизделгенин айта аласыз, анткени ал уюлдардын бирине караганда полярлардын каршылыгынын жарымына ээ. Сүрөттө зымдарды зымга илип, каршылыкты белгилөө (же эгер алар такыр туташкан болсо) менин эскертүүлөрүм. Сиз White т/б төмөнкү үчтүгүнүн негизи экенин көрө аласыз, алар бири -бирине болгон Кызыл же Көккө жарым каршылыкка ээ. (Бул мотор кызыктай жана жогорку магнит катушкасында борбордук кран жок. Бул жарым биполярдуу, жарым полярдуу окшойт. Балким, муну Кара-Сары учурда Кызыл-Ак-Көк катушка айлануусун сезүү үчүн колдонсоңуз болот Катушка айдалып жатат.)

3 -кадам: кадамдын тартибин аныктаңыз

Кадамдын тартибин аныктаңыз
Кадамдын тартибин аныктаңыз

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

Сиз бир полярдуу моторуңузду баары бир биполярдуу иштеткиңиз келиши мүмкүн, анткени ал ар бир катушканын эки жарымын алмаштыруунун ордуна эки фазада бүт катушканы колдонот. Катуураак = көбүрөөк момент. Бир жуп аркылуу ток өткөрүңүз (сиз тандаган полярдыкты белгилеп), андан кийин бир убакта башка жуп аркылуу ток өткөрүңүз. Экинчи түгөйдү бириктиргенде, мотордун кандай тарапка бурулганын байкаңыз. Муну жаз. Эми сиз тандаган биринчи жуптун полярдуулугун артка кайтарыңыз. Андан кийин экинчи жупту кайра туташтырыңыз, алардын полярдуулугу да тескери. Багытка көңүл буруңуз. Ушундан улам моторду эки жакка айлантуунун ырааттуулугун билүү керек. Менин мисалымда, экөө тең сааттын жебесине каршы бурулуп бүтүштү, андыктан ырааттуулукту мен тандагандай басып өтүү CCW моторун басат.

4 -кадам: Test Drive үчүн мотор алуу

Моторду сыноо үчүн алуу
Моторду сыноо үчүн алуу

Эгерде сиз буга чейин микропроцессордук программалоо үчүн курала элек болсоңуз, анда Ghetto Development Kit же PICтин ар кандай программисттеринен да жаман кыла аласыз. Зымдарды микропрокту түздөн -түз туташтырыңыз жана аны төмөнкү код менен өрттөңүз:

/* Кичинекей тепкич моторлорун алуу менен ойноо. */

/ * Кечиктирүү функциясын кошуу */ #define F_CPU 1000000UL #include/ * ATTiny2313 үчүн pin defs *// * Сааттын тартиби боюнча заказ */ #define BLUE _BV (PB0) #define BLACK _BV (PB1) #define RED _BV (PB2) #define YELLOW _BV (PB3) #define КЕЧИКТИРҮҮ 200 / * миллисекунд ортосунда * / int main (void) {DDRB = 0xff; / * В казыктарынын бардыгын чыгарууну иштетүү */ PORTB = 0x00; / * Баарын 0v */ деп коюңуз (while) (1) {/ * бул жерде негизги цикл */ PORTB = BLUE; _delay_ms (DELAY); ПОРТБ = КАРА; _delay_ms (DELAY); PORTB = RED; _delay_ms (DELAY); ПОРТБ = САРЫ; _delay_ms (DELAY); }} Бул код канчалык жөнөкөй? Чынында эле жөнөкөй. Мунун баары бир гана жакшы аныктамаларды жасоо, ошондуктан мен зымдарга алардын пин-аттарына эмес, түсү боюнча кайрыла алам, анан алардын ортосунда жөнгө салынуучу кечигүү менен аларды ырааттуу түрдө которот. Баштоо үчүн, мен кадамдардын ортосунда жарым секундалык кечигүүнү тандадым. Жыйынтыктар үчүн кыска видеону көрүңүз. Эгерде сиз чындап эле оюнуңузда болсоңуз, анда мотордун бир баскычтуу бурчтук чечилишин аныктоо үчүн циклдеги кадамдардын санын эсептеңиз. (Ооба, PS. 3,6v жүктөлбөй оңой эле айдайт. Батареяны видеодон караңыз.)

5 -кадам: Аны артка жана артка буруңуз

Демек, сиз аны саат жебеси боюнча иштетесиз. Дагы кызык нерсе барбы? Бир аз код тазалоо, биз аны алдыга жана артка иштете алабыз. Сааттын жебеси боюнча массивге койдум, ошондо сиз этаптарды жөнөкөй цикл менен басып өтө аласыз. Эми сиз циклди өйдө же ылдый иштете аласыз, сааттын жебеси боюнча же сааттын жебесине каршы.

int main (void) {const uint8_t delay = 50; const uint8_t саат жебеси боюнча = {КӨК, КАРА, КЫЗЫЛ, САРЫ}}; uint8_t i; DDRB = 0xff; / * В казыктарынын бардыгын чыгарууну иштетүү */ PORTB = 0x00; / * Баарын 0v */ деп кой (while) (1) {/ * бул жердеги негизги цикл */ for (i = 0; i <= 3; i ++) {/ * түстөр аркылуу саат жебеси боюнча кадам жасоо */ PORTB = саат жебеси боюнча ; _delay_ms (кечигүү); } үчүн (i = 3; i> = 0; i-) { / * ccw * / PORTB = түстөр аркылуу кадам = саат жебеси боюнча ; _delay_ms (кечигүү); }}} Артка жана артка кетүү үчүн жарашыктуу видеону көрүңүз.

6-кадам: Мен эч качан жарым кадам эмесмин, анткени мен жарым кадам эмесмин …

Лирикалык тапшырманы четке кагып, моторуңуздун жарым кадамы ошол жерде. Сиз эң жогорку токту, бир заматта моментти жана эки эсе бурчтук чечимди аласыз. Кыскача айтканда жарым кадам: Көк, Кара, Кызыл, Сары түстүн ордуна моторду Көк, Көк+Кара, Кара, Кара+Кызыл, Кызыл, Кызыл+Сары, Сары, Сары+Көк менен айдайсыз. Натыйжада, сиз жарымын эки магнитти бир убакта тартып жатасыз. Жана эки комплект иштетилген убакта, мотор экөөнүн ортосун көрсөтүп, "кадамдардын" ортосундагы бурчту кичирейтет жана моторду ийкемдүү айландырат. Видеодон айтып бере аласызбы? Мен так билбейм … Эми коддун жарым кадамды жасаган бөлүгү мындай көрүнөт:

void halfStepping (uint16_t кечигүү, uint8_t багыты ) {uint8_t i; for (i = 0; i <= 3; i ++) {PORTB = багыт ; / * бир катушка бөлүгү */ _delay_ms (кечигүү); PORTB | = багыты [i+1]; / * жарым кадам менен кошуу */ _delay_ms (кечигүү); }} Биринчи PORTB буйругу бир уюлду оңго, калганын терске коёт. Андан кийин күтөт. Андан кийин экинчи PORTB буйругу экинчи уюлду (экинчи оромдо) оңго орнотот, эки оромону тең 1,4 эсе моментке (жана 2 эсе токко) тартуу. Программанын толук тизмеси төмөндө тиркелет. Азыр эки массив аныкталды (сааттын жебеси боюнча, сааттын жебесине каршы) жана экөө тең 5 элементтен турат, ал жарым степпинг функциясына i+1 жазууга мүмкүнчүлүк берет.

7 -кадам: Мотор драйверин кошуу

Мотор айдоочусун кошуу
Мотор айдоочусун кошуу
Мотор драйверин кошуу
Мотор драйверин кошуу
Мотор айдоочусун кошуу
Мотор айдоочусун кошуу

Азырынча ушунчалык жакшы.

Бир гана көйгөй, мотордо анча мынча момент жок окшойт, бул микропроцессордун бир пинге ~ 50мА гана өчүрүлүшүнө байланыштуу болушу мүмкүн. Белгилүү кийинки кадам, аны көбүрөөк шире менен камсыз кылуу үчүн аны мотор айдоочусуна илип коюу болмок. Бирок анда бир аз ойлонуп жатам: мен аны 5v менен гана айдап жатам, ал эми катушка каршылык ~ 125 Ом. Бул мотордун бир пинге 40мА чиймесин билдирет жана аны AVF чипи жакшы айдаш керек. Моторду башкарууда көбүрөөк чыңалуу алуу үчүн, мен аны SN754410 H-көпүрөсүнүн чипине илип койдум. Район абдан жөнөкөй. AVRдан келген ар бир пин кирүүгө барат, ал эми тийиштүү чыгуу пиндери моторго өтөт. Чип логикалык бөлүм үчүн 5v керек жана мотор бөлүмүндө бир топ чыңалууга ээ болот. Аны 11.25v (үч 3.6v батарея) менен иштетүү бир аз жардам берди. Белгилей кетчү нерсе, менин моментиме көбүрөөк момент, бирок ал дагы эле күч эмес. Никелден кичирээк мотор үчүн жаман эмес. Эми бул схема жалпы багыттагы биполярдык тепкичтүү мотор айдоочусу болуп калды. 29 -ноябрда кошулган: Кечээ түнү мотор 12в бир азга чуркап, ысый баштады. Мен бул резонанстуу жыштык көйгөйүбү же оромолор үчүн өтө эле көп ток болгонун билбейм. Кандай болбосун, бул кичинекей моторду чоңураак чыңалуу менен айдап бара жатсаңыз, бир аз этият болуңуз.

8 -кадам: Акыры

Анда мен эмнени үйрөндүм? АВР (жана H-bridge чипи) менен тепкич моторун айдап кетүү, жада калса "кооз" жарым кадам режиминде да абдан оңой.

Кичине тепкичтүү моторлор менен эмне кыларымды азырынча билбейм. Сунуштар барбы?

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