Tartalomjegyzék:

Kertvonat - Arduino Wireless NMRA DCC: 4 lépés (képekkel)
Kertvonat - Arduino Wireless NMRA DCC: 4 lépés (képekkel)

Videó: Kertvonat - Arduino Wireless NMRA DCC: 4 lépés (képekkel)

Videó: Kertvonat - Arduino Wireless NMRA DCC: 4 lépés (képekkel)
Videó: #4.c - Adding Wi-Fi to DCC-EX 2024, November
Anonim
Image
Image
A rendszer tervezése
A rendszer tervezése

A DCC -vel a holt sínre vonatkozó korábbi utasítások szerint továbbfejlesztettem az ötletet egy kézi DCC parancsállomással, billentyűzettel és LCD kijelzővel. A parancsnoki állomás tartalmazza az NMRA DCC utasításokhoz szükséges összes kódolást, azonban a sínekhez való csatlakozás helyett az adatokat az RF24L01+ rádiómodul továbbítja egy teherautóba szerelt vevőegységbe vagy a helyiség alá - ahol a hely megengedi.

Természetesen a helyiségeket fel kell szerelni a motormotorokhoz megfelelő terhelhetőségű dekóderrel.

Lépés: A rendszer tervezése

A rendszer tervezése
A rendszer tervezése

Az Arduino Pro Mini a tervezés középpontjában áll. A Fritzing használata az áramkör fejlesztéséhez és a PCB -k előállításához.

Ugyanazt a NYÁK -t tudtam használni mind az adó, mind a vevő számára, és így megtakarítottam néhány költséget.

Az adó rendelkezik a billentyűzet és az LCD csatlakozóival, míg a vevő nem igényli ezeket, és a H-hidat használja a DCC kimenet ellátására a loco számára.

Egy további fejlesztés magában foglalja a csatlakozásokat egy nagyobb H-hídhoz, ha szükséges az erősebb helyekhez.

A PCF8574 törölhető, ha a hátizsákkal ellátott LCD kijelzőt használ, amely lehetővé teszi, hogy az Arduino SCA / SCL csatlakozásai csak 2 vezetékkel táplálják a kijelzőt. Részek listája: Összesen = kb. 60 £ a DCC Command Station + 1 vevő esetén = Egyenként 10,00 font. + elemek

Arduino Pro Mini. x 2 = 4,00 font

4x3 membrán billentyűzet = £ 3.00

20 x 4 LCD kijelző = 7,00 £

PCF5874 = 1,80 font

NRF24L01+. rádiómodulok x 2 = £ 5.80

PCB gyártás 10 kedvezményért (vagy Vero kártya is használható) = 24 £ vagy 4,80 £ 2off

3,3 v szabályozó = 0,17 £ (25 db -os csomag az RS Comp -tól)

5V szabályozó LM7805 = 0,30 £

H-híd SN754410ne = £ 3.00

Lloytron újratölthető 2700 maH AA elem x 12 = £ 22.00. (az alacsonyabb maH -értékű akkumulátorok olcsóbbak)

Kondenzátorok, edények, csapok, csatlakozók stb

Ház 190x110x60 mm = 8,00 £

Adó - telefon töltő / akkumulátor = £ 2.00

2. lépés: Adó

Adó
Adó

Az áramköri diagram látható, ahol az Arduino Pro Mini D2 - D8 csapjai a billentyűzethez vannak csatlakoztatva. A 100 k ohmos potenciométer az A0 analóg tűhöz van csatlakoztatva a sebesség beállításához. A PCF8574 chip SDA és SCL csapjai az A4 és A5 az Arduino Pro Mini -n, forrasztott vezetékek segítségével a Pro Mini felső rétegének csapjaihoz.

Az Arduino vázlata letölthető.

20 x 4 LCD kijelzőt használtam, amely 4 sor információt tartalmaz, soronként 20 karakterrel. A billentyűzet a következő menüt kínálja:

1 - 9 = loco cím * = irány 0 = világítás # = Funkció menü az 1 - 8 gombokhoz

Az Arduino Pro Mini vázlatának alapvető leírása: Ez a kódsor rendezi a DCC üzenetet HEX formátumban. szerkezetüzenet üzenet [MAXMSG] = {

{{0xFF, 0, 0xFF, 0, 0, 0, 0}, 3}, // üresjáratú üzenet

{{locoAdr, 0, 0, 0, 0, 0, 0}, 3} // 3 bájtos cím

};

Az egyes mozdonyok beállításainak tárolásához tömbsorozatot állítanak be az alábbiak szerint:

int la [20]; // tömb loco számok tárolására

int sa [20]; // tömb a sebességértékek tárolására

int fda [20]; // tömb tárolni dir

int fla [20]; // tömb fények tartására

int f1a [20]; // array arra fun11..

int f8a [20]; // tömb szórakoztatni8

Annak érdekében, hogy a DCC utasításait menet közben módosíthassuk:

A sebességre vonatkozó utasítások: void change_speed (strukture Message & x) {

x.adatok [0] = locoAdr;

x.adatok [1] = 0x40; // locoMsg 28 sebességi lépéssel}

A funkciókra vonatkozó utasítások:

void change_group1 (szerkezetüzenet és x) {

x.adatok [0] = locoAdr;

x.adatok [1] = 0x80; // locoMsg az első csoport utasításával 0x80}

A vázlat fő hurka:

void loop (void) {if (read_locoSpeed ()) {assemble_dcc_msg_speed ();

send_data_1 (); // vezeték nélküli adatküldés

késleltetés (10);

send_data_3 (); // adatok megjelenítése LCD kijelzőn

send_data_4 (); // adatok megjelenítése soros monitoron}

if (read_function ()) {

assemble_dcc_msg_group1 ();

send_data_1 ();

késleltetés (10);

send_data_3 (); }}

Adatok frissítése a sebesség változásakor:

boolean read_locoSpeed () Ez új loco címet, sebességet vagy iránybeállítást észlel, és ennek megfelelően módosítja a HEX "adatait". Itt 28 sebességi lépést határoztam meg, és hogy megfeleljek az NMRA S 9.2 szabványnak, a sebességadatokat egy keresési táblázatból kell megtalálni itt: "speed_step ()"

void speed_step () {kapcsoló (locoSpeed) {

1. eset: adatok | = 0x02; szünet;

2. eset: adatok | = 0x12; szünet;

3. eset: adatok | = 0x03; szünet;

………

28. eset: adatok | = 0x1F; szünet; }}

Frissítse az adatokat, amikor a funkciók megváltoznak:

logikai olvasási_funkció ()

if (fla [locoAdr] == 0) {adatok = 0x80;

} // a fejlámpa kikapcsol

if (fla [locoAdr] == 1) {

adatok = 0x90;

} // fejjelző lámpák

Minden funkcióhoz:

if (f2a [locoAdr] == 0) {adatok | = 0; }. // A 2. funkció kikapcsolva

ha (f2a [locoAdr] == 1) {

adatok | = 0x02; // A 2. függvény az} „adatok” -on az egyes függvények [H | kódjainak kombinálásával | = bit vegyesen vagy] kombinálva épül fel.

3. lépés: Vevő

Vevő
Vevő

Az áramköri diagram látható, ahol az Arduino Pro Mini 5. és 6. csapját használják a H-hídra szállított DCC jel biztosítására. A H-hídpárokat párhuzamosan kötik össze az áramkapacitás növelése érdekében. A mozdony által felvett áramtól függően előfordulhat, hogy hűtőbordát kell csatlakoztatni a 16 tűs DIP-eszközhöz, vagy nagy teherbírású H-hidat lehet külsőleg csatlakoztatni.

Az Arduino vázlata letölthető. A DCC jel 2 MHz -es órajelen alapul

void SetupTimer2 () elvégzi ezt a munkát.

Az óra tartalmazza a „rövid impulzusokat” (58us) az „1” értékhez a DCC adatokban és a „hosszú impulzusokat” (116us) a „0” értéket a DCC adatokhoz.

A ciklus üres, adatokat kap a rádióból, és ha érvényes karakterláncot talál, az adatokat DCC -adatgá alakítja át.

void loop (void) {if (radio.available ()) {bool done = false; kész = rádió.olvasás (inmsg, 1); // olvassa el a kapott adatokat

char rc = inmsg [0]; // tegye be a karaktert ebbe a tömbbe

ha (rc! = 0) {. // ha a karakter nem egyenlő nullával

inString.concat (rc); // az üzenet felépítése}

if (rc == '\ 0') {// ha a karakter '/0' az üzenet vége

Serial.println (inString); // az összeállított üzenet kinyomtatása

húr(); // a karakterlánc-üzenet felépítése a DCC utasítások lekéréséhez

} } }

4. lépés: Futtassa a Locos programot

Futtassa a Locos -t
Futtassa a Locos -t

Annak elkerülése érdekében, hogy ugyanazon a vágányon több vonaton közlekedő adatok megszakadjanak, minden alkalmazott mozdony és teherautó esetében le kell választani a kerekek és a vágány közötti érintkezőket.

Élvezze a szabadon közlekedő vonatokat a pálya körülményeitől függetlenül - micsoda különbség! Nincs gond, nincs start-stop és nincs szükség tisztításra.

Az elemek, amelyeket használtam, újratölthető LLoytron AA x 12 típusú. Töltőt készítettem kifejezetten számukra, amely egyszerre 6-ot tölt. (lásd oktatható)

Ajánlott: