Innehållsförteckning:
- Steg 1: Arduino -kod - Kommandostation med knappsats
- Steg 2: Arduino -kod - TFT -skärm
- Steg 3: Turnout Controller
Video: Modelljärnväg - DCC -kommandostation med Arduino :: 3 steg
2024 Författare: John Day | [email protected]. Senast ändrad: 2024-01-30 12:45
Uppdaterad augusti 2018-se nya Instructable:
Uppdatering 28 april 2016: Nu 16 valmöjligheter / poängkontrollmöjligheter till Command Station. Växlarna T1 - T8 är tillgängliga via "B" -knappen Turnouts T9 - T16 är tillgängliga via "C"
Uppdatering 10 mars 2016:
Nu har 8 funktioner för valdeltagning / poängkontroll tillkommit till Command Station. Arduino -koden har uppdaterats i enlighet därmed med hjälp av NMRA -standardpaketet för växlingar (också baserat på en studie av Lenz / Atlas Compact -datapaket för valdeltagningskontroll).
Växlarna T1 - T8 är tillgängliga via knappen 'B'
Se instruktioner om datapaketmottagarkretsen som används och Arduino -kod krävs.
Uppdatering 18 januari 2016:
Jag har lagt till ett strömavkänningsmotstånd (1k5 ohm) och kondensator (10 uf) till kretsen och ändrat Arduino -koden för att stänga av strömmen när en toppström på> 3200 mA detekteras. H-bridge-specifikationen anger en utmatningsavkänningsström på 377 uA per 1 Amp i lasten.
1,5 k ohm -motståndet ger 0,565 volt per ampere på den analoga stiftet 6. Med 1023 steg på den analoga ingången ger detta 0,565 * 1023 /5 = 116 per ampereffekt.
A = 100 * (analogRead (AN_CURRENT)) / 116; A = A * 10; (för att ge resultat i milliampere)
Lastströmmen i milliampar visas på TFT
Det fullständiga 4x4-tangentbordet innehåller F1 till F8-funktioner och ytterligare 10 locos (1-19) genom "#" -tangenten (för att lägga till 10 till de numeriska tangenterna från plats 10).
Arduino -koden innehåller NMRA -standarden för instruktionsbyte.
Se länk
www.nmra.org/sites/default/files/s-9.2.1_20…
(sida 6 är särskilt relevant)
Paketen är ordnade efter antal hastighetssteg, lång / kort adress och funktionsgruppsinstruktioner.
Alla instruktionsbyte föregås av en ingress med "1" bitar 11111111 (eller inaktiv paket) följt av;
t.ex. En 4 bytes adress 0 00000011 0 00111111 0 10000011 0 10111111
motsvarar loco 3, 128 hastighetssteg, riktning framåt och steg 3 (slutbyten är felkontrollen XOR)
t.ex. en 3 -bytes -adress 0 00000011 0 10010000 0 10110011
motsvarar loco 3, funktionsgrupp 1, FL -lampor tänd plus XOR -byte (en '0' -bit separerar varje byte)
Se bifogad demonstrationsvideo för loco 12.
Funktionerna F1 - F8 är tillgängliga via "A" -tangenten, DIR ("*" -knappen = riktning) FL ("0" -knappen = lampor) och knappen "#" ger platserna 10 till 19 på det numeriska tangentbordet. D -tangenten används nu för ett nödstopp.
Tack till olika leverantörer på webben för källor till DCC -information och Arduino -kod.
I synnerhet inspirerades detta projekt av Michael Blank och hans 'Simple DCC - a command station'
www.oscale.net/en/simpledcc
4x4 Matrix Array 16 Key Membrane Switch Keypad (ebay) £ 1,75
2,2 tum 240x320 seriell SPI TFT LCD -displaymodul (ebay) £ 7,19
UNIVERSAL 12V 5A 60W STRÖMFÖRSÖRJNING AC ADAPTER (ebay) £ 6,49
Nano V3.0 För Arduino med CH340G 5V 16M kompatibel ATmega328P (ebay) 2 x £ 3,30 = £ 6,60
Motor Driver Module LMD18200T för Arduino R3 (ebay) £ 6,99
Kontaktdon, tråd, verokort, potentiometer ca £ 3,50
Totalt £ 32,52
Den grundläggande kommandostationen utan tft -skärm och 1 x nano skulle kosta £ 22,03
[Obs: Det är möjligt att lägga till ett minneskort i TFT -displayen och ändra koden för att visa bilder av utvalda motorer, även om bibliotekskoderna måste redigeras ned för att skapa mer minne för skissen. Nuvarande skissstorlek är maximalt för TFT Arduino Nano]
Den ursprungliga Arduino -koden av Michael Blank var för en motor, endast framåt / bakåt utan funktionskontroll, ingen knappsats och ingen display.
Jag har ändrat koden för att inkludera 1 - 19 motorer, en skärm, riktning, lampor, 8 funktioner, nödstopp och automatisk strömgräns.
LMD18200T-bron kan bära upp till 3 ampere vilket gör den lämplig för alla vågor inklusive G-skala (trädgårdståg). Elnätet och elektroniken är endast lämpliga för inomhusbruk om du inte kan göra det väderbeständigt. Jag har kommandostationen i sommarhuset med rälsanslutningstrådar som rinner ut genom väggen till spåret.
Steg 1: Arduino -kod - Kommandostation med knappsats
Mitt tack till tvantenna2759 för att påpeka 2 fel i kretsschemat där Arduino -koden inte matchade ledningarna, nu uppdaterad (21 oktober 2017).
Nu lagt till 16 växlingar till Command Station. Se instruktionerna i växlings- / poängkretsschemat med Arduino Mini Pro -modulen.
Den modifierade koden inklusive valdeltagningskontroll bifogas nedan.
Grundläggande tillbehörsdekoderpaket är: 0 10AAAAAA 0 1AAACDDD 0 EEEEEEEE 1 Från analys av paketet som används av Lenz (Compact / Atlas) för punktkontroll har jag använt följande binära paketformat för byte 1 och 2: tunAddr = 1 Turnout 1a: 1000 0001 1111 1000 / Utbyte 1b: 1000 0001 1111 1001 Utbyte 2a: 1000 0001 1111 1010 / Utbyte 2b: 1000 0001 1111 1011 Utbyte 3a: 1000 0001 1111 1100 / Utbyte 3b: 1000 0001 1111 1101 Utbyte 4a: 1000 0001 1111 1110 / Utbyte 4b: 1000 0001 1111 1111 tunAddr = 2 ----------------------------------------- ---------------------------------------------------------- ----------------- Valdeltagande 5a: 1000 0010 1111 1000 / Valdeltagande 5b: 1000 0010 1111 1001 Valdeltag 6a: 1000 0010 1111 1010 / Valdeltagande 6b: 1000 0010 1111 1011 Valdeltagande 7a: 1000 0010 1111 1100 / Valdeltagande 7b: 1000 0010 1111 1101 Valdeltagande 8a: 1000 0010 1111 1110 / Valdeltagande 8b: 1000 0010 1111 1111 ----------------------- ---------------------------------------------------------- ---------------------------------- Valdeltagande 9a: 1000 0011 1111 1000 / Valdeltagande 9b: 1000 0011 1111 1001 etc ………
Extrahera från modifierad kod: Lägg till ytterligare två "struct" -meddelandeuppdateringar ogiltig amend_tun1 (struct Message & x) {x.data [0] = 0x81; // tillbehörsavkodare 0x80 & adress 1 x.data [1] = 0; }
void amend_tun2 (struct Message & x) {x.data [0] = 0x82; // tillbehörsavkodare 0x80 & adress 2 x.data [1] = 0; }
Lägg till nytt tomrum för turnouts: boolean read_turnout () {delay (20);
booleskt ändrat_t = falskt; get_key ();
if (key_val> = 101 && key_val <= 404 && turn == 1) {
data = 0xf8; // = binär 1111 1000
amend_tun1 (msg [1]);
}
if (key_val> = 505 && key_val <= 808 && turn == 1) {
data = 0xf8; // = binär 1111 1000
edit_tun2 (msg [1]);
}
if (key_val == 101 && turn == 1) {
om (tun1 == 1) {
data | = 0; // t1a
ändrad_t = sant;}
om (tun1 == 0) {
data | = 0x01; // t1b
ändrad_t = sant;}
}
if (key_val == 202 && turn == 1) {
om (tun2 == 1) {
data | = 0x02; // t2a
ändrad_t = sant;
}
om (tun2 == 0) {
data | = 0x03; // t2b
ändrad_t = sant; }
}
if (key_val == 303 && turn == 1) {
om (tun3 == 1) {
data | = 0x04; // t3a
ändrad_t = sant;
}
om (tun3 == 0) {
data | = 0x05; // t3b
ändrad_t = sant;}
}
if (key_val == 404 && turn == 1) {
om (tun4 == 1) {
data | = 0x06; // t4a
ändrad_t = sant;
}
om (tun4 == 0) {
data | = 0x07; // f4b
ändrad_t = sant;}
}
if (key_val == 505 && turn == 1) {
om (tun5 == 1) {
data | = 0; // t5a
ändrad_t = sant;
}
om (tun5 == 0) {
data | = 0x01; // t5b
ändrad_t = sant;}
}
etc ………………….
Steg 2: Arduino -kod - TFT -skärm
Displaykretsen förblir densamma med en modifierad kod för att visa status för de 16 växlarna. Obs! Bibliotekskoden tar upp nästan allt skisskodminne och lämnar lite utrymme för nya funktioner. Om någon har en mer effektiv biblioteksfil för TFT som används här, vänligen meddela mig.
Steg 3: Turnout Controller
Se instruktioner om hur du gör Turnout / Points -kontrollen.
Hela kretsen styr 16 punkter och 15 tillbehör som lampor, ljud, skivspelare etc.
Rekommenderad:
Akustisk levitation med Arduino Uno Steg-för-steg (8-steg): 8 steg
Akustisk levitation med Arduino Uno Steg-för-steg (8-steg): ultraljudsgivare L298N Dc kvinnlig adapter strömförsörjning med en manlig DC-pin Arduino UNOBreadboardHur det fungerar: Först laddar du upp kod till Arduino Uno (det är en mikrokontroller utrustad med digital och analoga portar för att konvertera kod (C ++)
Sonografi med kropps-ultraljud med Arduino: 3 steg (med bilder)
Body-ultrasound Sonography With Arduino: Hej! Min hobby och passion är att förverkliga fysikprojekt. Ett av mina sista arbeten handlar om ultraljudssonografi. Som alltid försökte jag göra det så enkelt som möjligt med delar du kan få på ebay eller aliexpress. Så låt oss ta en titt på hur långt jag kan gå med
RC -spårad robot med Arduino - Steg för steg: 3 steg
RC -spårad robot med Arduino - Steg för steg: Hej killar, jag är tillbaka med ett annat häftigt robotchassi från BangGood. Hoppas att du har gått igenom våra tidigare projekt - Spinel Crux V1 - Gesture Controlled Robot, Spinel Crux L2 - Arduino Pick and Place Robot med Robotic Arms och The Badland Braw
Trådlös fjärrkontroll med 2,4 GHz NRF24L01 -modul med Arduino - Nrf24l01 4 -kanals / 6 -kanals sändarmottagare för Quadcopter - Rc helikopter - RC -plan med Arduino: 5 steg (med bilder)
Trådlös fjärrkontroll med 2,4 GHz NRF24L01 -modul med Arduino | Nrf24l01 4 -kanals / 6 -kanals sändarmottagare för Quadcopter | Rc helikopter | Rc -plan med Arduino: Att driva en Rc -bil | Quadcopter | Drone | RC -plan | RC -båt, vi behöver alltid en mottagare och sändare, antag att för RC QUADCOPTER behöver vi en 6 -kanals sändare och mottagare och den typen av TX och RX är för dyr, så vi kommer att göra en på vår
Automatiserad Point to Point -modelljärnväg med Yard Siding: 10 steg (med bilder)
Automatiserad järnvägsmodell med järnvägssida: Arduino -mikrokontroller öppnar stora möjligheter för modelljärnvägsspår, särskilt när det gäller automation. Detta projekt är ett exempel på en sådan applikation. Det är en fortsättning på ett av de tidigare projekten. Detta projekt består av en poäng