Sisukord:

Töötav RC auto spidomeeter: 4 sammu (piltidega)
Töötav RC auto spidomeeter: 4 sammu (piltidega)

Video: Töötav RC auto spidomeeter: 4 sammu (piltidega)

Video: Töötav RC auto spidomeeter: 4 sammu (piltidega)
Video: НЕ ВЗДУМАЙ снимать аккумулятор с машины. Делай это ПРАВИЛЬНО ! 2024, September
Anonim
Töökorras RC auto spidomeeter
Töökorras RC auto spidomeeter

See on lühike projekt, mille lõin kergekaalulise Land Roveri suurema RC ehituse osana. Otsustasin, et arvasin, et armatuurlaual oleks töökorras spidomeeter, kuid teadsin, et servo seda ei lõika. Oli ainult üks mõistlik variant: arduino juurutamine!

Alustuseks natuke tausta … Ma ei ole kodeerija ega elektroonikainimene. Ma mõtlen endiselt elektrile veevoolu osas ja olen takistite tõttu mõnevõrra müstiline. See tähendab, et kui isegi mina suutsin selle töö teha, siis peaksite ka teie hakkama saama!

OSADE NIMEKIRI:

Mikrokontroller: kasutasin ATTiny85 kiipi, mis maksis umbes 1 naelsterlingit.

Mikrokontrolleri programmeerija: koodi kiibile jõudmiseks vajate viisi selle programmeerimiseks. Tavalise arduino puhul on see lihtsalt USB -kaabel, kuid ATTiny kiibi jaoks vajate midagi täiendavat. Selleks võite kasutada teist arduinot või nagu mina, Sparkfuni Tiny AVR programmeerijat.

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

Ma soovitaksin seda, kuna olen proovinud neid programmeerida erinevate meetoditega ja see on kõige lihtsam. Plaat on natuke kallis, kuid hea investeering, kui teete palju ATTiny projekte.

8 tihvtiga kiibipesa: kui panete kiibi pistikupessa, mitte ei joota seda otse, võite endale lubada kokkupanekul mõningaid vigu. Kogemusest rääkides - keegi ei taha kiipe lahjendada, et neid ümber programmeerida.

Kondensaator: kasutatakse 100nF eraldusvõimega kondensaatorit (kood 104). Ma ei saa päris täpselt aru, miks, aga lugesin, et kondensaatorite lahtiühendamine on Internetis oluline, nii et see peab olema tõsi …

Takisti: 10 kΩ takisti kasutatakse liini tõmbamiseks arduino sisse. Jällegi veel üks elektroonika müsteerium.

Perfboard/Stripboard: mõni põrandaliist, millele oma vooluringi kokku panna.

Keermetraat: tavaline ümbrisega traat on mootori külge jootmiseks liiga paks. Peenemailitud traadi kasutamine vähendab mootori klemmide pinget ja muudab teie elu palju lihtsamaks.

Servotraat: kolme juhtmega lint, mis lõpeb 3-kontaktilise JR-pistikuga. Ma sain oma põlenud servost, mida ma "modifitseerisin".

Sammumootor: kasutasin 6 mm bipolaarset Nidec samm -mootorit. Kõik väikesed sammud peaksid töötama, kuigi hoidke need väikesed, kuna steppi juhitakse otse Arduinost.

Päisepoldid: pole hädavajalik, kuid kui ühendate oma stepperi 4 päisepistikuga ja panete oma vooluringi pistikupesa, saate hõlpsasti paigaldamise hõlbustamiseks armatuurlaua lahti ühendada.

Arvuti: plaadi programmeerimiseks vajate arvutit. Võimalik, et Arduino IDE -ga. Ja võib -olla USB -kaabel. Kui sellel on ka toitekaabel, siis isegi parem.

Samm: süsteem

Minu loodud süsteemi põhijooned olid meetod, mille abil RC vastuvõtjast tulev impulsi laiuse modulatsiooni (PWM) signaal muundatakse samm -mootoriga pühkimiseks ATTiny 85 mikrokontrolleri (uC) kaudu.

Siin on ressurss PWM -signaalide ja RC kohta, kuid selle kordamiseks ei pea te sellest rangelt aru saama.

en.wikipedia.org/wiki/Servo_control

ATTiny on minu Arduino lemmikmaitse, sest see on väike ja I/O nööpnõelu on piisavalt, et teha põhilisi asju, seega sobib see ideaalselt väikestesse mudelitesse ja RC -projektidesse. ATTiny peamine negatiivne külg on see, et selle programmeerimine nõuab natuke rohkem seadistamist, kuid kui olete selle seadistanud, on need nii odavad, et saate neid igasuguste projektide jaoks osta.

Spidomeetri valiku suurus on tagasisidega hammasülekandega mootori jaoks liiga väike, nii et proportsionaalse reaktsiooni saamiseks tuli kasutada samm -mootorit. Sammumootor on mootor, mida liigutatakse diskreetsetes kogustes (või sammude kaupa…!), Mis teeb selle ideaalseks selliseks tagasisideta süsteemiks. Ainus hoiatus on see, et "sammud" põhjustavad sellest tuleneva liikumise tõmblemise, mitte sujuva. Kui saate stepperi, mille pöörlemissagedus on piisav, ei ole see märgatav, kuid selle sammuga, mida ma selles projektis kasutasin, oli täispöördel ainult umbes 20 sammu, on nurgahüpe üsna halb.

Süsteem lülitab sisselülitamisel samm-sammult kaks pööret tagasi, et nõel nullida. Spidomeeter vajab puhkepinda, kuhu soovite nullmärgi, vastasel juhul pöörleb see igavesti. Seejärel kaardistab see edasi- ja tagasikäigu PWM -signaalid mootori määratud arvu sammude jaoks. Lihtne, eks…?

Samm 2: Tarkvara

Vastutusest loobumine: ma pole programmeerija. Selle projekti jaoks olen ma dr Frankensteini digitaalne vaste, panen kokku midagi, mis töötab välja erinevatest leitud koodibittidest.

Niisiis, minu südamlik tänu kuulub Duane B -le, kes koostas koodi RC -signaalide tõlgendamiseks:

rcarduino.blogspot.com/

Ja Ardunautile, kes tegi analoogmõõdikuna stepperi käitamise koodi:

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

Ja mõlemale minu siirad vabandused selle eest, mida ma teie koodiga tegin.

Nüüd on see eemal, siin on see, mida ATTiny -sse üles laadida:

#define THROTTLE_SIGNAL_IN 0 // INTERRUPT 0 = DIGITAL PIN 2 - kasutage manuses olevat katkestusnumbritInterrupt #define THROTTLE_SIGNAL_IN_PIN 2 // INTERRUPT 0 = DIGITAL PIN 2 - kasutage PIN -koodi digitaalses lugemises #define NEUTRAL_THROTTUL neutraalse gaasihoob elektrilisel RC -autol #define UPPER_THROTTLE 2000 // see on elektrilise RC -auto maksimaalse gaasihoova kestus mikrosekundites #define LOWER_THROTTLE 1000 // see on elektrilise RC -auto minimaalse gaasihoova kestus mikrosekundites #define DEADZONE 50 // see on gaasipedaali survetsoon. Kogu survetsoon on sellest kahekordne. #sisalda #define STEPS 21 // sammu pöörde kohta (piiratud 315 ° -ni) Muutke seda, et reguleerida spidomeetri maksimaalset käiku. #define COIL1 3 // pooli tihvtid. ATTiny kasutab sammude jaoks tihvte 0, 1, 3, 4. Nööpnõel 2 on ainus tihvt, mis saab katkestustega hakkama, nii et see peab olema sisend. #define COIL2 4 // Proovige neid muuta, kui samm -mootor ei tööta korralikult. #define COIL3 0 #define COIL4 1 // stepper klassi eksemplari loomine: Stepper stepper (STEPS, COIL1, COIL2, COIL3, COIL4); int pos = 0; // Asend sammudes (0-630) = (0 ° -315 °) int SPEED = 0; ujuk ThrottleInAvg = 0; int MeasurementsToAverage = 60; ujuk Resetcounter = 10; // tühistamisgaasi ajal lähtestamise aeg int Resetval = 0; lenduv int ThrottleIn = LOWER_THROTTLE; lenduv allkirjastamata pikk StartPeriod = 0; // seatud katkestusseadmesse // me võiksime kasutada nThrottleIn = 0 silmusena eraldi muutuja asemel, kuid kasutades bNewThrottleSignal näitamaks, et meil on uus signaal // on selle esimese näite puhul selgem void setup () {// ütle Arduinole tahame, et funktsiooni calcInput helistataks alati, kui INT0 (digitaalne tihvt 2) muutub HIGH -st madalaks või LOW -st kõrgeks // nende muutuste tabamine võimaldab meil arvutada, kui kaua sisendimpulss on kinnitatudInterrupt (THROTTLE_SIGNAL_IN, calcInput, CHANGE); stepper.setSpeed (50); // seadistage mootori pöörlemiskiirus 30 p/ min (umbes 360 PPS). stepper.step (SAMMUD * 2); // Lähtesta positsioon (X astub vastupäeva). } void loop () {Resetval = millis; (int i = 0; i (NEUTRAL_THROTTLE + DEADZONE) && ThrottleInAvg <UPPER_THROTTLE) {SPEED = kaart (ThrottleInAvg, (NEUTRAL_THROTTLE + DEADZONE), UPPER_THROTTLE, 0, 255); Lähtestus = 0; } // Tagurpidi kaardistamine else if (ThrottleInAvg LOWER_THROTTLE) {SPEED = map (ThrottleInAvg, LOWER_THROTTLE, (NEUTRAL_THROTTLE - DEADZONE), 255, 0); Lähtestus = 0; } // Vahemikust väljaspool ülemine muu if (ThrottleInAvg> UPPER_THROTTLE) {SPEED = 255; Lähtestus = 0; } // Vahemikust väljas madalam, kui (ThrottleInAvg Resetcounter) {stepper.step (4); // Üritan stepperile öelda, et ta nullib ennast uuesti, kui RC-signaal on pikka aega surnud tsoonis. Pole kindel, kas see koodi osa tegelikult töötab. }} int val = KIIRUS; // saada potentsiomeetri väärtus (vahemik 0-1023) val = map (val, 0, 255, 0, STEPS * 0.75); // kaardista potti vahemik astmelises vahemikus. if (abs (val - pos)> 2) {// kui erinevus on suurem kui 2 sammu. if ((val - pos)> 0) {stepper.step (-1); // liigu üks samm vasakule. pos ++; } kui ((val - pos) <0) {stepper.step (1); // liigu üks samm paremale. pos--; }} // viivitus (10); } void calcInput () {// kui nööpnõel on kõrge, siis on see katkestuse algus, kui (digitalRead (THROTTLE_SIGNAL_IN_PIN) == HIGH) {// saada aega mikrode abil - kui meie kood on väga hõivatud, muutub see ebatäpseks, kuid praeguse rakenduse puhul on see // kergesti mõistetav ja töötab väga hästi StartPeriod = micros (); } else {// kui tihvt on madal, on selle impulsi langev serv, nii et nüüd saame impulsi kestuse arvutada, lahutades // algusaja ulStartPeriod praegusest ajast, mille tagastab micros () if (StartPeriod) {ThrottleIn = (int) (micros () - StartPeriod); Algusperiood = 0; }}}

Siit leiate lisateavet ATTiny85 programmeerimise kohta:

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

Samm: riistvara

Riistvara
Riistvara
Riistvara
Riistvara
Riistvara
Riistvara

Vooluahela ehitamiseks vaadake vooluahela skeemi. Kuidas seda kokku panna, on teie enda otsustada, kuid ma soovitaksin kasutada trükkplaadi prototüüpimiseks kasutatavat ribalauda/parfüümi ja paigaldada kiip pistikupessa.

C1 = 100 nF

R1 = 10 kΩ

Kondensaator tuleks kõige tõhusamalt paigaldada kiibile võimalikult lähedale.

Emaileeritud juhtmete mootorile jootmisel olge äärmiselt ettevaatlik, kuna mootorite klemmidele meeldib mootori küljest lahti tõmmata ja mähisejuhe katkestada. Selle probleemi lahendamiseks on hea lahendus juhtmete jootmine ja seejärel suur vuug 2-osalise epoksüüdiga, lasta sellel kõvastuda ja seejärel juhtmed kokku keerata. See vähendab pinget üksikutele klemmliigenditele ja peaks nende peatamise ära hoidma. Kui te seda ei tee, klõpsavad nad garanteeritult kõige vähem sobival ajal maha.

Kui teete päise tihvti pistiku ja seadistate tihvtid järgmiselt: [Ca1, Cb1, Ca2, Cb2], kus Ca1 tähistab mähist A, traati 1 jne. See võimaldab muuta gabariidi pöörlemissuunda, vahetades pistikut ümberringi.

Mõõtur vajab nullasendi kalibreerimiseks lõpp -peatust. Soovitan võimaluse korral teha nõel metallist. See peatab selle paindumise, kui see tabab lõpp -peatust. Nõela heasse asendisse viimise viis on nõela ajutiselt telje külge liimimine, mooduli sisselülitamine, laskmine puhata ning seejärel nõel telje küljest eemaldamine ja uuesti liimimine nõelaga endstop. See joondab nõela mootori magnetilise ummistusega ja tagab, et nõel peaks alati vastu otsatakki toetuma.

Samm 4: Epiloog

Loodetavasti teile meeldis see lühike õpetlik ja see oli teile kasulik. Kui ehitate ühe neist, andke mulle sellest teada!

Edu!

Soovitan: