Innholdsfortegnelse:
Video: Garden Train - Arduino Wireless NMRA DCC: 4 trinn (med bilder)
2024 Forfatter: John Day | [email protected]. Sist endret: 2024-01-30 11:23
I tillegg til tidligere instruksjoner med DCC på dead rail -system, har jeg utviklet ideen videre med en håndholdt DCC Command Station med tastatur og LCD -skjerm. Kommandostasjonen inneholder all kodingen som kreves for NMRA DCC -instruksjoner, men i stedet for å koble til skinnene, overføres dataene med radiomodul RF24L01+ til en mottaker montert i en lastebil eller under lokomotivet - hvor som helst rom tillater det.
Selvfølgelig må lokoene dine være utstyrt med en dekoder for lastekapasitet som passer motoren.
Trinn 1: Design av systemet
Arduino Pro Mini er kjernen i designet. Bruke Fritzing til å utvikle kretsen og til å produsere PCB.
Jeg klarte å bruke samme PCB for både sender og mottaker og sparte dermed noen kostnader.
Senderen har tilkoblinger for tastatur og LCD mens mottakeren ikke krever disse og bruker H-broen til å forsyne DCC-utgangen for loket.
En videre utvikling inkluderer tilkoblinger for en større H-bro hvis det er nødvendig for kraftigere lokomotiv.
PCF8574 kan slettes hvis du bruker en LCD -skjerm som følger med ryggsekken, slik at SCA / SCL -tilkoblinger på Arduino kan mate skjermen med bare 2 ledninger. Deleliste: Total = ca. £ 60 for DCC Command Station + 1 mottaker Ekstra mottakere koster = £ 10,00 omtrent hver. + batterier
Arduino Pro Mini. x 2 = £ 4,00
4x3 membran tastatur = £ 3,00
20 x 4 LCD -skjerm = £ 7,00
PCF5874 = £ 1,80
NRF24L01+. radiomoduler x 2 = £ 5,80
PCB -produksjon for 10 av (eller Vero -brett kan brukes) = £ 24 eller £ 4,80 for 2off
3.3 v Regulator = £ 0.17 (pakke med 25 fra RS Comp)
5v regulator LM7805 = £ 0,30
H-bridge SN754410ne = £ 3,00
Lloytron ladbare 2700 maH AA-batterier x 12 = £ 22,00. (lavere Mah -batterier er billigere)
Kondensatorer, gryter, pinner, kontakter, etc = £ 2,00 ca.
Kapsling 190x110x60 mm = £ 8,00
Sender - telefonlader / batteri = £ 2,00
Trinn 2: Sender
Kretsdiagrammet er vist der D2 til D8 -pinner på Arduino Pro Mini er koblet til tastaturet. Et 100k ohm potensiometer er koblet til analog pin A0 for hastighetsjustering. SDA- og SCL -pinnene fra PCF8574 -brikken er koblet til pinnene A4 og A5 på Arduino Pro Mini ved hjelp av loddede ledninger til pinnene på det øverste laget av Pro Mini.
Arduino -skissen er vedlagt for nedlasting.
Jeg har brukt en 20 x 4 LCD -skjerm som tillater 4 linjer med informasjon med 20 tegn per linje. Tastaturet inneholder følgende meny:
1 til 9 = lokoadresse * = retning 0 = lys # = funksjonsmeny for tastene 1 til 8
Grunnleggende beskrivelse av Arduino Pro Mini -skisse: Denne linjen i koden ordner DCC -meldingen i HEX -format. struct Message msg [MAXMSG] = {
{{0xFF, 0, 0xFF, 0, 0, 0, 0}, 3}, // inaktiv melding
{{locoAdr, 0, 0, 0, 0, 0, 0}, 3} // 3 byte -adresse
};
For å lagre innstillingene for hvert loko, er en serie matriser satt opp som følger:
int la [20]; // array for å holde lokonumre
int sa [20]; // array for å holde hastighetsverdier
int fda [20]; // array for å holde dir
int fla [20]; // array for å holde lys
int f1a [20]; // array for å holde moro1…..
int f8a [20]; // array for å holde fun8
Slik gjør du det mulig å endre DCC -instruksjonene mens vi går:
For hastighetsinstruksjoner: void amend_speed (struct Message & x) {
x.data [0] = locoAdr;
x.data [1] = 0x40; // locoMsg med 28 hastighetstrinn}
For funksjonsinstruksjoner:
ugyldig amend_group1 (struct Message & x) {
x.data [0] = locoAdr;
x.data [1] = 0x80; // locoMsg med gruppe en instruksjon 0x80}
Skissens hovedløkke:
void loop (void) {if (read_locoSpeed ()) {assemble_dcc_msg_speed ();
send_data_1 (); // sende data med trådløs
forsinkelse (10);
send_data_3 (); // vise data på LCD -skjerm
send_data_4 (); // vise data på seriell skjerm}
hvis (read_function ()) {
assemble_dcc_msg_group1 ();
send_data_1 ();
forsinkelse (10);
send_data_3 (); }}
Oppdater data når hastigheten endres:
boolsk read_locoSpeed () Dette oppdager en ny loco -adresse, hastighet eller retningsinnstilling og endrer HEX 'data' tilsvarende. Her har jeg angitt 28 hastighetstrinn og for å oppfylle NMRA standard S 9.2 må hastighetsdataene bli funnet fra en oppslagstabell i 'speed_step ()'
void speed_step () {switch (locoSpeed) {
tilfelle 1: data | = 0x02; gå i stykker;
tilfelle 2: data | = 0x12; gå i stykker;
sak 3: data | = 0x03; gå i stykker;
………
sak 28: data | = 0x1F; gå i stykker; }}
Oppdater data når funksjonene endres:
boolsk read_function ()
hvis (fla [locoAdr] == 0) {data = 0x80;
} // hodelyktene er slått av
hvis (fla [locoAdr] == 1) {
data = 0x90;
} // frontlys lyser
For hver funksjon:
hvis (f2a [locoAdr] == 0) {data | = 0; }. // Funksjon 2 av
hvis (f2a [locoAdr] == 1) {
data | = 0x02; // Funksjon 2 på} 'data' bygges opp ved å kombinere ['| =' sammensatt bitvis eller] HEX -kodene for hver funksjon.
Trinn 3: Mottaker
Kretsdiagrammet er vist der pinne 5 og 6 på Arduino Pro Mini brukes til å gi DCC-signalet som leveres til H-broen. H-broparene kobles parallelt for å øke strømkapasiteten. Avhengig av strømmen som lokket trekker, kan det være nødvendig å koble en kjøleribbe til 16-pins DIP-enheten, eller en kraftig H-bro kan kobles eksternt.
Arduino -skissen er vedlagt for nedlasting. DCC -signalet består av en klokke som går på 2 MHz
void SetupTimer2 () gjør denne jobben.
Klokken inkluderer 'korte pulser' (58us) for '1' i DCC -data og 'lange pulser' (116us) for '0' i DCC -data.
Sløyfen er tom, får data fra radioen, og hvis en gyldig streng blir funnet, blir dataene konvertert til DCC -data.
void loop (void) {if (radio.available ()) {bool done = false; ferdig = radio.read (inmsg, 1); // les de mottatte dataene
røye rc = inmsg [0]; // sette tegn som er lest inn i denne matrisen
hvis (rc! = 0) {. // hvis tegnet ikke er lik null
inString.concat (rc); // bygge opp meldingen}
if (rc == '\ 0') {// hvis tegnet er '/0' slutten av meldingen
Serial.println (inString); // Skriv ut den samlede meldingen
string (); // avkonstruer strengmeldingen for å få DCC-instruksjoner
} } }
Trinn 4: Kjør Locos
For å unngå avbrudd i data fra å kjøre flere tog på samme spor, må du koble fra kontaktene mellom hjulene og sporet for hver loko og lastebil som brukes.
Nyt gratis løpende tog uansett baneforhold - hvilken forskjell! Ingen problemer, ingen start-stopp og ingen rengjøring nødvendig.
Batteriene jeg brukte er gjenoppladbare LLoytron AA x 12. Jeg har laget en lader spesielt for dem som lader 6 om gangen. (se instruksjonsboken)
Anbefalt:
Switch-Adapt Toys: a Steam Train Toy Made Accessible !: 7 trinn (med bilder)
Switch-Adapt Toys: a Steam Train Toy Made Accessible !: Leketilpasning åpner for nye veier og tilpassede løsninger for å la barn med begrensede motoriske evner eller utviklingshemming samhandle med leker uavhengig av hverandre. I mange tilfeller klarer ikke barna som trenger de tilpassede lekene
Steampunk Train: 5 trinn (med bilder)
Steampunk Train: Jeg var så heldig å motta en brukt rullestolbase fra en venn. Jeg trengte å bytte begge batteriene for å få det til å fungere, men det var en liten pris å betale for en så allsidig propellbyggingsplattform. Jeg bestemte meg for
Tre Bluetooth -fjernkontroll for Lego Duplo Train: 3 trinn (med bilder)
Tre Bluetooth -fjernkontroll for Lego Duplo Train: Barna mine elsket dette lille Lego Duplo -toget, spesielt min yngste som sliter med å kommunisere seg selv med ord, så jeg ønsket å bygge henne noe som ville hjelpe henne å leke med toget uavhengig av voksne eller telefoner/nettbrett. Noe som
Train Crossing Monitor System: 5 trinn (med bilder)
Train Crossing Monitor System: Denne instruksen vil lære deg hvordan du bruker MatLab til å kode en Arduino for å kontrollere en del av et jernbanesystem
Train Seat System: 4 trinn (med bilder)
Train Seat System: I dag har vi laget et system som kan implementeres i togseter. Vi måtte finne en irritasjon og lage en løsning for det. Vi bestemte oss for at vi skulle lage et system som forteller deg om et sete er tilgjengelig i togvognen du er i. Ingenting er nødvendig