সুচিপত্র:

মডেল রেলওয়ে - ডিসিসি কমান্ড স্টেশন Arduino ব্যবহার করে :: 3 ধাপ
মডেল রেলওয়ে - ডিসিসি কমান্ড স্টেশন Arduino ব্যবহার করে :: 3 ধাপ

ভিডিও: মডেল রেলওয়ে - ডিসিসি কমান্ড স্টেশন Arduino ব্যবহার করে :: 3 ধাপ

ভিডিও: মডেল রেলওয়ে - ডিসিসি কমান্ড স্টেশন Arduino ব্যবহার করে :: 3 ধাপ
ভিডিও: ঢাকায় কোন বাস কোথায় যায়?? ঝামেলা এড়াতে। সবার যেনে রাখা প্রয়োজন??(1) 2024, নভেম্বর
Anonim
Image
Image
Arduino কোড - কীপ্যাড সহ কমান্ড স্টেশন
Arduino কোড - কীপ্যাড সহ কমান্ড স্টেশন

আগস্ট 2018 আপডেট করা হয়েছে-নতুন নির্দেশিকা দেখুন:

28th এপ্রিল 2016 আপডেট করুন: এখন কমান্ড স্টেশনে 16 টি ট্রানআউট / পয়েন্ট নিয়ন্ত্রণ ক্ষমতা। ভোটার T1 - T8 'B' কী এর মাধ্যমে পাওয়া যায়

10 মার্চ 2016 আপডেট করুন:

এখন কমান্ড স্টেশনে 8 টি ট্রানআউট / পয়েন্ট নিয়ন্ত্রণ ক্ষমতা যোগ করা হয়েছে। Arduino কোড অনুযায়ী ভোটারদের জন্য NMRA স্ট্যান্ডার্ড প্যাকেট ব্যবহার করে আপডেট করা হয়েছে (এছাড়াও লেনজ / অ্যাটলাস কম্প্যাক্ট ডেটা প্যাকেটের উপর ভিত্তি করে ভোটদান নিয়ন্ত্রণের জন্য)।

ভোটার T1 - T8 'B' কী এর মাধ্যমে পাওয়া যায়

ব্যবহার করা ডেটা প্যাকেট রিসিভার সার্কিট এবং Arduino কোড প্রয়োজনীয় নির্দেশাবলী দেখুন।

18 জানুয়ারী 2016 আপডেট করুন:

আমি সার্কিটে একটি কারেন্ট সেন্স রেসিস্টার (1k5 ওহম) এবং ক্যাপাসিটর (10 uf) যোগ করেছি এবং> 3200 mAmps এর পিক কারেন্ট ধরা পড়লে বিদ্যুৎ বন্ধ করার জন্য Arduino কোড সংশোধন করেছি। এইচ-ব্রিজ স্পেকটি লোডটিতে প্রতি 1 এমপিতে 377 ইউএ এর আউটপুট সেন্স বর্তমান বলে।

1.5 কে ওহম রোধকারী অ্যানালগ পিনে প্রতি এমপিতে 0.565 ভোল্ট সরবরাহ করবে।

A = 100 * (analogRead (AN_CURRENT)) / 116; A = A * 10; (মিলিম্পসে ফলাফল দিতে)

মিলিফ্যাম্পে লোড কারেন্ট টিএফটি -তে প্রদর্শিত হয়

সম্পূর্ণ 4x4 কীবোর্ডের মধ্যে F1 থেকে F8 ফাংশন এবং '#' কী এর মাধ্যমে আরও 10 টি লোকো (1-19) রয়েছে (লোকো 10 থেকে শুরু করে সংখ্যাসূচক কীগুলিতে 10 যোগ করতে)

আরডুইনো কোডে নির্দেশনা বাইটের জন্য NMRA মান অন্তর্ভুক্ত রয়েছে।

লিঙ্ক দেখুন

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

(পৃষ্ঠা 6 বিশেষ প্রাসঙ্গিক)

প্যাকেটগুলি গতির ধাপ, দীর্ঘ / সংক্ষিপ্ত ঠিকানা এবং ফাংশন গ্রুপ নির্দেশাবলী অনুসারে সাজানো হয়।

সমস্ত নির্দেশনা বাইটের আগে '1' বিট 11111111 (বা নিষ্ক্রিয় প্যাকেট) এর একটি প্রস্তাবনা রয়েছে;

যেমন একটি 4 বাইট ঠিকানা 0 00000011 0 00111111 0 10000011 0 10111111

লোকো 3, 128 স্পিড স্টেপ, ফরোয়ার্ড ডাইরেকশন এবং স্পিড স্টেপ 3 এর সমান (শেষ বাইট হল ত্রুটি পরীক্ষা XOR)

যেমন একটি 3 বাইট ঠিকানা 0 00000011 0 10010000 0 10110011

লোকো 3, ফাংশন গ্রুপ 1, প্লাস XOR বাইটে FL লাইটের সমান (একটি '0' বিট প্রতিটি বাইটকে আলাদা করে)

লোকো 12 এর জন্য বদ্ধ প্রদর্শন ভিডিও দেখুন।

F1 - F8 ফাংশনগুলি 'A' কী, DIR ('*' কী = দিক) FL ('0' কী = লাইট) এবং কী '#' এর মাধ্যমে সংখ্যাসূচক কীপ্যাডে 10 থেকে 19 পর্যন্ত লোকো পাওয়া যায়। 'D' কী এখন একটি 'জরুরী স্টপ' এর জন্য ব্যবহৃত হয়।

DCC তথ্যের উৎস এবং Arduino কোডের জন্য ওয়েবে বিভিন্ন প্রদানকারীদের ধন্যবাদ।

বিশেষ করে, এই প্রকল্পটি মাইকেল ব্ল্যাঙ্ক এবং তার 'সিম্পল ডিসিসি - একটি কমান্ড স্টেশন' দ্বারা অনুপ্রাণিত হয়েছিল

www.oscale.net/en/simpledcc

4x4 ম্যাট্রিক্স অ্যারে 16 কী মেমব্রেন সুইচ কীপ্যাড (ইবে) £ 1.75

2.2 ইঞ্চি 240x320 সিরিয়াল SPI TFT LCD ডিসপ্লে মডিউল (ইবে) £ 7.19

ইউনিভার্সাল 12V 5A 60W পাওয়ার সাপ্লাই এসি অ্যাডাপ্টার (ইবে) £ 6.49

CH340G 5V 16M সামঞ্জস্যপূর্ণ ATmega328P (ebay) 2 x £ 3.30 = £ 6.60 সহ Arduino এর জন্য Nano V3.0

Arduino R3 (eBay) Motor 6.99 এর জন্য মোটর ড্রাইভার মডিউল LMD18200T

সংযোগকারী, তার, ভেরো বোর্ড, পটেনশিয়োমিটার প্রায় £ 3.50

মোট £ 32.52

টিএফটি স্ক্রিন এবং 1 এক্স ন্যানো ছাড়া মৌলিক কমান্ড স্টেশন হবে £ 22.03

[দ্রষ্টব্য: টিএফটি ডিসপ্লেতে একটি মেমরি কার্ড যোগ করা এবং নির্বাচিত ইঞ্জিনের ছবি প্রদর্শনের জন্য কোড সংশোধন করা সম্ভব, যদিও স্কেচের জন্য আরও মেমরি তৈরির জন্য লাইব্রেরির কোডগুলি সম্পাদনা করা আবশ্যক। বর্তমান স্কেচের আকার টিএফটি আরডুইনো ন্যানোর জন্য সর্বাধিক]

মাইকেল ব্ল্যাঙ্কের মূল আরডুইনো কোড ছিল একটি ইঞ্জিনের জন্য, ফরওয়ার্ড / রিভার্স শুধুমাত্র কোন ফাংশন কন্ট্রোল, কিপ্যাড এবং ডিসপ্লে ছাড়াই।

আমি 1-19 ইঞ্জিন, একটি ডিসপ্লে স্ক্রিন, দিকনির্দেশনা, লাইট, 8 টি ফাংশন, জরুরী স্টপ এবং স্বয়ংক্রিয় বর্তমান সীমা অন্তর্ভুক্ত করার জন্য কোডটি সংশোধন করেছি।

LMD18200T সেতু 3 amps পর্যন্ত বহন করতে পারে যা এটি G- স্কেল (বাগান ট্রেন) সহ সমস্ত স্কেলের জন্য উপযুক্ত করে তোলে। মূল বিদ্যুৎ সরবরাহ এবং ইলেকট্রনিক্স শুধুমাত্র অভ্যন্তরীণ ব্যবহারের জন্য উপযুক্ত, যদি না আপনি এটি সমস্ত আবহাওয়া প্রমাণ করতে পারেন। আমার গ্রীষ্মকালীন বাড়িতে কমান্ড স্টেশন আছে যা রেল সংযোগকারী তারের সাথে দেয়ালের মধ্য দিয়ে ট্র্যাকের দিকে চলে যাচ্ছে।

ধাপ 1: আরডুইনো কোড - কীপ্যাড সহ কমান্ড স্টেশন

সার্কিট ডায়াগ্রামে 2 টি ত্রুটি নির্দেশ করার জন্য tvantenna2759 কে আমার ধন্যবাদ যেখানে Arduino কোড তারের সাথে মেলে না, এখন আপডেট করা হয়েছে (21 অক্টোবর 2017)।

এখন কমান্ড স্টেশনে 16 টি ভোটার যোগ হয়েছে। Arduino Mini Pro মডিউল ব্যবহার করে ট্রানআউট / পয়েন্ট সার্কিট ডায়াগ্রামে নির্দেশযোগ্য দেখুন।

ট্রানআউট কন্ট্রোল সহ সংশোধিত কোড নিচে সংযুক্ত করা হল।

বেসিক আনুষঙ্গিক ডিকোডার প্যাকেট হল: 0 10AAAAAA 0 1AAACDDD 0 EEEEEEEE 1 পয়েন্ট নিয়ন্ত্রণের জন্য Lenz (কম্প্যাক্ট / এটলাস) দ্বারা ব্যবহৃত প্যাকেট বিশ্লেষণ থেকে, আমি বাইট 1 এবং 2 এর জন্য নিম্নলিখিত বাইনারি প্যাকেট ফরম্যাট ব্যবহার করেছি: tunAddr = 1 টার্নআউট 1a: 1000 0001 1111 1000 / ভোটার 1 বি: 1000 0001 1111 1001 4b: 1000 0001 1111 1111 tunAddr = 2 ----------------------------------------- -------------------------------------------------- ----------------- ভোটার 5a: 1000 0010 1111 1000 / ভোট 5b: 1000 0010 1111 1001 1000 0010 1111 1100 / ভোটার 7b: 1000 0010 1111 1101 ভোট 8a: 1000 0010 1111 1110 / ভোট 8b: 1000 0010 1111 1111 ----------------------- -------------------------------------------------- ---------------------------------- ভোটার 9a: 1000 0011 1111 1000 / ভোট 9b: 1000 0011 1111 1001 ইত্যাদি ………

সংশোধিত কোড থেকে এক্সট্র্যাক্ট করুন: আরও 2 'স্ট্রাক্ট' মেসেজ আপডেট যোগ করুন edit_tun1 (struct বার্তা & x) {x.data [0] = 0x81; // আনুষঙ্গিক ডিকোডার 0x80 এবং ঠিকানা 1 x.data [1] = 0; }

অকার্যকর সংশোধন_টুন 2 (স্ট্রাক্ট মেসেজ & x) {x.data [0] = 0x82; // আনুষঙ্গিক ডিকোডার 0x80 এবং ঠিকানা 2 x.data [1] = 0; }

ভোটদানের জন্য নতুন শূন্যতা যোগ করুন: বুলিয়ান read_turnout () {বিলম্ব (20);

বুলিয়ান পরিবর্তিত_টি = মিথ্যা; get_key ();

যদি (key_val> = 101 && key_val <= 404 && turn == 1) {

ডেটা = 0xf8; // = বাইনারি 1111 1000

Amend_tun1 (msg [1]);

}

যদি (key_val> = 505 && key_val <= 808 && turn == 1) {

ডেটা = 0xf8; // = বাইনারি 1111 1000

Amend_tun2 (msg [1]);

}

যদি (key_val == 101 && turn == 1) {

যদি (tun1 == 1) {

তথ্য | = 0; // t1a

পরিবর্তিত_টি = সত্য;}

যদি (tun1 == 0) {

ডেটা | = 0x01; // টি 1 বি

পরিবর্তিত_টি = সত্য;}

}

যদি (key_val == 202 && turn == 1) {

যদি (tun2 == 1) {

তথ্য | = 0x02; // t2a

পরিবর্তিত_টি = সত্য;

}

যদি (tun2 == 0) {

ডেটা | = 0x03; // t2b

পরিবর্তিত_টি = সত্য; }

}

যদি (key_val == 303 && turn == 1) {

যদি (tun3 == 1) {

ডেটা | = 0x04; // t3a

পরিবর্তিত_টি = সত্য;

}

যদি (tun3 == 0) {

ডেটা | = 0x05; // টি 3 বি

পরিবর্তিত_টি = সত্য;}

}

যদি (key_val == 404 && turn == 1) {

যদি (tun4 == 1) {

ডেটা | = 0x06; // t4a

পরিবর্তিত_টি = সত্য;

}

যদি (tun4 == 0) {

ডেটা | = 0x07; // f4b

পরিবর্তিত_টি = সত্য;}

}

যদি (key_val == 505 && turn == 1) {

যদি (tun5 == 1) {

ডেটা | = 0; // t5a

পরিবর্তিত_টি = সত্য;

}

যদি (tun5 == 0) {

ডেটা | = 0x01; // t5b

পরিবর্তিত_টি = সত্য;}

}

ইত্যাদি …………………।

ধাপ 2: Arduino কোড - TFT প্রদর্শন

Arduino কোড - TFT প্রদর্শন
Arduino কোড - TFT প্রদর্শন
Arduino কোড - TFT প্রদর্শন
Arduino কোড - TFT প্রদর্শন
Arduino কোড - TFT প্রদর্শন
Arduino কোড - TFT প্রদর্শন
Arduino কোড - TFT প্রদর্শন
Arduino কোড - TFT প্রদর্শন

ডিসপ্লে সার্কিটটি 16 টি ভোটারদের অবস্থা দেখানোর জন্য একটি পরিবর্তিত কোড সহ একই থাকে। দ্রষ্টব্য: লাইব্রেরির কোডটি প্রায় সমস্ত স্কেচ কোড মেমরি নেয় যা নতুন বৈশিষ্ট্যগুলির জন্য সামান্য জায়গা ছেড়ে দেয়। এখানে ব্যবহৃত TFT- এর জন্য যদি কারও কাছে আরও কার্যকর লাইব্রেরি ফাইল থাকে, দয়া করে আমাকে জানান।

ধাপ 3: টার্নআউট কন্ট্রোলার

টার্নআউট কন্ট্রোলার
টার্নআউট কন্ট্রোলার
টার্নআউট কন্ট্রোলার
টার্নআউট কন্ট্রোলার

কিভাবে টার্নআউট / পয়েন্ট কন্ট্রোলার করতে হয় তার নির্দেশনা দেখুন।

সম্পূর্ণ সার্কিট 16 পয়েন্ট এবং 15 জিনিসপত্র যেমন লাইট, শব্দ, টার্নটেবল ইত্যাদি নিয়ন্ত্রণ করে।

প্রস্তাবিত: