Мазмұны:

Жұмыс істейтін RC автомобиль спидометрі: 4 қадам (суреттермен)
Жұмыс істейтін RC автомобиль спидометрі: 4 қадам (суреттермен)

Бейне: Жұмыс істейтін RC автомобиль спидометрі: 4 қадам (суреттермен)

Бейне: Жұмыс істейтін RC автомобиль спидометрі: 4 қадам (суреттермен)
Бейне: Электроскутер citycoco 3000w ТЕСТ ДРАЙВ SKYBOARD BR20 ситикоко электромопед citycoco тест драйв 2024, Қыркүйек
Anonim
Жұмыс істейтін RC автомобиль спидометрі
Жұмыс істейтін RC автомобиль спидометрі

Бұл мен жеңілдетілген Land Rover RC -тің үлкен құрамдас бөлігі ретінде жасаған қысқа жоба. Мен бақылау тақтасында жұмыс істейтін спидометрдің болуын қалайтынымды шештім, бірақ мен серво оны кеспейтінін білдім. Бір ғана ақылға қонымды нұсқа болды: arduino орналастыру!

Бастапқыда біраз ақпарат… Мен кодтаушы немесе электроник емеспін. Мен әлі күнге дейін электр қуатын су ағыны тұрғысынан ойлаймын және резисторлар біршама мистикалық. Айтуынша, егер мен бұл жұмысты жасай алсам, онда сен де жасай аласың!

БӨЛІКТЕР ТІЗІМІ:

Микроконтроллер: Мен ATTiny85 чипін қолдандым, оның әрқайсысы шамамен 1 фунт стерлинг.

Микроконтроллер бағдарламашы: Чипке кодты алу үшін оны бағдарламалау әдісі қажет. Кәдімгі arduino -да бұл тек USB кабелі, бірақ ATTiny чипі үшін сізге қосымша нәрсе қажет. Мұны істеу үшін сіз басқа arduino -ны қолдана аласыз, немесе мен сияқты Sparkfun -дан шағын AVR бағдарламашысын қолдана аласыз.

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

Мен бұны ұсынар едім, өйткені мен оларды әр түрлі әдістермен бағдарламалауға тырыстым және бұл ең оңай. Тақта біршама қымбат, бірақ жақсы ATTiny жобаларын жасасаңыз жақсы инвестиция.

8 түйреуішті розетка: Егер сіз чипті тікелей дәнекерлеуге емес, розеткаға қойсаңыз, онда сіз құрастыруда қателіктер жібере аласыз. Тәжірибеден алынған - ешкім оларды қайта бағдарламалау үшін чиптерді сөндіргісі келмейді.

Конденсатор: ажырату конденсаторы 100nF (коды 104) қолданылады. Мен неге екенін түсінбеймін, бірақ мен интернетте конденсаторларды ажырату маңызды екенін оқыдым, сондықтан бұл рас …

Резистор: ардуиноға сызықты түсіру үшін 10 кОм резистор қолданылады. Тағы да электрониканың тағы бір құпиясы.

Perfboard/Stripboard: тізбекті жинайтын кейбір тақта.

Орамдық сым: Кәдімгі қапталған сым моторға дәнекерлеу үшін тым қалың. Жіңішке эмальданған сымды қолдану мотор терминалдарындағы кернеуді азайтады және сіздің өміріңізді айтарлықтай жеңілдетеді.

Servo Wire: 3 істікшелі JR әйел штепсельдік ұшында үш сымды таспа. Мен өзімді «өзгертетін» күйіп кеткен серводан алдым.

Қадамдық қозғалтқыш: Мен 6 мм биполярлы Nidec қадамдық қозғалтқышты қолдандым. Кез -келген кішкентай баспалдақ жұмыс істеуі керек, бірақ оларды кішкентай ұстаңыз, өйткені қадам тікелей Arduino -дан шығарылады.

Тақырып түйреуіштері: маңызды емес, бірақ егер сіз степерді 4 түйреуішке сыммен қоссаңыз және розеткаға розетка қойсаңыз, орнатуды жеңілдету үшін бақылау тақтасын оңай ажыратуға болады.

Компьютер: Тақтаны бағдарламалау үшін сізге компьютер қажет. Мүмкін Arduino IDE көмегімен. Мүмкін USB кабелі. Егер оның қуат кабелі болса, онда одан да жақсы.

1 -қадам: жүйе

Мен жасаған жүйенің негізгі схемасы - бұл RC қабылдағышынан келетін импульстік ен модуляциясы (PWM) сигналы ATTiny 85 микроконтроллері (uC) арқылы сатылы қозғалтқышқа айналдыру әдісі.

Бұл PWM сигналдары мен RC ресурсы, бірақ оны қайталау үшін оны түсінудің қажеті жоқ.

kk.wikipedia.org/wiki/Servo_control

ATTiny - бұл Arduino -ның менің сүйікті дәмі, себебі ол кішігірім енгізу -шығару түйреуіштері бар, сондықтан шағын модельдер мен RC жобаларына өте жақсы сәйкес келеді. ATTiny -дің басты кемшілігі - оны бағдарламалау үшін сәл көбірек қондыруды қажет етеді, бірақ оны орнатқаннан кейін олар соншалықты арзан, сондықтан сіз оларды барлық жобалар үшін сатып ала аласыз.

Жылдамдық өлшегішінің өлшемі тым аз, кері байланыс бар редукторлы қозғалтқыш болуы мүмкін, сондықтан пропорционалды жауап алу үшін қадамдық қозғалтқышты қолдану қажет болды. Қадамдық қозғалтқыш-бұл белгілі бір мөлшерде (немесе қадаммен …!) Жылжытылатын қозғалтқыш, бұл оны кері байланыссыз жүйеге өте ыңғайлы етеді. Жалғыз ескерту - бұл «қадамдар» нәтижесінде қозғалыстың тегіс емес, бұралаң болуына әкеледі. Егер сіз бір айналымға жеткілікті қадамдары бар қадам алсаңыз, бұл байқалмайды, бірақ мен бұл жобада 20 қадамды толық айналдыруда қолданған қадаммен бұрыштан секіру өте нашар.

Жүйе қосылған кезде инені нөлге айналдыру үшін қадамды екі рет айналдырады. Спидометрге нөлдік белгі қалайтын демалыс штыры қажет, әйтпесе ол мәңгі айналады. Содан кейін ол PWM сигналдарын қозғалтқыштың белгіленген қадамдарының санына салыстырады. Оңай, иә …?

2 -қадам: Бағдарламалық қамтамасыз ету

Жауапкершіліктен бас тарту: Мен бағдарламашы емеспін. Бұл жоба үшін мен доктор Франкенштейннің сандық эквивалентімін, әр түрлі табылған код биттерінен бірдеңе жинаймын.

Сонымен, RC сигналдарын түсіндіру кодын жасаған Дуане Б -ге шын жүректен алғысымды білдіремін:

rcarduino.blogspot.com/

Аналогты өлшеуіш ретінде степперді іске қосу кодын жасаған Ардунаутқа:

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

Және екеуіне де сіздің кодыңыз үшін не істегенім үшін шын жүректен кешірім сұраймын.

Енді бұл мүмкін емес, мұнда ATTiny -ге жүктеу керек:

#define THROTTLE_SIGNAL_IN 0 // INTERRUPT 0 = DIGITAL PIN 2 - тіркеуде үзіліс нөмірін пайдаланыңызInterrupt #define THROTTLE_SIGNAL_IN_PIN 2 // INTERRUPT 0 = DIGITAL PIN 2 - digitalRead нөміріндегі кодты қолданыңыз электр RC автокөлігіндегі нейтралды дроссельдің диффузиясы #анықтаңыз UPPER_THROTTLE 2000 // бұл электрлік көлік құралындағы максималды дроссельдің ұзақтығы DEADZONE 50 // бұл дроссельдің өлу аймағы. Жалпы өлу аймағы екі есе көп. #қосу #анықтайтын ҚАДАМДАР 21 // айналымға қадамдар (315 ° шектелген) Спидометрдің максималды қозғалысын реттеу үшін мұны өзгертіңіз. COIN1 3 анықтаңыз // катушкалар. ATTiny қадамға арналған 0, 1, 3, 4 түйреуіштерді қолданады. 2 -түйреуіш - үзіліс орындай алатын жалғыз түйреуіш, сондықтан ол кіріс болуы керек. #dein COIL2 4 // Егер қадамдық қозғалтқыш дұрыс жұмыс істемесе, оларды айналдырып көріңіз. #define COIL3 0 #define COIL4 1 // stepper класының данасын жасаңыз: Stepper stepper (STEPS, COIL1, COIL2, COIL3, COIL4); int pos = 0; // Қадамдардағы позиция (0-630) = (0 ° -315 °) int SPEED = 0; float ThrottleInAvg = 0; int MeasurementsToAverage = 60; float Resetcounter = 10; // жұмыс істемей тұрған кезде қалпына келтіру уақыты int Resetval = 0; volatile int ThrottleIn = LOWER_THROTTLE; тұрақсыз белгісіз ұзақ StartPeriod = 0; // үзілісте орнатылған // біз бөлек айнымалы орнына nThrottleIn = 0 циклін қолдана аламыз, бірақ bNewThrottleSignal көмегімен бізде жаңа сигнал бар екенін көрсету // бұл бірінші мысал үшін түсінікті болады void setup () {// Arduino -ға айтыңыз біз калькоInput функциясын INT0 (сандық 2 -түйін) HIGH -дан LOW -қа немесе LOW -дан HIGH -ға өзгерген сайын шақыруды қалаймыз // бұл өзгерістерді қабылдау кіріс импульсінің қанша уақытқа қосылатынын есептеуге мүмкіндік береді (THROTTLE_SIGNAL_IN, calcInput, CHANGE); stepper.setSpeed (50); // қозғалтқыштың айналу жиілігін 30 айналу жиілігіне (шамамен 360 PPS) орнатыңыз. step.step (ҚАДАМДАР * 2); // Орналасуды қалпына келтіру (X қадамы сағат тіліне қарсы). } void loop () {Resetval = millis; for (int i = 0; i (NEUTRAL_THROTTLE + DEADZONE) && ThrottleInAvg <UPPER_THROTTLE) {SPEED = map (ThrottleInAvg, (NEUTRAL_THROTTLE + DEADZONE), UPPER_THROTTLE, 0, 255); Қалпына келтіру = 0; } // Кері салыстыру басқа, егер (ThrottleInAvg LOWER_THROTTLE) {SPEED = map (ThrottleInAvg, LOWER_THROTTLE, (NEUTRAL_THROTTLE - DEADZONE), 255, 0); Қалпына келтіру = 0; } // Ауқымнан жоғары, егер басқа (ThrottleInAvg> UPPER_THROTTLE) {SPEED = 255; Қалпына келтіру = 0; } // Аумақ шегінен төмен, егер басқа (ThrottleInAvg Resetcounter) {stepper.step (4); // Егер мен RC сигналы ұзақ уақыт тұйық аймақта болса, қадам басушыға өзін қайта қалпына келтіруді айтуға тырысамын. Кодтың бұл бөлігі шынымен жұмыс істейтініне сенімді емеспін. }} int val = SPEED; // потенциометрдің мәнін алу (0-1023 диапазоны) val = map (val, 0, 255, 0, STEPS * 0.75); // қадамдық диапазондағы кастрюльдік диапазон. if (abs (val - pos)> 2) {// егер айырмашылық 2 қадамнан үлкен болса. if ((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 = 10 кОм

Ең тиімді болу үшін конденсатор микросхемаға мүмкіндігінше жақын орнатылуы керек.

Эмальмен қапталған сымдарды қозғалтқышқа дәнекерлеу кезінде өте абай болыңыз, себебі қозғалтқыштардағы терминалдар қозғалтқышқа катушка сымын жұлып алуды ұнатады. Бұл мәселені шешу үшін сымдарды дәнекерлеп, содан кейін қосылыстың үстіне 2 бөліктен тұратын эпоксидті үлкен бөртпені қойып, емдеңіз, содан кейін сымдарды бұраңыз. Бұл жекелеген терминалды түйіндерге кернеуді азайтады және олардың үзілуін тоқтатуы керек. Егер сіз мұны жасамасаңыз, олар кепілдендірілген уақытта ыңғайлы уақытта үзіліп кетеді.

Егер сіз түйреуіштің коннекторын жасасаңыз және түйреуіштерді осылай орнатсаңыз: [Ca1, Cb1, Ca2, Cb2] Ca1 A катушкасы үшін, сым 1 және т. айналасында.

Нөлдік позицияны қарсы калибрлеу үшін өлшегішке тоқтау қажет болады. Мүмкіндігінше инені металдан жасауға кеңес беремін. Бұл оның тоқтаған кезде иілуін тоқтатады. Инені жақсы күйге келтірудің тәсілі-инені оське уақытша жабыстыру, модульді қуаттандыру, оны демалуына мүмкіндік беру, содан кейін инені оське тіреп тұрып алып тастау және қайта жабыстыру. тоқтату. Бұл инені қозғалтқыштың магниттік тігісімен теңестіреді және сіздің инеңіз әрқашан тірекке тіреліп тұруын қамтамасыз етеді.

4 -қадам: Эпилог

Сізге бұл қысқаша нұсқаулық ұнады және пайдалы болды деп сенемін. Егер сіз олардың біреуін жасасаңыз, маған хабарлаңыз!

Іске сәт!

Ұсынылған: