Inhoudsopgave:
Video: Garden Train - Arduino Wireless NMRA DCC - Ajarnpa
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:17
Naast eerdere instructies met DCC op dode railsysteem, heb ik het idee verder ontwikkeld met een handbediend DCC-commandostation met toetsenbord en LCD-scherm. Het commandostation bevat alle codering die nodig is voor NMRA DCC-instructies, maar in plaats van verbinding te maken met de rails, worden de gegevens door radiomodule RF24L01+ overgedragen naar een ontvanger die in een vrachtwagen of onder de locomotief is gemonteerd - waar de ruimte dit toelaat.
Uiteraard moeten uw locs zijn uitgerust met een laadvermogendecoder die geschikt is voor de motormotoren.
Stap 1: Ontwerp van systeem
De Arduino Pro Mini vormt het hart van het ontwerp. Fritzing gebruiken om de schakeling te ontwikkelen en PCB's te maken.
Ik kon dezelfde print gebruiken voor zowel de zender als de ontvanger, waardoor ik wat kosten bespaarde.
De zender heeft aansluitingen voor toetsenbord en LCD terwijl de ontvanger deze niet nodig heeft en de H-brug gebruikt om de DCC uitgang voor de loc te voeden.
Een verdere ontwikkeling omvat aansluitingen voor een grotere H-brug indien nodig voor krachtigere locomotieven.
De PCF8574 kan worden verwijderd als u een LCD-scherm gebruikt dat bij de rugzak wordt geleverd, waardoor SCA / SCL-verbindingen op de Arduino het scherm kunnen voeden met slechts 2 draden. Onderdelenlijst: Totaal = ongeveer £ 60 voor DCC Command Station + 1 ontvanger Extra ontvangers kosten = £10,00 ongeveer elk. + batterijen
Arduino ProMini. x 2 = £ 4,00
4x3 membraantoetsenbord = £ 3,00
20 x 4 LCD-scherm = £ 7,00
PCF5874 = £1,80
NRF24L01+. radiomodules x 2 = £ 5,80
PCB-fabricage voor 10 korting (of Vero-bord kan worden gebruikt) = £ 24 of £ 4,80 voor 2 korting
3.3 v-regelaar = £ 0,17 (pak van 25 van RS Comp)
5v-regelaar LM7805 = £ 0,30
H-brug SN754410ne = £ 3,00
Lloytron oplaadbare 2700 maH AA-batterijen x 12 = £ 22,00. (batterijen met een lagere maH-classificatie zijn goedkoper)
Condensatoren, potten, pinnen, connectoren, enz. = £ 2,00 ongeveer
Behuizing 190x110x60 mm = £8.00
Zender - telefoonoplader / batterij = £ 2,00
Stap 2: Zender
Het schakelschema wordt getoond waar D2- tot D8-pinnen op de Arduino Pro Mini zijn aangesloten op het toetsenbord. Een 100k ohm-potentiometer is aangesloten op analoge pin A0 voor snelheidsaanpassing. De SDA- en SCL-pinnen van de PCF8574-chip zijn verbonden met pinnen A4 en A5 op de Arduino Pro Mini door middel van gesoldeerde draden aan de pinnen op de bovenste laag van de Pro Mini.
De Arduino-schets is bijgevoegd om te downloaden.
Ik heb een 20 x 4 LCD-scherm gebruikt met 4 regels informatie met 20 tekens per regel. Het toetsenbord biedt het volgende menu:
1 t/m 9 = locadres * = richting 0 = lichten # = Functiemenu voor toetsen 1 t/m 8
Basisbeschrijving van Arduino Pro Mini-schets: Deze regel van de code rangschikt het DCC-bericht in HEX-indeling. struct Bericht msg [MAXMSG] = {
{ { 0xFF, 0, 0xFF, 0, 0, 0, 0}, 3}, // inactief bericht
{ { locoAdr, 0, 0, 0, 0, 0, 0}, 3} // 3 byte adres
};
Om de instellingen voor elke loc op te slaan, wordt een reeks arrays als volgt opgezet:
int la[20];// array om locomotiefnummers vast te houden
int sa[20];// array om snelheidswaarden vast te houden
int fda[20];// array om dir vast te houden
int fla[20];// array om lichten vast te houden
int f1a[20];// array om fun1 vast te houden…..
int f8a[20];// array om fun8 vast te houden
Om de DCC-instructies onderweg te kunnen wijzigen:
Voor snelheidsinstructies: void amendement_speed (struct Message & x) {
x.data[0] = locoAdr;
x.data[1] = 0x40; // locoMsg met 28 snelheidsstappen }
Voor functie-instructies:
void amendement_group1 (struct Message & x) {
x.data[0] = locoAdr;
x.data[1] = 0x80; // locoMsg met groep één instructie 0x80 }
De hoofdlus van de schets:
void loop (void) {if (read_locoSpeed()) {assemble_dcc_msg_speed();
send_data_1(); // gegevens draadloos verzenden
vertraging(10);
send_data_3(); // gegevens weergeven op LCD-scherm
send_data_4(); // gegevens weergeven op seriële monitor}
if (read_function()) {
assemble_dcc_msg_group1();
send_data_1();
vertraging(10);
send_data_3(); } }
Gegevens bijwerken wanneer de snelheid verandert:
boolean read_locoSpeed()Dit detecteert een nieuw loco-adres, snelheid of richtingsinstelling en past de HEX 'data' dienovereenkomstig aan. Hier heb ik 28 snelheidsstappen gespecificeerd en om te voldoen aan NMRA-standaard S 9.2, moeten de snelheidsgegevens worden gevonden in een opzoektabel in 'speed_step()'
void speed_step(){ schakelaar (locoSpeed){
geval 1: gegevens |= 0x02; pauze;
geval 2: gegevens |= 0x12; pauze;
geval 3: gegevens |= 0x03; pauze;
………
geval 28: gegevens |= 0x1F; pauze; }}
Gegevens bijwerken wanneer de functies veranderen:
booleaanse read_function()
if (fla[locoAdr] == 0) { data = 0x80;
} //koplampen uit
if (fla[locoAdr] == 1) {
gegevens = 0x90;
} // koplampen aan
Voor elke functie:
if (f2a[locoAdr] == 0) { data |= 0; }. // Functie 2 uit
if (f2a[locAdr] == 1) {
gegevens |= 0x02; // Functie 2 op }'data' wordt opgebouwd door ['|=' samengestelde bitsgewijze of] de HEX-codes voor elke functie te combineren.
Stap 3: Ontvanger
Het schakelschema is weergegeven waar pinnen 5 en 6 van de Arduino Pro Mini worden gebruikt om het DCC-signaal aan de H-brug te leveren. De H-brugparen zijn parallel geschakeld om de stroomcapaciteit te vergroten. Afhankelijk van de stroom die door de loc wordt getrokken, kan het nodig zijn een koellichaam aan het 16-pins DIP-apparaat te bevestigen, of er kan een externe H-brug worden aangesloten.
De Arduino-schets is bijgevoegd om te downloaden. Het DCC-signaal bestaat uit een klok die draait op 2 MHZ
void SetupTimer2() doet dit werk.
De klok bevat 'korte pulsen' (58us) voor '1' in DCC-gegevens en 'lange pulsen' (116us) voor '0' in DCC-gegevens.
De loop void, krijgt data van de radio en als er een geldige string wordt gevonden, worden de data geconverteerd naar DCC-data.
void loop(void){ if (radio.available()){ bool done = false; gedaan = radio.lezen (inmsg, 1); // lees de ontvangen gegevens
char rc = inmsg[0]; // plaats het gelezen karakter in deze array
als (rc != 0){. // als karakter niet gelijk is aan nul
inString.concat(rc); // bouw het bericht op }
if (rc == '\0') { // if character is '/0' einde van bericht
Serial.println(inString); // print het samengestelde bericht
snaar(); // deconstrueer het stringbericht om DCC-instructies te krijgen
} } }
Stap 4: Run de locomotieven
Om te voorkomen dat gegevens worden onderbroken door het rijden met meerdere treinen op hetzelfde spoor, moet u de contacten tussen de wielen en het spoor loskoppelen voor elke gebruikte loc en vrachtwagen.
Geniet van vrij rijdende treinen, ongeacht de baanomstandigheden - wat een verschil! Geen gedoe, geen start-stop en geen schoonmaak nodig.
De batterijen die ik heb gebruikt zijn oplaadbare LLoytron AA x 12. Ik heb speciaal voor hen een oplader gebouwd die 6 tegelijk oplaadt. (zie instructable)
Aanbevolen:
KS-Garden:Overzicht: 9 stappen
KS-Garden:Overzicht: KS-Garden kan worden gebruikt om uw tuin/kasplanten in de achtertuin of uw binnenkweekbakplanten te irrigeren/ventileren/verlichting te geven (Modulair ontwerp) Het KS-Garden systeem bestaat voornamelijk uit de volgende modules: systeemdoos - Relais- en voedingsdoos
LED Light Up Garden: 3 stappen
LED Light Up Garden: dit is een geweldige upgrade om je tuin niet alleen overdag maar ook 's nachts te laten schijnen
Smart IoT Garden: 10 stappen (met afbeeldingen)
Smart IoT Garden: Als je net als ik bent, hou je van verse groenten en fruit op je bord, maar heb je niet genoeg tijd om een fatsoenlijke tuin te onderhouden. Deze instructable laat je zien hoe je een slimme IoT-tuin bouwt (ik noem het: Green Guard) die je pl
DIY Rotary Garden (TfCD): 12 stappen (met afbeeldingen)
DIY Rotary Garden (TfCD): Hallo! We hebben een kleine tutorial samengesteld over hoe je je eigen kleine versie van een roterende tuin kunt maken, die naar onze mening het tuinieren van de toekomst zou kunnen vertegenwoordigen. Met een verminderde hoeveelheid elektriciteit en ruimte, is deze technologie geschikt voor snelle
Hoe maak je een Solar Garden Light: 3 stappen (met afbeeldingen)
Hoe maak je een Solar Garden Light: Hallo jongens, dit is mijn eerste doe-het-zelf-project in instructables,,, ik hoop dat je het leuk vindt