- Coreless DC-motor voor RC-auto's
- Vereiste materialen
- RF-joystick voor RC-auto met Arduino
- Arduino RC auto schakelschema
- Fabricage PCB voor Arduino RC Car
- De printplaat in elkaar zetten
- 3D-printwielen en motorsteun
- Programmeren van de Arduino
- Werking van Arduino RC Car
RC-auto's zijn altijd leuk om mee te spelen, ik ben persoonlijk een grote fan van deze op afstand bestuurbare auto's en heb er (nog steeds) veel mee gespeeld. De meeste van deze auto's leveren tegenwoordig een enorm koppel om ruige terreinen aan te kunnen, maar er is iets dat altijd achterbleef, de snelheid !!.. Dus in dit project zullen we een totaal ander type RC-auto bouwen met Arduino, de belangrijkste Het doel van deze auto is om de maximale snelheid te behalen, daarom besloot ik om de kernloze DC-motor uit te proberen voor een RC-auto. Deze motoren worden normaal gesproken gebruikt in drones en hebben een vermogen van 39000 RPM wat meer dan genoeg zou moeten zijn om onze snelle dorst te lessen. De auto wordt aangedreven door een kleine lithiumbatterij en kan op afstand worden bediend met de nRF24L01 RF-module. Als alternatief, als u op zoek bent naar iets eenvoudigs, kunt u ook deze Simple RF Robot en Raspberry Pi Bluetooth Car-projecten bekijken.
Coreless DC-motor voor RC-auto's
De kernloze DC-motor die in dit project wordt gebruikt, wordt weergegeven in de onderstaande afbeelding. Je kunt ze gemakkelijk vinden omdat ze veel worden gebruikt in minidrones. Zoek gewoon naar 8520 Magnetic Micro Coreless Motor en u zult deze vinden.
Nu zijn er bepaalde nadelen aan het gebruik van DC-motoren voor een RC-auto. Het eerste is dat ze een zeer laag startkoppel bieden, daarom moet onze RC-auto zo licht mogelijk zijn. Daarom heb ik besloten om de hele auto op een printplaat te bouwen met behulp van SMD-componenten en de bordgrootte zo veel mogelijk te verkleinen. Het tweede probleem is de hoge snelheid, 39000 RPM (RPM van de as) is moeilijk te hanteren, dus we hebben een snelheidsregelcircuit nodig aan de Arduino-kant, dat we hebben gebouwd met behulp van een MOSFET. Het derde ding is dat deze motoren worden aangedreven door een enkele lithium-polymeerbatterij met een bedrijfsspanning tussen 3,6 V en 4,2 V, dus we moeten ons circuit zo ontwerpen dat het op 3,3 V werkt. Daarom hebben we een 3.3V Arduino Pro mini gebruiktals het brein van onze RC-auto. Nu deze problemen zijn opgelost, gaan we kijken naar de materialen die nodig zijn om dit project te bouwen.
Vereiste materialen
- 3.3V Arduino Pro Mini
- Arduino Nano
- NRF24L01 - 2 stuks
- Joystick-module
- SI2302 MOSFET
- 1N5819 Diode
- Kernloze BLDC-motoren
- AMS1117-3.3V
- Lithium-polymeerbatterij
- Weerstanden, condensatoren,
- Draden aansluiten
RF-joystick voor RC-auto met Arduino
Zoals eerder vermeld, wordt de RC-auto op afstand bediend met een RF-joystick. Deze joystick zal ook worden gebouwd met behulp van een Arduino samen met een nRF24L01 RF-module, we hebben ook de Joystick-module gebruikt om onze RC in de gewenste richting te besturen. Als deze twee modules helemaal nieuw voor je zijn, kun je overwegen om Interfacing Arduino met nRF24L01 en Interfacing Joystick with Arduino-artikelen te lezen om te leren hoe ze werken en hoe je ze kunt gebruiken. Om uw Arduino RF Remote Joystick te bouwen, kunt u het onderstaande schakelschema volgen.
Het RF-joystickcircuit kan worden gevoed via de USB-poort van het nanobord. De nRF24L01-module werkt alleen op 3.3V, daarom hebben we de 3.3V-pin op Arduino gebruikt. Ik heb de schakeling op een breadboard gebouwd en het ziet er als volgt uit, je kunt hier eventueel ook een printje voor maken.
De Arduino-code voor het RF-joystickcircuit is vrij eenvoudig, we moeten de X-waarde en de Y-waarde van onze joystick lezen en deze via de nRF24L01 naar de RC-auto sturen. Het complete programma voor deze schakeling vind je onderaan deze pagina. We zullen niet ingaan op de uitleg daarvan, aangezien we het al hebben besproken in de hierboven gedeelde interfacing-projectlink.
Arduino RC auto schakelschema
Het volledige schakelschema voor onze op afstand bestuurbare Arduino-auto wordt hieronder weergegeven. Het schakelschema bevat ook een optie om twee TCRT5000 IR-modules aan onze auto toe te voegen. Dit was bedoeld om onze RC-auto te laten werken als een lijnvolgrobot, zodat hij zelfstandig kan werken zonder extern te worden aangestuurd. Echter, omwille van dit project zullen we ons er niet op concentreren, blijf op de hoogte voor nog een project tutorial waarin we zullen proberen de "Fastest Line Follower Robot" te bouwen. Ik heb beide circuits op een enkele PCB gecombineerd voor het gemak van het bouwen, je kunt de IR-sensor en de Op-amp-sectie voor dit project negeren.
Het is een feit dat u zich geen zorgen hoeft te maken.De RC-auto wordt aangedreven door de Lipo-batterij die is aangesloten op klem P1. De AMS117-3.3V wordt gebruikt om 3.3V te regelen voor onze nRF24L01 en ons pro-minibord. We kunnen het Arduino-bord ook rechtstreeks op de onbewerkte pin van stroom voorzien, maar de ingebouwde 3.3V-spanningsregelaar op pro mini zal niet voldoende stroom kunnen leveren aan onze RF-modules, daarom hebben we een externe spanningsregelaar gebruikt.
Om onze twee BLDC-motoren aan te drijven, hebben we twee SI2302 MOSFET's gebruikt. Het is belangrijk om ervoor te zorgen dat deze MOSFETS kunnen worden aangedreven door 3.3V. Als u niet exact hetzelfde onderdeelnummer kunt vinden, kunt u zoeken naar gelijkwaardige MOSFET's met de onderstaande overdrachtseigenschappen
De motoren kunnen een piekstroom tot 7A verbruiken (continu werd getest op 3A met belasting), daarom moet de MOSFET-afvoerstroom 7A of meer zijn en moet deze volledig worden ingeschakeld op 3,3V. Zoals je hier kunt zien, kan de MOSFET die we hebben geselecteerd 10A leveren, zelfs bij 2,25 V, dus het is een ideale keuze.
Fabricage PCB voor Arduino RC Car
Het leuke aan het bouwen van dit project was de PCB-ontwikkeling. De PCB's vormen hier niet alleen het circuit, maar fungeren ook als chassis voor onze auto, dus we planden een auto die er goed uitzag met opties om onze motoren gemakkelijk te monteren. Je kunt ook proberen je eigen PCB te ontwerpen met behulp van het bovenstaande circuit of je kunt mijn PCB-ontwerp gebruiken dat er als volgt uitziet als je klaar bent.
Zoals je kunt zien heb ik de print zo ontworpen dat hij gemakkelijk de batterij, motor en andere componenten kan monteren. U kunt het Gerber-bestand voor deze printplaat downloaden via de link. Als je eenmaal klaar bent met het Gerber-bestand, is het tijd om het te laten fabriceren. Volg de onderstaande stappen om uw PCB's gemakkelijk door PCBGOGO te laten maken
Stap 1: Ga naar www.pcbgogo.com, meld u aan als dit de eerste keer is. Voer vervolgens op het tabblad PCB Prototype de afmetingen van uw PCB, het aantal lagen en het aantal PCB's dat u nodig heeft in. Mijn printplaat is 80 cm x 80 cm, dus de tab ziet er als volgt uit.
Stap 2: Ga verder door op de knop Nu citeren te klikken. U wordt naar een pagina geleid waar u indien nodig een paar extra parameters kunt instellen, zoals het gebruikte materiaal voor de spoorafstand, enz. Maar meestal werken de standaardwaarden prima. Het enige waar we hier rekening mee moeten houden, is de prijs en tijd. Zoals je kunt zien, is de bouwtijd slechts 2-3 dagen en kost het slechts $ 5 voor onze PSB. U kunt vervolgens een gewenste verzendmethode selecteren op basis van uw vereisten.
Stap 3: De laatste stap is om het Gerber-bestand te uploaden en door te gaan met de betaling. Om ervoor te zorgen dat het proces soepel verloopt, controleert PCBGOGO of uw Gerber-bestand geldig is alvorens verder te gaan met de betaling. Zo weet u zeker dat uw printplaat fabricagevriendelijk is en u als toegewijd zult bereiken.
De printplaat in elkaar zetten
Nadat het bord was besteld, bereikte het me na enkele dagen via een koerier in een keurig gelabelde, goed verpakte doos en zoals altijd was de kwaliteit van de PCB geweldig. Ik deel een paar foto's van de borden hieronder om jullie te beoordelen.
Ik zette mijn soldeerstaaf aan en begon het bord te monteren. Omdat de voetafdrukken, pads, via's en zeefdruk perfect de juiste vorm en grootte hebben, had ik geen probleem met het monteren van het bord. Het bord was klaar in slechts 10 minuten na het uitpakken van de doos.
Hieronder ziet u enkele foto's van het bord na het solderen.
3D-printwielen en motorsteun
Zoals je misschien hebt opgemerkt in de bovenstaande afbeelding, moeten we onze motorsteun en wielen voor de robot in 3D maken. Als je ons hierboven gedeelde PCB Gerber-bestand hebt gebruikt, kun je net zo goed een 3D-model gebruiken door het te downloaden via deze Thingiverse-link.
Ik heb Cura gebruikt om mijn modellen in plakjes te snijden en ze af te drukken met Tevo Terantuala zonder steunen en 0% vulling om het gewicht te verminderen. U kunt de instelling wijzigen zoals geschikt voor onze printer. Omdat de motoren erg snel draaien, vond ik het moeilijk om een wiel te ontwerpen dat nauwsluitend en strak op de motoras past. Daarom besloot ik de drone-bladen in het wiel te gebruiken, zoals je hieronder kunt zien
Ik vond dit betrouwbaarder en robuuster, maar experimenteer met verschillende wielontwerpen en laat me in het commentaargedeelte weten wat voor jou werkte.
Programmeren van de Arduino
Het complete programma (zowel Arduino nano als pro mini) voor dit project vind je onderaan deze pagina. De uitleg van je RC-programma is als volgt
We starten het programma door het vereiste header-bestand op te nemen. Merk op dat de nRF24l01-module een bibliotheek vereist om aan uw Arduino IDE te worden toegevoegd, u kunt de RF24-bibliotheek van Github downloaden via deze link. Afgezien daarvan hebben we al de minimale snelheid en maximale snelheid voor onze robot gedefinieerd. Het minimum en maximum bereik zijn respectievelijk 0 tot 1024.
#define min_speed 200 #define max_speed 800 #include
Vervolgens initialiseren we in de setup-functie onze nRF24L01-module. We hebben de 115 banden gebruikt omdat het niet overbelast is en de module heeft ingesteld om met laag vermogen te werken, je kunt ook met deze instellingen spelen.
void setup () {Serial.begin (9600); myRadio.begin (); myRadio.setChannel (115); // 115 band boven WIFI-signalen myRadio.setPALevel (RF24_PA_MIN); // MIN vermogen lage woede myRadio.setDataRate (RF24_250KBPS); // Minimumsnelheid}
Vervolgens zullen we in de hoofdlusfunctie alleen de ReadData-functie uitvoeren waarmee we constant de waarde lezen die is verzonden vanaf onze Transmitter-joystickmodule. Merk op dat het buisadres dat in het programma wordt vermeld hetzelfde moet zijn als het adres dat in het zenderprogramma wordt vermeld. We hebben ook de waarde afgedrukt die we ontvangen voor foutopsporingsdoeleinden. Zodra de waarde met succes is gelezen, voeren we de functie Control Car uit om onze RC-auto te besturen op basis van de waarde die is ontvangen van de
Rf-module.
leegte ReadData () {myRadio.openReadingPipe (1, 0xF0F0F0F0AA); // Welke pijp te lezen, 40 bit adres myRadio.startListening (); // Stop met verzenden en start Reveicing if (myRadio.available ()) {while (myRadio.available ()) {myRadio.read (& data, sizeof (data)); } Serial.print ("\ nOntvangen:"); Serial.println (data.msg); ontvangen = data.msg; Control_Car (); }}
In de functie Control Car besturen we motoren die zijn aangesloten op de PWM-pinnen met behulp van de analoge schrijffunctie. In ons zenderprogramma hebben we de Analoge waarden van A0 en A1 pin van Nano omgezet naar 1 naar 10, 11 naar 20, 21 naar 30 en 31 naar 40 voor het besturen van de auto in respectievelijk vooruit, achteruit, links en rechts. Het onderstaande programma wordt gebruikt om de robot in voorwaartse richting te besturen
if (ontvangen> = 1 && ontvangen <= 10) // Vooruit gaan {int PWM_Value = map (ontvangen, 1, 10, min_speed, max_speed); analogWrite (R_MR, PWM_Value); analogWrite (L_MR, PWM_Value); }
Op dezelfde manier kunnen we ook drie extra functies schrijven voor achteruit, links en rechts, zoals hieronder wordt weergegeven.
if (ontvangen> = 11 && ontvangen <= 20) // Break {int PWM_Value = map (ontvangen, 11, 20, min_speed, max_speed); analogWrite (R_MR, 0); analogWrite (L_MR, 0); } if (ontvangen> = 21 && ontvangen <= 30) // Sla linksaf {int PWM_Value = map (ontvangen, 21, 30, min_speed, max_speed); analogWrite (R_MR, PWM_Value); analogWrite (L_MR, 0); } if (ontvangen> = 31 && ontvangen <= 40) // Sla rechtsaf {int PWM_Value = map (ontvangen, 31, 40, min_speed, max_speed); analogWrite (R_MR, 0); analogWrite (L_MR, PWM_Value); }
Werking van Arduino RC Car
Nadat u klaar bent met de code, uploadt u deze naar uw pro-minibord. Verwijder de batterij en uw bord via de FTDI-module om te testen. Start uw code, open de seriële batterij en u zou de waarde moeten ontvangen van de joystickmodule van uw zender. Sluit je accu aan en je motoren moeten ook gaan draaien.
De volledige werking van het project is te vinden in de video die onderaan deze pagina is gelinkt. Als je vragen hebt, laat ze dan achter in het commentaargedeelte. U kunt ook onze forums gebruiken om snel antwoord te krijgen op uw andere technische vragen.