فهرست مطالب:

Garden Train - Arduino Wireless NMRA DCC: 4 مرحله (همراه با تصاویر)
Garden Train - Arduino Wireless NMRA DCC: 4 مرحله (همراه با تصاویر)

تصویری: Garden Train - Arduino Wireless NMRA DCC: 4 مرحله (همراه با تصاویر)

تصویری: Garden Train - Arduino Wireless NMRA DCC: 4 مرحله (همراه با تصاویر)
تصویری: Cheap and Amazing! DCC-EX 2 Years Later 2024, ژوئن
Anonim
Image
Image
طراحی سیستم
طراحی سیستم

علاوه بر دستورالعمل قبلی با DCC در مورد سیستم راه آهن مرده ، من این ایده را با ایستگاه فرماندهی DCC دستی با صفحه کلید و صفحه نمایش LCD بیشتر توسعه دادم. ایستگاه فرماندهی شامل تمام برنامه نویسی مورد نیاز برای دستورالعمل های NMRA DCC است ، اما به جای اتصال به ریل ، داده ها توسط ماژول رادیویی RF24L01+ به گیرنده ای نصب می شود که در کامیون یا زیر لوکو نصب شده است - هر کجا که اتاق اجازه می دهد.

البته ، لوکوس های شما باید دارای رمزگشایی با قابلیت بار مناسب موتورهای موتور باشند.

مرحله 1: طراحی سیستم

طراحی سیستم
طراحی سیستم

Arduino Pro Mini در قلب طراحی قرار دارد. استفاده از Fritzing برای توسعه مدار و تولید PCB.

من توانستم از یک PCB یکسان برای فرستنده و گیرنده استفاده کنم ، بنابراین در هزینه ها صرفه جویی می شود.

فرستنده دارای اتصالات صفحه کلید و LCD است در حالی که گیرنده به این موارد نیاز ندارد و از پل H برای تامین خروجی DCC برای لوکو استفاده می کند.

توسعه بیشتر شامل اتصالات برای پل H بزرگتر در صورت نیاز به لوکوس های قوی تر است.

PCF8574 را می توان حذف کرد اگر از یک صفحه نمایش LCD با کوله پشتی استفاده می کنید که به اتصالات SCA / SCL در آردوینو اجازه می دهد تا صفحه نمایش را فقط با 2 سیم تغذیه کند. لیست قطعات: مجموع = تقریباً 60 پوند برای ایستگاه فرماندهی DCC + 1 گیرنده هزینه گیرنده های اضافی = هر کدام 10.00 پوند + باتری

آردوینو پرو مینی x 2 = 4.00 پوند

صفحه کلید غشاء 4x3 = 3.00 پوند

نمایشگر LCD 20 * 4 = 7.00 پوند

PCF5874 = 1.80 پوند

NRF24L01+. ماژول های رادیویی x 2 = 5.80 £

تولید PCB برای 10 تخفیف (یا ممکن است از تخته Vero استفاده شود) = 24 پوند یا 4.80 پوند برای 2 بار

3.3 v تنظیم کننده = 0.17 پوند (بسته 25 عددی RS Comp)

5v تنظیم کننده LM7805 = 0.30 پوند

H-Bridge SN754410ne = 3.00 پوند

Lloytron قابل شارژ مجدد 2700 maH باتری AA x 12 = 22.00 پوند. (باتری های دارای درجه maH پایین تر ارزان تر هستند)

خازن ها ، گلدان ها ، پین ها ، اتصالات و غیره = تقریباً 2.00 پوند

محفظه 190x110x60 میلی متر = 8.00 £

فرستنده - شارژر تلفن / باتری = 2.00 پوند

مرحله 2: فرستنده

فرستنده
فرستنده

نمودار مدار نشان داده می شود که پین های D2 تا D8 در Arduino Pro Mini به صفحه کلید متصل هستند. پتانسیومتر 100k اهم برای تنظیم سرعت به پین آنالوگ A0 متصل است. پین های SDA و SCL از تراشه PCF8574 به پین A4 وصل شده اند A5 در Arduino Pro Mini با استفاده از سیم های لحیم شده به پایه های لایه بالای Pro Mini.

طرح آردوینو برای بارگیری ضمیمه شده است.

من از صفحه نمایش LCD 20 * 4 استفاده کرده ام که 4 خط اطلاعات با 20 کاراکتر در هر خط را ارائه می دهد. صفحه کلید منوی زیر را ارائه می دهد:

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] ؛ // آرایه برای نگه داشتن سرگرمی 1…..

int f8a [20] ؛ // آرایه برای نگه داشتن سرگرمی 8

برای فعال کردن دستورالعمل های DCC در ادامه کار:

برای دستورالعمل های سرعت: void amend_speed (ساختار پیام و x) {

x.data [0] = locoAdr؛

x.data [1] = 0x40 ؛ // locoMsg با 28 مرحله سرعت}

برای دستورالعمل های عملکرد:

void amend_group1 (struct Message & x) {

x.data [0] = locoAdr؛

x.data [1] = 0x80 ؛ // locoMsg با دستورالعمل گروه یک 0x80}

حلقه اصلی طرح:

حلقه خالی (void) {if (read_locoSpeed ()) {assemble_dcc_msg_speed ()؛

send_data_1 ()؛ // ارسال داده از طریق بی سیم

تأخیر (10) ؛

send_data_3 ()؛ // نمایش داده ها بر روی صفحه نمایش LCD

send_data_4 ()؛ // نمایش داده ها در مانیتور سریال}

if (عملکرد خواندن ()) {

assemble_dcc_msg_group1 ()؛

send_data_1 ()؛

تأخیر (10) ؛

send_data_3 ()؛ }}

هنگام تغییر سرعت ، داده ها را به روز کنید:

boolean read_locoSpeed () این آدرس آدرس جدید ، تنظیم سرعت و جهت را تشخیص می دهد و بر این اساس داده های HEX را اصلاح می کند. در اینجا 28 مرحله سرعت را مشخص کرده ام و برای برآوردن استاندارد NMRA S 9.2 ، داده های سرعت را باید از یک جدول جستجو پیدا کنید در 'speed_step ()'

void speed_step () {switch (locoSpeed) {

مورد 1: داده ها | = 0x02؛ زنگ تفريح؛

مورد 2: داده ها | = 0x12؛ زنگ تفريح؛

مورد 3: داده ها | = 0x03؛ زنگ تفريح؛

………

مورد 28: داده ها | = 0x1F؛ زنگ تفريح؛ }}

هنگام تغییر عملکردها ، داده ها را به روز کنید:

عملکرد خواندن بولی ()

if (fla [locoAdr] == 0) {data = 0x80؛

} // چراغ سر خاموش است

if (fla [locoAdr] == 1) {

داده = 0x90 ؛

} // چراغ سر روشن است

برای هر تابع:

if (f2a [locoAdr] == 0) {data | = 0؛ }. // عملکرد 2 خاموش است

if (f2a [locoAdr] == 1) {

داده | = 0x02؛ // تابع 2 در} 'data' با ترکیب ['| =' ترکیب بیتی یا] کدهای HEX برای هر تابع ساخته می شود.

مرحله 3: گیرنده

گیرنده
گیرنده

نمودار مدار نشان داده شده است که در آن پین 5 و 6 Arduino Pro Mini برای ارائه سیگنال DCC ارائه شده به پل H استفاده می شود. جفت های پل H به طور موازی برای افزایش ظرفیت فعلی متصل می شوند. بسته به جریانی که توسط لوکوس کشیده می شود ، ممکن است لازم باشد یک هیت سینک به دستگاه 16 پین DIP متصل شود ، یا یک پل H سنگین از خارج متصل شود.

طرح آردوینو برای بارگیری ضمیمه شده است. سیگنال DCC از یک ساعت با سرعت 2MHZ ساخته شده است

void SetupTimer2 () این کار را انجام می دهد.

این ساعت شامل "پالس های کوتاه" (58us) برای "1" در داده های DCC و "پالس های طولانی" (116us) برای "0" در داده های DCC است.

حلقه خالی است ، داده ها را از رادیو دریافت می کند و اگر یک رشته معتبر پیدا شود ، داده ها به داده های DCC تبدیل می شوند.

حلقه void (void) {if (radio.available ()) {bool done = false؛ done = radio.read (inmsg، 1)؛ // اطلاعات دریافتی را بخوانید

char rc = inmsg [0]؛ // کاراکتر read را در این آرایه قرار دهید

if (rc! = 0) {. // اگر کاراکتر برابر صفر نباشد

inString.concat (rc) ؛ // ایجاد پیام}

if (rc == '\ 0') {// if کاراکتر '/0' انتهای پیام است

Serial.println (inString) ؛ // پیام مونتاژ شده را چاپ کنید

رشته ()؛ // پیغام رشته را برای دریافت دستورالعمل های DCC جدا کنید

} } }

مرحله 4: Locos ها را اجرا کنید

Locos ها را اجرا کنید
Locos ها را اجرا کنید

برای جلوگیری از قطع شدن داده ها از حرکت چندین قطار در یک مسیر ، باید تماس های بین چرخ ها و مسیر را برای هر لوک و کامیون مورد استفاده قطع کنید.

از قطارهای در حال اجرا رایگان بدون در نظر گرفتن شرایط مسیر لذت ببرید - چه تفاوت! بدون هیچ زحمتی ، بدون شروع به کار و بدون نیاز به نظافت.

باتری هایی که استفاده کردم LLoytron AA x 12. قابل شارژ مجدد هستند. مخصوص آنها شارژر ساخته ام که 6 عدد را در یک بار شارژ می کند. (نگاه کنید به دستورالعمل)

توصیه شده: