جدول المحتويات:

نموذج للسكك الحديدية - محطة قيادة DCC باستخدام Arduino :: 3 خطوات
نموذج للسكك الحديدية - محطة قيادة DCC باستخدام Arduino :: 3 خطوات

فيديو: نموذج للسكك الحديدية - محطة قيادة DCC باستخدام Arduino :: 3 خطوات

فيديو: نموذج للسكك الحديدية - محطة قيادة DCC باستخدام Arduino :: 3 خطوات
فيديو: Model Railway Automation using JRMI Dispatcher and Simple Signal Logic 2024, شهر نوفمبر
Anonim
Image
Image
كود اردوينو - محطة القيادة مع لوحة المفاتيح
كود اردوينو - محطة القيادة مع لوحة المفاتيح

تم التحديث في أغسطس 2018 - راجع التعليمات الجديدة:

تحديث 28 أبريل 2016: الآن 16 قدرة على التحكم في الإقبال / نقطة إلى مركز القيادة. الإقبال من T1 - T8 متاح عبر مفتاح 'B' الإقبال T9 - T16 متاح عبر مفتاح 'C'

تحديث 10 مارس 2016:

تمت إضافة 8 إمكانية التحكم في الإقبال / نقاط إلى محطة القيادة. تم تحديث كود Arduino وفقًا لذلك باستخدام الحزمة القياسية NMRA للإقبال (استنادًا أيضًا إلى دراسة حزم بيانات Lenz / Atlas Compact للتحكم في الإقبال).

تتوفر الإقبال من T1 - T8 عبر المفتاح "B"

انظر التعليمات على دائرة استقبال حزم البيانات المستخدمة وكود Arduino مطلوب.

تحديث 18 يناير 2016:

لقد أضفت مقاومًا للمعنى الحالي (1k5 أوم) ومكثف (10 uf) إلى الدائرة وقمت بتعديل كود Arduino لقطع الطاقة عند اكتشاف تيار ذروة يبلغ> 3200 مللي أمبير في الثانية. تنص مواصفات جسر H على تيار إحساس ناتج يبلغ 377 uA لكل 1 أمبير في الحمل.

سيوفر المقاوم 1.5 كيلو أوم 0.565 فولت لكل أمبير على الدبوس التناظري 6. مع 1023 خطوة على الإدخال التناظري ، هذا يعطي 0.565 * 1023/5 = 116 لكل حمل أمبير.

A = 100 * (analogRead (AN_CURRENT)) / 116 ؛ A = A * 10 ؛ (لإعطاء النتيجة بالمللي أمبير)

يتم عرض تيار الحمل بالملي أمبير على شاشة TFT

تتضمن لوحة المفاتيح الكاملة 4x4 وظائف F1 إلى F8 و 10 مواضع أخرى (1-19) من خلال المفتاح "#" (لإضافة 10 إلى المفاتيح الرقمية بدءًا من loco 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

يساوي loco 3 ، 128 خطوة للسرعة ، اتجاه أمامي وخطوة سرعة 3 (نهاية البايت هي التحقق من الخطأ XOR)

على سبيل المثال عنوان 3 بايت 0 00000011 0 10010000 0 10110011

يساوي loco 3 ، مجموعة الوظائف 1 ، أضواء FL مضاءة بالإضافة إلى XOR بايت (يفصل بت '0' كل بايت)

شاهد الفيديو التوضيحي المرفق لـ loco 12.

تتوفر الوظائف F1 - F8 عبر المفتاح "A" ، و DIR (المفتاح "*" = الاتجاه) FL (المفتاح "0" = الأضواء) والمفتاح "#" يعطي المواقع من 10 إلى 19 على لوحة المفاتيح الرقمية. يُستخدم المفتاح "D" الآن في "إيقاف الطوارئ".

بفضل العديد من مقدمي الخدمات على الويب لمصادر معلومات DCC ورمز Arduino.

على وجه الخصوص ، استوحى هذا المشروع من مايكل بلانك و "Simple DCC - a command station"

www.oscale.net/en/simpledcc

4x4 Matrix Array 16 Key Membrane Switch Keypad (ebay) 1.75 جنيه إسترليني

2.2 بوصة 240x320 Serial SPI TFT LCD Display Module (ebay) 7.19 جنيه إسترليني

UNIVERSAL 12V 5A 60W POWER SUPPLY AC ADAPTER (ebay) 6.49 جنيه إسترليني

Nano V3.0 لـ Arduino مع CH340G 5V 16M متوافق ATmega328P (ebay) 2 × 3.30 جنيه إسترليني = 6.60 جنيه إسترليني

وحدة تشغيل المحرك LMD18200T لـ Arduino R3 (ebay) 6.99 جنيهًا إسترلينيًا

الموصلات ، الأسلاك ، لوحة vero ، مقياس الجهد حوالي 3.50 جنيه إسترليني

إجمالي 32.52 جنيه إسترليني

ستكون محطة القيادة الأساسية بدون شاشة TFT و 1 x nano 22.03 جنيهًا إسترلينيًا

[ملاحظة: من الممكن إضافة بطاقة ذاكرة إلى شاشة TFT وتعديل الكود لعرض صور المحركات المختارة ، على الرغم من أنه يجب تعديل رموز المكتبة لإنشاء ذاكرة أكبر للرسم. حجم الرسم الحالي هو الحد الأقصى لـ TFT Arduino Nano]

كان كود Arduino الأصلي بواسطة Michael Blank لمحرك واحد ، للأمام / للخلف فقط بدون تحكم في الوظيفة ، ولا لوحة مفاتيح ولا شاشة عرض.

لقد قمت بتعديل الكود ليشمل 1-19 محركًا ، وشاشة عرض ، واتجاه ، وأضواء ، و 8 وظائف ، وإيقاف طارئ ، وحد تيار تلقائي.

يمكن أن يحمل جسر LMD18200T ما يصل إلى 3 أمبير مما يجعله مناسبًا لجميع المقاييس بما في ذلك مقياس G (قطارات الحدائق). يعد مصدر الطاقة والإلكترونيات مناسبين للاستخدام الداخلي فقط ما لم تتمكن من جعله مقاومًا للطقس. لدي محطة القيادة في المنزل الصيفي مع سكة تربط الأسلاك التي تنفد عبر الحائط إلى المسار.

الخطوة 1: كود اردوينو - محطة القيادة مع لوحة المفاتيح

شكري لـ tvantenna2759 للإشارة إلى خطأين في مخطط الدائرة حيث لا يتطابق كود Arduino مع الأسلاك ، تم تحديثه الآن (21 أكتوبر 2017).

أضيف الآن 16 إقبالًا إلى مركز القيادة. انظر التعليمات على مخطط دائرة الإقبال / النقاط باستخدام وحدة Arduino Mini Pro.

تم إرفاق الكود المعدل بما في ذلك التحكم في الإقبال أدناه.

حزمة وحدة فك ترميز الملحقات الأساسية هي: 0 10AAAAAA 0 1AAACDDD 0 EEEEEEEE 1 من تحليل الحزمة المستخدمة بواسطة Lenz (Compact / Atlas) للتحكم في النقاط ، استخدمت تنسيق الحزمة الثنائية التالي للبايتَين 1 و 2: tunAddr = 1 Turnout 1a: 1000 0001 1111 1000 / نسبة الإقبال 1 ب: 1000 0001 11111001 الإقبال 2 أ: 1000 0001 1111 1010 / الإقبال 2 ب: 1000 0001 1111 1011 الإقبال 3 أ: 1000 0001 1111 1100 / الإقبال 3 ب: 1000 0001 1111 1101 الإقبال 4 أ: 1000 0001 1111 1110 / الإقبال 4 ب: 1000 0001 1111 1111 tunAddr = 2 ----------------------------------------- -------------------------------------------------- ----------------- الإقبال 5 أ: 1000 0010 1111 1000 / الإقبال 5 ب: 1000 0010 11111001 الإقبال 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 إلخ ………

مقتطف من التعليمات البرمجية المعدلة: أضف تحديثين أخريين للرسالة "الهيكلية" // وحدة فك ترميز الملحقات 0x80 & العنوان 1 x.data [1] = 0 ؛ }

تعديل باطل. // وحدة فك ترميز الملحقات 0x80 والعنوان 2 x.data [1] = 0 ؛ }

إضافة فراغ جديد للإقبال: boolean read_turnout () {delay (20)؛

تغيرت قيمة منطقية_ = خطأ ؛ احصل على مفتاح()؛

إذا (key_val> = 101 && key_val <= 404 && turn == 1) {

البيانات = 0xf8 ؛ // = ثنائي 1111 1000

تعديل_tun1 (msg [1]) ؛

}

إذا (key_val> = 505 && key_val <= 808 && turn == 1) {

البيانات = 0xf8 ؛ // = ثنائي 1111 1000

تعديل_tun2 (msg [1]) ؛

}

إذا (key_val == 101 && turn == 1) {

إذا (tun1 == 1) {

البيانات | = 0 ؛ // t1a

تغيير_ = صحيح ؛}

إذا (tun1 == 0) {

البيانات | = 0x01 ؛ // t1b

تغيير_ = صحيح ؛}

}

إذا (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 ؛ // t3b

تغيير_ = صحيح ؛}

}

إذا (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: كود اردوينو - شاشة TFT

كود اردوينو - شاشة TFT
كود اردوينو - شاشة TFT
كود اردوينو - شاشة TFT
كود اردوينو - شاشة TFT
كود اردوينو - شاشة TFT
كود اردوينو - شاشة TFT
كود اردوينو - شاشة TFT
كود اردوينو - شاشة TFT

تظل دائرة العرض كما هي مع رمز معدل لإظهار حالة الحضور البالغ عددهم 16. ملاحظة: يستهلك رمز المكتبة تقريبًا كل ذاكرة رمز الرسم مما يترك مجالًا صغيرًا للميزات الجديدة. إذا كان لدى أي شخص ملف مكتبة أكثر كفاءة لشاشة TFT المستخدمة هنا ، فيرجى إبلاغي بذلك.

الخطوة 3: وحدة التحكم بالإغلاق

تحكم الاقبال
تحكم الاقبال
تحكم الاقبال
تحكم الاقبال

انظر التعليمات حول كيفية جعل وحدة تحكم Turnout / Points.

تتحكم الدائرة الكاملة في 16 نقطة و 15 ملحقًا مثل الأضواء والأصوات والصينية الدوارة وما إلى ذلك.

موصى به: