Indholdsfortegnelse:
- Trin 1: Arduino -kode - Kommandostation med tastatur
- Trin 2: Arduino -kode - TFT -skærm
- Trin 3: Turnout Controller
Video: Modeljernbane - DCC -kommandostation ved hjælp af Arduino :: 3 trin
2024 Forfatter: John Day | [email protected]. Sidst ændret: 2024-01-30 08:29
Opdateret august 2018-se ny Instructable:
Opdatering 28. april 2016: Nu 16 muligheder for valgdeltagelse / punkter til Command Station. Kørslerne T1 - T8 er tilgængelige via 'B' -tasten Turnouts T9 - T16 er tilgængelige via' C '-tasten
Opdatering 10. marts 2016:
Nu tilføjet 8 valgmuligheds- / pointstyringsfunktioner til Command Station. Arduino -koden er blevet opdateret i overensstemmelse hermed ved hjælp af NMRA -standardpakken til turnouts (også baseret på en undersøgelse af Lenz / Atlas Compact -datapakker til valgdeltagelse).
Opkørslerne T1 - T8 er tilgængelige via 'B' -tasten
Se instruktionerne om datapakket modtager kredsløb og Arduino kode påkrævet.
Opdatering 18. januar 2016:
Jeg har tilføjet en strømfølelsesmodstand (1k5 ohm) og kondensator (10 uf) til kredsløbet og ændret Arduino -koden for at afbryde strømmen, når der registreres en spidsstrøm på> 3200 mAmps. H-bridge-specifikationen angiver en udgangssensestrøm på 377 uA pr. 1 ampere i belastningen.
Modstanden på 1,5 k ohm leverer 0,565 volt pr. Amp på den analoge pin 6. Med 1023 trin på den analoge indgang giver dette 0,565 * 1023 /5 = 116 pr. Amp. Belastning.
A = 100 * (analogRead (AN_CURRENT)) / 116; A = A * 10; (for at give resultat i milliampere)
Laststrømmen i milliampere vises på TFT
Det fulde 4x4-tastatur indeholder F1 til F8-funktioner og yderligere 10 locos (1-19) via '#' -tasten (for at tilføje 10 til de numeriske taster, der starter fra loco 10).
Arduino -koden indeholder NMRA -standarden for instruktionsbytes.
Se link
www.nmra.org/sites/default/files/s-9.2.1_20…
(side 6 er særlig relevant)
Pakkerne er arrangeret efter antal hastighedstrin, lang / kort adresse og funktionsgruppeanvisninger.
Alle instruktionsbytes forud for en præambel med '1' bits 11111111 (eller inaktiv pakke) efterfulgt af;
f.eks. En 4 byte adresse 0 00000011 0 00111111 0 10000011 0 10111111
svarer til loco 3, 128 hastighedstrin, fremadgående retning og hastighedstrin 3 (slutbyten er fejlkontrollen XOR)
f.eks. en 3 byte adresse 0 00000011 0 10010000 0 10110011
svarer til loco 3, funktionsgruppe 1, FL lyser plus XOR -byte (en '0' bit adskiller hver byte)
Se vedlagte demonstrationsvideo til loco 12.
Funktionerne F1 - F8 er tilgængelige via 'A' tasten, DIR ('*' tast = retning) FL ('0' tast = lys) og tast '#' giver lokaler 10 til 19 på det numeriske tastatur. 'D' -tasten bruges nu til et' nødstop '.
Tak til forskellige udbydere på nettet for kilder til DCC -oplysninger og Arduino -kode.
Dette projekt var især inspireret af Michael Blank og hans 'Simple DCC - a command station'
www.oscale.net/en/simpledcc
4x4 Matrix Array 16 Key Membrane Switch Tastatur (ebay) £ 1,75
2,2 tommer 240x320 serielt SPI TFT LCD -skærmmodul (ebay) 7,19 kr
UNIVERSAL 12V 5A 60W STRØMFORSYNING AC -ADAPTER (ebay) £ 6,49
Nano V3.0 Til Arduino med CH340G 5V 16M kompatibel ATmega328P (ebay) 2 x £ 3,30 = £ 6,60
Motor driver modul LMD18200T til Arduino R3 (ebay) £ 6,99
Stik, ledning, vero board, potentiometer ca. £ 3,50
I alt 32,52 £
Den grundlæggende kommandostation uden tft -skærm og 1 x nano ville være £ 22,03
[Bemærk: Det er muligt at tilføje et hukommelseskort til TFT -displayet og ændre kode for at vise billeder af udvalgte motorer, selvom bibliotekskoderne skal redigeres ned for at skabe mere hukommelse til skitsen. Nuværende skitsestørrelse er maksimalt for TFT Arduino Nano]
Den originale Arduino -kode af Michael Blank var til en motor, kun frem / tilbage uden funktionskontrol, intet tastatur og ingen display.
Jeg har ændret koden til at omfatte 1 - 19 motorer, en skærm, retning, lys, 8 funktioner, nødstop og automatisk strømgrænse.
LMD18200T-broen kan bære op til 3 ampere, hvilket gør den velegnet til alle skalaer inklusive G-skala (havetog). Strømforsyningen og elektronikken er kun egnet til indendørs brug, medmindre du kan gøre det hele vejrbestandigt. Jeg har kommandostationen i sommerhuset med skinneforbindelsestråde, der løber ud gennem væggen til sporet.
Trin 1: Arduino -kode - Kommandostation med tastatur
Min tak til tvantenna2759 for at påpege 2 fejl i kredsløbsdiagrammet, hvor Arduino -koden ikke matchede ledningerne, nu opdateret (21. oktober 2017).
Nu tilføjet 16 turnouts til Command Station. Se instruktionerne i diagrammet om valg / point -kredsløb ved hjælp af Arduino Mini Pro -modul.
Den ændrede kode inklusive valgdeltagelse er vedhæftet nedenfor.
Grundlæggende tilbehør dekoderpakke er: 0 10AAAAAA 0 1AAACDDD 0 EEEEEEEE 1 Fra analyse af pakken, der blev brugt af Lenz (Compact / Atlas) til punktkontrol, har jeg brugt følgende binære pakkeformat til byte 1 og 2: tunAddr = 1 Turnout 1a: 1000 0001 1111 1000 / Turnout 1b: 1000 0001 1111 1001 Turnout 2a: 1000 0001 1111 1010 / Turnout 2b: 1000 0001 1111 1011 Turnout 3a: 1000 0001 1111 1100 / Turnout 3b: 1000 0001 1111 1101 Turnout 4a: 1000 0001 1111 1110 / Turnout 4b: 1000 0001 1111 1111 tunAddr = 2 ----------------------------------------- ---------------------------------------------------------- ----------------- Fremdeltagelse 5a: 1000 0010 1111 1000 / fremmøde 5b: 1000 0010 1111 1001 Fremmøde 6a: 1000 0010 1111 1010 / fremmøde 6b: 1000 0010 1111 1011 Fremmøde 7a: 1000 0010 1111 1100 / Valgdeltagelse 7b: 1000 0010 1111 1101 Fremmøde 8a: 1000 0010 1111 1110 / Fremmøde 8b: 1000 0010 1111 1111 ----------------------- -------------------------------------------------- ---------------------------------- Valgdeltagelse 9a: 1000 0011 1111 1000 / valgdeltagelse 9b: 1000 0011 1111 1001 osv ………
Uddrag fra ændret kode: Tilføj 2 flere 'struct' -meddelelsesopdateringervoid amend_tun1 (struct Message & x) {x.data [0] = 0x81; // tilbehør dekoder 0x80 & adresse 1 x.data [1] = 0; }
void amend_tun2 (struct Message & x) {x.data [0] = 0x82; // tilbehør dekoder 0x80 & adresse 2 x.data [1] = 0; }
Tilføj nyt tomrum for valgdeltagelser: boolsk read_turnout () {forsinkelse (20);
boolsk ændret_t = falsk; get_key ();
hvis (key_val> = 101 && key_val <= 404 && turn == 1) {
data = 0xf8; // = binær 1111 1000
amend_tun1 (msg [1]);
}
hvis (key_val> = 505 && key_val <= 808 && turn == 1) {
data = 0xf8; // = binær 1111 1000
amend_tun2 (msg [1]);
}
hvis (key_val == 101 && turn == 1) {
hvis (tun1 == 1) {
data | = 0; // t1a
ændret_t = sandt;}
hvis (tun1 == 0) {
data | = 0x01; // t1b
ændret_t = sandt;}
}
hvis (key_val == 202 && turn == 1) {
hvis (tun2 == 1) {
data | = 0x02; // t2a
ændret_t = sandt;
}
hvis (tun2 == 0) {
data | = 0x03; // t2b
ændret_t = sandt; }
}
hvis (key_val == 303 && turn == 1) {
hvis (tun3 == 1) {
data | = 0x04; // t3a
ændret_t = sandt;
}
hvis (tun3 == 0) {
data | = 0x05; // t3b
ændret_t = sandt;}
}
hvis (key_val == 404 && turn == 1) {
hvis (tun4 == 1) {
data | = 0x06; // t4a
ændret_t = sandt;
}
hvis (tun4 == 0) {
data | = 0x07; // f4b
ændret_t = sandt;}
}
hvis (key_val == 505 && turn == 1) {
hvis (tun5 == 1) {
data | = 0; // t5a
ændret_t = sandt;
}
hvis (tun5 == 0) {
data | = 0x01; // t5b
ændret_t = sandt;}
}
etc ………………….
Trin 2: Arduino -kode - TFT -skærm
Skærmkredsløbet forbliver det samme med en ændret kode for at vise status for de 16 turnouts. Bemærk: Bibliotekskoden fylder næsten hele skitsekodens hukommelse og efterlader lidt plads til nye funktioner. Hvis nogen har en mere effektiv biblioteksfil til den TFT, der bruges her, så lad mig det vide.
Trin 3: Turnout Controller
Se instruktioner om, hvordan man laver Turnout / Point -controlleren.
Det komplette kredsløb styrer 16 punkter og 15 tilbehør såsom lys, lyde, drejeskive osv.
Anbefalede:
DIY -- Sådan laver du en edderkoprobot, der kan kontrolleres ved hjælp af smartphone ved hjælp af Arduino Uno: 6 trin
DIY || Sådan laver du en edderkoprobot, der kan styres ved hjælp af smartphone Brug af Arduino Uno: Mens du laver en edderkoprobot, kan man lære så mange ting om robotik. Ligesom at lave robotter er underholdende såvel som udfordrende. I denne video vil vi vise dig, hvordan du laver en Spider -robot, som vi kan betjene ved hjælp af vores smartphone (Androi
Kontrol ledt over hele verden ved hjælp af internet ved hjælp af Arduino: 4 trin
Kontrol ledt over hele verden ved hjælp af internet ved hjælp af Arduino: Hej, jeg er Rithik. Vi kommer til at lave en internetstyret LED ved hjælp af din telefon. Vi kommer til at bruge software som Arduino IDE og Blynk.Det er enkelt, og hvis det lykkedes dig, kan du styre så mange elektroniske komponenter, du ønskerTing We Need: Hardware:
Sådan laver du en drone ved hjælp af Arduino UNO - Lav en quadcopter ved hjælp af mikrokontroller: 8 trin (med billeder)
Sådan laver du en drone ved hjælp af Arduino UNO | Lav en Quadcopter ved hjælp af mikrokontroller: Introduktion Besøg min Youtube -kanal En Drone er en meget dyr gadget (produkt) at købe. I dette indlæg vil jeg diskutere, hvordan jeg gør det billigt ?? Og hvordan kan du lave din egen sådan til en billig pris … Nå i Indien alle materialer (motorer, ESC'er
RF 433MHZ radiostyring ved hjælp af HT12D HT12E - Lav en RF -fjernbetjening ved hjælp af HT12E & HT12D med 433mhz: 5 trin
RF 433MHZ radiostyring ved hjælp af HT12D HT12E | Oprettelse af en RF -fjernbetjening ved hjælp af HT12E & HT12D med 433mhz: I denne instruktør vil jeg vise dig, hvordan du laver en RADIO -fjernbetjening ved hjælp af 433mhz sendermodtagermodul med HT12E -kode & HT12D -dekoder IC.I denne instruktive kan du sende og modtage data ved hjælp af meget meget billige KOMPONENTER SOM: HT
Trådløs fjernbetjening ved hjælp af 2,4 GHz NRF24L01 -modul med Arduino - Nrf24l01 4 -kanals / 6 -kanals sender modtager til Quadcopter - Rc Helikopter - Rc -fly ved hjælp af Arduino: 5 trin (med billeder)
Trådløs fjernbetjening ved hjælp af 2,4 GHz NRF24L01 -modul med Arduino | Nrf24l01 4 -kanals / 6 -kanals sender modtager til Quadcopter | Rc Helikopter | Rc -fly ved hjælp af Arduino: At betjene en Rc -bil | Quadcopter | Drone | RC -fly | RC -båd, vi har altid brug for en modtager og sender, antag at vi til RC QUADCOPTER har brug for en 6 -kanals sender og modtager, og den type TX og RX er for dyr, så vi laver en på vores