विषयसूची:

गार्डन ट्रेन - अरुडिनो वायरलेस एनएमआरए डीसीसी: 4 कदम (चित्रों के साथ)
गार्डन ट्रेन - अरुडिनो वायरलेस एनएमआरए डीसीसी: 4 कदम (चित्रों के साथ)

वीडियो: गार्डन ट्रेन - अरुडिनो वायरलेस एनएमआरए डीसीसी: 4 कदम (चित्रों के साथ)

वीडियो: गार्डन ट्रेन - अरुडिनो वायरलेस एनएमआरए डीसीसी: 4 कदम (चित्रों के साथ)
वीडियो: TSG Live Crew Lounge Technology & Model Railroading Panel Discussion JMRI MQTT and More! 2024, जून
Anonim
Image
Image
सिस्टम का डिजाइन
सिस्टम का डिजाइन

डेड रेल सिस्टम पर डीसीसी के साथ पिछले निर्देश के अलावा, मैंने कीपैड और एलसीडी डिस्प्ले के साथ डीसीसी कमांड स्टेशन को हाथ से पकड़कर इस विचार को और विकसित किया है। कमांड स्टेशन में एनएमआरए डीसीसी निर्देशों के लिए आवश्यक सभी कोडिंग शामिल हैं, हालांकि रेल से कनेक्ट होने के बजाय, डेटा को रेडियो मॉड्यूल आरएफ24एल01+ द्वारा ट्रक में या लोको के नीचे लगे रिसीवर में स्थानांतरित किया जाता है - जहां भी कमरा अनुमति देता है।

बेशक, आपके लोको इंजन मोटर्स के अनुकूल लोड क्षमता के डिकोडर के साथ फिट होना चाहिए।

चरण 1: सिस्टम का डिजाइन

सिस्टम का डिजाइन
सिस्टम का डिजाइन

Arduino Pro Mini डिजाइन के केंद्र में है। सर्किट को विकसित करने और पीसीबी बनाने के लिए फ्रिट्ज़िंग का उपयोग करना।

मैं ट्रांसमीटर और रिसीवर दोनों के लिए एक ही पीसीबी का उपयोग करने में सक्षम था जिससे कुछ लागतों की बचत हुई।

ट्रांसमीटर में कीपैड और एलसीडी के लिए कनेक्शन होते हैं जबकि रिसीवर को इनकी आवश्यकता नहीं होती है और लोको के लिए डीसीसी आउटपुट की आपूर्ति के लिए एच-ब्रिज का उपयोग करता है।

एक और विकास में अधिक शक्तिशाली इंजनों के लिए आवश्यक होने पर बड़े एच-ब्रिज के लिए कनेक्शन शामिल हैं।

PCF8574 को हटाया जा सकता है यदि आप एक LCD डिस्प्ले का उपयोग करते हैं जो बैकपैक के साथ आता है जो Arduino पर SCA / SCL कनेक्शन को केवल 2 तारों का उपयोग करके डिस्प्ले को फीड करने की अनुमति देता है। भागों की सूची: कुल = DCC कमांड स्टेशन के लिए लगभग £ 60 + 1 रिसीवरअतिरिक्त रिसीवर लागत = £१०.०० लगभग प्रत्येक। + बैटरी

अरुडिनो प्रो मिनी। एक्स 2 = £4.00

4x3 झिल्ली कीपैड = £3.00

२० x ४ एलसीडी डिस्प्ले = £७.००

पीसीएफ५८७४ = £१.८०

एनआरएफ24एल01+. रेडियो मॉड्यूल x 2 = £५.८०

10 ऑफ के लिए पीसीबी निर्माण (या वेरो बोर्ड का उपयोग किया जा सकता है) = £ 24 या £ 4.80 2off. के लिए

३.३ वी रेगुलेटर = £०.१७ (आरएस कॉम्प से २५ का पैक)

5v रेगुलेटर LM7805 = £0.30

एच-ब्रिज SN754410ne = £3.00

लॉयट्रॉन री-चार्जेबल 2700 एमएएच एए बैटरी x 12 = £22.00। (कम एमएएच रेटेड बैटरी सस्ती हैं)

कैपेसिटर, बर्तन, पिन, कनेक्टर, आदि = £2.00 लगभग

संलग्नक 190x110x60 मिमी = £8.00

ट्रांसमीटर - फोन चार्जर / बैटरी = £2.00

चरण 2: ट्रांसमीटर

ट्रांसमीटर
ट्रांसमीटर

सर्किट आरेख दिखाया गया है जहां Arduino Pro Mini पर D2 से D8 पिन कीपैड से जुड़े हैं। गति समायोजन के लिए एक 100k ओम पोटेंशियोमीटर एनालॉग पिन A0 से जुड़ा है। SDA और SCL पिन PCF8574 चिप बनाते हैं जो पिन A4 से जुड़े होते हैं और प्रो मिनी की शीर्ष परत पर पिनों को टांका लगाने वाले तारों के माध्यम से Arduino Pro Mini पर A5।

Arduino स्केच डाउनलोड के लिए संलग्न है।

मैंने 20 x 4 एलसीडी डिस्प्ले का उपयोग किया है जिसमें प्रति पंक्ति 20 वर्णों के साथ 4 पंक्तियों की जानकारी की अनुमति है। कीपैड निम्नलिखित मेनू प्रदान करता है:

1 से 9 = लोको का पता * = दिशा 0 = रोशनी # = 1 से 8 की चाबियों के लिए फ़ंक्शन मेनू

Arduino Pro Mini स्केच का मूल विवरण: कोड की यह पंक्ति DCC संदेश को HEX प्रारूप में व्यवस्थित करती है। संरचना संदेश संदेश [MAXMSG] = {

{{0xFF, 0, 0xFF, 0, 0, 0, 0}, 3}, // निष्क्रिय संदेश

{ { locoAdr, 0, 0, 0, 0, 0, 0}, 3} // 3 बाइट पता

};

प्रत्येक लोको के लिए सेटिंग्स को स्टोर करने के लिए, सरणियों की एक श्रृंखला निम्नानुसार स्थापित की जाती है:

int la[20];// लोको नंबर रखने के लिए सरणी

int sa[20];// गति मान रखने के लिए सरणी

int fda[20];// सरणी रखने के लिए dir

int fla[20];// सरणी रोशनी रखने के लिए

int f1a[20];// सरणी fun1 रखने के लिए…..

int f8a[20];// सरणी fun8 रखने के लिए

डीसीसी निर्देशों को संशोधित करने के लिए सक्षम करने के लिए हम जाते हैं:

गति निर्देशों के लिए: शून्य संशोधन_गति (संरचना संदेश और x) {

x.डेटा [0] = लोकोएडीआर;

x.डेटा [1] = 0x40; // locoMsg 28 स्पीड स्टेप्स के साथ}

फ़ंक्शन निर्देशों के लिए:

शून्य संशोधन_समूह1 (संरचना संदेश और x) {

x.डेटा [0] = लोकोएडीआर;

x.डेटा [1] = 0x80; // locoMsg ग्रुप वन इंस्ट्रक्शन 0x80 के साथ}

स्केच का मुख्य लूप:

शून्य लूप (शून्य) {अगर (read_locoSpeed ()) {assembly_dcc_msg_speed ();

भेजें_डेटा_1 (); // वायरलेस द्वारा डेटा भेजें

देरी(10);

send_data_3 (); // एलसीडी डिस्प्ले पर डेटा प्रदर्शित करें

send_data_4 (); // सीरियल मॉनिटर पर डेटा प्रदर्शित करें}

अगर (read_function ()) {

असेंबल_dcc_msg_group1 ();

भेजें_डेटा_1 ();

देरी(10);

send_data_3 (); } }

गति बदलने पर डेटा अपडेट करें:

बूलियन read_locoSpeed () यह एक नए लोको पते, गति या दिशा सेटिंग का पता लगाता है और तदनुसार HEX 'डेटा' में संशोधन करता है। यहां मैंने 28 गति चरणों को निर्दिष्ट किया है और NMRA मानक S 9.2 को पूरा करने के लिए, गति डेटा एक लुक अप टेबल से पाया जाना चाहिए। 'स्पीड_स्टेप ()' में

शून्य स्पीड_स्टेप () {स्विच (लोकोस्पीड) {

केस 1: डेटा |= 0x02; टूटना;

केस 2: डेटा |= 0x12; टूटना;

केस 3: डेटा |= 0x03; टूटना;

………

केस 28: डेटा |= 0x1F; टूटना; }}

फ़ंक्शन बदलने पर डेटा अपडेट करें:

बूलियन read_function ()

अगर (fla [locoAdr] == 0) {डेटा = 0x80;

}//हेड लाइट बंद

अगर (fla [locoAdr] == 1) {

डेटा = 0x90;

} // हेड लाइट ऑन

प्रत्येक समारोह के लिए:

अगर (f2a[locoAdr] == 0) { डेटा |= 0; }. // फंक्शन 2 ऑफ

अगर (f2a [locoAdr] == 1) {

डेटा |= 0x02; // फंक्शन 2 ऑन }'डेटा' प्रत्येक फंक्शन के लिए ['|=' कंपाउंड बिटवाइज या] HEX कोड को मिलाकर बनाया गया है।

चरण 3: रिसीवर

रिसीवर
रिसीवर

सर्किट आरेख दिखाया गया है जहां एच-ब्रिज को आपूर्ति किए गए डीसीसी सिग्नल प्रदान करने के लिए Arduino Pro Mini के पिन 5 और 6 का उपयोग किया जाता है। एच-ब्रिज जोड़े वर्तमान क्षमता को बढ़ाने के लिए समानांतर में जुड़े हुए हैं। लोको द्वारा खींची गई धारा के आधार पर, एक हीट सिंक को 16 पिन डीआईपी डिवाइस से जोड़ने की आवश्यकता हो सकती है, या एक भारी शुल्क एच-ब्रिज को बाहरी रूप से जोड़ा जा सकता है।

Arduino स्केच डाउनलोड के लिए संलग्न है। DCC सिग्नल 2MHZ. पर चलने वाली घड़ी से बना है

शून्य SetupTimer2() यह काम करता है।

घड़ी में DCC डेटा में '1' के लिए 'शॉर्ट पल्स' (58us) और DCC डेटा में '0' के लिए 'लॉन्ग पल्स' (116us) शामिल हैं।

लूप शून्य, रेडियो से डेटा प्राप्त करता है और यदि एक वैध स्ट्रिंग मिलती है, तो डेटा को डीसीसी डेटा में परिवर्तित कर दिया जाता है।

शून्य लूप (शून्य) {अगर (रेडियो उपलब्ध ()) { बूल किया = झूठा; किया = रेडियो.रीड (आईएनएमएसजी, 1); // प्राप्त डेटा पढ़ें

चार आरसी = इनएमएसजी [0]; // इस सरणी में पढ़े गए चरित्र को रखें

अगर (आरसी! = 0) {। // यदि चरित्र शून्य के बराबर नहीं है

inString.concat (आरसी); // संदेश का निर्माण करें}

अगर (आरसी == '\0') {// अगर चरित्र संदेश का अंत '/0' है

सीरियल.प्रिंट्लन (इनस्ट्रिंग); // इकट्ठे संदेश को प्रिंट करें

डोरी(); // DCC निर्देश प्राप्त करने के लिए स्ट्रिंग संदेश को डी-कंस्ट्रक्ट करें

} } }

चरण 4: लोको चलाएँ

लोको चलाएं
लोको चलाएं

एक ही ट्रैक पर कई ट्रेनें चलाने से डेटा में रुकावट से बचने के लिए, आपको प्रत्येक लोको और ट्रक के लिए पहियों और ट्रैक के बीच के संपर्कों को डिस्कनेक्ट करना होगा।

ट्रैक की स्थिति की परवाह किए बिना मुफ्त चलने वाली ट्रेनों का आनंद लें - क्या फर्क है! कोई परेशानी नहीं, कोई स्टार्ट-स्टॉप और कोई सफाई की आवश्यकता नहीं है।

मैंने जिन बैटरियों का उपयोग किया है, वे LLoytron AA x 12 को फिर से चार्ज करने योग्य हैं। मैंने विशेष रूप से उनके लिए एक चार्जर बनाया है जो एक बार में 6 चार्ज करता है। (निर्देश देखें)

सिफारिश की: