Inhaltsverzeichnis:

Arduino 2-in-1-Modellbahnsteuerung - Gunook
Arduino 2-in-1-Modellbahnsteuerung - Gunook

Video: Arduino 2-in-1-Modellbahnsteuerung - Gunook

Video: Arduino 2-in-1-Modellbahnsteuerung - Gunook
Video: Gleisbildstellpult selber bauen DIY - Teil 2 Modellbahn Weichensteuerung mit Arduino 2024, Juli
Anonim
Arduino 2-in-1-Modellbahnsteuerung
Arduino 2-in-1-Modellbahnsteuerung

Vor vierzig Jahren entwarf ich für ein paar Freunde eine Operationsverstärker-basierte Modellbahndrossel, und vor etwa vier Jahren habe ich sie mit einem PIC-Mikrocontroller nachgebaut. Dieses Arduino-Projekt erstellt die PIC-Version neu, fügt aber auch die Möglichkeit hinzu, eine Bluetooth-Verbindung anstelle der manuellen Schalter für die Gas-, Brems- und Richtungssteuerung zu verwenden. Während das hier vorgestellte Design auf einen 12-Volt-Modellbahnmotor ausgerichtet ist, kann es leicht für eine Vielzahl anderer DC-Motorsteuerungsanwendungen modifiziert werden.

Schritt 1: Pulsweitenmodulation (PWM)

Pulsweitenmodulation (PWM)
Pulsweitenmodulation (PWM)

Für diejenigen unter Ihnen, die mit PWM nicht vertraut sind, ist es nicht so beängstigend, wie es sich anhört. Für unsere einfache Motorsteuerungsanwendung bedeutet dies nur, dass wir eine Rechteckwelle mit einer bestimmten Frequenz erzeugen und dann das Tastverhältnis ändern. Das Tastverhältnis ist definiert als das Verhältnis der Zeit, in der der Ausgang ein logisches Hoch im Vergleich zur Wellenformperiode ist. Sie können dies im obigen Diagramm mit der oberen Wellenform bei 10 % Duty Cycle, der mittleren Wellenform bei 50 % Duty Cycle und der unteren Wellenform bei 90 % Duty Cycle recht deutlich sehen. Die jeder Wellenform überlagerte gestrichelte Linie repräsentiert die äquivalente DC-Spannung, die der Motor sieht. Da der Arduino über eine eingebaute PWM-Fähigkeit verfügt, ist es wirklich ziemlich einfach, diese Art von DC-Motorsteuerung zu generieren. Ein weiterer Vorteil der Verwendung von PWM besteht darin, dass der Motor vor dem ruckelnden Anlauf bewahrt wird, der bei Verwendung von direktem Gleichstrom auftreten kann. Ein Nachteil von PWM ist, dass manchmal ein hörbares Geräusch vom Motor mit der Frequenz der PWM zu hören ist.

Schritt 2: Hardware

Hardware
Hardware
Hardware
Hardware
Hardware
Hardware

Das erste Bild zeigt die Arduino-Anschlüsse für die Schalter und das LM298-Motortreibermodul. Es gibt schwache Pull-Up-Widerstände im Arduino, so dass keine Pull-Up-Widerstände für die Schalter benötigt werden. Der Richtungsschalter ist ein einfacher SPST-Schalter (Single Pole Single Throw). Die Gas- und Bremsschalter werden als normalerweise offene Taster mit momentanem Kontakt dargestellt.

Das zweite Bild zeigt die Arduino-Anschlüsse für das Bluetooth-Modul und das LM298-Motortreibermodul. Der Bluetooth TXD-Ausgang wird direkt mit dem seriellen Eingang des Arduino RX verbunden.

Das dritte Bild ist ein L298N Dual H-Brückenmodul. Das LM298-Modul verfügt über einen integrierten 5-Volt-Regler, der durch einen Jumper aktiviert werden kann. Wir brauchen +5 Volt für Arduino und Bluetooth, aber wir wollen +12 Volt, um den Motor anzutreiben. In diesem Fall legen wir die +12 Volt an den „+12V Power“-Eingang des L298N an und lassen den „5V enable“-Jumper an Ort und Stelle. Dadurch kann der 5-Volt-Regler an den „+5-Strom“-Anschluss des Moduls ausgeben. Verbinden Sie das mit dem Arduino und dem Bluetooth. Vergessen Sie nicht, die Massekabel für den +12-Eingang und den +5-Ausgang an das Modul „Power GND“anzuschließen.

Wir möchten, dass die Ausgangsspannung des Motors basierend auf der vom Arduino erzeugten PWM variiert, anstatt nur voll ein- oder ausgeschaltet zu sein. Dazu entfernen wir die Jumper von „ENA“und „ENB“und verbinden unseren Arduino PWM-Ausgang mit „ENA“am Modul. Denken Sie daran, dass der tatsächliche Aktivierungsstift derjenige ist, der der Platinenkante am nächsten ist (neben den „Eingangs“-Pins). Der Back-Pin für jede Aktivierung beträgt +5 Volt, daher möchten wir sicherstellen, dass wir keine Verbindung dazu herstellen.

Die Pins „IN1“und „IN2“des Moduls sind mit den jeweiligen Arduino-Pins verbunden. Diese Pins steuern die Motorrichtung und ja, es gibt einen guten Grund, sie vom Arduino steuern zu lassen, anstatt einfach einen Schalter an das Modul anzuschließen. Wir werden in der Software-Diskussion sehen, warum.

Schritt 3: Bluetooth-Modul

Bluetooth-Modul
Bluetooth-Modul

Das hier gezeigte Bild ist typisch für die verfügbaren Bluetooth-Module. Bei der Suche nach einem zum Kauf können Sie nach den Begriffen „HC-05“und HC-06 suchen. Die Unterschiede zwischen den beiden liegen in der Firmware und normalerweise in der Anzahl der Pins auf der Platine. Das obige Bild zeigt ein HC-06-Modul und wird mit vereinfachter Firmware geliefert, die nur eine sehr grundlegende Konfiguration ermöglicht. Es ist auch als reines „Slave“-Bluetooth-Gerät eingestellt. Das bedeutet vereinfacht ausgedrückt, dass er nur auf Befehle eines „Master“-Gerätes reagieren kann und selbst keine Befehle erteilen kann. Das HC-05-Modul hat mehr Konfigurationsmöglichkeiten und kann entweder als „Master“- oder „Slave“-Gerät eingestellt werden. Der HC-05 hat normalerweise sechs Pins anstelle der oben gezeigten vier beim HC-06. Der State-Pin ist nicht wirklich wichtig, aber der Key-Pin (manchmal mit anderen Namen wie "EN") ist erforderlich, wenn Sie eine Konfiguration vornehmen möchten. Im Allgemeinen benötigen die Module keine Konfiguration, wenn Sie mit der Standardbaudrate von 9600 einverstanden sind und dem Modul keinen bestimmten Namen geben möchten. Ich habe mehrere Projekte, in denen ich diese verwende, also benenne ich sie gerne entsprechend.

Die Konfiguration der Bluetooth-Module erfordert, dass Sie entweder eine Schnittstelle zu einer seriellen RS-232-Schnittstelle oder zu einer USB-Schnittstelle kaufen oder bauen. Ich werde in diesem Beitrag nicht behandeln, wie man einen erstellt, aber Sie sollten in der Lage sein, Informationen im Web zu finden. Oder kaufen Sie einfach eine Schnittstelle. Die Konfigurationsbefehle verwenden AT-Befehle, ähnlich denen, die früher bei Telefonmodems verwendet wurden. Ich habe hier eine Bedienungsanleitung angehängt, die die AT-Befehle für jeden Modultyp enthält. Beachten Sie, dass der HC-06 GROSSBUCHSTABEN-Befehle erfordert und die Befehlszeichenfolge innerhalb von 1 Sekunde abgeschlossen sein muss. Das bedeutet, dass einige der längeren Zeichenfolgen für Dinge wie das Ändern der Baudrate ausgeschnitten und in Ihr Terminalprogramm eingefügt werden müssen oder Sie Textdateien zum Senden einrichten müssen. Die Anforderung in GROSSBUCHSTABEN gilt nur, wenn Sie versuchen, Konfigurationsbefehle zu senden. Der normale Kommunikationsmodus kann beliebige 8-Bit-Daten akzeptieren.

Schritt 4: Software

Die Software ist sowohl für die manuelle Version als auch für die Bluetooth-Version ziemlich einfach. Um die Bluetooth-Version auszuwählen, entkommentieren Sie einfach die Anweisung „#define BT_Ctrl“.

Als ich den PIC-Code schrieb, experimentierte ich mit der PWM-Frequenz und entschied mich schließlich für 500 Hz. Ich habe festgestellt, dass das LM298N-Modul bei zu hoher Frequenz nicht schnell genug auf die Impulse reagieren kann. Das bedeutete, dass die Spannungsausgabe nicht linear war und große Sprünge machen konnte. Der Arduino hat eingebaute PWM-Befehle, aber sie ermöglichen es Ihnen nur, das Tastverhältnis und nicht die Frequenz zu variieren. Glücklicherweise beträgt die Frequenz etwa 490 Hz, so dass sie nahe genug an den 500 Hz liegt, die ich auf dem PIC verwendet habe.

Eines der „Merkmale“von Zugdrosseln ist ein Gefühl des Schwunges beim Beschleunigen und Bremsen, um zu simulieren, wie ein echter Zug funktioniert. Dazu wird für die manuelle Version der Software eine einfache Zeitverzögerung in die Schleife eingefügt. Mit dem angezeigten Wert dauert es ungefähr 13 Sekunden, um von 0 auf 12 Volt oder von 12 Volt zurück auf Null zu gehen. Die Verzögerung kann leicht für längere oder kürzere Zeiten geändert werden. Der einzige Fall, in dem das Momentum nicht wirksam ist, ist, wenn der Richtungsschalter geändert wird. Aus Schutzgründen wird das PWM-Tastverhältnis bei jeder Änderung dieses Schalters sofort auf 0% gesetzt. Das macht den Fahrtrichtungsschalter praktisch auch als Notbremse.

Um eine sofortige Handhabung des Richtungsschalters zu gewährleisten, habe ich seinen Code in einen Interrupt-Handler gesteckt. Dadurch können wir auch die Funktion „Unterbrechen bei Änderung“verwenden, sodass es keine Rolle spielt, ob die Änderung von niedrig zu hoch oder von hoch zu niedrig erfolgt.

Die Bluetooth-Version der Software verwendet Einzelbuchstabenbefehle, um die Vorwärts-, Rückwärts-, Brems- und Drosselfunktionen zu initiieren. Tatsächlich ersetzen die empfangenen Befehle die manuellen Schalter, verursachen jedoch die gleichen Antworten. Die App, die ich zur Bluetooth-Steuerung verwende, heißt von Next Prototypes „Bluetooth Serial Controller“. Damit können Sie eine virtuelle Tastatur konfigurieren und Ihre eigenen Befehlszeichenfolgen und Namen für jede Taste festlegen. Sie können auch eine Wiederholungsrate einstellen, sodass ich die Brems- und Drosseltasten auf 50 ms stelle, um etwa 14 Sekunden Schwung zu geben. Ich habe die Wiederholungsfunktion für die Vorwärts- und Rückwärtstasten deaktiviert.

Das war's für diesen Beitrag. Schauen Sie sich meine anderen Instructables an. Wenn Sie an PIC-Mikrocontroller-Projekten interessiert sind, besuchen Sie meine Website unter www.boomerrules.wordpress.com

Empfohlen: