विषयसूची:

मॉडल रेलवे - अरुडिनो का उपयोग कर डीसीसी कमांड स्टेशन :: 3 कदम
मॉडल रेलवे - अरुडिनो का उपयोग कर डीसीसी कमांड स्टेशन :: 3 कदम

वीडियो: मॉडल रेलवे - अरुडिनो का उपयोग कर डीसीसी कमांड स्टेशन :: 3 कदम

वीडियो: मॉडल रेलवे - अरुडिनो का उपयोग कर डीसीसी कमांड स्टेशन :: 3 कदम
वीडियो: Model Railway Computer Control using Digital DC (DDC) Demo | oorail.com 2024, जुलाई
Anonim
Image
Image
Arduino कोड - कीपैड के साथ कमांड स्टेशन
Arduino कोड - कीपैड के साथ कमांड स्टेशन

अपडेट किया गया अगस्त 2018 - नया निर्देश देखें:

अद्यतन २८ अप्रैल २०१६: अब १६ मतदान/अंक नियंत्रण क्षमता कमांड स्टेशन के लिए। टर्नआउट T1 - T8 'B' कुंजी के माध्यम से उपलब्ध हैं टर्नआउट T9 - T16 'C' कुंजी के माध्यम से उपलब्ध हैं

10 मार्च 2016 को अपडेट करें:

अब कमांड स्टेशन में 8 टर्नआउट/पॉइंट कंट्रोल क्षमता जोड़ी गई है। टर्नआउट के लिए NMRA मानक पैकेट का उपयोग करके Arduino कोड को तदनुसार अपडेट किया गया है (यह भी टर्नआउट नियंत्रण के लिए लेनज़ / एटलस कॉम्पैक्ट डेटा पैकेट के अध्ययन पर आधारित है)।

मतदान T1 - T8 'B' कुंजी के माध्यम से उपलब्ध हैं

उपयोग किए गए डेटा पैकेट रिसीवर सर्किट और आवश्यक Arduino कोड पर निर्देशयोग्य देखें।

अद्यतन १८ जनवरी २०१६:

मैंने सर्किट में एक करंट सेंस रेसिस्टर (1k5 ओम) और कैपेसिटर (10 uf) जोड़ा है और 3200 mAmps के पीक करंट का पता चलने पर बिजली काटने के लिए Arduino कोड में संशोधन किया है। एच-ब्रिज स्पेक लोड में 377 यूए प्रति 1 एएमपी के आउटपुट सेंस को बताता है।

1.5 k ओम रेसिस्टर एनालॉग पिन 6 पर 0.565 वोल्ट प्रति Amp डिलीवर करेगा। एनालॉग इनपुट पर 1023 चरणों के साथ, यह 0.565 * 1023/5 = 116 प्रति Amp लोड देता है।

ए = १०० * (एनालॉगरीड(AN_CURRENT)) / ११६;ए = ए * १०; (मिलियंप में परिणाम देने के लिए)

मिलीएम्प्स में लोड करंट TFT. पर प्रदर्शित होता है

पूर्ण 4x4 कीबोर्ड में '#' कुंजी के माध्यम से F1 से F8 फ़ंक्शन और अन्य 10 लोको (1-19) शामिल हैं (लोको 10 से शुरू होने वाली संख्यात्मक कुंजियों में 10 जोड़ने के लिए)।

Arduino कोड में निर्देश बाइट्स के लिए NMRA मानक शामिल है।

लिंक देखें

www.nmra.org/sites/default/files/s-9.2.1_20…

(पृष्ठ ६ विशेष रूप से प्रासंगिक है)

पैकेट को गति चरणों की संख्या, लंबे / छोटे पते और फंक्शन ग्रुप निर्देशों के अनुसार व्यवस्थित किया जाता है।

सभी निर्देश बाइट्स '1' बिट्स 11111111 (या निष्क्रिय पैकेट) की प्रस्तावना से पहले होते हैं;

जैसे एक 4 बाइट पता 0 00000011 0 00111111 0 10000011 0 10111111

लोको 3, 128 स्पीड स्टेप्स, फॉरवर्ड डायरेक्शन और स्पीड स्टेप 3 के बराबर है (एंड बाइट एरर चेक XOR है)

उदाहरण के लिए एक 3 बाइट पता 0 00000011 0 10010000 0 10110011

लोको 3, फंक्शन ग्रुप 1, FL लाइट्स प्लस XOR बाइट के बराबर (एक '0' बिट प्रत्येक बाइट को अलग करता है)

लोको 12 के लिए संलग्न प्रदर्शन वीडियो देखें।

F1 - F8 'ए' कुंजी, डीआईआर ('*' कुंजी = दिशा) FL ('0' कुंजी = रोशनी) के माध्यम से उपलब्ध हैं और कुंजी '#' संख्यात्मक कीपैड पर 10 से 19 इंजन देती है। 'डी' कुंजी का उपयोग अब 'आपातकालीन स्टॉप' के लिए किया जाता है।

DCC जानकारी और Arduino कोड के स्रोतों के लिए वेब पर विभिन्न प्रदाताओं को धन्यवाद।

विशेष रूप से, यह परियोजना माइकल ब्लैंक और उनके 'सिंपल डीसीसी - एक कमांड स्टेशन' से प्रेरित थी।

www.oscale.net/en/simpledcc

4x4 मैट्रिक्स ऐरे 16 कुंजी झिल्ली स्विच कीपैड (ईबे) £1.75

2.2 इंच 240x320 सीरियल एसपीआई टीएफटी एलसीडी डिस्प्ले मॉड्यूल (ईबे) £7.19

यूनिवर्सल १२वी ५ए ६०डब्ल्यू बिजली आपूर्ति एसी एडाप्टर (ईबे) £६.४९

नैनो V3.0 Arduino के लिए CH340G 5V 16M संगत ATmega328P (ebay) 2 x £3.30 = £6.60 के साथ

Arduino R3 (ebay) के लिए मोटर चालक मॉड्यूल LMD18200T £6.99

कनेक्टर, तार, वेरो बोर्ड, पोटेंशियोमीटर लगभग £३.५०

कुल £32.52

tft स्क्रीन और 1 x नैनो के बिना मूल कमांड स्टेशन £22.03. होगा

[नोट: टीएफटी डिस्प्ले में मेमोरी कार्ड जोड़ना और चयनित इंजनों की छवियों को प्रदर्शित करने के लिए कोड में संशोधन करना संभव है, हालांकि स्केच के लिए अधिक मेमोरी बनाने के लिए लाइब्रेरी कोड को संपादित किया जाना चाहिए। TFT Arduino Nano के लिए वर्तमान स्केच आकार अधिकतम है]

माइकल ब्लैंक द्वारा मूल Arduino कोड एक इंजन के लिए था, केवल बिना किसी फ़ंक्शन नियंत्रण, कोई कीपैड और कोई डिस्प्ले के साथ आगे/रिवर्स।

मैंने 1 - 19 इंजन, एक डिस्प्ले स्क्रीन, दिशा, रोशनी, 8 फ़ंक्शन, आपातकालीन स्टॉप और ऑटो करंट लिमिट को शामिल करने के लिए कोड को संशोधित किया है।

LMD18200T ब्रिज 3 एम्पीयर तक ले जा सकता है जो इसे जी-स्केल (गार्डन ट्रेन) सहित सभी पैमानों के लिए उपयुक्त बनाता है। मुख्य बिजली की आपूर्ति और इलेक्ट्रॉनिक्स केवल इनडोर उपयोग के लिए उपयुक्त हैं, जब तक कि आप इसे सभी मौसमों के अनुकूल नहीं बना सकते। मेरे पास समर हाउस में कमांड स्टेशन है जिसमें रेल कनेक्टिंग तार दीवार से होकर ट्रैक तक जा रहे हैं।

चरण 1: Arduino कोड - कीपैड के साथ कमांड स्टेशन

सर्किट आरेख में 2 त्रुटियों को इंगित करने के लिए tvantenna2759 को मेरा धन्यवाद जहां Arduino कोड वायरिंग से मेल नहीं खाता, अब अपडेट किया गया (21 अक्टूबर 2017)।

अब कमांड स्टेशन में 16 मतदान जुड़ गए हैं। Arduino Mini Pro मॉड्यूल का उपयोग करके टर्नआउट / पॉइंट सर्किट आरेख पर निर्देशयोग्य देखें।

मतदान नियंत्रण सहित संशोधित कोड नीचे संलग्न है।

बेसिक एक्सेसरी डिकोडर पैकेट है: 0 10AAAAAA 0 1AAACDDD 0 EEEEEEEE 1 अंक नियंत्रण के लिए लेनज़ (कॉम्पैक्ट / एटलस) द्वारा उपयोग किए गए पैकेट का विश्लेषण करने से, मैंने बाइट्स 1 और 2 के लिए निम्नलिखित बाइनरी पैकेट प्रारूप का उपयोग किया है: tunAddr = 1 टर्नआउट 1a: 1000 0001 1111 1000 / मतदान 1b: 1000 0001 1111 1001 मतदान 2a: 1000 0001 1111 1010 / मतदान 2b: 1000 0001 1111 1011 मतदान 3a: 1000 0001 1111 1100 / मतदान 3b: 1000 0001 1111 1101 मतदान 4a: 1000 0001 1111 1110 / मतदान ४बी: १००० ०००१ ११११ ११११ ट्यूनअडर = २ ----------------------------------------- -------------------------------------------------- ----------------- मतदान 5ए: 1000 0010 1111 1000 / मतदान 5बी: 1000 0010 1111 1001 मतदान 6ए: 1000 0010 1111 1010 / मतदान 6बी: 1000 0010 1111 1011 मतदान 7ए: 1000 0010 1111 1100 / मतदान 7 बी: 1000 0010 1111 1101 मतदान 8 ए: 1000 0010 1111 1110 / मतदान 8 बी: 1000 0010 1111 1111 ------------------------ -------------------------------------------------- ---------------------------------- मतदान 9ए: 1000 0011 1111 1000 / मतदान 9बी: 1000 0011 1111 1001 आदि ………

संशोधित कोड से निकालें: 2 और 'स्ट्रक्चर' संदेश अपडेट जोड़ें amend_tun1 (स्ट्रक्चर संदेश और x) {x.data [0] = 0x81; // एक्सेसरी डिकोडर 0x80 और पता 1 x.data[1] = 0; }

शून्य संशोधन_टुन2 (संरचना संदेश और x) { x.data[0] = 0x82; // एक्सेसरी डिकोडर 0x80 और पता 2 x.data[1] = 0; }

मतदान के लिए नया शून्य जोड़ें: बूलियन रीड_टर्नआउट () {देरी (20);

बूलियन चेंज_टी = झूठा; चाबी देना();

अगर (key_val >= १०१ && key_val <= ४०४ && बारी == १){

डेटा = 0xf8; // = बाइनरी 1111 1000

संशोधन_टुन1 (संदेश [1]);

}

अगर (key_val >= ५०५ && key_val <= ८०८ && बारी == १){

डेटा = 0xf8; // = बाइनरी 1111 1000

संशोधन_टुन2 (संदेश [1]);

}

अगर (key_val == 101 && बारी == 1){

अगर (ट्यून 1 == 1) {

डेटा |= 0; // t1a

change_t = सच;}

अगर (ट्यून 1 == 0) {

डेटा |= 0x01; // t1b

change_t = सच;}

}

अगर (key_val == 202 && बारी == 1){

अगर (ट्यून २ == १) {

डेटा |= 0x02; // t2a

बदला_टी = सच;

}

अगर (ट्यून 2 == 0) {

डेटा |= 0x03; // t2b

बदला_टी = सच; }

}

अगर (key_val == ३०३ && बारी == १){

अगर (ट्यून ३ == १) {

डेटा |= 0x04; // t3a

बदला_टी = सच;

}

अगर (ट्यून 3 == 0) {

डेटा |= 0x05; // t3b

change_t = सच;}

}

अगर (key_val == ४०४ && बारी == १){

अगर (ट्यून 4 == 1) {

डेटा |= 0x06; // t4a

बदला_टी = सच;

}

अगर (ट्यून 4 == 0) {

डेटा |= 0x07; // f4b

change_t = सच;}

}

अगर (key_val == 505 && बारी == 1){

अगर (ट्यून 5 == 1) {

डेटा |= 0; // t5a

बदला_टी = सच;

}

अगर (ट्यून 5 == 0) {

डेटा |= 0x01; // t5b

change_t = सच;}

}

आदि …………………।

चरण 2: Arduino कोड - TFT प्रदर्शन

Arduino कोड - TFT डिस्प्ले
Arduino कोड - TFT डिस्प्ले
Arduino कोड - TFT डिस्प्ले
Arduino कोड - TFT डिस्प्ले
Arduino कोड - TFT डिस्प्ले
Arduino कोड - TFT डिस्प्ले
Arduino कोड - TFT डिस्प्ले
Arduino कोड - TFT डिस्प्ले

16 टर्नआउट की स्थिति दिखाने के लिए संशोधित कोड के साथ डिस्प्ले सर्किट वही रहता है। नोट: लाइब्रेरी कोड नई सुविधाओं के लिए बहुत कम जगह छोड़कर लगभग सभी स्केच कोड मेमोरी लेता है। अगर किसी के पास यहां इस्तेमाल किए गए टीएफटी के लिए अधिक कुशल पुस्तकालय फ़ाइल है, तो कृपया मुझे बताएं।

चरण 3: मतदान नियंत्रक

मतदान नियंत्रक
मतदान नियंत्रक
मतदान नियंत्रक
मतदान नियंत्रक

टर्नआउट / पॉइंट कंट्रोलर बनाने का निर्देश देखें।

पूरा सर्किट 16 पॉइंट और 15 एक्सेसरीज जैसे लाइट, साउंड, टर्नटेबल आदि को नियंत्रित करता है।

सिफारिश की: