Sadržaj:

Radni brzinomer na automobilu sa daljinskim upravljačem: 4 koraka (sa slikama)
Radni brzinomer na automobilu sa daljinskim upravljačem: 4 koraka (sa slikama)

Video: Radni brzinomer na automobilu sa daljinskim upravljačem: 4 koraka (sa slikama)

Video: Radni brzinomer na automobilu sa daljinskim upravljačem: 4 koraka (sa slikama)
Video: House Tour of an NHL Player!!*INSANE House* 2024, Septembar
Anonim
Radni RC brzinomjer automobila
Radni RC brzinomjer automobila

Ovo je kratki projekt koji sam stvorio kao dio veće RC verzije lakog Land Rovera. Odlučio sam da mi se sviđa da imam radni brzinomjer na nadzornoj ploči, ali sam znao da ga servo neće prerezati. Postojala je samo jedna razumna opcija: rasporediti arduino!

Za početak malo pozadine … Nisam osoba za kodiranje ili elektroniku. Još uvijek razmišljam o električnoj energiji u smislu protoka vode, a otpornici me pomalo zbunjuju. Međutim, ako sam čak i ja uspio ovo uspjeti, trebali biste i vi!

LISTA DIJELOVA:

Mikrokontroler: Koristio sam ATTiny85 čip, koji košta oko 1 GBP svaki.

Programer za mikrokontroler: Da biste dobili kod na čip, potreban vam je način da ga programirate. Sa običnim arduinom ovo je samo USB kabel, ali za ATTiny čip trebate nešto dodatno. Za to možete upotrijebiti drugi arduino ili, poput mene, možete koristiti Tiny AVR programer iz Sparkfuna.

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

Preporučio bih ovo jer sam ih pokušao programirati različitim metodama, a ovaj je najjednostavniji. Ploča je malo skupa, ali dobra investicija ako radite puno ATTiny projekata.

8 Pin utičnica: Ako umetnete čip u utičnicu umjesto da ga lemite direktno, možete sebi priuštiti neke greške u sastavljanju. Govoreno iz iskustva - nitko ne želi odmrznuti čipove da bi ih reprogramirao.

Kondenzator: Koristi se kondenzator za odvajanje od 100nF (kod 104). Ne razumijem baš zašto, ali sam pročitao da su odvajanje kondenzatora važni na internetu, pa mora biti istina …

Otpornik: Otpornik od 10 kΩ koristi se za povlačenje linije prema arduinu. Opet, još jedna misterija elektronike.

Perfboard/Stripboard: Neka podloga na kojoj možete sastaviti svoje kolo.

Žica za namotavanje: Obična omotana žica je predebela da bi se lemila na motor. Korištenje fine emajlirane žice smanjit će opterećenje na stezaljkama motora i znatno će vam olakšati život.

Servo žica: Trožilna vrpca koja završava 3-polnim ženskim utikačem JR. Ja sam svoj dobio od izgorelog servo -a koji sam 'modifikovao'.

Koračni motor: Koristio sam bipolarni Nidec koračni motor od 6 mm. Svaki mali steper bi trebao raditi, iako ga držite malim jer se steper pokreće izravno iz Arduina.

Igle zaglavlja: Nisu bitne, ali ako steper povežete na 4 igle zaglavlja i uključite utičnicu u krug, lako ćete isključiti nadzornu ploču radi lakše instalacije.

Računar: Za programiranje ploče potreban vam je računar. Moguće s Arduino IDE -om. A možda i USB kabel. Ako ima i kabel za napajanje, još bolje.

Korak 1: Sistem

Osnovni prikaz sistema koji sam stvorio bila je metoda u kojoj se signal pulsno -širinske modulacije (PWM) koji dolazi iz RC prijemnika pretvara u premotavanje koračnih motora putem ATTiny 85 mikrokontrolera (uC).

Evo izvora o PWM signalima i RC -u, ali da biste ga replicirali, ne morate ga strogo razumjeti.

en.wikipedia.org/wiki/Servo_control

ATTiny je moja omiljena aroma Arduina jer je mali s još uvijek dovoljno I/O pinova za osnovne stvari, pa se savršeno uklapa u male modele i RC projekte. Glavni nedostatak ATTinyja je to što zahtijeva malo više postavljanja da bi se programirao, ali nakon što ga postavite, toliko su jeftini da ih možete kupiti za sve vrste projekata.

Veličina brojača brzinomera je premala da bi imala motor sa zupčanikom sa povratnom spregom, pa je za proporcionalni odziv morao biti korišćen koračni motor. Koračni motor je motor koji se kreće u diskretnim količinama (ili koracima …!), Što ga čini idealnim za sistem bez povratne veze. Jedino upozorenje je da će „koraci“uzrokovati da rezultirajuće kretanje bude trzajno, a ne glatko. Ako dobijete steper s dovoljno koraka po rotaciji, to se ne primjećuje, ali s time da steper koji sam koristio u ovom projektu ima samo 20 -ak koraka u potpunoj rotaciji, skok kuta je prilično loš.

Sistem će pri uključivanju pokretati steper unatrag za dva okreta, tako da iglu poništi. Brzinomjeru je potreban zatik za odmaranje na mjestu gdje želite da bude nulta oznaka, inače će se okretati zauvijek. Zatim preslikava PWM signale naprijed i natrag u određeni broj koraka motora. Lako, zar ne …?

Korak 2: Softver

Odricanje odgovornosti: Nisam programer. Za ovaj projekt ja sam digitalni ekvivalent dr. Frankensteina, sastavljajući nešto što radi od različitih pronađenih bitova koda.

Dakle, moje najsrdačnije hvala ide Duaneu B, koji je napravio kod za tumačenje RC signala:

rcarduino.blogspot.com/

I Ardunautu, koji je napravio kod za pokretanje stepera kao analogni mjerač:

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

I oboma, moje najiskrenije izvinjenje za ono što sam učinio vašem kodu.

Sada to nije u redu, evo šta možete postaviti na ATTiny:

#define THROTTLE_SIGNAL_IN 0 // INTERRUPT 0 = DIGITAL PIN 2 - koristite broj prekida u attachInterrupt #definirajte THROTTLE_SIGNAL_IN_PIN 2 // INTERRUPT 0 = DIGITAL PIN 2 - koristite PIN broj u digitalnom čitanju #definirajte NEUTRAL_THROTTLE ovo je 1500 mikrosekvenci ovo je 1500 neutralnog gasa na električnom RC automobilu #define UPPER_THROTTLE 2000 // ovo je trajanje u mikrosekundama maksimalnog gasa na električnom RC automobilu #define LOWER_THROTTLE 1000 // ovo je trajanje u mikrosekundama minimalnog gasa na električnom RC automobilu #define DEADZONE 50 // ovo je mrtva zona za gas. Ukupna mrtva zona je dvostruko veća od ove. #include #define STEPS 21 // koraci po okretu (ograničeno na 315 °) Promijenite ovo za podešavanje maksimalnog hoda brzinomera. #define COIL1 3 // Igle zavojnice. ATTiny koristi igle 0, 1, 3, 4 za steper. Pin 2 je jedini pin koji može obraditi prekide pa mora biti ulaz. #define COIL2 4 // Pokušajte ih promijeniti ako koračni motor ne radi ispravno. #define COIL3 0 #define COIL4 1 // kreirajte instancu klase koraka: Stepper stepper (STEPS, COIL1, COIL2, COIL3, COIL4); int pos = 0; // Pozicija u koracima (0-630) = (0 ° -315 °) int SPEED = 0; plovak ThrottleInAvg = 0; int MeasurementsToAverage = 60; float Resetcounter = 10; // vrijeme za resetiranje u praznom hodu int Resetval = 0; isparljivi int ThrottleIn = LOWER_THROTTLE; isparljivo nepotpisano dugo StartPeriod = 0; // postavljeno u prekidu // mogli bismo koristiti nThrottleIn = 0 u petlji umjesto zasebne varijable, ali upotrebom bNewThrottleSignal za označavanje da imamo novi signal // jasnije je za ovaj prvi primjer void setup () {// recite Arduinu želimo da se funkcija calcInput poziva svaki put kada se INT0 (digitalni pin 2) promijeni s HIGH na LOW ili LOW na HIGH // hvatanje ovih promjena omogućit će nam da izračunamo koliko dugo je ulazni impuls attachInterrupt (THROTTLE_SIGNAL_IN, calcInput, CHANGE); stepper.setSpeed (50); // postavite brzinu motora na 30 okr/ min (približno 360 PPS). stepper.step (STEPS * 2); // Vraćanje položaja (X koraci u smjeru suprotnom od kazaljke na satu). } void loop () {Resetval = millis; za (int i = 0; i (NEUTRAL_THROTTLE + DEADZONE) && ThrottleInAvg <UPPER_THROTTLE) {SPEED = map (ThrottleInAvg, (NEUTRAL_THROTTLE + DEADZONE), UPPER_THROTTLE, 0, 255); Resetval = 0; } // Obrnuto mapiranje else if (ThrottleInAvg LOWER_THROTTLE) {SPEED = map (ThrottleInAvg, LOWER_THROTTLE, (NEUTRAL_THROTTLE - DEADZONE), 255, 0); Resetval = 0; } // Van opsega gornje else if (ThrottleInAvg> UPPER_THROTTLE) {SPEED = 255; Resetval = 0; } // Izvan dometa niže else if (ThrottleInAvg Resetcounter) {stepper.step (4); // Pokušavam reći steperu da se sam resetira ako je RC signal dugo u mrtvoj zoni. Nisam siguran radi li ovaj dio koda. }} int val = SPEED; // dobivamo vrijednost potenciometra (raspon 0-1023) val = map (val, 0, 255, 0, STEPS * 0.75); // mapiranje raspona pot u rasponu koraka. if (abs (val - pos)> 2) {// ako je razlika veća od 2 koraka. if ((val - pos)> 0) {stepper.step (-1); // pomaknite se jedan korak ulijevo. pos ++; } if ((val - poz) <0) {stepper.step (1); // pomaknite se jedan korak udesno. pos--; }} // kašnjenje (10); } void calcInput () {// ako je pin visok, to je početak prekida if (digitalRead (THROTTLE_SIGNAL_IN_PIN) == HIGH) {// dobiti vrijeme pomoću mikrofona - kada naš kôd postane jako zauzet, to će postati netočno, ali za trenutnu aplikaciju // lako razumljiv i radi vrlo dobro StartPeriod = micros (); } else {// ako je pin nizak, to je padajući rub impulsa pa sada možemo izračunati trajanje impulsa oduzimanjem // start time ulStartPeriod od trenutnog vremena koje vraća micros () if (StartPeriod) {ThrottleIn = (int) (micros () - StartPeriod); StartPeriod = 0; }}}

Za više informacija o programiranju ATTiny85 pogledajte ovo:

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

Korak 3: Hardver

Hardver
Hardver
Hardver
Hardver
Hardver
Hardver

Za izradu kruga pogledajte dijagram kola. Na vama je kako ćete ga sastaviti, ali ja bih predložio korištenje malo stripboard -a/perfboard -a koji se koristi za izradu prototipa tiskanih ploča i postavljanje čipa u utičnicu.

C1 = 100nF

R1 = 10 kΩ

Kondenzator treba postaviti što je moguće bliže čipu kako bi bio najučinkovitiji.

Prilikom lemljenja emajliranih žica na motor, budite izuzetno oprezni jer se terminali na motorima vole otkinuti i odvojiti zavojnicu od motora. Da biste to riješili, dobro rješenje je da zalemite žice, a zatim na zglob stavite veliku mrlju dvodijelnog epoksida, pustite da se stvrdne, a zatim uvijte žice zajedno. To smanjuje stres na pojedinačnim terminalnim zglobovima i trebalo bi ih spriječiti da se otkinu. Ako to ne učinite, pucat će u najmanje prikladno vrijeme, zajamčeno.

Ako napravite utikač zaglavlja zaglavlja i postavite pinove na sljedeći način: [Ca1, Cb1, Ca2, Cb2] s Ca1 koji stoji za zavojnicu A, žica 1 itd. To vam omogućuje promjenu smjera okretanja mjerača zamjenom utikača okolo.

Mjeraču će biti potreban krajnji zaustavljač za kalibriranje nulte pozicije prema. Preporučujem da iglu napravite od metala ako je moguće. Ovo ga zaustavlja pri savijanju kada dođe do krajnjeg zaustavljanja. Način da iglu dovedete u dobar položaj je da privremeno zalijepite iglu na osovinu, uključite modul, pustite je da se odmori, a zatim uklonite i ponovo zalijepite iglu na osovinu, s iglom naslonjenom na endstop. Ovo poravnava iglu s magnetskim zupčanikom motora i osigurava da vaša igla uvijek treba da se nasloni na krajnji graničnik.

Korak 4: Epilog

Nadamo se da ste uživali u ovom kratkom uputstvu i da vam je bilo korisno. Ako napravite jednu od ovih, javite mi!

Sretno!

Preporučuje se: