Përmbajtje:

Speedometri i makinës RC i punës: 4 hapa (me fotografi)
Speedometri i makinës RC i punës: 4 hapa (me fotografi)

Video: Speedometri i makinës RC i punës: 4 hapa (me fotografi)

Video: Speedometri i makinës RC i punës: 4 hapa (me fotografi)
Video: VANDE BHARAT EXPRESS running at Full Speed 130Kms/Hr 😳😳 #indiarailways #irctc #speed 2024, Shtator
Anonim
Speedometri i makinës RC i punës
Speedometri i makinës RC i punës

Ky është një projekt i shkurtër që kam krijuar si pjesë e një ndërtimi më të madh RC të një Land Rover të Lehtë. Vendosa që më pëlqente të kisha një shpejtësimatës në pult, por e dija që një servo nuk do ta priste. Kishte vetëm një mundësi të arsyeshme: vendosni arduino!

Pak sfond për të filluar me … Unë nuk jam një person kodues ose elektronik. Unë ende mendoj për energjinë elektrike për sa i përket rrjedhës së ujit dhe jam disi i mistifikuar nga rezistorët. Thënë kështu, nëse edhe unë kam qenë në gjendje ta bëj këtë punë, atëherë ju gjithashtu duhet të jeni në gjendje!

LISTA E PJESVE:

Mikrokontrolluesi: Kam përdorur një çip ATTiny85, i cili kushtoi rreth 1 £ secili.

Programues mikrokontrollues: Për të marrë kodin në çip, ju nevojitet një mënyrë për ta programuar atë. Me arduino të rregullt kjo është vetëm një kabllo USB, por për çipin ATTiny, keni nevojë për diçka shtesë. Ju mund të përdorni një arduino tjetër për ta bërë këtë ose, si unë, mund të përdorni një programues Tiny AVR nga Sparkfun.

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

Unë do ta rekomandoja këtë, pasi kam provuar t'i programoj me metoda të ndryshme dhe kjo është më e lehtë. Bordi është pak i shtrenjtë, por një investim i mirë nëse bëni shumë projekte ATTiny.

8 Fole Chip Fole: Nëse e vendosni çipin në një prizë në vend që ta bashkoni drejtpërdrejt, mund t'i lejoni vetes disa gabime në montim. E thënë nga përvoja - askush nuk dëshiron të shkrijë patate të skuqura për t'i riprogramuar ato.

Kondensatori: Përdoret një kondensator shkëputës prej 100nF (kodi 104). Unë nuk e kuptoj plotësisht pse, por lexova se kondensatorët e shkëputjes janë të rëndësishëm në internet, kështu që duhet të jetë e vërtetë …

Rezistori: Një rezistencë 10kΩ përdoret për të tërhequr vijën në arduino. Përsëri, një mister tjetër i elektronikës.

Perfboard/Stripboard: Disa baza mbi të cilat mund të mblidhni qarkun tuaj.

Tela dredha -dredha: Teli i veshur me rregullim është shumë i trashë për t'u ngjitur në motor. Përdorimi i telit të hollë të emaluar do të zvogëlojë stresin në terminalet e motorit dhe do ta bëjë jetën tuaj shumë më të lehtë.

Servo Wire: Një fjongo me tre tela që përfundon në një prizë femre JR me 3 kunja. Unë e mora nga një servo të djegur që po 'modifikoja'.

Stepper Motor: Kam përdorur një motor stepper bipolar Nidec 6 mm. Çdo hapës i vogël duhet të funksionojë, edhe pse i mbani të vegjël, pasi hapi po largohet direkt nga Arduino.

Këmbët e kokës: Jo thelbësore, por nëse lidhni hapin tuaj në 4 kunja të kokës dhe vendosni një prizë në qarkun tuaj, lehtë mund të shkëputni panelin e panelit tuaj për lehtësinë e instalimit.

Kompjuter: Për të programuar bordin tuaj, do t'ju duhet një kompjuter. Ndoshta me Arduino IDE. Dhe ndoshta një kabllo USB. Nëse ka edhe një kabllo energjie, atëherë edhe më mirë.

Hapi 1: Sistemi

Skica themelore e sistemit që krijova ishte një metodë sipas së cilës sinjali i Modulimit të Gjerësisë së Pulsit (PWM) që vjen nga marrësi RC shndërrohet në një spastrim me motor stepper përmes një mikrokontrolluesi ATTiny 85 (uC).

Këtu është një burim për sinjalet PWM dhe RC, por për ta përsëritur këtë nuk keni nevojë ta kuptoni në mënyrë rigoroze.

en.wikipedia.org/wiki/Servo_control

ATTiny është shija ime e preferuar e Arduino sepse është e vogël me akoma mjaftueshëm kunja I/O për të bërë gjëra themelore, kështu që përshtatet në mënyrë të përkryer në modele të vogla dhe projekte RC. Disavantazhi kryesor i ATTiny është se kërkon pak më shumë konfigurim për të programuar një, por pasi ta keni konfiguruar ato janë aq të lira sa mund të blini grumbuj prej tyre për të gjitha llojet e projekteve.

Madhësia e rrotulluesit të shpejtësisë është shumë e vogël për të pasur një motor të drejtuar me reagime, kështu që për të pasur një përgjigje proporcionale duhet të përdoret një motor stepper. Një motor stepper është një motor që lëviz në sasi të veçanta (ose hapa…!), Gjë që e bën atë ideal për një sistem pa reagime si ky. Paralajmërimi i vetëm është se "hapat" do të bëjnë që lëvizja që rezulton të jetë e mprehtë në krahasim me lëmimin. Nëse merrni një hap me hapa të mjaftueshëm për rrotullim, kjo nuk vërehet, por me hapin që kam përdorur në këtë projekt që ka vetëm 20 hapa në një rrotullim të plotë, kërcimi i këndit është mjaft i keq.

Sistemi, kur ndizet, do të lëvizë hapin prapa për dy rrotullime, në mënyrë që të zerojë gjilpërën. Speedometri ka nevojë për një kunj pushimi ku dëshironi të jetë shenja zero, përndryshe ai thjesht do të rrotullohet përgjithmonë. Pastaj harton sinjalet PWM përpara dhe mbrapsht në një numër të caktuar hapash të motorit. Lehtë, apo jo…?

Hapi 2: Softueri

Përgjegjësia: Unë nuk jam programues. Për këtë projekt unë jam ekuivalenti dixhital i Dr. Frankenstein, duke mbledhur diçka që funksionon nga pjesë të ndryshme të gjetura të kodit.

Pra, falënderimet e mia më të përzemërta shkojnë për Duane B, i cili bëri kodin për interpretimin e sinjaleve RC:

rcarduino.blogspot.com/

Dhe Ardunaut, i cili bëri kodin për drejtimin e një hapi si matës analog:

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

Dhe për të dy, faljet e mia më të sinqerta për atë që i bëra kodit tuaj.

Tani kjo është jashtë rrugës, këtu është ajo që duhet të ngarkoni në ATTiny:

#define THROTTLE_SIGNAL_IN 0 // INTERRUPT 0 = PIN DIGJITAL 2 - përdorni numrin e ndërprerjes në attachInterrupt #define THROTTLE_SIGNAL_IN_PIN 2 // INTERRUPT 0 = PIN DIGJITAL 2 - përdorni numrin e PIN -it në dixhitalRregjistroni mikroskopin e e mbytjes neutrale në një makinë RC elektrike #përcakto UPPER_THROTTLE 2000 // kjo është kohëzgjatja në mikrosekonda e mbytjes maksimale në një makinë RC elektrike #përcakto LOWER_THROTTLE 1000 // kjo është kohëzgjatja në mikrosekonda e mbytjes minimale në një RC Car #define DEADZONE 50 // kjo është zona mbytëse e mbytjes. Zona totale e vdekur është dyfishi i kësaj. #përfshi #përcaktoni HAPAT 21 // hapa për rrotullim (i kufizuar në 315 °) Ndryshoni këtë për të rregulluar udhëtimin maksimal të shpejtësimatësit. #përcaktoni COIL1 3 // Kunjat e spirales. ATTiny përdor kunjat 0, 1, 3, 4 për stepper. Pin 2 është kunja e vetme që mund të trajtojë ndërprerjet, kështu që duhet të jetë hyrja. #përcaktoni COIL2 4 // Provoni t'i ndryshoni ato përreth nëse motori stepper nuk funksionon siç duhet. #përcaktoni COIL3 0 #përcaktoni COIL4 1 // krijoni një shembull të klasës stepper: Stepper stepper (HAPAT, COIL1, COIL2, COIL3, COIL4); int pos = 0; // Pozicioni në hapa (0-630) = (0 ° -315 °) int SPEED = 0; float ThrottleInAvg = 0; int MeasurementsToAverage = 60; float Resetcounter = 10; // koha për të rivendosur ndërsa jeni në gaz boshe int Resetval = 0; int i paqëndrueshëm ThrottleIn = LOWER_THROTTLE; e paqëndrueshme e panënshkruar e gjatë StartPeriod = 0; // vendosur në ndërprerje // ne mund të përdorim nThrottleIn = 0 në lak në vend të një ndryshoreje të veçantë, por përdorimi i bNewThrottleSignal për të treguar që kemi një sinjal të ri // është më i qartë për këtë shembull të parë të konfigurimit të pavlefshëm () {// tregoni Arduino ne duam që funksioni calcInput të thirret sa herë që INT0 (kunja dixhitale 2) ndryshon nga HIGH në LOW ose LOW në HIGH // kapja e këtyre ndryshimeve do të na lejojë të llogarisim sa gjatë impulsi i hyrjes është i bashkangjitur (THROTTLE_SIGNAL_IN, calcInput, CHANGE); stepper.setSpeed (50); // vendosni shpejtësinë e motorit në 30 RPM (360 PPS afërsisht.). stepper.step (HAPAT * 2); // Rivendos Pozicionin (X hapa kundër akrepave të orës). } void loop () {Resetval = millis; për (int i = 0; i (NEUTRAL_THROTTLE + DEADZONE) && ThrottleInAvg <UPPER_THROTTLE) {SPEED = hartë (ThrottleInAvg, (NEUTRAL_THROTTLE + DEADZONE), UPPER_THROTLET,; Rivendosja = 0; } // Hartimi i kundërt tjetër nëse (ThrottleInAvg LOWER_THROTTLE) {SPEED = hartë (ThrottleInAvg, LOWER_THROTTLE, (NEUTRAL_THROTTLE - DEADZONE), 255, 0); Rivendosja = 0; } // Jashtë rrezes tjetër nëse (ThrottleInAvg> UPPER_THROTTLE) {SPEED = 255; Rivendosja = 0; } // Jashtë diapazonit më poshtë nëse (ThrottleInAvg Resetcounter) {stepper.step (4); // Po përpiqem t'i them hapit të rivendosë veten nëse sinjali RC është në zonën e vdekur për një kohë të gjatë. Nuk jam i sigurt nëse kjo pjesë e kodit funksionon në të vërtetë. }} int val = SPEED; // merrni vlerën e potenciometrit (diapazoni 0-1023) val = hartë (val, 0, 255, 0, HAPAT * 0.75); // diapazoni i potave në hartë në rangun stepper. nëse (abs (val - pos)> 2) {// nëse diferenca është më e madhe se 2 hapa. nëse ((val - pos)> 0) {stepper.step (-1); // lëviz një hap në të majtë. pos ++; } if ((val - pos) <0) {stepper.step (1); // lëviz një hap djathtas. pos--; }} // vonesa (10); } void calcInput () {// nëse kunja është e lartë, është fillimi i një ndërprerjeje nëse (digitalRead (THROTTLE_SIGNAL_IN_PIN) == HIGH) {// merrni kohën duke përdorur mikro - kur kodi ynë të jetë shumë i zënë, kjo do të bëhet e pasaktë, por për aplikacionin aktual është // lehtë për tu kuptuar dhe funksionon shumë mirë StartPeriod = micros (); } else {// nëse kunja është e ulët, është skaji i rënies së pulsit, kështu që tani mund të llogarisim kohëzgjatjen e pulsit duke zbritur kohën // e fillimit ulStartPeriod nga koha aktuale e kthyer nga mikros () nëse (Fillimi Periudha) {ThrottleIn = (int) (mikros () - Periudha e fillimit); Periudha fillestare = 0; }}}

Referojuni kësaj për më shumë informacion mbi programimin e një ATTiny85:

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

Hapi 3: Hardueri

Hardueri
Hardueri
Hardueri
Hardueri
Hardueri
Hardueri

Referojuni diagramit të qarkut për ndërtimin e qarkut. Si ta montoni varet nga ju, por unë do të sugjeroja të përdorni një copë stripboard/dërrasë të përdorur për prototipizimin e bordit qark, dhe montimin e çipit në një prizë.

C1 = 100nF

R1 = 10kΩ

Kondensatori duhet të montohet sa më afër çipit që të jetë e mundur për të qenë më efektiv.

Kur lidhni telat e emaluar në motor, jini jashtëzakonisht të kujdesshëm, pasi terminalet në motorë pëlqejnë të shkëputen dhe të ndajnë tela spirale në motor. Për të korrigjuar këtë, një zgjidhje e mirë është të lidhni telat, dhe pastaj vendosni një copë të madhe prej epoksi 2-pjesësh mbi nyje,, lëreni të shërohet, pastaj ktheni telat së bashku. Kjo zvogëlon stresin në nyjet individuale të terminalit dhe duhet t'i ndalojë ato të këputen. Nëse nuk e bëni këtë, ata do të prishen në kohën më pak të përshtatshme, të garantuar.

Nëse bëni lidhësin e kokës së kokës dhe vendosni kunjat kështu: [Ca1, Cb1, Ca2, Cb2] me Ca1 që qëndron për mbështjelljen A, tela 1 etj. Kjo ju lejon të ndryshoni drejtimin e rrotullimit të matësit duke ndërruar prizën rreth e rrotull

Matësi do të ketë nevojë për një ndalesë fundore për të kalibruar pozicionin zero kundrejt. Unë do të rekomandoja të bëja gjilpërën prej metali nëse është e mundur. Kjo ndalon përkuljen kur godet në fund. Një mënyrë për ta vendosur gjilpërën në një pozicion të mirë është ngjitja e përkohshme e gjilpërës në bosht, fuqizimi i modulit, lëreni të pushojë dhe më pas hiqeni dhe ngjiteni përsëri gjilpërën në bosht, me gjilpërën e mbështetur në ndalese Kjo e lidh gjilpërën me mbërthimin magnetik të motorit dhe siguron që gjilpëra juaj duhet të pushojë gjithmonë në fund.

Hapi 4: Epilogu

Shpresoj se ju ka pëlqyer ky udhëzues i shkurtër dhe e keni gjetur të dobishëm. Nëse ndërtoni një nga këto, më tregoni!

Paç fat!

Recommended: