Inhaltsverzeichnis:

UCL Embedded - B0B der Linefollower - Gunook
UCL Embedded - B0B der Linefollower - Gunook

Video: UCL Embedded - B0B der Linefollower - Gunook

Video: UCL Embedded - B0B der Linefollower - Gunook
Video: How To Make A DIY Arduino Obstacle Avoiding Car At Home 2024, Juli
Anonim
UCL Embedded - B0B der Linienfolger
UCL Embedded - B0B der Linienfolger

Das ist B0B.*

B0B ist ein generisches funkgesteuertes Auto, das vorübergehend als Basis eines linienfolgenden Roboters dient.

Wie so viele linienfolgende Roboter vor ihm wird er sein Bestes tun, um auf einer Linie zu bleiben, die durch einen Übergang zwischen dem Boden und einem kontrastierenden Material, in unserem Fall Klebeband, entsteht.

Im Gegensatz zu so vielen anderen linienfolgenden Robotern sammelt B0B auch Daten und sendet sie über WLAN.

Völlig übertrieben für ein Hobbyprojekt, es beinhaltet eine Reihe von Themen, die Sie möglicherweise interessant finden. Dieser Leitfaden beschreibt seine Geburt, seine Funktionen und wie Sie einen so machen können wie er.

Es beinhaltet auch, wütend auf verschiedene Elektronik zu sein, die nicht so funktioniert, wie wir es wollten, und die Schritte, die wir unternommen haben, um diese Schwierigkeiten zu überwinden (ich schaue auf dich ESP 8266-01).

Es gibt 2 Codes, damit das Projekt funktioniert. Der erste Code ist für das ESP8266-Modul, das wir als Programmierer verwenden, und der zweite Code wird auf dem Arduino ausgeführt.

Schritt 1: Komponenten

Für dieses Projekt benötigen Sie:

Hardware:

• 1x Funksteuerung Auto, (muss ESC und Lenkservo haben).

Wir verwendeten einen größtenteils serienmäßigen Traxxas 1/16 E-Revo VXL, hauptsächlich weil wir ihn hatten, und waren ziemlich zuversichtlich, dass wir ihn mit einem Arduino steuern könnten. Auch weil es am Ende eine nicht unerhebliche Menge an zusätzlicher Hardware enthalten wird, waren wir zuversichtlich, dass dies für den 1/16 E-Revo kein Problem sein würde.

Die meisten funkgesteuerten Autos (die leicht auseinandergenommen werden können) könnten jedoch wahrscheinlich stattdessen verwendet werden, und der Vorgang wird sehr ähnlich sein.

• Eine Tonne Klebeband.

Die Farbe sollte den Boden so gut wie möglich kontrastieren. In unserer Testumgebung haben wir weißes Klebeband auf einem dunklen Boden verwendet.

• 1x Arduino Mega 2560.

Kleinere Arduinos sind wahrscheinlich auch in Ordnung, aber Sie werden nach Stiften gedrückt.

• 1x großes Brotbrett.

Eine reicht aus, aber wir hatten auch eine kleinere, um die anderen Spannungsleitungen zu trennen, um das Risiko von Benutzerfehlern zu reduzieren.

• 1x TCRT5000 IR-Analogsensor (wird zur Kollisionsvermeidung verwendet).

Die genaue Marke / das genaue Modell spielt keine Rolle, ob es Arduino-kompatibel ist und die Entfernung misst. Suchen Sie nach Schlüsselwörtern wie „Entfernung“, „Hindernis“-Sensor. Technisch würde ein digitaler Sensor mit geringfügigen Codeänderungen auch funktionieren, aber wir verwenden einen analogen.

• 1x oder 2x Schwerkraft: Analoger Graustufensensor v2

Einer ist eine Notwendigkeit für den Linienfolger. Das genaue Modell spielt keine Rolle, solange es die Intensität des reflektierten Lichts untersucht und ein analoges Signal ausgibt. Die zweite für die Raumerkennung funktionierte nicht wie erwartet und kann weggelassen werden, oder es kann eine Alternative wie ein RGB-Farbsensor gefunden werden, vermutlich für eine bessere Wirkung. Das müssen wir noch testen.

• 1x ESP 8266-01.

Es gibt viele Versionen des ESP 8266. Wir haben nur Erfahrung mit dem 8266-01 und können nicht garantieren, dass der ESP-Code mit einer anderen Version funktioniert.

• 1 x ESP8266-01 Wi-Fi-Schild.

Technisch optional, aber wenn Sie dies nicht verwenden, wird alles, was das WLAN-Modul betrifft, viel komplizierter. Die Anleitung geht jedoch davon aus, dass Sie dies haben (wenn nicht, finden Sie online die Anleitungen zur korrekten Verdrahtung des ESP-01 mit dem Arduino), da dies das Modul falsch beschädigen kann und wahrscheinlich beschädigt wird.

• Batterien für das Fahrzeug selbst und Batterien zur Versorgung der Zusatzelektronik.

Wir haben ein Paar 7,4 V Lipo-Batterien mit einer Kapazität von 2,2 AH parallel verwendet, um alles mit Strom zu versorgen. Sie sollten in der Lage sein, alle Batterien zu verwenden, die Sie normalerweise mit Ihrem Fahrzeug Ihrer Wahl verwenden würden. Wenn Sie über 5 V, aber unter 20 V liegen, ist die Kapazität wichtiger als die Nennspannung.

• Viele Starthilfekabel.

Ich habe es aufgegeben, die genaue Anzahl davon zu zählen. Wenn Sie denken, dass Sie genug haben, haben Sie wahrscheinlich nicht.

• Um alles zu befestigen, müssen Sie schließlich das Arduino, die Sensoren, das/die Steckbrett(e) und das Wi-Fi-Modul an das Fahrzeug Ihrer Wahl montieren. Ihr Ergebnis hängt davon ab, was Sie als Basis verwenden und welche Materialien verfügbar sind.

Wir verwendeten:

• Kabelbinder.

• Etwas Sekundenkleber.

• Kleine Stückchen Altpapier/Harzrohr hatten wir mit passendem Durchmesser.

• Eine alte Masonite-Rückplatte aus einem Bilderrahmen, zugeschnitten.

• Etwas mehr Klebeband.

• Alle Werkzeuge, die Sie für die Arbeit an Ihrem funkgesteuerten Auto Ihrer Wahl benötigen.

Wir haben meistens einen kleinen Schraubendrehersatz mit mehreren Bits verwendet, mussten aber gelegentlich den serienmäßigen Werkzeugsatz herausziehen, der mit dem Auto geliefert wurde.

Software:

• Knotenrot

Ein wichtiger Teil der Datenerhebung.

• Ein MQTT-Server.

Der Mittelsmann zwischen unserem Fahrzeug und Node-red. Anfangs haben wir test.mosquitto.org zum Testen verwendet

Später haben wir verwendet:

• CloudMQTT.com

Dies war viel zuverlässiger, was die etwas kompliziertere Einrichtung mehr als wettmachte.

• WampServer.

Der letzte Teil der Datensammlung. Insbesondere werden wir seine SQL-Datenbank zum Speichern unserer gesammelten Daten verwenden.

Schritt 2: Schaltplan

Elektrischer Schaltplan
Elektrischer Schaltplan

Schritt 3: Physische Konstruktion

Physische Konstruktion
Physische Konstruktion
Physische Konstruktion
Physische Konstruktion
Physische Konstruktion
Physische Konstruktion

Unsere Lösung hat einen unkomplizierten Ansatz für die physische Montage.

Der Originalempfänger und sein wasserdichtes Gehäuse wurden aus dem RC-Car entfernt, da er nicht benötigt wird.

Wir fanden heraus, dass es eine geeignete Stelle zwischen den Vorderrädern für unseren Linienfolgesensor gab, also hielten wir ihn an Ort und Stelle, indem wir einen Kabelbinder über die vordere Unterfahrschutzplatte schlingen.

Der Sensor, den wir für die Antikollision verwenden, ist sozusagen hinter der vorderen Stoßstange eingekeilt. Es ist immer noch vor Stößen und seiner Reibungspassung geschützt. Es endet damit, dass es in einem noch so leichten Aufwärtswinkel nach vorne blickt. Dies ist perfekt.

Die Masonite-Platte, (Rückplatte aus altem Bilderrahmen), oben hat kleine Abschnitte aus Papier/Harzrohr zugeschnitten und unten aufgeklebt. Diese richten sich an den Halterungen für die Karosseriepfosten aus und sitzen einfach darauf und halten alles sicher. Vorausgesetzt, der Kleber, der das Rohr an der Platte befestigt, hält und es nicht übermäßig kippt, bleibt dies an Ort und Stelle. Es ist auch erwähnenswert, dass sich die Platte innerhalb des Schutzbereichs der Räder und der Stoßfänger befindet. Der Arduino Mega und die beiden Steckbretter wurden entweder mit doppelseitigem Klebeband oder mit einer Schlaufe aus Klebeband an der Platte befestigt, kleben Sie sie aus.

Es wurden keine besonderen Maßnahmen zur Sicherung des WiFi-Moduls getroffen. Es ist nicht unsers, daher wurde es als unnötig erachtet, es zu kleben oder abzukleben, da es so leicht ist, dass es sich nicht viel bewegt und die Drähte ausreichen, um es an Ort und Stelle zu halten.

Schließlich haben wir einen Sensor zur Erkennung von "Räumen", der von einem der Hinterräder mit den Federungskomponenten verbunden wurde. Diese muss sich im Betrieb außerhalb der Linienmarkierung befinden, mit der das Fahrzeug navigiert.

Schritt 4: ESP8266-Modul

ESP8266-Modul
ESP8266-Modul
ESP8266-Modul
ESP8266-Modul

Das WiFi-Modul ESP8266 erfordert zwei verschiedene Pin-Konfigurationen. Ein Setup ist zu verwenden, wenn das Modul mit einem neuen Programm geflasht und der Arduino Mega 2560 als Programmierer verwendet wird. Die andere Einrichtung ist für das Modul, wenn es verwendet wird und Informationen an den MQTT-Broker sendet.

Wenn Sie Arduino IDE zum Hochladen von Code auf das ESP8266-Modul verwenden, müssen Sie einen Board-Manager und einen zusätzlichen Board-Manager installieren

Installieren Sie unter Board-Manager den esp8266-Board-Manager. Es wird leicht gefunden, indem Sie nach "esp" suchen. Wichtig ist, dass Sie die Version 2.5.0 installieren, nicht älter, nicht neuer.

Kopieren Sie unter Einstellungen in zusätzlichen Board-Manager-URLs in diese Zeile:

arduino.esp8266.com/stable/package_esp8266c…

Um alles auf das ESP8266-Modul hochladen zu können, müssen Sie ein bestimmtes Pin-Setup verwenden, damit Sie das Modul flashen können. Dies muss jedes Mal durchgeführt werden, wenn Sie den aktuellen Code ändern möchten, der auf dem Modul ausgeführt wird. Vergessen Sie nicht, das richtige ESP8266-Modul aus dem Board-Manager auszuwählen, bevor Sie das Modul flashen. In diesem Projekt haben wir das generische ESP8266-Board ausgewählt. Die Pinbelegung zum Flashen des Moduls findet sich auf dem ersten Bild in diesem Segment.

Nachdem Sie das ESP8266-Modul geflasht haben, müssen Sie das Pin-Setup umschalten. Sie können auch einen Adapter verwenden, um Ihnen die Einrichtung zu erleichtern. In diesem Projekt haben wir uns für einen Adapter entschieden, wenn das Modul ausgeführt wurde. Die Pinbelegung mit Adapter findet sich auf dem zweiten Bild in diesem Segment.

Der auf das ESP8266-Modul zu flashende Code stellt die Verbindung zu einem WLAN und einem MQTT-Broker her, in diesem Fall mit Benutzername und Passwort, kann aber auch darauf verzichtet werden, wenn Sie die in den Kommentaren des Codes beschriebenen notwendigen Änderungen vornehmen. Für dieses Projekt benötigte unser Broker einen Benutzernamen und ein Passwort, um zu funktionieren. Das Modul liest eingehende Nachrichten von der seriellen Schnittstelle, an die es angeschlossen ist. Es liest jede neue Zeile, die vom Arduino-Code erstellt wird, entschlüsselt die Nachricht und erstellt die Nachricht neu. Danach sendet er die Nachricht an den im Code angegebenen MQTT-Broker. Der Code für das ESP8266-Modul:

Schritt 5: Arduino

Nachdem wir das WiFi-Modul konfiguriert haben, schauen wir uns das Programm an, das zur Steuerung von Motor und Servo am RC-Car verwendet wird. Das Auto wird entsprechend einer Graustufeninformation des zentralen Sensors reagieren, der in diesem Projekt auch als "Line Detector" bekannt ist. Es zielt ganz einfach darauf ab, die Informationen des Liniendetektors nahe einem voreingestellten Wert zu halten, der den aufgezeichneten Informationen beim Wechsel zwischen Hell und Dunkel oder in diesem Projekt Weiß und Schwarz entspricht. Wenn also der Wert zu stark abweicht, wird der entsprechende Ausgang zum Servo das Auto in die Nähe des voreingestellten Wertes der Linie lenken.

Das Programm verfügt über zwei Tasten, die als Start- und Stopptaste für das RC-Car dienen. Technisch gesehen ist der "Stopp"-Knopf ein "Scharfschalten"-Knopf, der einem PWM-Wert entspricht, der an den Motor gesendet wird, der das RC-Auto anhält. Der Startknopf sendet einen PWM-Wert, der dem RC-Auto entspricht, das sich kaum vorwärts bewegt, da es zu schnell fährt, wenn es zu viel Schwung gewinnt.

Ein Kollisionsvermeidungsdetektor wird am Frontend des RC-Autos hinzugefügt, um zu erkennen, ob der Weg frei oder blockiert ist oder nicht. Wenn es blockiert ist, hält das RC-Auto an, bis das Hindernis weg/beseitigt ist. Das analoge Signal des Detektors wird verwendet, um festzustellen, ob etwas den Weg versperrt oder nicht und wird zu einem Kriterium für die Möglichkeit, sich vorwärts zu bewegen oder anzuhalten.

Ein sekundärer Graustufensensor, "Room Detector", wird verwendet, um zu erkennen, in welchen Raum das RC-Auto eingetreten ist. Er arbeitet nach einem ähnlichen Prinzip wie der Liniendetektor, sucht jedoch nicht nach dem Wechsel zwischen hell und dunkel, sondern nach Werten innerhalb eines bestimmten Bereichs, der je nach dem vom Room Detector gesehenen Wert unterschiedlichen Räumen entspricht.

Schließlich erstellt das Programm eine Informationszeile von den Sensoren, die das WiFi-Modul auslesen und anschließend an den MQTT-Broker senden kann. Die Informationszeile wird als String erstellt und in die entsprechende Seriennummer geschrieben, mit der das WiFi-Modul verbunden ist. Es ist wichtig, dass das Schreiben in die Serie nur so oft erfolgt, wie das WiFi-Modul die eingehende Nachricht lesen kann, aber denken Sie daran, keine Verzögerungen in diesem Code zu verwenden, da dies die Fähigkeit des RC-Autos beeinträchtigt, der Linie zu folgen. Verwenden Sie stattdessen "millis", da das Programm ohne Verzögerung ausgeführt werden kann, aber nach einer definierten Anzahl von Millis, die seit dem Einschalten des Arduino vergangen sind, eine Nachricht an die serielle Schnittstelle geschrieben wird, ohne den Code zu blockieren, wie dies bei Verzögerung der Fall ist.

Der Code für den Arduino Mega 2560:

Schritt 6: MySQL-Datenbank

WampServer ist eine Webentwicklungsumgebung für Windows, die es uns ermöglicht, Anwendungen mit PHP und einer MySQL-Datenbank zu erstellen. Mit PhpMyAdmin können wir unsere Datenbanken auf einfache Weise verwalten.

Um zu beginnen, gehen Sie zu:

In diesem Projekt verwenden wir Version 3.17 x64 Bits für Windows. Stellen Sie nach der Installation sicher, dass alle Dienste ausgeführt werden, was bedeutet, dass das kleine Symbol grün statt rot oder orange wird. Wenn das Symbol grün ist, können Sie auf PhpMyAdmin zugreifen, um Ihre MySQL-Datenbank zu verwalten.

Greifen Sie mit PhpMyAdmin auf MySQL zu und erstellen Sie eine neue Datenbank. Nennen Sie es etwas Passendes, an das Sie sich erinnern können, in diesem Projekt hieß es „line_follow_log“. Nachdem Sie die Datenbank erstellt haben, sollten Sie eine Tabelle in der Datenbank erstellen. Stellen Sie sicher, dass die Anzahl der Spalten passt. Im Projekt verwenden wir 4 Spalten. Eine Spalte ist für einen Zeitstempel und die letzten drei werden verwendet, um Daten vom Fahrzeug zu speichern. Verwenden Sie für jede Spalte einen geeigneten Datentyp. Wir haben „longtext“für die Zeitstempelspalte und „mediumtext“für den Rest verwendet.

Das sollte alles sein, was Sie in PhpMyAdmin und MySQL tun müssen. Merken Sie sich Ihre Datenbank und die Tabelle für den Abschnitt über Node-Red.

Schritt 7: Knoten-Rot

Für die Datenerfassung verwenden wir einen relativ einfachen Ablauf in Node-red. Es verbindet sich mit unserem MQTT-Server und schreibt in unsere MYSQL-Datenbank.

Dazu benötigen wir einige Paletten, damit verschiedene Funktionen funktionieren, und wir benötigen tatsächlichen Code, damit sie ausgeführt werden kann.

Das wichtigste zuerst. Wir benötigen folgende Paletten.

Node-red-contrib-mqtt-broker: Dies ist die Verbindung zu unserem MQTT-Broker.

Node-red-dashboard: Unser Dashboard, das benötigt wird, um die gesammelten Daten visuell darzustellen.

Node-red-node-mysql:Unsere Verbindung zur SQL-Datenbank.

Dies soll kein vollständiger Leitfaden für Node-red sein, aber ich werde erklären, was der Node-red-Flow tut.

Zu Beginn hatten wir Probleme mit dem scheinbar zufälligen Abbruch des MQTT-Servers unserer Wahl, was die Durchführung von Änderungen zu einem frustrierenden Unterfangen machte, da unklar war, ob die Änderungen von Vorteil waren oder nicht, wenn wir das Ergebnis nicht sehen konnten. Also die Schaltfläche 'Ist der Server gestorben?' injiziert 'Nein' der folgende Block injiziert es in unseren MQTT-Server. Wenn es nicht tot ist, wird 'Nein' im Debug-Fenster angezeigt. Dies geschieht nicht nur zu Testzwecken, sondern um Node-red zu zwingen, erneut eine Verbindung zum MQTT-Server herzustellen.

Der 'Teststring' sendet einen Costum-String an den MQTT-Broker. Wir haben diesen String so formatiert, dass er dem ähnelt, den wir vom Arduino erhalten würden. Dies sollte die Konfiguration des Netzwerks vereinfachen, das die Nachrichten dekodiert, ohne dass das Projekt ausgeführt werden muss, um Daten zu sammeln.

Der letzte Flow im Arbeitsbereich kann in zwei Segmente unterteilt werden. Der untere Zweig liest einfach die eingehenden Nachrichten, sendet sie an das Debug-Fenster und speichert sie auf dem SQL-Server.

Das große Netzwerk verbundener Switches, das einem Funktionsknoten folgt, wenn die wahre „Magie“stattfindet.

Die Funktion "Procedure" liest den eingehenden String, teilt ihn mit jedem Semikolon auf und gibt die Abschnitte an jedem der Ausgänge aus. Die folgenden Schalter suchen nach einer von zwei verschiedenen eingehenden Informationen. Eine bestimmte Information wird immer von einem Ausgang durchgereicht, die andere Option verlässt den zweiten Ausgang. Darauf folgt eine zweite Gruppe von Schalterblöcken. Sie werden nur mit einer bestimmten Eingabe aktiviert und etwas anderes ausgegeben.

Ein Beispiel, 'Hindernis', ist wie alle anderen eine binäre Wahl, es ist entweder klar zu fahren oder nicht. Es wird also eine 0 oder eine 1 empfangen. Eine 0 wird an den 'clear'-Zweig gesendet, eine 1 wird an den 'Obstructed'-Zweig gesendet. Die Schalter 'Clear', 'Obstructed' geben, wenn sie aktiviert sind, etwas Bestimmtes, Clear bzw. behindert aus. Die grünen Vorgangsblöcke werden im Debug-Fenster veröffentlicht, die blauen werden in unser Dashboard geschrieben.

Die Zweige 'status' und 'location' funktionieren genau gleich.

Schritt 8: MQTT-Broker

Ein Broker ist ein Server, der Nachrichten von Clients an die entsprechenden Zielclients weiterleitet. Bei einem MQTT-Broker verwenden die Clients eine MQTT-Bibliothek, um sich über ein Netzwerk mit dem Broker zu verbinden.

Für dieses Projekt haben wir einen MQTT-Broker erstellt, der den CloudMQTT-Dienst mit dem kostenlosen Abonnement für eine "Cute Cat"-Version verwendet. Es hat seine Grenzen, aber wir überschreiten diese in diesem Projekt nicht. Das WiFi-Modul kann sich mit dem Broker verbinden und der Broker leitet die Nachrichten dann an einen geeigneten Ziel-Client weiter. Der Kunde ist in diesem Fall unser Node-Red. Der CloudMQTT-Dienst richtet einen Benutzernamen und ein Passwort für ihren Server ein, sodass uns eine höhere Sicherheit garantiert wird. Bedeutet im Grunde, dass nur diejenigen mit dem Benutzernamen und dem Passwort auf diesen speziellen CloudMQTT-Dienst zugreifen können. Der Benutzername und das Passwort sind beim Einrichten der Verbindung über den ESP8266-Code sowie Node-Red entscheidend.

Die laufende Statistik für die Nachrichten, die der Broker erhält, ist eine angenehme Funktion, mit der Sie sehen können, wie gut Ihr Abonnement mit den von ihm weitergeleiteten Informationen umgeht.

Ein nettes Feature ist die Möglichkeit, Nachrichten vom Broker an das WiFi-Modul zu senden, aber diese haben wir in diesem Projekt nicht verwendet.

Schritt 9: Hobby-Elektronik

Bevor wir begannen, wussten wir aus einem früheren Projekt, dass das serienmäßige Lenkservo von einem Arduino mit einem PWM-Signal gesteuert werden kann, eine ähnliche Verkabelung hat und an verschiedene Kanäle am gleichen serienmäßigen Funkempfänger angeschlossen wird jetzt an), die den Motor steuert, könnte ähnlich über PWM vom Arduino gesteuert werden.

Um diese Theorie zu testen, erstellen wir eine kleine Arduino-Skizze. Die Skizze liest einen analogen Eingang von einem Potentiometer, ordnet den Wert von 0, 1024 auf 0, 255 neu zu und gibt den resultierenden Wert mit analogWrite () an einen PWM-Pin aus Räder entfernt.

Nachdem wir den Bereich auf dem Potmeter durchgewischt hatten, schien der ESC "aufzuwachen" und wir konnten ihn auf und ab drosseln, wir ließen auch den Arduino die Werte auf die serielle Verbindung drucken, damit wir sie überwachen konnten.

Der ESC schien Werte unter einer bestimmten Schwelle, in diesem Fall 128, nicht zu mögen. Er sah das Signal 191 als neutrales Gas und 255 war maximales Gas.

Wir mussten die Geschwindigkeit des Fahrzeugs nicht variieren und konnten es perfekt mit der langsamsten Geschwindigkeit, die es in Bewegung setzen würde, tuckern lassen. 192 war der niedrigste Wert, der den Motor drehen würde, wir müssen jedoch noch alles zusammenbauen und sind uns nicht sicher, ob diese Leistung ausreicht, um das Fahrzeug nach der Endmontage zu bewegen, jedoch sollte die Eingabe eines etwas größeren Werts trivial sein.

Das Umgehen des Potentiometers und das Einfügen eines Festwertes in den Code hat jedoch nicht funktioniert. Der serienmäßige ESC blinkte einfach und drehte den Motor nicht, "Gastrimmung anpassen" gemäß Handbuch.

Wütende Fehlersuche, das Werfen verschiedener Werte, die Verwendung verschiedener Drähte und sogar das Experimentieren mit der Änderung der PWM-Frequenz, die das Arduino verwendet, führte zu mehr Seltsamkeit.

Es schien ein zeitweiliges Problem zu sein, manchmal lief es, manchmal weigerte es sich, etwas zu tun. Es blinkte einfach weiter. Ein Test mit dem Original-Controller und -Empfänger bestätigte, dass der ESC immer noch genau wie beabsichtigt funktionierte, was die Probleme noch seltsamer machte. Höhere Werte ignorierte er und blinkte weiter, bei niedrigeren Werten leuchtete der ESC wieder fröhlich grün, drehte sich aber immer noch nicht.

Was war anders als die Einstellung mit dem Potentiometer oder dem Seriensender und -empfänger und der Version, die feste Werte lieferte?

Manchmal überschneiden sich das Arbeiten wie beabsichtigt und das Arbeiten wie erwartet im Venn-Diagramm nicht wirklich. In diesem Fall, da es sich um ein Spielzeug handelt, sollte es keine Möglichkeit geben, dass das Modell beim Einschalten des Modells einfach abnimmt oder sich Finger bricht oder Haare in den Rädern oder im Antriebsstrang hängen, selbst wenn so etwas wie das Halten des Senders seltsamerweise das Gaspedal gedrückt hält jede andere Position als neutral.

'Gastrimmung einstellen', das ist genau das, was das bedeutet. Der ESC erwartet beim Einschalten ein neutrales Signal, bevor er dies bekommt, wird er nichts tun. Normalerweise wäre der Sender beim Einschalten des ESC immer in Neutralstellung und fährt von dort aus glücklich. Falls dies nicht der Fall ist, ist es wahrscheinlich mindestens einmal wieder in der Neutralstellung, wenn das Modell fest auf dem Boden steht und der Fahrer sich bereit für das Rennen fühlt.

Während wir das Potentiometer benutzten, "woben" wir durch die Bereiche, und dann begann es zu funktionieren. Es wurde einfach aktiviert, als das Potentiometer über die neutrale Position strich, und dann funktionierte es.

Niedrigere Reichweiten schienen dem ESC jedoch noch zu missfallen. Es stellt sich heraus, dass dies ein Produkt der PWM-Tastverhältnisse ist.

Entweder konstruktionsbedingt oder aus technischen Gründen ignorieren sowohl das Lenkservo als auch der ESC Signale unter 50% Arbeitszyklus. Dies kann der Fall sein, wenn der Empfänger/Sender nicht mehr funktioniert oder keine Energie mehr hat, das Modell in die Neutralstellung zurückkehrt und nicht mit vollem Rückwärtsgang in die Ferne abhebt. Ebenso dreht sich das Servo nur um 180 Grad und benötigt nicht den vollen Bereich.

Mit diesem neuen Wissen in der Hand wurde eine neue Arduino-Skizze erstellt. Die ursprüngliche Version akzeptiert Strings, die in den seriellen Monitor eingegeben wurden, wandelt sie in eine Ganzzahl um und verschiebt sie mit der Servobibliothek und write()* an den PWM-Pin. Wenn im seriellen Monitor ein neuer Wert eingegeben wird, wird der Wert write() aktualisiert.

Während des Tests wurde der serienmäßige Traxxas-Regler durch einen Mtroniks G2 Micro ersetzt, sie sollten jedoch gleich funktionieren, obwohl die genauen Werte geringfügig abweichen können.

Diese Bibliothek behandelt den Regler als Servo, das ist anscheinend in Ordnung. Die Funktion write() aus der Bibliothek Servo.h geht von 0 bis 180, das erwartete Scharfschaltsignal liegt voraussichtlich in der Mitte.

Das G2 Micro schaltet bei einem write() in einem Bereich von Werten nahe 90 ein, aber es war schwer zu lokalisieren, da es sich zu "erinnern" zu haben scheint, dass es aktiviert wurde.

Es wird erwartet, dass der Traxxas VXL-s3 bei einem write()-Wert von 91 aktiviert wird.

Nach dem Scharfschaltsignal akzeptierte entweder ESC glücklich PWM-Signale, unabhängig von den Arduino-Funktionen, die aufgerufen wurden, um sie zu erzeugen, und steuert den Motor entsprechend.

Apropos Funktionen; der Standard analogWrite () sowie write () und writeMicroseconds () aus der Servo.h-Bibliothek können alle austauschbar verwendet werden. Denken Sie nur daran, was was tut, und letztendlich ist nichts anderes als der Arbeitszyklus von Bedeutung. WriteMicroseconds() könnte verwendet werden, wenn eine größere Granularität erforderlich ist. Beachten Sie jedoch, dass der Bereich hier von 1000 bis 2000 reicht, wobei das Scharfschalten oder 'Neutral' voraussichtlich bei 1500 liegt. Mit dem Standard analogWrite() wird der nutzbare Bereich erwartet zwischen 128 und 255 liegen, wobei etwa 191 neutral sind.

Empfohlen: