Inhoudsopgave:
- Stap 1: Arduino Code - Command Station met toetsenbord
- Stap 2: Arduino-code - TFT-display
- Stap 3: Wisselcontroller
Video: Modelspoor - DCC Command Station met Arduino:: 3 stappen
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:18
Bijgewerkt augustus 2018 - zie nieuwe Instructable:
Update 28 april 2016: Nu 16 wissel-/puntencontrolemogelijkheden naar Command Station. De wissels T1 - T8 zijn bereikbaar via 'B'-toetsDe wissels T9 - T16 zijn beschikbaar via 'C'-toets
Update 10 maart 2016:
Nu 8 wissel- / wisselbesturingsmogelijkheid toegevoegd aan Command Station. De Arduino-code is dienovereenkomstig bijgewerkt met behulp van het NMRA-standaardpakket voor wissels (ook gebaseerd op een studie van Lenz / Atlas Compact-gegevenspakketten voor wisselbesturing).
De wissels T1 - T8 zijn beschikbaar via 'B'-toets
Zie de instructie over het gebruikte datapakketontvangercircuit en de vereiste Arduino-code.
Update 18 januari 2016:
Ik heb een stroomdetectieweerstand (1k5 ohm) en condensator (10 uf) aan het circuit toegevoegd en de Arduino-code aangepast om de stroom uit te schakelen wanneer een piekstroom van> 3200 mAmps wordt gedetecteerd. De H-brugspecificatie vermeldt een uitgangsdetectiestroom van 377 uA per 1 Ampère in de belasting.
De weerstand van 1,5 k ohm levert 0,565 volt per ampère op analoge pin 6. Met 1023 stappen op de analoge ingang geeft dit 0,565 * 1023 / 5 = 116 per ampère belasting.
A = 100 * (analoog lezen (AN_CURRENT)) / 116; A = A * 10; (om het resultaat in milliampères te geven)
De belastingsstroom in milliampère wordt weergegeven op de TFT
Het volledige 4x4-toetsenbord bevat F1 tot F8-functies en nog eens 10 locomotieven (1-19) via de '#'-toets (om 10 toe te voegen aan de numerieke toetsen vanaf locomotief 10).
De Arduino-code bevat de NMRA-standaard voor instructiebytes.
Zie link
www.nmra.org/sites/default/files/s-9.2.1_20…
(pagina 6 is van bijzonder belang)
De pakketten zijn gerangschikt volgens aantal snelheidsstappen, lang / kort adres en functiegroepinstructies.
Alle instructiebytes worden voorafgegaan door een preambule van '1'-bits 11111111 (of inactief pakket) gevolgd door;
bijv. A 4-byte adres 0 00000011 0 00111111 0 10000011 0 10111111
komt overeen met loc 3, 128 snelheidsstappen, voorwaartse richting en snelheidsstap 3 (de eindbyte is de foutcontrole XOR)
bijv. Een adres van 3 bytes 0 00000011 0 10010000 0 10110011
komt overeen met locomotief 3, functiegroep 1, FL-lampjes aan plus XOR-byte (een '0'-bit scheidt elke byte)
Zie bijgevoegde demonstratievideo voor loc 12.
De functies F1 - F8 zijn beschikbaar via 'A' toets, DIR ('*' toets = richting) FL ('0' toets = lichten) en toets '#' geeft locs 10 t/m 19 op het numerieke toetsenbord. De 'D'-toets wordt nu gebruikt voor een 'Noodstop'.
Met dank aan verschillende aanbieders op het web voor bronnen van DCC-informatie en Arduino-code.
Dit project werd met name geïnspireerd door Michael Blank en zijn 'Simple DCC - a command station'
www.oscale.net/en/simpledcc
4x4 Matrix Array 16 Key Membrane Switch Keypad (ebay) £ 1,75
2.2 inch 240x320 seriële SPI TFT LCD-displaymodule (ebay) £ 7,19
UNIVERSELE 12V 5A 60W VOEDING AC-ADAPTER (ebay) £ 6,49
Nano V3.0 voor Arduino met CH340G 5V 16M compatibel ATmega328P (ebay) 2 x £ 3,30 = £ 6,60
Motor Driver Module LMD18200T voor Arduino R3 (ebay) £6,99
Connectoren, draad, vero-bord, potentiometer ongeveer £ 3,50
Totaal £ 32,52
De basiscentrale zonder tft-scherm en 1 x nano zou £ 22,03 zijn
[Opmerking: het is mogelijk om een geheugenkaart aan het TFT-scherm toe te voegen en de code aan te passen om afbeeldingen van geselecteerde motoren weer te geven, hoewel de bibliotheekcodes moeten worden aangepast om meer geheugen voor de schets te creëren. Huidige schetsgrootte is maximaal voor de TFT Arduino Nano]
De originele Arduino-code van Michael Blank was voor één motor, alleen vooruit / achteruit zonder functiecontrole, geen toetsenbord en geen display.
Ik heb de code aangepast om 1 - 19 motoren, een scherm, richting, lichten, 8 functies, noodstop en automatische stroombegrenzing op te nemen.
De LMD18200T-brug kan tot 3 ampère dragen, waardoor hij geschikt is voor alle schalen, inclusief G-schaal (tuintreinen). De netvoeding en elektronica zijn alleen geschikt voor gebruik binnenshuis, tenzij je het weerbestendig kunt maken. Ik heb de commandopost in het zomerhuis met spoorverbindingsdraden die door de muur naar het spoor lopen.
Stap 1: Arduino Code - Command Station met toetsenbord
Mijn dank aan tvantenna2759 voor het wijzen op 2 fouten in het schakelschema waar de Arduino-code niet overeenkwam met de bedrading, nu bijgewerkt (21 oktober 2017).
Nu 16 wissels toegevoegd aan Command Station. Zie instructable op het schakelschema van de wissel / punten met behulp van de Arduino Mini Pro-module.
De aangepaste code inclusief wisselcontrole is hieronder bijgevoegd.
Basisaccessoire-decoderpakket is: 0 10AAAAAA 0 1AAACDDD 0 EEEEEEE 1 Uit analyse van het pakket dat door Lenz (Compact / Atlas) wordt gebruikt voor puntencontrole, heb ik het volgende binaire pakketformaat gebruikt voor bytes 1 en 2: tunAddr = 1 Wissel 1a: 1000 0001 1111 1000 / Wissel 1b: 1000 0001 1111 1001 Wissel 2a: 1000 0001 1111 1010 / Wissel 2b: 1000 0001 1111 1011 Wissel 3a: 1000 0001 1111 1100 / Wissel 3b: 1000 0001 1111 1101 Wissel 4a: 1000 0001 1111 1110 / Wissel 4b: 1000 0001 1111 1111 tunAddr = 2 ----------------------------------------- -------------------------------------------------- ----------------- Wissel 5a: 1000 0010 1111 1000 / Wissel 5b: 1000 0010 1111 1001 Wissel 6a: 1000 0010 1111 1010 / Wissel 6b: 1000 0010 1111 1011 Wissel 7a: 1000 0010 1111 1100 / Wissel 7b: 1000 0010 1111 1101 Wissel 8a: 1000 0010 1111 1110 / Wissel 8b: 1000 0010 1111 1111 ----------------------- -------------------------------------------------- ---------------------------------- Opkomst 9a: 1000 0011 1111 1000 / Opkomst 9b: 1000 0011 1111 1001 enz ………
Uittreksel uit gewijzigde code: voeg nog 2 'struct'-berichtupdates toevoid amendement_tun1 (struct Message & x) { x.data[0] = 0x81; // accessoire decoder 0x80 & adres 1 x.data [1] = 0; }
void amendement_tun2 (struct Message & x) { x.data [0] = 0x82; // accessoire decoder 0x80 & adres 2 x.data [1] = 0; }
Nieuwe leegte voor wissels toevoegen:boolean read_turnout() { delay(20);
boolean gewijzigd_t = false; get_key();
if (key_val >= 101 && key_val <= 404 && turn == 1){
gegevens = 0xf8; // = binair 1111 1000
amendement_tun1(msg[1]);
}
if (key_val >= 505 && key_val <= 808 && turn == 1){
gegevens = 0xf8; // = binair 1111 1000
amendement_tun2(msg[1]);
}
if (key_val == 101 && turn == 1){
als (tun1 == 1){
gegevens |= 0; // t1a
gewijzigd_t = waar;}
als (tun1 == 0){
gegevens |= 0x01; // t1b
gewijzigd_t = waar;}
}
if (key_val == 202 && turn == 1){
als (tun2 == 1){
gegevens |= 0x02; // t2a
gewijzigd_t = waar;
}
als (tun2 == 0){
gegevens |= 0x03; // t2b
gewijzigd_t = waar; }
}
if (key_val == 303 && beurt == 1){
als (tun3 == 1){
gegevens |= 0x04; // t3a
gewijzigd_t = waar;
}
als (tun3 == 0){
gegevens |= 0x05; // t3b
gewijzigd_t = waar;}
}
if (key_val == 404 && beurt == 1){
als (tun4 == 1){
gegevens |= 0x06; // t4a
gewijzigd_t = waar;
}
als (tun4 == 0){
gegevens |= 0x07; // f4b
gewijzigd_t = waar;}
}
if (key_val == 505 && beurt == 1){
als (tun5 == 1){
gegevens |= 0; // t5a
gewijzigd_t = waar;
}
als (tun5 == 0){
gegevens |= 0x01; // t5b
gewijzigd_t = waar;}
}
enzovoort ………………….
Stap 2: Arduino-code - TFT-display
Het weergavecircuit blijft hetzelfde met een aangepaste code om de status van de 16 wissels weer te geven. Opmerking: de bibliotheekcode neemt bijna al het schetscodegeheugen in beslag, waardoor er weinig ruimte is voor nieuwe functies. Als iemand een efficiënter bibliotheekbestand heeft voor de hier gebruikte TFT, laat het me dan weten.
Stap 3: Wisselcontroller
Zie instructable over het maken van de wissel / punten-controller.
De complete schakeling regelt 16 wissels en 15 accessoires zoals licht, geluid, draaitafel, etc.
Aanbevolen:
Modelspoor automatische tunnelverlichting - Ajarnpa
Modelspoor automatische tunnelverlichting: dit is mijn favoriete printplaat. Mijn modelspoorbaan (nog in uitvoering) heeft een aantal tunnels en hoewel waarschijnlijk niet prototypisch, wilde ik tunnelverlichting hebben die aanging als de trein de tunnel naderde. Mijn eerste impuls was om
Draadloze afstandsbediening met 2,4 GHz NRF24L01-module met Arduino - Nrf24l01 4-kanaals / 6-kanaals zenderontvanger voor quadcopter - RC Helikopter - RC-vliegtuig met Arduino: 5 stappen (met afbeeldingen)
Draadloze afstandsbediening met 2,4 GHz NRF24L01-module met Arduino | Nrf24l01 4-kanaals / 6-kanaals zenderontvanger voor quadcopter | RC Helikopter | Rc-vliegtuig met Arduino: een Rc-auto besturen | Quadcopter | Drone | RC vliegtuig | RC-boot, we hebben altijd een ontvanger en zender nodig, stel dat we voor RC QUADCOPTER een 6-kanaals zender en ontvanger nodig hebben en dat type TX en RX is te duur, dus we gaan er een maken op onze
Hoe een Comfort Monitoring Sensor Station te bouwen: 10 stappen (met afbeeldingen)
Hoe een Comfort Monitoring Sensor Station te bouwen: Deze instructable beschrijft het ontwerp en de constructie van een zogenaamd Comfort Monitoring Station CoMoS, een gecombineerd sensorapparaat voor omgevingscondities, dat is ontwikkeld op de afdeling Bouwkunde van TUK, Technische Universität Ka
Flash AT Command Firmware naar ESP01-module (vereist een USB-naar-TTL-adapter): 5 stappen
Flash AT Command Firmware naar ESP01-module (vereist een USB-naar-TTL-adapter): door Jay Amiel AjocGensan PHfacebook.com/geeamealyoutube.com/jayamielajoc
AVRSH: een Command Interpreter Shell voor Arduino/AVR: 6 stappen (met afbeeldingen)
AVRSH: een Command Interpreter Shell voor Arduino/AVR.: Altijd al willen "ingelogd" naar uw AVR-microcontroller? Ooit gedacht dat het cool zou zijn om te "katten" een register om de inhoud te zien? Heb je altijd al een manier willen hebben om individuele randapparatuursubsystemen van je A