- Nerašytas nuolatinės srovės variklis RC automobiliams
- Reikalingos medžiagos
- RF vairasvirtė RC automobiliui naudojant „Arduino“
- „Arduino RC“ automobilio grandinės schema
- Gamyba PCB Arduino RC automobiliui
- PCB surinkimas
- 3D spausdinimo ratai ir variklio tvirtinimas
- „Arduino“ programavimas
- „Arduino RC“ automobilio darbas
RC automobiliais visada smagu žaisti, aš asmeniškai esu didelis šių nuotoliniu būdu valdomų automobilių gerbėjas ir daug žaidžiau (vis dar žaidžiu) su jais. Šiandien dauguma šių automobilių suteikia didžiulį sukimo momentą važiuojant nelygiu keliu, tačiau yra kažkas, kas visada atsiliko, jo greitis !!.. Taigi šiame projekte mes sukursime visiškai kitokio tipo RC automobilius, naudodami pagrindinį „ Arduino “. Šio automobilio tikslas yra pasiekti maksimalų greitį, todėl nusprendžiau išbandyti bešaminį nuolatinės srovės variklį RC automobiliui. Šie varikliai paprastai naudojami bepiločiuose orlaiviuose ir jų greitis yra 39000 RPM kurių turėtų būti daugiau nei pakankamai, kad numalšintume mūsų greičio troškulį. Automobilis bus varomas maža ličio baterija ir jį bus galima valdyti nuotoliniu būdu naudojant „nRF24L01 RF“ modulį. Arba, jei ieškote kažko paprasto, taip pat galite patikrinti šiuos „Simple RF Robot“ ir „Raspberry Pi Bluetooth“ automobilių projektus.
Nerašytas nuolatinės srovės variklis RC automobiliams
Coreless Nuolatinės srovės variklis, kuris naudojamas šiame projekte parodyta žemiau pateiktame paveikslėlyje. Juos galite lengvai rasti, nes jie plačiai naudojami mini dronuose. Tiesiog ieškokite 8520 magnetinio mikrobandinio variklio ir juos rasite.
Dabar yra tam tikrų trūkumų naudojant nuolatinės srovės variklius RC automobiliui. Pirmas dalykas - jie suteikia labai mažą pradinį sukimo momentą, todėl mūsų RC automobilis turėtų būti kuo lengvesnis. Štai kodėl nusprendžiau pastatyti visą automobilį ant plokštės, naudodamas SMD komponentus, ir kiek įmanoma sumažinau plokštės dydį. Antroji problema yra jo didelis greitis, 39000 RPM (veleno RPM) yra sunku valdyti, todėl mums reikia greičio valdymo grandinės „Arduino“ pusėje, kurią sukūrėme naudodami MOSFET. Trečias dalykas yra tas, kad šie varikliai bus maitinami iš vieno ličio-polimero akumuliatoriaus, kurio darbinė įtampa yra nuo 3,6 V iki 4,2 V, todėl turime sukurti savo grandinę, kad veiktų 3,3 V įtampa. Štai kodėl mes naudojome 3,3 V „Arduino Pro mini“kaip mūsų RC automobilio smegenys. Išsprendę šias problemas, pažvelkime į medžiagas, reikalingas šiam projektui sukurti.
Reikalingos medžiagos
- 3,3 V „Arduino Pro Mini“
- „Arduino Nano“
- NRF24L01 - 2vnt
- Vairasvirtės modulis
- SI2302 MOSFET
- 1N5819 Diodas
- Nerašyti „BLDC Motors“
- AMS1117-3.3V
- Ličio polimero baterija
- Rezistoriai, kondensatoriai,
- Jungiamieji laidai
RF vairasvirtė RC automobiliui naudojant „Arduino“
Kaip minėta anksčiau, RC automobilis bus valdomas nuotoliniu būdu naudojant RF vairasvirtę. Ši vairasvirtė taip pat bus pastatyta naudojant „Arduino“ kartu su „nRF24L01“ RF moduliu. Mes taip pat naudojome „Joystick“ modulį norėdami valdyti savo RC reikalinga kryptimi. Jei dar visiškai nesinaudojote šiais dviem moduliais, galite paskaityti „Interfacing Arduino“ su „nRF24L01“ ir „Interfacing Joystick“ su „Arduino“ straipsniais, kad sužinotumėte, kaip jie veikia ir kaip jais naudotis. Norėdami sukurti „ Arduino RF“ nuotolinę vairasvirtę, galite vadovautis žemiau pateikta grandinės schema.
„RF Joystick“ grandinę galima maitinti naudojant nano plokštės USB prievadą. „NRF24L01“ modulis veikia tik esant 3,3 V įtampai, todėl „Arduino“ naudojome 3,3 V kaištį. Aš sukonstravau grandinę ant duonos lentos ir atrodo taip, kaip nurodyta toliau, jei norite, taip pat galite sukurti tam skirtą PCB.
„ Arduino“ kodas „RF Joystick“ grandinei yra gana paprastas, mes turime perskaityti X vertę ir Y vertę iš savo vairasvirtės ir išsiųsti jas į RC automobilį per „nRF24L01“. Visą šios grandinės programą rasite šio puslapio apačioje. Nesiaiškinsime to, nes mes jau aptarėme aukščiau pateiktoje sąsajos projekto nuorodoje.
„Arduino RC“ automobilio grandinės schema
Visa mūsų nuotolinio valdymo „Arduino“ automobilio schema parodyta žemiau. Grandinės schemoje taip pat yra galimybė pridėti du TCRT5000 IR modulius į mūsų automobilį. Tai buvo suplanuota tam, kad mūsų RC automobilis galėtų veikti kaip robotas, leidžiantis sekti liniją, kad jis galėtų dirbti pats, nevaldomas išoriškai. Tačiau dėl šio projekto mes nesikoncentruosime į jį, stebėkite kitą projekto pamoką, kurioje bandysime pastatyti „Greičiausio linijos sekėjo robotą“. Aš sujungiau abi grandines vienoje PCB, kad būtų lengviau pastatyti, galite ignoruoti IR jutiklį ir „Op-amp“ skyrių šiam projektui.
ARC automobilį maitins „Lipo“ baterija, prijungta prie P1 gnybto. „ AMS117-3.3V “ naudojamas reguliuoti mūsų nRF24L01 ir „pro-mini“ plokštės 3.3 V įtampą. „Arduino“ plokštę taip pat galime maitinti tiesiai ant neapdoroto kaiščio, tačiau „pro mini“ įmontuotas 3,3 V įtampos reguliatorius negalės tiekti pakankamai srovės į mūsų RF modulius, todėl mes naudojome išorinį įtampos reguliatorių.
Norėdami važiuoti dviem BLDC varikliais, mes panaudojome du SI2302 MOSFET. Svarbu įsitikinti, kad šiuos MOSFETS gali valdyti 3,3 V įtampa. Jei negalite rasti tikslaus tos pačios dalies numerio, galite ieškoti lygiaverčių MOSFET su žemiau pateiktomis perdavimo charakteristikomis
Varikliai gali sunaudoti net 7A didžiausią srovę (nepertraukiamai bandyta 3A esant apkrovai), todėl MOSFET nutekėjimo srovė turėtų būti 7A ar didesnė ir visiškai įsijungti esant 3,3 V įtampai. Kaip matote čia, pasirinktas MOSFET gali suteikti 10A net esant 2.25V įtampai, todėl tai yra idealus pasirinkimas.
Gamyba PCB Arduino RC automobiliui
Smagiausia šio projekto dalis buvo PCB kūrimas. Čia esantys PCB ne tik sudaro grandinę, bet ir veikia kaip mūsų automobilio važiuoklė, todėl mes planavome automobilį, ieškantį jo formos, su galimybėmis lengvai montuoti savo variklius. Taip pat galite pabandyti suprojektuoti savo PCB naudodami anksčiau pateiktą grandinę arba galite naudoti mano PCB dizainą, kuris, kai baigsite, atrodo taip žemiau.
Kaip matote, aš sukūriau PCB, kad galėčiau lengvai montuoti akumuliatorių, variklį ir kitus komponentus. Gerber failą šiai PCB galite atsisiųsti iš nuorodos. Kai būsite pasiruošę „Gerber“ failui, laikas jį pagaminti. Norėdami, kad PCBGOGO lengvai atliktų jūsų PCB, atlikite toliau nurodytus veiksmus
1 žingsnis: Eikite į www.pcbgogo.com, užsiregistruokite, jei tai jūsų pirmas kartas. Tada skirtuke PCB Prototype įveskite savo PCB matmenis, sluoksnių skaičių ir reikalingą PCB skaičių. Mano PCB yra 80 cm × 80 cm, todėl skirtukas atrodo taip žemiau.
2 žingsnis: tęskite spustelėdami mygtuką „ Pasiūlyti dabar “. Būsite nukreipti į puslapį, kuriame prireikus nustatysite keletą papildomų parametrų, pvz., Naudojamos medžiagos takų tarpai ir pan. Tačiau dažniausiai numatytosios vertės veiks gerai. Vienintelis dalykas, į kurį turime atsižvelgti, yra kaina ir laikas. Kaip matote, pastatymo laikas yra tik 2-3 dienos, o mūsų PSB jis kainuoja tik 5 USD. Tada galite pasirinkti pageidaujamą pristatymo būdą pagal savo reikalavimus.
3 žingsnis: Paskutinis žingsnis yra įkelti „Gerber“ failą ir tęsti mokėjimą. Norėdami įsitikinti, kad procesas vyksta sklandžiai, prieš tęsdamas mokėjimą, PCBGOGO patikrina, ar jūsų „Gerber“ failas galioja. Tokiu būdu galite būti tikri, kad jūsų PCB yra draugiškas gamybai ir pasieks jus kaip įsipareigojusį.
PCB surinkimas
Užsakius lentą, ji mane pasiekė po kelių dienų, nors kurjeris tvarkingai paženklintoje, gerai supakuotoje dėžutėje ir kaip visada PCB kokybė buvo nuostabi. Dalinuosi keliomis lentų nuotraukomis žemiau, kad galėtumėte įvertinti.
Aš įjungiau litavimo strypą ir pradėjau montuoti lentą. Kadangi pėdsakai, įklotai, vijokliai ir šilkografija yra tinkamos formos ir dydžio, aš neturėjau problemų surinkti lentą. Lenta buvo paruošta per 10 minučių nuo dėžutės išpakavimo.
Kelios lentos nuotraukos po litavimo parodytos žemiau.
3D spausdinimo ratai ir variklio tvirtinimas
Kaip pastebėjote aukščiau pateiktame paveikslėlyje, mes turime 3D sugalvoti savo variklio tvirtinimą ir robotus. Jei naudojote mūsų anksčiau pateiktą „PCB Gerber“ failą, taip pat galite naudoti 3D modelį, atsisiųsdami jį iš šios visuotinės nuorodos.
Aš naudoju „Cura“, kad supjaustyčiau savo modelius ir atspausdinau juos naudodamas „Tevo Terantuala“ be atramų ir 0% užpildo, kad sumažintumėte svorį. Galite pakeisti nustatymus, tinkamus mūsų spausdintuvui. Kadangi varikliai sukasi labai greitai, man buvo sunku sukurti ratą, kuris tvirtai ir tvirtai priglustų prie variklio ašies. Todėl nusprendžiau naudoti drono peilius rato viduje, kaip matote žemiau
Manau, kad tai yra patikimesnė ir tvirtesnė, tačiau eksperimentuokite su skirtingais ratų dizainais ir komentarų skiltyje praneškite man, kas jums naudinga.
„Arduino“ programavimas
Visą šio projekto programą (tiek „Arduino nano“, tiek „pro mini“) rasite šio puslapio apačioje. Jūsų RC programos paaiškinimas yra toks
Mes pradedame programą įtraukdami reikiamą antraštės failą. Atminkite, kad norint nRF24l01 modulį reikia pridėti biblioteką prie „Arduino IDE“, galite atsisiųsti RF24 biblioteką iš „Github“ naudodami šią nuorodą. Be to, mes jau apibrėžėme minimalų greitį ir maksimalų greitį savo robotui. Mažiausias ir didžiausias diapazonai yra atitinkamai nuo 0 iki 1024.
#define min_speed 200 #define max_speed 800 #include
Tada sąrankos funkcijos metu mes inicijuojame savo nRF24L01 modulį. Mes naudojome 115 juostų, nes ji nėra perkrauta ir nustatėme modulį veikti su maža galia, taip pat galite žaisti naudodamiesi šiais nustatymais.
negaliojanti sąranka () {Serial.begin (9600); myRadio.begin (); „myRadio.setChannel“ (115); // 115 juostos virš WIFI signalų myRadio.setPALevel (RF24_PA_MIN); // MIN galios mažas įtūžis myRadio.setDataRate (RF24_250KBPS); // Minimalus greitis}
Toliau pagrindinės kilpos funkcijoje vykdysime tik funkciją „ReadData“, su kuria mes nuolat skaitysime vertę, siunčiamą iš mūsų siųstuvo vairasvirtės modulio. Atkreipkite dėmesį, kad programoje nurodytas vamzdžio adresas turėtų būti toks pats, kaip ir siųstuvo programoje. Taip pat atspausdinome vertę, kurią gauname derinimo tikslais. Kai vertė bus sėkmingai nuskaityta, vykdysime „Control Car“ funkciją, kad valdytume savo RC automobilį pagal vertę, gautą iš „
Rf“ modulio.
negaliojantis „ReadData“ () {myRadio.openReadingPipe (1, 0xF0F0F0F0AA); // Kurį vamzdį skaityti, 40 bitų adresas myRadio.startListening (); // Sustabdykite „Transminting“ ir pradėkite „Reveicing if“ (myRadio.available ()) {while (myRadio.available ()) {myRadio.read (& data, sizeof (data)); } Serial.print ("\ nGauta:"); Serial.println (duomenys.msg); gautas = duomenys.msg; „Control_Car“ (); }}
„Control Car“ funkcijos viduje valdysime variklius, prijungtus prie PWM kaiščių, naudodami analoginio rašymo funkciją. Savo siųstuvo programoje mes konvertuojome „Nano“ A0 ir A1 kaiščių analogines vertes į 1–10, 11–20, 21–30 ir 31–40, kad valdytume automobilį atitinkamai į priekį, atgal, kairėn ir dešinėn. Žemiau pateikta programa naudojama valdyti robotą į priekį
jei (gauta> = 1 && gauta <= 10) // Pereiti į priekį {int PWM_Value = žemėlapis (gautas, 1, 10, min_speed, max_speed); analogWrite (R_MR, PWM_Value); analogWrite (L_MR, PWM_Value); }
Panašiai mes taip pat galime parašyti dar tris atgalinės, kairės ir dešinės valdymo funkcijas, kaip parodyta žemiau.
jei (gauta> = 11 && gauta <= 20) // pertrauka {int PWM_Value = žemėlapis (gautas, 11, 20, min_speed, max_speed); analogWrite (R_MR, 0); analogWrite (L_MR, 0); } if (gautas> = 21 && gautas = = 30) // Pasukite kairėn {int PWM_Value = žemėlapis (gautas, 21, 30, min_speed, max_speed); analogWrite (R_MR, PWM_Value); analogWrite (L_MR, 0); } if (gautas> = 31 && gautas = = 40) // Pasukite į dešinę {int PWM_Value = žemėlapis (gautas, 31, 40, min_speed, max_speed); analogWrite (R_MR, 0); analogWrite (L_MR, PWM_Value); }
„Arduino RC“ automobilio darbas
Baigę naudoti kodą, įkelkite jį į savo mini plokštę. Išbandykite FTDI modulį naudodami bateriją ir plokštę. Paleiskite kodą, atidarykite serijinę bateriją ir vertę turėtumėte gauti iš savo siųstuvo vairasvirtės modulio. Prijunkite akumuliatorių, o varikliai taip pat turėtų pradėti suktis.
Išsamų projekto darbą galite rasti vaizdo įraše, susietame šio puslapio apačioje. Jei turite klausimų, palikite juos komentarų skiltyje. Taip pat galite naudoti mūsų forumus, kad greitai gautumėte atsakymus į kitus techninius klausimus.