Բովանդակություն:

Աշխատող RC ավտոմեքենայի արագաչափ ՝ 4 քայլ (նկարներով)
Աշխատող RC ավտոմեքենայի արագաչափ ՝ 4 քայլ (նկարներով)

Video: Աշխատող RC ավտոմեքենայի արագաչափ ՝ 4 քայլ (նկարներով)

Video: Աշխատող RC ավտոմեքենայի արագաչափ ՝ 4 քայլ (նկարներով)
Video: RC Ripsaw tank 2024, Սեպտեմբեր
Anonim
Աշխատող RC Ավտոմեքենայի արագաչափ
Աշխատող RC Ավտոմեքենայի արագաչափ

Սա կարճ նախագիծ է, որը ես ստեղծեցի որպես թեթև Land Rover- ի ավելի մեծ RC կառուցման մաս: Ես որոշեցի, որ ինձ դուր է գալիս, որ աշխատասեղանի վահանակում աշխատող արագաչափ կա, բայց ես գիտեի, որ սերվոն այն չի կտրի: Կար միայն մեկ ողջամիտ տարբերակ. Տեղակայել arduino- ն:

Մի փոքր նախապատմություն սկսելու համար … Ես կոդավորող կամ էլեկտրոնիկայի մասնագետ չեմ: Ես դեռ էլեկտրաէներգիայի մասին եմ մտածում ջրի հոսքի առումով և ինչ -որ չափով առեղծված եմ դիմադրողների կողմից: Ասել է թե ՝ եթե նույնիսկ ես կարողացա այս աշխատանքը կատարել, ապա դու նույնպես պետք է կարողանաս:

ՄԱՍՆԵՐԻ ISTԱՆԿ:

Միկրոկոնտրոլեր. Ես օգտագործել եմ ATTiny85 չիպ, որի արժեքը յուրաքանչյուրը մոտ 1 ֆունտ է:

Միկրոկոնտրոլեր ծրագրավորող. Կոդը չիպի վրա հասցնելու համար ձեզ հարկավոր է այն ծրագրավորելու միջոց: Սովորական arduino- ով սա պարզապես USB մալուխ է, սակայն ATTiny չիպի համար ձեզ լրացուցիչ բան է պետք: Դուք կարող եք օգտագործել մեկ այլ arduino ՝ դա անելու համար, կամ, ինչպես ես, կարող եք օգտագործել Sparkfun- ի Tiny AVR ծրագրավորող:

learn.sparkfun.com/tutorials/tiny-avr-prog…

Ես խորհուրդ կտայի սա, քանի որ ես փորձել եմ դրանք ծրագրավորել տարբեր մեթոդներով, և սա ամենահեշտն է: Տախտակը մի փոքր թանկ է, բայց լավ ներդրում, եթե շատ ATTiny նախագծեր եք կատարում:

8 չիպային չիպի վարդակ. Եթե դուք չիպը դնում եք վարդակից, այլ ոչ թե այն ուղղակիորեն զոդում, կարող եք ինքներդ ձեզ թույլ տալ մի քանի սխալ հավաքելիս: Խոսելով փորձից. Ոչ ոք չի ցանկանում ապամոդել չիպերը `դրանք նորից ծրագրավորելու համար:

Կոնդենսատոր. Օգտագործվում է 100nF (կոդ 104) անջատման կոնդենսատոր: Ես լիովին չեմ հասկանում, թե ինչու, բայց ես կարդացի, որ կոնդենսատորների անջատումը կարևոր են ինտերնետում, ուստի այն պետք է ճշմարիտ լինի…

Ռեզիստոր. 10kΩ ռեզիստորն օգտագործվում է գիծն իջեցնելու համար arduino- ի մեջ: Կրկին, էլեկտրոնիկայի ևս մեկ առեղծված:

Fվարճություն/Stripboard: Որոշ baseboard որի վրա հավաքել ձեր միացում.

Ոլորուն մետաղալար. Սովորական պատված մետաղալարերը չափազանց հաստ են շարժիչի վրա ամրացնելու համար: Նրբագեղ էմալապատ մետաղալարի օգտագործումը կնվազեցնի շարժիչի տերմինալների լարվածությունը և կդարձնի ձեր կյանքը շատ ավելի հեշտ:

Servo Wire: Երեք մետաղալար ժապավեն, որն ավարտվում է 3-պին JR կանացի խրոցակով: Ես իմը ստացել եմ այրված սերվոյից, որը «փոփոխում» էի:

Stepper Motor: Ես օգտագործել եմ 6 մմ երկբևեռ Nidec տիպի շարժիչ: Smallանկացած փոքր սակարկիչ պետք է աշխատի, չնայած դրանք փոքր պահեք, քանի որ քայլողը քշվում է անմիջապես Arduino- ից:

Գլխարկի կապում. Էական չէ, բայց եթե ձեր սանդղակը միացնեք գլխի 4 կապում և վարդակից տեղադրեք ձեր միացումը, ապա տեղադրման հեշտության համար կարող եք հեշտությամբ անջատել ձեր վահանակը:

Համակարգիչ. Ձեր տախտակը ծրագրավորելու համար ձեզ հարկավոր է համակարգիչ: Հնարավոր է Arduino IDE- ի հետ: Եվ գուցե USB մալուխ: Եթե այն ունի նաև հոսանքի մալուխ, ապա նույնիսկ ավելի լավ:

Քայլ 1: Համակարգը

Իմ ստեղծած համակարգի հիմնական ուրվագիծը մի մեթոդ էր, որի համաձայն RC ընդունիչից ստացվող Pulse Width Modulation (PWM) ազդանշանը ATTiny 85 միկրոկոնտրոլերի (uC) միջոցով փոխակերպվում է քայլակողկյան շարժիչի մաքրման:

Ահա ռեսուրս PWM ազդանշանների և RC- ի վերաբերյալ, բայց դա կրկնօրինակելու համար հարկավոր չէ խստորեն հասկանալ այն:

hy.wikipedia.org/wiki/Servo_control

ATTiny- ն Arduino- ի իմ ամենասիրելի բույրն է, քանի որ այն փոքր է դեռևս բավականաչափ հիմնական գործեր կատարելու համար I/O կապում, այնպես որ հիանալի տեղավորվում է փոքր մոդելների և RC նախագծերի մեջ: ATTiny- ի հիմնական թերությունն այն է, որ այն ծրագրավորելու համար պահանջում է մի փոքր ավելի շատ կարգավորում, բայց այն կարգավորելուց հետո դրանք այնքան էժան են, որ կարող ես դրանցից հավաքել բոլոր տեսակի նախագծերի համար:

Արագաչափի չափիչի չափը չափազանց փոքր է հետադարձ շարժիչ ունեցող շարժիչ ունենալու համար, ուստի համաչափ արձագանք ունենալու համար անհրաժեշտ էր օգտագործել հետընթաց շարժիչ: Կտրուկ շարժիչը շարժիչ է, որը շարժվում է առանձին չափերով (կամ քայլերով…!), Ինչը այն իդեալական է դարձնում նման հետադարձ կապ չունեցող համակարգի համար: Միակ նախազգուշացումն այն է, որ «քայլերը» կհանգեցնեն նրան, որ արդյունքում շարժումը կդառնա ջղաձիգ, ի տարբերություն սահունի: Եթե դուք ստանում եք մեկ պտույտով բավականաչափ քայլեր, դա նկատելի չէ, բայց այն քայլը, որը ես օգտագործել եմ այս նախագծում, ունենալով ընդամենը 20 կամ ավելի քայլեր ամբողջ պտույտով, անկյան թռիչքը բավականին վատ է:

Համակարգը, միացնելով, հետընթացը հետ կշարժի երկու պտույտով, այնպես, որ ասեղը կզրոյացնի: Արագաչափին անհրաժեշտ է հանգստյան քորոց, որտեղ ցանկանում եք, որ զրոյական նշանը լինի, հակառակ դեպքում այն պարզապես կշրջվի հավերժ: Այնուհետև այն քարտեզագրում է առաջ և հակառակ PWM ազդանշանները շարժիչի մի շարք քայլերի վրա: Հեշտ է, չէ՞…

Քայլ 2: Softwareրագրակազմ

Հրաժարում. Ես ծրագրավորող չեմ: Այս նախագծի համար ես դոկտոր Ֆրանկենշտեյնի թվային համարժեքն եմ, որը հավաքում է ինչ -որ բան, որը գտնում է տարբեր գտածո կոդերից:

Այսպիսով, իմ ամենաջերմ շնորհակալությունը վերաբերում է Դուան Բ -ին, ով կազմել է RC ազդանշանների մեկնաբանման ծածկագիրը.

rcarduino.blogspot.com/

Իսկ Արդունաուտին, որը ստեղծեց կոճակ անալոգային չափիչ գործարկելու կոդը.

arduining.com/2012/04/22/arduino-driving-a…

Եվ երկուսն էլ ՝ իմ ամենաանկեղծ ներողությունն այն բանի համար, ինչ ես արեցի ձեր ծածկագրին:

Հիմա դա ճանապարհից դուրս է, ահա թե ինչ կարելի է վերբեռնել ATTiny- ում.

#սահմանել THROTTLE_SIGNAL_IN 0 // INTERRUPT 0 = ԹՎԱՅԻՆ PIN 2 - օգտագործել ընդհատման համարը interIntruptrupt #define THROTTLE_SIGNAL_IN_PIN 2 // INTERRUPT 0 = ԹՎԱՅԻՆ PIN 2 - օգտագործել PIN համարը թվայնացված չեզոք շնչափող էլեկտրական RC ավտոմեքենայի վրա #սահմանեք UPPER_THROTTLE 2000 // սա էլեկտրասրտոմեքենայի վրա առավելագույն շնչափողի միկրո վայրկյան տևողությունն է #սահմանեք LOWER_THROTTLE 1000 // սա տևողությունը էլեկտրոնային RC Car #define- ի ամենափոքր շնչափողի միկրովայրկյաններում: DEADZONE 50 // սա շնչափողի փակուղի է: Ընդհանուր մեռած գոտին կրկնակի է: #ներառել #սահմանել ՔԱՅԼԵՐԸ 21 // քայլեր մեկ պտույտի համար (սահմանափակվում է 315 ° -ով) Փոխեք սա արագաչափի առավելագույն ընթացքը կարգավորելու համար: #սահմանեք COIL1 3 // Կծիկի կապում: ATTiny- ն օգտագործում է 0, 1, 3, 4 կապում էտապի համար: Պին 2 -ը միակ կապն է, որը կարող է կարգավորել ընդհատումները, ուստի այն պետք է մուտքագրում լինի: #սահմանեք COIL2 4 // Փորձեք դրանք փոխել, եթե հետընթաց շարժիչը ճիշտ չի աշխատում: #սահմանել COIL3 0 #սահմանել COIL4 1 // ստեղծել stepper դասի օրինակ `Stepper stepper (STEPS, COIL1, COIL2, COIL3, COIL4); int pos = 0; // Դիրքը քայլերով (0-630) = (0 ° -315 °) int SPEED = 0; բոց ThrottleInAvg = 0; int MeasurementsToAverage = 60; float Resetcounter = 10; // ժամանակը վերականգնման ժամանակ անգործուն ռեժիմում int Resetval = 0; անկայուն int ThrottleIn = LOWER_THROTTLE; անկայուն անստորագիր երկար StartPeriod = 0; // սահմանել ընդհատման մեջ // մենք կարող ենք օգտագործել nThrottleIn = 0 օղակում առանձին փոփոխականի փոխարեն, սակայն bNewThrottleSignal- ի օգտագործումը նշելու համար, որ մենք ունենք նոր ազդանշան // այս առաջին օրինակի համար ավելի պարզ է դատարկ կարգաբերում () {// պատմել Arduino- ին մենք ցանկանում ենք, որ calcInput գործառույթը կանչվի ամեն անգամ, երբ INT0 (թվային կապ 2) փոխվում է HIGH- ից LOW կամ LOW- ից HIGH // այս փոփոխությունները որսալը թույլ կտա մեզ հաշվարկել, թե որքան ժամանակ է մուտքային զարկերակը կցված InterPoint (THROTTLE_SIGNAL_IN, calcInput, CHANGE); stepper.setSpeed (50); // շարժիչի արագությունը սահմանել 30 RPM (մոտ 360 PPS): stepper.step (STEPS * 2); // Վերականգնել դիրքը (X քայլը ՝ ժամացույցի սլաքի հակառակ ուղղությամբ): } void loop () {Resetval = millis; (int i = 0; i (NEUTRAL_THROTTLE + DEADZONE) && ThrottleInAvg <UPPER_THROTTLE) {SPEED = քարտեզ (ThrottleInAvg, (NEUTRAL_THROTTLE + DEADZONE), UPPER_THROTLET,; Վերագործարկում = 0; } // Հակառակ քարտեզագրում այլ կերպ, եթե (ThrottleInAvg LOWER_THROTTLE) {SPEED = քարտեզ (ThrottleInAvg, LOWER_THROTTLE, (NEUTRAL_THROTTLE - DEADZONE), 255, 0); Վերագործարկում = 0; } // շարքից դուրս, եթե այլ բան (ThrottleInAvg> UPPER_THROTTLE) {SPEED = 255; Վերագործարկում = 0; } // Շրջանակից ցածր ՝ if (ThrottleInAvg Resetcounter) {stepper.step (4); // Ես փորձում եմ ասել, որ stepper- ը պետք է նորից վերականգնի ինքն իրեն, եթե RC ազդանշանը երկար ժամանակ փակուղում է: Վստահ չեմ, արդյոք կոդի այս հատվածն իրականում աշխատում է: }} int val = SPEED; // ստանալ պոտենցիոմետրի արժեքը (միջակայք 0-1023) val = քարտեզ (val, 0, 255, 0, STEPS * 0.75); // քարտեզի զամբյուղի տեսականին stepper տիրույթում: եթե (abs (val - pos)> 2) {// եթե տարբերությունը 2 քայլից մեծ է: եթե ((val - pos)> 0) {stepper.step (-1); // մեկ քայլ տեղափոխեք ձախ: pos ++; } if ((val - pos) <0) {stepper.step (1); // մեկ քայլ տեղափոխել աջ: pos--; }} // ուշացում (10); } void calcInput () {// եթե քորոցը բարձր է, դա ընդհատման սկիզբն է, եթե (digitalRead (THROTTLE_SIGNAL_IN_PIN) == HIGH) {// ժամանակ գտեք միկրո օգտագործելու դեպքում. երբ մեր ծածկագիրը իսկապես զբաղված լինի, դա կդառնա ոչ ճշգրիտ, բայց ընթացիկ կիրառման համար այն // հեշտ է հասկանալ և շատ լավ է աշխատում StartPeriod = micros (); } else {// եթե քորոցը ցածր է, դա զարկերակի անկման եզրն է, այնպես որ այժմ մենք կարող ենք հաշվարկել զարկերակի տևողությունը `հանելով // մեկնարկի ժամանակը ulStartPeriod ընթացիկ ժամանակից, որը վերադարձվում է micros () if (StartPeriod) {ThrottleIn = (int) (micros () - StartPeriod); StartPeriod = 0; }}}

ATTiny85 ծրագրավորման վերաբերյալ լրացուցիչ տեղեկությունների համար դիմեք դրան ՝

learn.sparkfun.com/tutorials/tiny-avr-prog…

Քայլ 3: Սարքավորումը

Սարքավորումը
Սարքավորումը
Սարքավորումը
Սարքավորումը
Սարքավորումը
Սարքավորումը

Շրջանը կառուցելու համար տես սխեմայի սխեման: Ինչպես եք այն հավաքում, ձեզանից է կախված, բայց ես կառաջարկեի օգտագործել մի փոքր շերտագիծ/տախտակ, որն օգտագործվում էր տպատախտակի նախատիպավորման համար և չիպը տեղադրում վարդակից:

C1 = 100nF

R1 = 10kΩ

Կոնդենսատորը պետք է հնարավորինս մոտ տեղադրվի չիպին, որպեսզի այն լինի ամենաարդյունավետը:

Էմալացված լարերը շարժիչին զոդելիս չափազանց զգույշ եղեք, քանի որ շարժիչների տերմինալները սիրում են ճեղքել և անջատել կծիկի մետաղալարը դեպի շարժիչը: Խնդիրը շտկելու համար լավ լուծում է `լարերը կպցնելը, այնուհետև հոդի վրա դնել 2 մասից բաղկացած էպոքսիդային մեծ գնդիկ, թողնել, որ այն բուժվի, այնուհետև լարերը միասին ոլորեք: Սա նվազեցնում է առանձին տերմինալային հոդերի վրա սթրեսը և պետք է դադարեցնի դրանք ճեղքելը: Եթե դուք դա չանեք, նրանք կպոկվեն նվազագույն հարմար պահին `երաշխավորված:

Եթե դուք ստեղծում եք վերնագրի կապի միակցիչ և կարգավորում եք կապերն այսպես ՝ շուրջը.

Չափիչին անհրաժեշտ կլինի վերջնակետ `զրոյական դիրքի դեմ չափագրման համար: Հնարավորության դեպքում խորհուրդ կտամ ասեղը պատրաստել մետաղից: Սա դադարում է այն ճկվել, երբ այն հարվածում է ծայրին: Ասեղը լավ դիրքի բերելու միջոց է ՝ ասեղը ժամանակավորապես սոսնձել առանցքին, միացնել մոդուլը, թողնել հանգստանա, այնուհետև հանել և նորից սոսնձել ասեղը առանցքի վրա, իսկ ասեղը հենված է վերջակետ Սա հարթեցնում է ասեղը շարժիչի մագնիսական խցանման հետ և երաշխավորում, որ ձեր ասեղը միշտ պետք է հանգստանա վերջնակետի դիմաց:

Քայլ 4: Էպիլոգ

Հուսով եմ, որ դուք վայելել եք այս համառոտ ուսանելի ծրագիրը և այն օգտակար գտել: Եթե դուք կառուցում եք դրանցից մեկը, ինձ տեղյակ պահեք:

Հաջողություն!

Խորհուրդ ենք տալիս: