Inhaltsverzeichnis:
- Schritt 1: Arduino-Code - Kommandostation mit Tastatur
- Schritt 2: Arduino-Code - TFT-Display
- Schritt 3: Weichensteuerung
Video: Modelleisenbahn - DCC-Kommandostation mit Arduino: - Gunook
2024 Autor: John Day | [email protected]. Zuletzt bearbeitet: 2024-01-30 07:20
Aktualisiert August 2018 - siehe neue Instructable:
Update 28. April 2016: Jetzt 16 Weichen-/Weichensteuerungsfunktionen für die Command Station. Die Weichen T1 - T8 sind über die Taste 'B' verfügbarDie Weichen T9 - T16 sind über die Taste 'C' verfügbar
Update 10. März 2016:
Der Command Station wurden jetzt 8 Weichen-/Weichensteuerungsfunktionen hinzugefügt. Der Arduino-Code wurde unter Verwendung des NMRA-Standardpakets für Weichen entsprechend aktualisiert (ebenfalls basierend auf einer Studie von Lenz / Atlas Compact-Datenpaketen für die Weichensteuerung).
Die Weichen T1 - T8 sind über die Taste 'B' verfügbar
Siehe anweisbar auf der verwendeten Datenpaketempfängerschaltung und dem erforderlichen Arduino-Code.
Update 18. Januar 2016:
Ich habe der Schaltung einen Strommesswiderstand (1k5 Ohm) und einen Kondensator (10 uf) hinzugefügt und den Arduino-Code geändert, um die Stromversorgung zu unterbrechen, wenn ein Spitzenstrom von > 3200 mA erkannt wird. Die H-Brückenspezifikation gibt einen Ausgangsmessstrom von 377 uA pro 1 Ampere in der Last an.
Der 1,5 kOhm-Widerstand liefert 0,565 Volt pro Ampere am analogen Pin 6. Bei 1023 Schritten am analogen Eingang ergibt dies 0,565 * 1023 / 5 = 116 pro Ampere Last.
A = 100 * (analogRead(AN_CURRENT)) / 116;A = A * 10; (um das Ergebnis in Milliampere anzugeben)
Der Laststrom in Milliampere wird auf dem TFT. angezeigt
Die vollständige 4x4-Tastatur beinhaltet die Funktionen F1 bis F8 und weitere 10 Loks (1-19) über die '#'-Taste (um 10 zu den Zifferntasten ab Lok 10 hinzuzufügen).
Der Arduino-Code enthält den NMRA-Standard für Befehlsbytes.
Siehe Link
www.nmra.org/sites/default/files/s-9.2.1_20…
(Seite 6 ist von besonderer Bedeutung)
Die Pakete sind nach Anzahl der Fahrstufen, langer / kurzer Adresse und Funktionsgruppenanweisungen geordnet.
Allen Befehlsbytes geht eine Präambel von "1"-Bits 11111111 (oder Leerpaket) voraus, gefolgt von;
z. B. Eine 4-Byte-Adresse 0 00000011 0 00111111 0 10000011 0 10111111
entspricht Lok 3, 128 Fahrstufen, Vorwärtsrichtung und Fahrstufe 3 (das Endbyte ist die Fehlerprüfung XOR)
z. B. A 3 Byte Adresse 0 00000011 0 10010000 0 10110011
entspricht Lok 3, Funktionsgruppe 1, FL leuchtet plus XOR-Byte (jedes Byte wird durch ein '0'-Bit getrennt)
Siehe beiliegendes Demo-Video für Lok 12.
Die Funktionen F1 - F8 sind über die 'A'-Taste, DIR ('*'-Taste = Richtung) FL ('0'-Taste = leuchtet) und die Taste '#' auf dem Ziffernblock auf die Loks 10 bis 19 verfügbar. Die Taste 'D' wird nun für einen 'Not-Halt' verwendet.
Vielen Dank an verschiedene Anbieter im Web für Quellen von DCC-Informationen und Arduino-Code.
Dieses Projekt wurde insbesondere von Michael Blank und seinem 'Simple DCC - a command station' inspiriert.
www.oscale.net/en/simpledcc
4x4 Matrix Array 16 Tasten Folientastatur (ebay) £1,75
2,2-Zoll-240x320-Seriell-SPI-TFT-LCD-Anzeigemodul (ebay) £7.19
UNIVERSAL 12V 5A 60W STROMVERSORGUNG AC ADAPTER (ebay) £6.49
Nano V3.0 für Arduino mit CH340G 5V 16M kompatibel ATmega328P (ebay) 2 x £3.30 = £6.60
Motortreibermodul LMD18200T für Arduino R3 (ebay) £6.99
Anschlüsse, Kabel, Vero-Platine, Potentiometer ca. £3,50
Gesamt £32.52
Die Basis-Zentrale ohne TFT-Bildschirm und 1 x Nano würde 22,03 € kosten
[Hinweis: Es ist möglich, dem TFT-Display eine Speicherkarte hinzuzufügen und den Code zu ändern, um Bilder ausgewählter Motoren anzuzeigen, obwohl die Bibliothekscodes nach unten bearbeitet werden müssen, um mehr Speicherplatz für die Skizze zu schaffen. Die aktuelle Skizzengröße ist für den TFT Arduino Nano maximal]
Der ursprüngliche Arduino-Code von Michael Blank war für einen Motor, nur vorwärts / rückwärts ohne Funktionskontrolle, ohne Tastatur und ohne Display.
Ich habe den Code so geändert, dass er 1 - 19 Motoren, einen Anzeigebildschirm, Richtung, Lichter, 8 Funktionen, Notstopp und automatische Strombegrenzung enthält.
Die Brücke LMD18200T kann bis zu 3 Ampere tragen, wodurch sie für alle Waagen einschließlich G-Spur (Garteneisenbahn) geeignet ist. Das Netzteil und die Elektronik sind nur für den Innenbereich geeignet, es sei denn, Sie können es wetterfest machen. Ich habe die Zentrale im Gartenhaus mit Gleisanschlussdrähten, die durch die Wand zum Gleis laufen.
Schritt 1: Arduino-Code - Kommandostation mit Tastatur
Mein Dank an tvantenna2759 für den Hinweis auf 2 Fehler im Schaltplan, bei denen der Arduino-Code nicht mit der Verkabelung übereinstimmte, jetzt aktualisiert (21.10.2017).
Der Command Station wurden jetzt 16 Weichen hinzugefügt. Siehe Anleitung auf dem Schaltplan der Weiche / der Punkte mit dem Arduino Mini Pro-Modul.
Der geänderte Code inklusive Weichensteuerung ist unten angehängt.
Das Basiszubehör-Decoderpaket ist: 0 10AAAAAA 0 1AAACDDD 0 EEEEEEEE 1 Aus der Analyse des von Lenz (Compact / Atlas) für die Weichensteuerung verwendeten Pakets habe ich das folgende binäre Paketformat für Byte 1 und 2 verwendet: tunAddr = 1 Weiche 1a: 1000 0001 1111 1000 / Weiche 1b: 1000 0001 1111 1001 Weiche 2a: 1000 0001 1111 1010 / Weiche 2b: 1000 0001 1111 1011 Weiche 3a: 1000 0001 1111 1100 / Weiche 3b: 1000 0001 1111 1101 Weiche 4a: 1000 0001 1111 1110 / Weiche 4b: 1000 0001 1111 1111 tunAddr = 2 ----------------------------------------- -------------------------------------------------- ----------------- Weiche 5a: 1000 0010 1111 1000 / Weiche 5b: 1000 0010 1111 1001 Weiche 6a: 1000 0010 1111 1010 / Weiche 6b: 1000 0010 1111 1011 Weiche 7a: 1000 0010 1111 1100 / Weiche 7b: 1000 0010 1111 1101 Weiche 8a: 1000 0010 1111 1110 / Weiche 8b: 1000 0010 1111 1111 ---------------------- -------------------------------------------------- ---------------------------------- Weiche 9a: 1000 0011 1111 1000 / Weiche 9b: 1000 0011 1111 1001 usw. ………
Auszug aus geändertem Code: Fügen Sie 2 weitere 'struct'-Nachrichten hinzu updatesvoid amend_tun1 (struct Message & x) { x.data[0] = 0x81; // Zubehördecoder 0x80 & Adresse 1 x.data[1] = 0; }
void amend_tun2 (struct Message & x) { x.data[0] = 0x82; // Zubehördecoder 0x80 & Adresse 2 x.data[1] = 0; }
Neue Leere für Weichen hinzufügen: boolean read_turnout () { delay (20);
boolescher Wert geändert_t = false; get_key();
if (key_val >= 101 && key_val <= 404 && turn == 1){
Daten = 0xf8; // = binär 1111 1000
amend_tun1(msg[1]);
}
if (key_val >= 505 && key_val <= 808 && turn == 1){
Daten = 0xf8; // = binär 1111 1000
amend_tun2(msg[1]);
}
if (key_val == 101 && drehen == 1){
wenn (tun1 == 1){
Daten |= 0; // t1a
geändert_t = wahr;}
wenn (tun1 == 0){
Daten |= 0x01; // t1b
geändert_t = wahr;}
}
if (key_val == 202 && drehen == 1){
wenn (tun2 == 1){
Daten |= 0x02; // t2a
geändert_t = wahr;
}
wenn (tun2 == 0){
Daten |= 0x03; // t2b
geändert_t = wahr; }
}
if (key_val == 303 && drehen == 1){
wenn (tun3 == 1){
Daten |= 0x04; // t3a
geändert_t = wahr;
}
wenn (tun3 == 0){
Daten |= 0x05; // t3b
geändert_t = wahr;}
}
if (key_val == 404 && drehen == 1){
wenn (tun4 == 1){
Daten |= 0x06; // t4a
geändert_t = wahr;
}
wenn (tun4 == 0){
Daten |= 0x07; // f4b
geändert_t = wahr;}
}
if (key_val == 505 && drehen == 1){
wenn (tun5 == 1){
Daten |= 0; // t5a
geändert_t = wahr;
}
wenn (tun5 == 0){
Daten |= 0x01; // t5b
geändert_t = wahr;}
}
etc ………………….
Schritt 2: Arduino-Code - TFT-Display
Die Anzeigeschaltung bleibt gleich mit einem modifizierten Code, um den Status der 16 Weichen anzuzeigen. Hinweis: Der Bibliothekscode nimmt fast den gesamten Sketch-Code-Speicher ein und lässt wenig Platz für neue Funktionen. Wenn jemand eine effizientere Bibliotheksdatei für das hier verwendete TFT hat, lassen Sie es mich bitte wissen.
Schritt 3: Weichensteuerung
Siehe anweisbar, wie man den Weichen- / Punkte-Controller macht.
Die komplette Schaltung steuert 16 Weichen und 15 Zubehörteile wie Lichter, Sounds, Plattenspieler usw.
Empfohlen:
Heimwerken -- Einen Spinnenroboter herstellen, der mit einem Smartphone mit Arduino Uno gesteuert werden kann – wikiHow
Heimwerken || Wie man einen Spider-Roboter herstellt, der mit einem Smartphone mit Arduino Uno gesteuert werden kann: Während man einen Spider-Roboter baut, kann man so viele Dinge über Robotik lernen. Wie die Herstellung von Robotern ist sowohl unterhaltsam als auch herausfordernd. In diesem Video zeigen wir Ihnen, wie Sie einen Spider-Roboter bauen, den wir mit unserem Smartphone (Androi
Bewegungsaktivierte Cosplay Wings mit Circuit Playground Express - Teil 1: 7 Schritte (mit Bildern)
Bewegungsaktivierte Cosplay-Flügel mit Circuit Playground Express - Teil 1: Dies ist Teil 1 eines zweiteiligen Projekts, in dem ich Ihnen meinen Prozess zur Herstellung eines Paars automatisierter Feenflügel zeige. Der erste Teil des Projekts ist der Mechanik der Flügel, und der zweite Teil macht es tragbar und fügt die Flügel hinzu
Schnittstellentastatur mit Arduino. [Einzigartige Methode]: 7 Schritte (mit Bildern)
Schnittstellentastatur mit Arduino. [Einzigartige Methode]: Hallo, und willkommen zu meinem ersten instructable! :) In diesem instructables möchte ich eine fantastische Bibliothek für die Schnittstelle der Tastatur mit Arduino teilen - 'Password Library' einschließlich 'Keypad Library'. Diese Bibliothek enthält die besten Funktionen, die wir wi
SCARA-Roboter: Lernen über Vorwärts- und inverse Kinematik !!! (Plot Twist Erfahren Sie, wie Sie mit PROCESSING eine Echtzeitschnittstelle in ARDUINO erstellen !!!!): 5 Schritte (mit Bildern)
SCARA-Roboter: Lernen über Vorwärts- und inverse Kinematik !!! (Plot Twist Learn How to Make a Real Time Interface in ARDUINO Using PROCESSING !!!!): Ein SCARA-Roboter ist eine sehr beliebte Maschine in der Industriewelt. Der Name steht sowohl für Selective Compliant Assembly Robot Arm als auch für Selective Compliant Articulated Robot Arm. Es ist im Grunde ein Roboter mit drei Freiheitsgraden, da er die ersten beiden Displ
Einfaches BLE mit sehr geringem Stromverbrauch in Arduino Teil 3 - Nano V2-Ersatz - Rev 3: 7 Schritte (mit Bildern)
Einfaches BLE mit sehr geringem Stromverbrauch in Arduino Teil 3 - Nano V2-Ersatz - Rev 3: Update: 7. April 2019 - Rev 3 von lp_BLE_TempHumidity, fügt Datums- / Zeitdiagramme mit pfodApp V3.0.362+ hinzu und automatische Drosselung beim Senden von DatenUpdate: 24. März 2019 – Rev 2 von lp_BLE_TempHumidity, fügt weitere Plotoptionen hinzu und i2c_ClearBus, fügt GT832E