Inhaltsverzeichnis:
Video: UChip - Einfache Skizze zur Fernbedienung von Motoren und / oder Servos über 2,4-GHz-Radio Tx-Rx! - Gunook
2025 Autor: John Day | [email protected]. Zuletzt bearbeitet: 2025-01-13 06:56
Ich mag die RC-Welt sehr. Die Verwendung eines RC-Spielzeugs gibt Ihnen das Gefühl, etwas Außergewöhnliches unter Kontrolle zu haben, egal ob es ein kleines Boot, ein Auto oder eine Drohne ist!
Es ist jedoch nicht einfach, Ihr Spielzeug individuell anzupassen und es tun zu lassen, was Sie von ihm erwarten. Normalerweise sind Sie darauf beschränkt, die Standardeinstellungen des Senders oder die speziell entwickelten Kombinationen von Schaltern und Knöpfen zu verwenden.
Es ist ziemlich schwierig, alles so zu steuern, wie Sie es wirklich wollen, vor allem, weil die RC-Welt ein ziemlich tiefes Wissen über die Programmierung auf Hardware-Ebene erfordert, um das Beste daraus zu machen.
Ich habe viele Plattformen und Setups ausprobiert, aber es hat immer einen großen Aufwand gekostet, mich mit dem Code vertraut zu machen, bevor ich mein RC-Spielzeug wirklich anpasse.
Was mir gefehlt hat, ist eine einfache Skizze, die ich mit der Arduino IDE laden konnte und die es mir leicht ermöglichen würde, die vom Radio RX (Empfänger) ausgegebenen Werte in die gewünschte Motor- / Servosteuerung zu übersetzen.
Daher hier das, was ich nach ein bisschen Spielen mit uChip und der Arduino IDE erstellt habe: Eine einfache Skizze zur Fernsteuerung von Motoren und / oder Servos über 2,4 GHz Radio Tx-Rx!
Stückliste
1 x uChip: Arduino IDE-kompatibles Board
1 xTx-Rx Funksystem: Jedes Funksystem mit cPPM-Empfänger ist gut (meine Combo ist ein altes Spectrum DX7 Tx + Orange R614XN cPPM Rx), stellen Sie sicher, dass Sie das richtige Bindeverfahren befolgen, um Tx und Rx zu binden.
1 x Akku: Bei Motoren und Servos sind Akkus mit hohem Entladestrom erforderlich.
Motoren/Servos: nach Ihren Bedürfnissen
Elektronische Komponenten zum Antrieb der Motoren/Servos: Einfache Widerstände, MOSFETs und Dioden ermöglichen es Ihnen, den Antriebszweck zu erfüllen.
Schritt 1: Verkabelung
Verdrahten Sie die Komponenten wie in den Schaltplänen beschrieben.
Der Rx wird direkt an uChip angeschlossen und benötigt keine externen Komponenten. Falls Sie einen anderen Empfänger verwenden, prüfen Sie, ob Sie einen Pegelumsetzer benötigen oder nicht. Stellen Sie sicher, dass Sie das cPPM-Signal an uChip PIN_9 anschließen (das ist PORTA19, falls Sie den Code an eine andere SAMD21-Karte anpassen möchten).
Die restliche Verkabelung ist notwendig, um den Motor und/oder das Servo anzutreiben. Der beigefügte Schaltplan stellt die Grundschaltung dar, um den uChip vor Spannungsspitzen/Überschwingungen zu schützen, die normalerweise beim Ansteuern induktiver Lasten auftreten. Die Schlüsselkomponente zur Wahrung der uChip-Sicherheit ist die Leistungs-Zener-Diode von 5,1 V (D1 im Schaltplan), die Sie parallel zum VEXT (uChip-Pin 16) und GND (uChip-Pin 8) schalten müssen. Anstatt die Zener-Diode zu verwenden, können Sie sich alternativ für die optionale Schaltung von D2, C1 und C2 entscheiden, die verhindert, dass Rückwärtsspitzen die uChip-Komponenten beschädigen.
Sie können so viele Motoren/Servos ansteuern, wie Sie benötigen, indem Sie einfach den Schaltplan replizieren und die Steuerpins ändern (Sie können jeden Pin verwenden, außer den Power-Pins (PIN_8 und PIN_16) und dem cPPM-Pin (PIN_9)). Beachten Sie, dass, während Sie nur eine Schutzschaltung benötigen, die durch die Zener-Diode repräsentiert wird (oder die Komponenten für die optionale Schaltung), die elektrischen Komponenten in Bezug auf den Motor-/Servoantrieb so oft repliziert werden müssen, wie die Anzahl der Motoren/ Servos, die Sie fahren möchten.
Da ich mindestens 2 Motoren und 2 Servos antreiben wollte, habe ich eine kleine Platine gemacht, die die beschriebene Schaltung implementiert und die Sie auf dem Bild sehen können. Der erste Prototyp wurde jedoch auf einem Proto-Board mit fliegenden Drähten hergestellt.
Daher benötigen Sie keine Löt- / PCB-Design-Kenntnisse, um dieses einfache Projekt zu implementieren:)
Schritt 2: Programmierung
Hier ist die Magie! Hier wird es interessant.
Falls Sie die im vorherigen Schaltplan beschriebene Schaltung gebaut haben, können Sie einfach die Skizze " DriveMotorAndServo.ino " laden und alles sollte funktionieren.
Sehen Sie sich den Code an und prüfen Sie, wie er funktioniert.
Am Anfang gibt es einige #define, die verwendet werden, um zu definieren:
- die Anzahl Kanäle des Rx (6Ch beim Orange 614XN)
- die Pins, an denen Motoren/Servos befestigt sind
- Max und Min für Servo und Motoren verwendet
- Max und Min für die Reichweite der Funkkanäle verwendet
Dann gibt es den Abschnitt zur Variablendeklaration, in dem die Motoren/Servos-Variablen deklariert werden.
Falls Sie mehr als den einen Motor und das angeschlossene Servo wie im vorherigen Schaltplan beschrieben antreiben, müssen Sie die Skizze ändern und den Code hinzufügen, der die zusätzlichen Motoren / Servos behandelt, die Sie angeschlossen haben. Sie müssen so viele Servos, Servo_Werte und Motor_Werte hinzufügen, wie Sie Servos/Motoren verwenden.
Im Abschnitt zur Variablendeklaration gibt es auch einige flüchtige Variablen, die für den Capture-Vergleich des cPPM-Signals verwendet werden. ÄNDERN SIE DIESE VARIABLEN NICHT!
Was Sie als nächstes tun müssen, ist die Funktion loop(). Hier können Sie entscheiden, wie der Wert der eingehenden Kanäle verwendet werden soll.
In meinem Fall habe ich den eingehenden Wert direkt an Motor und Servo angeschlossen, aber Sie können ihn gerne entsprechend Ihren Bedürfnissen ändern! In den in diesem Tutorial verlinkten Videos und Bildern habe ich 2 Motoren und 2 Servos angeschlossen, aber es könnten 3, 4, 5, … bis zu den maximal verfügbaren freien Pins (13 bei uChip) sein.
Sie finden den erfassten Kanalwert im Array ch[index], dessen „Index“von 0 bis NUM_CH - 1 reicht. Jeder Kanal entspricht einem Stick/Schalter/Knopf an Ihrem Funkgerät. Es liegt an Ihnen zu verstehen, was-was-ist:)
Schließlich habe ich einige Debug-Funktionen implementiert, um das Verständnis der Vorgänge zu erleichtern. Kommentieren/entkommentieren Sie das #define DEBUG, um auf dem nativen SerialUSB den Kanalwert zu drucken.
TIPP: Unter der Funktion loop() befindet sich noch mehr Code. Dieser Teil des Codes ist erforderlich, um die uChip-Power-Pins zu setzen, die von der Capture-Vergleichsfunktion erzeugten Interrupts zu verarbeiten, die Timer und den Debugging-Zweck einzustellen. Falls Sie mutig genug sind, mit Registern herumzuspielen, können Sie es gerne ändern!
Edit: Skizze aktualisiert, Fehler in der Mapping-Funktion behoben.
Schritt 3: Spielen, fahren, Rennen fahren, fliegen
Stellen Sie sicher, dass Sie das Tx- und Rx-System richtig verbinden. Schalten Sie es ein, indem Sie die Batterie anschließen. Stellen Sie sicher, dass alles funktioniert. Sie können die Funktionalitäten beliebig erweitern oder die Funktion jedes Kanals ändern, denn jetzt haben Sie die volle Kontrolle über Ihr zukünftiges RC-Modell.
Bauen Sie jetzt Ihr individuelles RC-Modell!
P. S.: Da das Binden ziemlich langweilig sein kann, plane ich in Kürze eine Skizze zu veröffentlichen, die es ermöglicht, Ihr Tx-Rx-System zu binden, ohne es manuell tun zu müssen. Bleiben Sie dran für Updates!