- Kernloser Gleichstrommotor für RC-Cars
- Erforderliche Materialien
- RF Joystick für RC-Car mit Arduino
- Arduino RC Car Schaltplan
- Herstellung von Leiterplatten für Arduino RC Car
- Montage der Leiterplatte
- 3D-Druckräder und Motorhalterung
- Arduino programmieren
- Arbeiten von Arduino RC Car
RC-Autos machen immer Spaß, ich persönlich bin ein großer Fan dieser ferngesteuerten Autos und habe ausgiebig mit ihnen gespielt (mache es immer noch). Die meisten dieser Autos bieten heutzutage ein enormes Drehmoment für unwegsames Gelände, aber es gibt etwas, das immer hinterherhinkt, seine Geschwindigkeit !!.. In diesem Projekt werden wir also mit Arduino, dem Hauptfahrzeug, einen völlig anderen RC-Autotyp bauen Ziel dieses Autos ist es, maximale Geschwindigkeit zu erreichen, daher habe ich beschlossen, den kernlosen Gleichstrommotor für ein RC-Auto auszuprobieren. Diese Motoren werden normalerweise in Drohnen verwendet und sind für 39000 U / min ausgelegt Das sollte mehr als genug sein, um unseren Geschwindigkeitsdurst zu stillen. Das Auto wird mit einer kleinen Lithiumbatterie betrieben und kann mit dem RF-Modul nRF24L01 ferngesteuert werden. Wenn Sie auf der Suche nach etwas Einfachem sind, können Sie auch die Projekte Simple RF Robot und Raspberry Pi Bluetooth Car überprüfen.
Kernloser Gleichstrommotor für RC-Cars
Der in diesem Projekt verwendete kernlose Gleichstrommotor ist in der folgenden Abbildung dargestellt. Sie können sie leicht finden, da sie in Minidrohnen weit verbreitet sind. Suchen Sie einfach nach 8520 Magnetic Micro Coreless Motor und Sie werden diese finden.
Die Verwendung von Gleichstrommotoren für ein RC-Car weist nun bestimmte Nachteile auf. Das erste ist, dass sie ein sehr geringes Anlaufdrehmoment bieten, daher sollte unser RC-Car so leicht wie möglich sein. Aus diesem Grund habe ich beschlossen, das gesamte Auto mit SMD-Komponenten auf einer Leiterplatte zu bauen und die Platinengröße so weit wie möglich zu reduzieren. Das zweite Problem ist die hohe Drehzahl von 39000 U / min (Drehzahl der Welle), die schwer zu handhaben ist. Daher benötigen wir auf der Arduino-Seite eine Drehzahlregelschaltung, die wir mit einem MOSFET gebaut haben. Die dritte Sache ist, dass diese Motoren von einer einzelnen Lithium-Polymer-Batterie mit einer Betriebsspannung zwischen 3,6 V und 4,2 V angetrieben werden. Daher müssen wir unsere Schaltung für den Betrieb mit 3,3 V auslegen. Aus diesem Grund haben wir einen 3,3 V Arduino Pro mini verwendetals das Gehirn unseres RC-Car. Nachdem diese Probleme behoben sind, schauen wir uns die Materialien an, die für die Erstellung dieses Projekts erforderlich sind.
Erforderliche Materialien
- 3,3 V Arduino Pro Mini
- Arduino Nano
- NRF24L01 - 2 Stück
- Joystick-Modul
- SI2302 MOSFET
- 1N5819 Diode
- Kernlose BLDC-Motoren
- AMS1117-3.3V
- Lithium-Polymer-Batterie
- Widerstände, Kondensatoren,
- Kabel anschließen
RF Joystick für RC-Car mit Arduino
Wie bereits erwähnt, wird das RC-Car mit einem RF-Joystick ferngesteuert. Dieser Joystick wird auch mit einem Arduino zusammen mit einem nRF24L01 RF-Modul gebaut. Wir haben auch das Joystick-Modul verwendet, um unseren RC in die gewünschte Richtung zu steuern. Wenn Sie mit diesen beiden Modulen noch nicht vertraut sind, können Sie die Artikel Interfacing Arduino with nRF24L01 und Interfacing Joystick with Arduino lesen, um zu erfahren, wie sie funktionieren und wie sie verwendet werden. Um Ihren Arduino RF Remote Joystick zu bauen, folgen Sie dem folgenden Schaltplan.
Die RF-Joystick-Schaltung kann über den USB-Anschluss der Nano-Karte mit Strom versorgt werden. Das nRF24L01-Modul arbeitet nur mit 3,3 V, daher haben wir den 3,3 V-Pin bei Arduino verwendet. Ich habe die Schaltung auf einem Steckbrett aufgebaut und es sieht so aus, als ob Sie unten eine Leiterplatte dafür erstellen können, falls erforderlich.
Der Arduino-Code für die RF-Joystick-Schaltung ist ziemlich einfach. Wir müssen den X-Wert und den Y-Wert von unserem Joystick lesen und ihn über den nRF24L01 an das RC-Auto senden. Das vollständige Programm für diese Schaltung finden Sie unten auf dieser Seite. Wir werden nicht auf die Erklärung eingehen, da wir dies bereits in dem oben genannten Link zum Schnittstellenprojekt besprochen haben.
Arduino RC Car Schaltplan
Das vollständige Schaltbild für unser ferngesteuertes Arduino-Auto ist unten dargestellt. Der Schaltplan enthält auch die Option, unserem Auto zwei TCRT5000-IR-Module hinzuzufügen. Dies war geplant, damit unser RC-Car als Linienfolgeroboter arbeiten kann, sodass es selbstständig arbeiten kann, ohne extern gesteuert zu werden. Für dieses Projekt werden wir uns jedoch nicht darauf konzentrieren. Seien Sie gespannt auf ein weiteres Projekt-Tutorial, in dem wir versuchen werden, den „Fastest Line Follower Robot“ zu bauen. Ich habe beide Schaltkreise auf einer einzigen Leiterplatte zusammengefasst, um den Aufbau zu vereinfachen. Sie können den IR-Sensor und den Operationsverstärkerabschnitt für dieses Projekt ignorieren.
.Das RC-Car wird von der Lipo-Batterie gespeist, die an Klemme P1 angeschlossen ist. Das AMS117-3.3V dient zur Regelung von 3.3V für unseren nRF24L01 und unser Pro-Mini-Board. Wir können die Arduino-Platine auch direkt über den Rohstift mit Strom versorgen, aber der integrierte 3,3-V-Spannungsregler von Pro Mini kann unsere HF-Module nicht ausreichend mit Strom versorgen. Daher haben wir einen externen Spannungsregler verwendet.
Für den Antrieb unserer beiden BLDC-Motoren haben wir zwei SI2302-MOSFETs verwendet. Es ist wichtig sicherzustellen, dass diese MOSFETs mit 3,3 V betrieben werden können. Wenn Sie nicht genau die gleiche Teilenummer finden, können Sie nach äquivalenten MOSFETs mit den folgenden Übertragungseigenschaften suchen
Die Motoren können Spitzenströme von bis zu 7 A verbrauchen (Dauerstrom wurde mit 3 A unter Last getestet), daher sollte der MOSFET-Drainstrom 7 A oder mehr betragen und sich bei 3,3 V vollständig einschalten. Wie Sie hier sehen können, kann der von uns ausgewählte MOSFET auch bei 2,25 V 10 A liefern, daher ist er eine ideale Wahl.
Herstellung von Leiterplatten für Arduino RC Car
Der lustige Teil beim Bau dieses Projekts war die Leiterplattenentwicklung. Die Leiterplatten bilden hier nicht nur die Schaltung, sondern fungieren auch als Chassis für unser Auto. Deshalb haben wir ein Auto geplant, das eine Form mit Optionen für die einfache Montage unserer Motoren aufweist. Sie können auch versuchen, Ihre eigene Leiterplatte mit der obigen Schaltung zu entwerfen, oder Sie können mein Leiterplattendesign verwenden, das nach Abschluss wie folgt aussieht.
Wie Sie sehen können, habe ich die Platine so konzipiert, dass Batterie, Motor und andere Komponenten einfach montiert werden können. Sie können die Gerber-Datei für diese Leiterplatte über den Link herunterladen. Sobald Sie mit der Gerber-Datei fertig sind, ist es Zeit, sie herzustellen. Führen Sie die folgenden Schritte aus, damit PCBGOGO Ihre Leiterplatten problemlos erstellen kann
Schritt 1: Gehen Sie zu www.pcbgogo.com und melden Sie sich an, wenn Sie zum ersten Mal hier sind. Geben Sie dann auf der Registerkarte PCB Prototype die Abmessungen Ihrer Leiterplatte, die Anzahl der Schichten und die Anzahl der benötigten Leiterplatten ein. Meine Platine ist 80 cm × 80 cm groß, daher sieht die Registerkarte unten so aus.
Schritt 2: Klicken Sie auf die Schaltfläche Jetzt zitieren. Sie werden zu einer Seite weitergeleitet, auf der Sie bei Bedarf einige zusätzliche Parameter wie den verwendeten Spurabstand usw. einstellen können. Meistens funktionieren die Standardwerte jedoch einwandfrei. Das einzige, was wir hier berücksichtigen müssen, ist der Preis und die Zeit. Wie Sie sehen können, beträgt die Build-Zeit nur 2-3 Tage und kostet für unser PSB nur 5 US-Dollar. Sie können dann eine bevorzugte Versandart auswählen, die Ihren Anforderungen entspricht.
Schritt 3: Der letzte Schritt besteht darin, die Gerber-Datei hochzuladen und mit der Zahlung fortzufahren. Um sicherzustellen, dass der Prozess reibungslos verläuft, überprüft PCBGOGO, ob Ihre Gerber-Datei gültig ist, bevor Sie mit der Zahlung fortfahren. Auf diese Weise können Sie sicher sein, dass Ihre Leiterplatte herstellungsfreundlich ist und Sie als engagiert erreicht.
Montage der Leiterplatte
Nachdem das Board bestellt wurde, erreichte es mich nach einigen Tagen, obwohl Kurier in einer ordentlich beschrifteten, gut verpackten Box und wie immer war die Qualität der Platine fantastisch. Ich teile ein paar Bilder der unten stehenden Tafeln, damit Sie sie beurteilen können.
Ich schaltete meinen Lötstab ein und begann mit der Montage der Platine. Da die Footprints, Pads, Vias und Siebdruck die perfekte Form und Größe haben, hatte ich kein Problem damit, das Board zusammenzubauen. Das Board war in nur 10 Minuten ab dem Zeitpunkt des Auspackens der Box fertig.
Einige Bilder der Platine nach dem Löten sind unten gezeigt.
3D-Druckräder und Motorhalterung
Wie Sie vielleicht im obigen Bild bemerkt haben, müssen wir unsere Motorhalterung und Räder für den Roboter in 3D bringen. Wenn Sie unsere oben freigegebene PCB Gerber-Datei verwendet haben, können Sie auch ein 3D-Modell verwenden, indem Sie es von diesem thingiverse-Link herunterladen.
Ich habe Cura verwendet, um meine Modelle in Scheiben zu schneiden und sie mit Tevo Terantuala ohne Stützen und 0% Füllung zur Gewichtsreduzierung zu drucken. Sie können die Einstellung entsprechend unserem Drucker ändern. Da sich die Motoren sehr schnell drehen, fiel es mir schwer, ein Rad zu entwickeln, das eng an der Motorwelle anliegt. Daher habe ich mich entschieden, die Drohnenblätter im Rad zu verwenden, wie Sie unten sehen können
Ich fand das zuverlässiger und robuster, experimentiere jedoch mit verschiedenen Raddesigns und lass mich im Kommentarbereich wissen, was für dich funktioniert hat.
Arduino programmieren
Das vollständige Programm (sowohl Arduino Nano als auch Pro Mini) für dieses Projekt finden Sie unten auf dieser Seite. Die Erklärung Ihres RC-Programms lautet wie folgt
Wir starten das Programm mit der erforderlichen Header-Datei. Beachten Sie, dass für das nRF24l01-Modul eine Bibliothek zu Ihrer Arduino IDE hinzugefügt werden muss. Sie können die RF24-Bibliothek von Github über diesen Link herunterladen. Abgesehen davon haben wir bereits die Mindest- und Höchstgeschwindigkeit für unseren Roboter definiert. Der minimale und maximale Bereich liegen zwischen 0 und 1024.
#define min_speed 200 #define max_speed 800 #include
Anschließend initialisieren wir innerhalb der Setup-Funktion unser nRF24L01-Modul. Wir haben die 115 Bänder verwendet, da sie nicht überlastet sind und das Modul so eingestellt ist, dass es mit geringem Stromverbrauch arbeitet. Sie können auch mit diesen Einstellungen herumspielen.
void setup () {Serial.begin (9600); myRadio.begin (); myRadio.setChannel (115); // 115 Band über WIFI-Signalen myRadio.setPALevel (RF24_PA_MIN); // MIN Power Low Rage myRadio.setDataRate (RF24_250KBPS); // Mindestgeschwindigkeit}
Als nächstes führen wir in der Hauptschleifenfunktion nur die ReadData-Funktion aus, mit der wir ständig den von unserem Transmitter-Joystick-Modul gesendeten Wert lesen. Beachten Sie, dass die im Programm angegebene Pipe-Adresse mit der im Senderprogramm angegebenen übereinstimmen sollte. Wir haben auch den Wert gedruckt, den wir zu Debugging-Zwecken erhalten. Sobald der Wert erfolgreich gelesen wurde, führen wir die Control Car-Funktion aus, um unser RC-Car basierend auf dem vom
Rf-Modul empfangenen Wert zu steuern.
void ReadData () {myRadio.openReadingPipe (1, 0xF0F0F0F0AA); // Welche Pipe soll gelesen werden, 40 Bit Adresse myRadio.startListening (); // Transminting beenden und Reveicing starten if (myRadio.available ()) {while (myRadio.available ()) {myRadio.read (& data, sizeof (data)); } Serial.print ("\ nReceived:"); Serial.println (data.msg); empfangen = data.msg; Control_Car (); }}
Innerhalb der Control Car-Funktion steuern wir Motoren, die an die PWM-Pins angeschlossen sind, mithilfe der analogen Schreibfunktion. In unserem Senderprogramm haben wir die Analogwerte von A0 und A1 Pin von Nano in 1 bis 10, 11 bis 20, 21 bis 30 und 31 bis 40 konvertiert, um das Auto vorwärts, rückwärts, links und rechts zu steuern. Das folgende Programm wird verwendet, um den Roboter in Vorwärtsrichtung zu steuern
if (empfangen> = 1 && empfangen <= 10) // Vorwärts bewegen {int PWM_Value = map (empfangen, 1, 10, min_speed, max_speed); analogWrite (R_MR, PWM_Value); analogWrite (L_MR, PWM_Value); }}
In ähnlicher Weise können wir auch drei weitere Funktionen für die Rückwärts-, Links- und Rechtssteuerung schreiben, wie unten gezeigt.
if (empfangen> = 11 && empfangen <= 20) // Break {int PWM_Value = map (empfangen, 11, 20, min_speed, max_speed); analogWrite (R_MR, 0); analogWrite (L_MR, 0); } if (empfangen> = 21 && empfangen <= 30) // Biegen Sie links ab {int PWM_Value = map (empfangen, 21, 30, min_speed, max_speed); analogWrite (R_MR, PWM_Value); analogWrite (L_MR, 0); } if (empfangen> = 31 && empfangen <= 40) // Biegen Sie rechts ab {int PWM_Value = map (empfangen, 31, 40, min_speed, max_speed); analogWrite (R_MR, 0); analogWrite (L_MR, PWM_Value); }}
Arbeiten von Arduino RC Car
Wenn Sie mit dem Code fertig sind, laden Sie ihn auf Ihr Pro-Mini-Board hoch. Entfernen Sie den Akku und Ihre Platine zum Testen über das FTDI-Modul. Starten Sie Ihren Code, öffnen Sie die serielle Batterie und Sie sollten den Wert von Ihrem Sender-Joystick-Modul erhalten. Schließen Sie Ihre Batterie an und Ihre Motoren sollten sich ebenfalls drehen.
Die vollständige Arbeitsweise des Projekts finden Sie in dem Video, das unten auf dieser Seite verlinkt ist. Wenn Sie Fragen haben, lassen Sie diese im Kommentarbereich. Sie können auch unsere Foren nutzen, um schnelle Antworten auf Ihre anderen technischen Fragen zu erhalten.