- Kerneløs DC-motor til RC-biler
- Nødvendige materialer
- RF joystick til RC bil ved hjælp af Arduino
- Arduino RC Car Circuit Diagram
- Fabrikation af printkort til Arduino RC bil
- Montering af printkortet
- 3D-udskrivningshjul og motorophæng
- Programmering af Arduino
- Arbejde med Arduino RC bil
RC-biler er altid sjove at lege med, jeg er personligt en stor fan af disse fjernstyrede biler og har spillet (stadig gør) med dem i udstrakt grad. De fleste af disse biler i dag giver et enormt drejningsmoment til at håndtere ujævne terræner, men der er noget, der altid slæbte, dens hastighed !!.. Så i dette projekt vil vi bygge en helt anden type RC-bil ved hjælp af Arduino, den vigtigste Målet med denne bil er at opnå maksimal hastighed, derfor besluttede jeg at prøve den kerneløse DC-motor til en RC-bil. Disse motorer bruges normalt i droner og er klassificeret til 39000 RPM som burde være mere end nok til at slukke vores hastighedstørst. Bilen får strøm med et lille lithiumbatteri og kan fjernstyres ved hjælp af nRF24L01 RF-modulet. Alternativt, hvis du leder efter noget simpelt, kan du også tjekke denne Simple RF Robot og Raspberry Pi Bluetooth Car-projekter.
Kerneløs DC-motor til RC-biler
Den kerneløse jævnstrømsmotor, der bruges i dette projekt, vises på billedet nedenfor. Du kan finde dem let, da de er meget brugbare i mini-droner. Se bare efter 8520 Magnetisk Micro Coreless Motor, så finder du disse.
Nu er der visse ulemper ved at bruge jævnstrømsmotorer til en RC-bil. Den første ting er, at de giver meget lavt startmoment, hvorfor vores RC-bil skal være så let som muligt. Dette er grunden til, at jeg besluttede at bygge hele bilen oven på et printkort ved hjælp af SMD-komponenter og reducere kortstørrelsen så meget som muligt. Det andet problem er dens høje hastighed, 39000 omdr./min (skaftets omdrejningstal) er svær at håndtere, så vi har brug for et hastighedskontrolkredsløb på Arduino-siden, som vi byggede ved hjælp af en MOSFET. Den tredje ting er, at disse motorer vil blive drevet af et enkelt lithium-polymer batteri med en driftsspænding mellem 3,6V og 4,2V, så vi er nødt til at designe vores kredsløb til at fungere på 3,3V. Derfor har vi brugt en 3,3V Arduino Pro minisom hjernen i vores RC bil. Med disse problemer sorteret ud, lad os se på de nødvendige materialer til at bygge dette projekt.
Nødvendige materialer
- 3,3V Arduino Pro Mini
- Arduino Nano
- NRF24L01 - 2stk
- Joystick-modul
- SI2302 MOSFET
- 1N5819 Diode
- Coreless BLDC-motorer
- AMS1117-3.3V
- Lithium Polymer batteri
- Modstande, kondensatorer,
- Tilslutning af ledninger
RF joystick til RC bil ved hjælp af Arduino
Som tidligere nævnt styres RC-bilen eksternt ved hjælp af et RF-joystick. Denne joystick vil også blive bygget ved hjælp af en Arduino sammen med et nRF24L01 RF-modul, vi har også brugt joystick-modulet til at styre vores RC i den ønskede retning. Hvis du er helt ny med disse to moduler, kan du overveje at læse Interfacing Arduino med nRF24L01 og Interfacing Joystick med Arduino-artikler for at lære, hvordan de fungerer, og hvordan du bruger dem. For at opbygge din Arduino RF Remote Joystick kan du følge nedenstående kredsløbsdiagram.
RF-joystick-kredsløbet kan få strøm ved hjælp af USB-porten på nano-kortet. NRF24L01-modulet fungerer kun på 3,3 V, derfor har vi brugt 3,3 V-stiften på Arduino. Jeg har konstrueret kredsløbet på et brødbræt, og det ser ud som nedenfor, du kan også oprette et printkort til dette, hvis det kræves.
Den Arduino kode for RF Joystick kredsløb er ret enkel, vi er nødt til at læse den X-værdi og Y-værdi fra vores joystick og sende det til RC bil gennem nRF24L01. Det komplette program til dette kredsløb findes nederst på denne side. Vi kommer ikke ind på forklaringen på det, da vi allerede har diskuteret det i grænsefladesprojektlinket, der er delt ovenfor.
Arduino RC Car Circuit Diagram
Det komplette kredsløbsdiagram for vores fjernstyrede Arduino-bil er vist nedenfor. Kredsløbsdiagrammet indeholder også en mulighed for at tilføje to TCRT5000 IR-moduler til vores bil. Dette var planlagt for at gøre det muligt for vores RC-bil at fungere som en linjefølgende robot, så den kan arbejde alene uden at blive styret eksternt. Af hensyn til dette projekt vil vi dog ikke koncentrere os om det, hold øje med et andet projektstudie, hvor vi vil prøve at opbygge "Fastest Line Follower Robot". Jeg har kombineret begge kredsløb på et enkelt printkort for at gøre det let at bygge, du kan ignorere IR-sensoren og Op-amp-sektionen til dette projekt.
RC-bilen får strøm fra Lipo-batteriet, der er tilsluttet terminal P1. Den AMS117-3.3V bruges til at regulere 3.3V for vores nRF24L01 og vores pro-mini-bord. Vi kan også tænde Arduino-kortet direkte på den rå pin, men den indbyggede 3.3V spændingsregulator på pro mini vil ikke være i stand til at levere tilstrækkelig strøm til vores RF-moduler, derfor har vi brugt en ekstern spændingsregulator.
For at køre vores to BLDC-motorer har vi brugt to SI2302 MOSFET'er. Det er vigtigt at sikre, at disse MOSFETS kan drives af 3,3 V. Hvis du ikke kan finde det nøjagtige samme varenummer, kan du kigge efter tilsvarende MOSFET'er med nedenstående overførselsegenskaber
Motorerne kan forbruge spidsstrøm så højt som 7A (kontinuerlig blev testet til at være 3A med belastning), derfor skulle MOSFET-afløbsstrømmen være 7A eller mere, og den skulle tænde helt ved 3.3V. Som du kan se her, kan MOSFET, som vi valgte, levere 10A selv ved 2,25V, så det er et ideelt valg.
Fabrikation af printkort til Arduino RC bil
Den sjove del med opbygningen af dette projekt var PCB-udvikling. PCB'erne her danner ikke kun kredsløbet, men fungerer også som et chassis til vores bil, så vi planlagde en bil, der ser ud til den med muligheder for nemt at montere vores motorer. Du kan også prøve at designe din egen PCB ved hjælp af kredsløbet ovenfor, eller du kan bruge mit PCB-design, der ser sådan ud nedenfor, når det er afsluttet.
Som du kan se, har jeg designet printkortet til nemt at montere batteri, motor og andre komponenter. Du kan downloade Gerber-filen til dette printkort fra linket. Når du er klar med Gerber-filen, er det tid til at få den fabrikeret. Følg trinene nedenfor for at få dine printkort let udført af PCBGOGO
Trin 1: Gå ind på www.pcbgogo.com, tilmeld dig, hvis det er første gang. Indtast derefter dimensionerne på din PCB, antallet af lag og antallet af PCB, du har brug for, på fanen PCB Prototype. Min PCB er 80cm × 80cm, så fanen ser sådan ud nedenfor.
Trin 2: Fortsæt ved at klikke på knappen Citér nu . Du vil blive ført til en side, hvor du kan indstille et par yderligere parametre, hvis det kræves som det anvendte materiale sporafstand osv. Men for det meste fungerer standardværdierne fint. Det eneste, vi skal overveje her, er pris og tid. Som du kan se, er byggetiden kun 2-3 dage, og det koster kun $ 5 for vores PSB. Du kan derefter vælge en foretrukken forsendelsesmetode baseret på dine krav.
Trin 3: Det sidste trin er at uploade Gerber-filen og fortsætte med betalingen. For at sikre, at processen er glat, verificerer PCBGOGO, om din Gerber-fil er gyldig, inden du fortsætter med betalingen. På denne måde kan du være sikker på, at dit print er fabrikationsvenligt og når dig som engageret.
Montering af printkortet
Efter at bestyrelsen blev bestilt, nåede den mig efter nogle dage, selvom kurér i en pænt mærket, velpakket kasse, og som altid var kvaliteten af printkortet fantastisk. Jeg deler et par billeder af tavlerne nedenfor, som du kan bedømme.
Jeg tændte min loddestang og begyndte at samle tavlen. Da fodspor, pads, vias og silketryk er perfekte i den rigtige form og størrelse, havde jeg ikke noget problem at samle tavlen. Brættet var klar på kun 10 minutter fra udpakningskassen.
Et par billeder af tavlen efter lodning er vist nedenfor.
3D-udskrivningshjul og motorophæng
Som du måske har bemærket i ovenstående billede, skal vi 3D vores motorophæng og hjul til robotten. Hvis du har brugt vores PCB Gerber-fil delt ovenfor, kan du lige så godt bruge en 3D-model ved at downloade den fra dette thingiverse-link.
Jeg har brugt Cura til at skære mine modeller og udskrevet dem ved hjælp af Tevo Terantuala uden understøtninger og 0% påfyldning for at reducere vægten. Du kan ændre den indstilling, der passer til vores printer. Da motorerne roterer meget hurtigt, fandt jeg det svært at designe et hjul, der passer tæt og tæt på motorakslen. Derfor besluttede jeg at bruge dronebladene inde i hjulet, som du kan se nedenfor
Jeg fandt dette at være mere pålideligt og robust, men prøv dog med forskellige hjuldesign og lad mig vide i kommentarsektionen, hvad der fungerede for dig.
Programmering af Arduino
Det komplette program (både Arduino nano og pro mini) til dette projekt kan findes nederst på denne side. Forklaringen på dit RC-program er som følger
Vi starter programmet med at inkludere den nødvendige headerfil. Bemærk, at nRF24l01-modulet kræver, at der tilføjes et bibliotek til din Arduino IDE, du kan downloade RF24-bibliotek fra Github ved hjælp af dette link. Bortset fra det har vi allerede defineret minimumshastigheden og maksimumshastigheden for vores robot. Minimums- og maksimumområdet er henholdsvis 0 til 1024.
#definer min_hastighed 200 #definer max_hastighed 800 # inkluderer
Derefter initialiseres vores nRF24L01-modul inden i installationsfunktionen. Vi har brugt de 115 bånd, da det ikke er overbelastet og har indstillet modulet til at fungere med lav strøm, du kan også lege med disse indstillinger.
ugyldig opsætning () {Serial.begin (9600); myRadio.begin (); myRadio.setChannel (115); // 115 bånd over WIFI signaler myRadio.setPALevel (RF24_PA_MIN); // MIN power low rage myRadio.setDataRate (RF24_250KBPS); // Minimumshastighed}
Dernæst i hovedsløjfefunktionen udfører vi kun ReadData-funktionen, hvormed vi konstant læser den værdi, der sendes fra vores sender-joystick-modul. Bemærk, at røradressen, der er nævnt i programmet, skal være den samme som den, der er nævnt i senderprogrammet. Vi har også udskrevet den værdi, vi modtager til fejlfindingsformål. Når værdien er gennemlæst med succes, udfører vi Control Car-funktionen for at kontrollere vores RC-bil baseret på den værdi, der modtages fra
Rf-modulet.
ugyldige ReadData () {myRadio.openReadingPipe (1, 0xF0F0F0F0AA); // Hvilket rør der skal læses, 40 bit Adresse myRadio.startListening (); // Stop transmission og start Reveicing hvis (myRadio.available ()) {mens (myRadio.available ()) {myRadio.read (& data, sizeof (data)); } Serial.print ("\ nModtaget:"); Serial.println (data.msg); modtaget = data.msg; Control_Car (); }}
Inde i Control Car-funktionen styrer vi motorer, der er tilsluttet PWM-benene ved hjælp af den analoge skrivefunktion. I vores senderprogram har vi konverteret de analoge værdier fra A0 og A1 pin af Nano til 1 til 10, 11 til 20, 21 til 30 og 31 til 40 til styring af bilen i henholdsvis fremad, baglæns, venstre og højre. Nedenstående program bruges til at styre robotten fremad
hvis (modtaget> = 1 && modtaget <= 10) // Gå fremad {int PWM_Value = kort (modtaget, 1, 10, min_hastighed, maks_hastighed); analogWrite (R_MR, PWM_Value); analogWrite (L_MR, PWM_Value); }
På samme måde kan vi også skrive tre flere funktioner til omvendt, venstre og højre kontrol som vist nedenfor.
hvis (modtaget> = 11 && modtaget <= 20) // Break {int PWM_Value = map (modtaget, 11, 20, min_hastighed, maks_hastighed); analogWrite (R_MR, 0); analogWrite (L_MR, 0); } hvis (modtaget> = 21 && modtaget <= 30) // Drej til venstre {int PWM_Value = kort (modtaget, 21, 30, min_hastighed, maks_hastighed); analogWrite (R_MR, PWM_Value); analogWrite (L_MR, 0); } hvis (modtaget> = 31 && modtaget <= 40) // Drej til højre {int PWM_Value = kort (modtaget, 31, 40, min_hastighed, maks_hastighed); analogWrite (R_MR, 0); analogWrite (L_MR, PWM_Value); }
Arbejde med Arduino RC bil
Når du er færdig med koden, skal du uploade den til din pro-mini-board. Fjern batteriet og dit kort gennem FTDI-modulet til test. Start din kode, åbn det serielle batteri, og du skal modtage værdien fra senderens joystick-modul. Tilslut dit batteri, og dine motorer skal også begynde at rotere.
Den komplette bearbejdning af projektet kan findes i den linkede video nederst på denne side. Hvis du har spørgsmål, skal du lade dem være i kommentarfeltet. Du kan også bruge vores fora til at få hurtige svar på dine andre tekniske spørgsmål.