Բովանդակություն:

Մոդելային երկաթուղի - DCC հրամանատարական կայան օգտագործելով Arduino :: 3 քայլ
Մոդելային երկաթուղի - DCC հրամանատարական կայան օգտագործելով Arduino :: 3 քայլ

Video: Մոդելային երկաթուղի - DCC հրամանատարական կայան օգտագործելով Arduino :: 3 քայլ

Video: Մոդելային երկաթուղի - DCC հրամանատարական կայան օգտագործելով Arduino :: 3 քայլ
Video: КАЛИНИНГРАД сегодня 2020. РУССКАЯ БАЛТИКА. Отпуск без путевки. 2024, Հուլիսի
Anonim
Image
Image
Arduino Code - Command Station With Keypad
Arduino Code - Command Station With Keypad

Թարմացվել է օգոստոս 2018-տես նոր Instructable ՝

Թարմացում 2016 թ. Ապրիլի 28. Այժմ 16 մասնակցության / միավորների վերահսկման կարողություն դեպի հրամանատարական կայան: Մարդկանց մասնակցությունը T1 - T8 հասանելի է «B» ստեղնով «T» - T16 մասնակցությունը հասանելի է «C» ստեղնով

Թարմացում 10 մարտի 2016 թ

Այժմ հրամանատարական կայանին ավելացվել է մասնակցության / միավորների կառավարման 8 հնարավորություն: Arduino ծածկագիրը համապատասխանաբար թարմացվել է ՝ օգտագործելով NMRA ստանդարտ փաթեթը մասնակցության համար (նույնպես հիմնված է Lenz / Atlas Compact տվյալների փաթեթների ուսումնասիրության վրա ՝ մասնակցության վերահսկման համար):

Մարդկանց մասնակցությունը T1 - T8 հասանելի է «B» ստեղնով

Տե՛ս հրահանգվող տվյալների փաթեթների ընդունիչ սխեմայի վրա և անհրաժեշտ է Arduino ծածկագիր:

Թարմացում 18 հունվարի 2016 թ.

Շղթայում ես ավելացրել եմ ընթացիկ զգայարանային դիմադրություն (1k5 օմ) և կոնդենսատոր (10 uf) և փոփոխել եմ Arduino ծածկագիրը `հոսանքը անջատելու համար, երբ հայտնաբերվում է> 3200 մԱ / վ առավելագույն հոսանք: H-Bridge բնութագրում նշվում է ելքային զգայուն հոսանքի 377 uA 1 Amp բեռի մեջ:

Անալոգային կապի վրա 1.5 կիլոմատ հզորությամբ դիմադրիչը կհասցնի 0.565 վոլտ մեկ Amp- ի վրա: Անալոգային մուտքի վրա 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 -ը առանձնահատուկ նշանակություն ունի)

Փաթեթները դասավորված են ըստ արագության աստիճանների, երկար / կարճ հասցեի և Ֆունկցիոնալ խմբի ցուցումների:

Բոլոր հրահանգների բայթերին նախորդում է 11111111 (կամ անգործուն փաթեթ) «1» բիթերի նախաբան, որին հաջորդում է.

օրինակ A 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 - command station» - ից

www.oscale.net/hy/simpledcc

4x4 Matrix Array 16 Key Membrane Switch Keypad (ebay) 1.75 £

2.2 դյույմ 240x320 սերիական SPI TFT LCD ցուցադրման մոդուլ (ebay) 7.19 £

UNIVERSAL 12V 5A 60W POWER SUPPLY AC ADAPTER (ebay) 49 6.49

Nano V3.0 Arduino- ի համար CH340G 5V 16M- ով համատեղելի ATmega328P (ebay) 2 x £ 3.30 = 60 6.60

Շարժիչային վարորդի մոդուլ LMD18200T Arduino R3- ի համար (ebay) ՝ 6.99 ֆունտ ստեռլինգ

Միակցիչներ, մետաղալար, vero տախտակ, պոտենցիոմետր ՝ մոտ 3.50 ֆունտ

Ընդհանուր ՝ 32.52 ֆունտ

Հիմնական հրամանատարական կայանն առանց tft էկրանի և 1 x nano- ի կլինի 22.03 ֆունտ

[Նշում. Հնարավոր է հիշողության քարտ ավելացնել TFT էկրանին և փոփոխել կոդը `ընտրված շարժիչների պատկերները ցուցադրելու համար, չնայած գրադարանի կոդերը պետք է խմբագրվեն` էսքիզի համար ավելի շատ հիշողություն ստեղծելու համար: Էսքիզների ներկայիս չափը առավելագույնն է TFT Arduino Nano- ի համար]

Մայքլ Բլանկի Arduino- ի օրիգինալ ծածկագիրը նախատեսված էր մեկ շարժիչի համար ՝ առաջ / հետընթաց միայն առանց գործառույթի կառավարման, առանց ստեղնաշարի և առանց ցուցադրման:

Ես փոփոխել եմ ծածկագիրը ՝ ներառելով 1 - 19 շարժիչ, ցուցադրման էկրան, ուղղություն, լույսեր, 8 գործառույթ, վթարային կանգառ և ավտոմատ ընթացիկ սահմանաչափ:

LMD18200T կամուրջը կարող է կրել մինչև 3 ամպեր, ինչը այն հարմար է դարձնում բոլոր կշեռքների համար, ներառյալ G- սանդղակը (այգու գնացքներ): Էլեկտրաէներգիայի մատակարարումը և էլեկտրոնիկան հարմար են միայն ներքին օգտագործման համար, եթե դուք չեք կարող դա ամբողջովին պաշտպանել եղանակից: Ես ունեմ հրամանատարական կայանը ամառանոցում, որի միջով երկաթուղին միանում է լարերով և պատի միջով անցնում դեպի ուղի:

Քայլ 1. Arduino կոդ - հրամանատարական կայան `ստեղնաշարով

Իմ շնորհակալությունն եմ հայտնում tvantenna2759- ին `սխեմայի 2 սխալ մատնանշելու համար, որտեղ Arduino ծածկագիրը չի համընկնում էլեկտրագծերի հետ, որն այժմ թարմացվել է (21 հոկտեմբերի 2017 թ.):

Այժմ հրամանատարական կայանին ավելացվեց 16 մասնակցություն: Տե՛ս Arduino Mini Pro մոդուլը ՝ մասնակցության / միավորների միացման սխեմայի վերաբերյալ:

Փոփոխված ծածկագիրը ներառյալ մասնակցության վերահսկողությունը կցված է ստորև:

Լրացուցիչ պարագաների ապակոդավորման փաթեթն է ՝ 0 10AAAAAA 0 1AAACDDD 0 EEEEEEEE 1 Լենսի կողմից օգտագործված փաթեթը (Կոմպակտ / Ատլաս) միավորների վերահսկման համար ես օգտագործել եմ հետևյալ երկուական փաթեթային ձևաչափը ՝ 1 և 2 բայթերի համար. 0001 1111 1000 / մասնակցություն 1 բ: 1000 0001 1111 1001 Քվեարկությանը մասնակցած 2 ա: 1000 0001 1111 1010 / մասնակցություն 2 բ: 1000 0001 1111 1011 Քվեարկությանը մասնակցած 3 ա: 1000 0001 1111 1100 / մասնակցություն 3 բ: 1000 0001 1111 1101 Ընտրողների մասնակցություն 4a: 1000 0001 1111 1110 / մասնակցություն 4 բ: 1000 0001 1111 1111 tunAddr = 2 -------------------------------------------- ------------------------------------------------------ ----------------- Քվեարկությանը մասնակցած 5 ա: 1000 0010 1111 1000 / Մասնակցություն 5 բ: 1000 0010 1111 1001 Քվեարկությանը մասնակցած 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 և այլն ………

Քաղվածք փոփոխված կոդից. Ավելացրեք ևս 2 «կառուցվածքային» հաղորդագրության թարմացում խուսափեք amend_tun1 (struct Հաղորդագրություն & x) {x.data [0] = 0x81; // աքսեսուարի ապակոդավորիչ 0x80 & հասցե 1 x.տվյալներ [1] = 0; }

անվավեր amend_tun2 (struct Message & x) {x.data [0] = 0x82; // աքսեսուարի ապակոդավորիչ 0x80 & հասցե 2 x.տվյալներ [1] = 0; }

Ավելացրեք նոր դատարկություն մասնակցության համար. Boolean 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

փոխված_t = ճշմարիտ;}

եթե (tun1 == 0) {

տվյալներ | = 0x01; // t1b

փոխված_t = ճշմարիտ;}

}

եթե (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

փոխված_t = ճշմարիտ;}

}

եթե (key_val == 404 && շրջադարձ == 1) {

եթե (tun4 == 1) {

տվյալներ | = 0x06; // t4a

փոխված_թ = ճշմարիտ;

}

եթե (tun4 == 0) {

տվյալներ | = 0x07; // f4b

փոխված_t = ճշմարիտ;}

}

եթե (key_val == 505 && turn == 1) {

եթե (tun5 == 1) {

տվյալներ | = 0; // t5a

փոխված_թ = ճշմարիտ;

}

եթե (tun5 == 0) {

տվյալներ | = 0x01; // t5b

փոխված_t = ճշմարիտ;}

}

և այլն ………………………

Քայլ 2: Arduino կոդ - TFT էկրան

Arduino կոդ - TFT էկրան
Arduino կոդ - TFT էկրան
Arduino կոդ - TFT էկրան
Arduino կոդ - TFT էկրան
Arduino կոդ - TFT էկրան
Arduino կոդ - TFT էկրան
Arduino կոդ - TFT էկրան
Arduino կոդ - TFT էկրան

Theուցադրման սխեման մնում է նույնը `փոփոխված ծածկագրով` 16 մասնակցի կարգավիճակը ցույց տալու համար: Նշում. Գրադարանի ծածկագիրը զբաղեցնում է էսքիզային ծածկագրի գրեթե ամբողջ հիշողությունը `քիչ տեղ թողնելով նոր գործառույթների համար: Եթե որևէ մեկն այստեղ օգտագործվող TFT- ի համար ավելի արդյունավետ գրադարանային ֆայլ ունի, խնդրում եմ ինձ տեղյակ պահի:

Քայլ 3: Մասնակցության վերահսկիչ

Մասնակցության վերահսկիչ
Մասնակցության վերահսկիչ
Մասնակցության վերահսկիչ
Մասնակցության վերահսկիչ

Տեսեք, թե ինչպես կարելի է դարձնել մասնակցության / միավորների վերահսկիչ:

Ամբողջական սխեման վերահսկում է 16 միավոր և 15 պարագաներ, ինչպիսիք են լույսերը, ձայները, պտտվող սարքը և այլն:

Խորհուրդ ենք տալիս: