فهرست مطالب:

مدل راه آهن - ایستگاه فرماندهی DCC با استفاده از آردوینو :: 3 مرحله
مدل راه آهن - ایستگاه فرماندهی DCC با استفاده از آردوینو :: 3 مرحله

تصویری: مدل راه آهن - ایستگاه فرماندهی DCC با استفاده از آردوینو :: 3 مرحله

تصویری: مدل راه آهن - ایستگاه فرماندهی DCC با استفاده از آردوینو :: 3 مرحله
تصویری: دوربین مخفی پیشنهاد سک.س دختر قبول کرد با ۶۰۰یورو باهام بیاد فوق سمی prank 2024, جولای
Anonim
Image
Image
کد آردوینو - ایستگاه فرماندهی با صفحه کلید
کد آردوینو - ایستگاه فرماندهی با صفحه کلید

به روز شده در آگوست 2018-دستورالعمل جدید را ببینید:

به روز رسانی 28 آوریل 2016: در حال حاضر 16 قابلیت حضور / کنترل نقاط در ایستگاه فرماندهی. خروجی های T1 - T8 از طریق کلید "B" در دسترس است Toutings T9 - T16 از طریق کلید "C" در دسترس است

به روز رسانی 10 مارس 2016:

اکنون 8 قابلیت کنترل مشارکت / امتیاز به ایستگاه فرماندهی اضافه شده است. کد آردوینو بر این اساس با استفاده از بسته استاندارد NMRA برای شرکت کنندگان در برنامه به روز شده است (همچنین بر اساس مطالعه بسته های داده Lenz / Atlas Compact برای کنترل مشارکت).

مشارکت مردم T1 - T8 از طریق کلید "B" در دسترس است

در مدار گیرنده بسته بسته داده مورد استفاده و کد آردوینو مورد نیاز را ببینید.

به روز رسانی 18 ژانویه 2016:

من یک مقاومت حسگر جریان (1k5 اهم) و یک خازن (10 uf) به مدار اضافه کرده و کد آردوینو را برای قطع برق در صورت تشخیص جریان پیک بیش از 3200 میلی آمپر در ثانیه اصلاح کرده ام. مشخصات H-bridge یک جریان حس خروجی 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 به کلیدهای عددی شروع شده از محل 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' هر بایت را جدا می کند)

فیلم ضمیمه تظاهرات محل 12 را مشاهده کنید.

توابع F1 - F8 از طریق کلید 'A' ، DIR ('*' key = جهت) FL ('0' کلید = چراغ) و کلید '#' محل های 10 تا 19 را بر روی صفحه کلید عددی در اختیار شما قرار می دهد. کلید "D" اکنون برای "توقف اضطراری" استفاده می شود.

با تشکر از ارائه دهندگان مختلف وب برای منابع اطلاعات DCC و کد آردوینو.

به طور خاص ، این پروژه از مایکل بلانک و "Simple DCC - a command station" الهام گرفته شده است.

www.oscale.net/fa/simpledcc

4x4 Matrix Array 16 Key Membrane Switch Keypad (ebay) 1.75 پوند

ماژول نمایش صفحه نمایش 2.2 اینچی 240x320 Serial SPI TFT LCD (ebay) 7.19 پوند

UNIVERSAL 12V 5A 60W POWER SUPPLY AC آداپتور (ebay) 6.49 پوند

Nano V3.0 برای آردوینو با CH340G 5V 16M سازگار ATmega328P (ebay) 2 x £ 3.30 = 6.60 £

ماژول درایور موتور LMD18200T برای Arduino R3 (ebay) 6.99 پوند

اتصالات ، سیم ، برد ورو ، پتانسیومتر تقریباً 3.50 پوند

مجموع 32.52 پوند

ایستگاه فرمان اصلی بدون صفحه نمایش tft و 1 x نانو 22.03 پوند خواهد بود

[توجه: امکان افزودن کارت حافظه به صفحه TFT و اصلاح کد برای نمایش تصاویر موتورهای منتخب وجود دارد ، اگرچه برای ایجاد حافظه بیشتر برای طرح ، کدهای کتابخانه باید ویرایش شوند. اندازه طرح فعلی حداکثر برای TFT Arduino Nano است]

کد اصلی آردوینو توسط Michael Blank برای یک موتور بود ، فقط به جلو / عقب بدون کنترل عملکرد ، بدون صفحه کلید و بدون صفحه نمایش.

من کد را شامل 1 تا 19 موتور ، صفحه نمایش ، جهت ، چراغ ها ، 8 عملکرد ، توقف اضطراری و محدودیت جریان خودکار تغییر دادم.

پل LMD18200T می تواند تا 3 آمپر حمل کند که آن را برای همه مقیاس ها از جمله مقیاس G (قطارهای باغی) مناسب می کند. منبع تغذیه اصلی و وسایل الکترونیکی فقط برای استفاده در محیط داخلی مناسب است مگر اینکه بتوانید همه آن را در برابر آب و هوا مقاوم کنید. من ایستگاه فرماندهی را در خانه ییلاقی دارم که سیم های ریل آنها از دیوار به مسیر عبور می کند.

مرحله 1: کد آردوینو - ایستگاه فرمان با صفحه کلید

از tvantenna2759 به خاطر اشاره به 2 خطا در نمودار مدار که در آن کد آردوینو با سیم کشی مطابقت نداشت ، تشکر می کنم ، اکنون به روز شده است (21 اکتبر 2017).

اکنون 16 شرکت کننده به ایستگاه فرماندهی اضافه شده است. با استفاده از ماژول Arduino Mini Pro در نمودار میزان مشارکت / نقاط را مشاهده کنید.

کد اصلاح شده شامل کنترل مشارکت در زیر پیوست شده است.

بسته رمزگشایی Accessory Basic عبارت است از: 0 10AAAAAA 0 1AAACDDD 0 EEEEEEEE 1 از تجزیه و تحلیل بسته مورد استفاده Lenz (Compact / Atlas) برای کنترل نقاط ، از فرمت بسته باینری زیر برای بایت 1 و 2 استفاده کرده ام: tunAddr = 1 Turnout 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 / میزان مشارکت 4b: 1000 0001 1111 1111 tunAddr = 2 --------------------------------------------- ------------------------------------------------------ ------------ 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 مورد دیگر به روز رسانی پیام "struct" اضافه کنید. جلوگیری از amend_tun1 (ساختار پیام & x) {x.data [0] = 0x81؛ // رمزگشای لوازم جانبی 0x80 و آدرس 1 x.data [1] = 0؛ }

void amend_tun2 (struct Message & x) {x.data [0] = 0x82؛ // رمزگشای لوازم جانبی 0x80 و آدرس 2 x.data [1] = 0؛ }

اضافه کردن خلأ جدید برای شرکت کنندگان: boolean read_turnout () {delay (20)؛

boolean change_t = false؛ get_key ()؛

if (key_val> = 101 && key_val <= 404 && turn == 1) {

داده = 0xf8؛ // = باینری 1111 1000

amend_tun1 (msg [1])؛

}

if (key_val> = 505 && key_val <= 808 && turn == 1) {

داده = 0xf8؛ // = باینری 1111 1000

amend_tun2 (msg [1])؛

}

if (key_val == 101 && turn == 1) {

if (tun1 == 1) {

داده | = 0؛ // t1a

change_t = true؛}

if (tun1 == 0) {

داده | = 0x01؛ // t1b

change_t = true؛}

}

if (key_val == 202 && turn == 1) {

if (tun2 == 1) {

داده | = 0x02؛ // t2a

change_t = true؛

}

if (tun2 == 0) {

داده | = 0x03؛ // t2b

change_t = true؛ }

}

if (key_val == 303 && turn == 1) {

if (tun3 == 1) {

داده | = 0x04؛ // t3a

change_t = true؛

}

if (tun3 == 0) {

داده | = 0x05؛ // t3b

change_t = true؛}

}

if (key_val == 404 && turn == 1) {

if (tun4 == 1) {

داده | = 0x06؛ // t4a

change_t = true؛

}

if (tun4 == 0) {

داده | = 0x07؛ // f4b

change_t = true؛}

}

if (key_val == 505 && turn == 1) {

if (tun5 == 1) {

داده | = 0؛ // t5a

change_t = true؛

}

if (tun5 == 0) {

داده | = 0x01؛ // t5b

change_t = true؛}

}

و غیره ………………….

مرحله 2: کد آردوینو - نمایش TFT

کد آردوینو - صفحه نمایش TFT
کد آردوینو - صفحه نمایش TFT
کد آردوینو - صفحه نمایش TFT
کد آردوینو - صفحه نمایش TFT
کد آردوینو - صفحه نمایش TFT
کد آردوینو - صفحه نمایش TFT
کد آردوینو - صفحه نمایش TFT
کد آردوینو - صفحه نمایش TFT

مدار نمایشگر با کد اصلاح شده یکسان باقی می ماند تا وضعیت 16 شرکت کننده را نشان دهد. توجه: کد کتابخانه تقریباً تمام حافظه طرح طرح را اشغال می کند و فضای کمی برای ویژگی های جدید باقی می گذارد. اگر کسی فایل کتابخانه ای کارآمدتری برای TFT مورد استفاده در اینجا دارد ، لطفاً به من اطلاع دهید.

مرحله 3: کنترل کننده مشارکت

کنترل کننده مشارکت
کنترل کننده مشارکت
کنترل کننده مشارکت
کنترل کننده مشارکت

نحوه ساخت کنترل کننده Turnout / Points را ببینید.

مدار کامل 16 نقطه و 15 لوازم جانبی مانند چراغ ، صدا ، صفحه گردان و غیره را کنترل می کند.

توصیه شده: