Съдържание:

Модел на железницата - DCC командна станция, използваща Arduino :: 3 стъпки
Модел на железницата - DCC командна станция, използваща Arduino :: 3 стъпки

Видео: Модел на железницата - DCC командна станция, използваща Arduino :: 3 стъпки

Видео: Модел на железницата - DCC командна станция, използваща Arduino :: 3 стъпки
Видео: Günstiger als Märklin, ESU & Co - DCC Decoder aus Rumänien, Train-o-Matic Review und Tutorial 2024, Юли
Anonim
Image
Image
Arduino Code - Командна станция с клавиатура
Arduino Code - Командна станция с клавиатура

Актуализирано през август 2018 г.-вижте новия Instructable:

Актуализация 28 април 2016 г.: Сега 16 възможности за контрол на избирателната активност / точки към командната станция. Стрелките Т1 - Т8 са достъпни чрез бутон „В“Стрелките Т9 - Т16 са достъпни чрез бутон „С“

Актуализация на 10 март 2016 г.:

Сега са добавени 8 възможности за контрол на избирателна активност / точки към командната станция. Кодът Arduino е актуализиран съответно с помощта на стандартния пакет NMRA за стрелки (също въз основа на проучване на пакети данни Lenz / Atlas Compact за контрол на избирателната активност).

Стрелките Т1 - Т8 са достъпни чрез бутон „В“

Вижте инструкциите за използваната схема за приемник на пакети данни и необходим код на Arduino.

Актуализация на 18 януари 2016 г.:

Добавих резистор за ток (1k5 ohm) и кондензатор (10 uf) към веригата и промених кода на Arduino, за да прекъсна захранването, когато се открие пиков ток> 3200 mAmps. Спецификацията на H-моста посочва изходен сензорен ток от 377 uA на 1 Amp в товара.

Резисторът 1.5 k ohm ще доставя 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).

Кодът arduino включва стандарта 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)

напр. A 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 - командна станция“

www.oscale.net/en/simpledcc

4x4 Matrix Array 16 Key Membrane Switch Keypad (ebay) £ 1,75

2.2 инчов 240x320 сериен SPI TFT LCD дисплей модул (ebay) £ 7.19

УНИВЕРСАЛЕН АДАПТЕР ЗА ЗАХРАНВАНЕ НА 12V 5A 60W (eBay) £ 6.49

Nano V3.0 за Arduino с CH340G 5V 16M съвместими ATmega328P (ebay) 2 x £ 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 от Майкъл Бланк беше за един двигател, само напред / назад без контрол на функциите, без клавиатура и без дисплей.

Промених кода, за да включва 1 - 19 двигателя, дисплей, посока, светлини, 8 функции, аварийно спиране и ограничение на автоматичния ток.

Мостът LMD18200T може да носи до 3 ампера, което го прави подходящ за всички везни, включително G-мащаб (градински влакове). Захранването и електрониката са подходящи само за употреба на закрито, освен ако не можете да го направите устойчив на атмосферни влияния. Имам командния пункт в лятната къща с железопътни свързващи проводници, изтичащи през стената към пистата.

Стъпка 1: Код на Arduino - Командна станция с клавиатура

Моите благодарности на tvantenna2759 за посочването на 2 грешки в електрическата схема, където кодът на 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 / Избиране 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 ----------------------------------------- -------------------------------------------------- ----------------- Избиране 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 / Избиране 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“, избегнете изменение_tun1 (съобщение на структурата & x) {x.data [0] = 0x81; // аксесоар декодер 0x80 & адрес 1 x.data [1] = 0; }

невалиден изменение_tun2 (struct съобщение & x) {x.data [0] = 0x82; // аксесоар декодер 0x80 & адрес 2 x.data [1] = 0; }

Добавете нова празнота за стрелките: boolean read_turnout () {delay (20);

булева промяна_t = false; get_key ();

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

данни = 0xf8; // = двоичен 1111 1000

edit_tun1 (msg [1]);

}

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

данни = 0xf8; // = двоичен 1111 1000

edit_tun2 (съобщение [1]);

}

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

ако (tun1 == 1) {

данни | = 0; // t1a

променен_t = вярно;}

ако (tun1 == 0) {

данни | = 0x01; // t1b

променен_t = вярно;}

}

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

ако (tun2 == 1) {

данни | = 0x02; // t2a

променен_t = вярно;

}

ако (tun2 == 0) {

данни | = 0x03; // t2b

променен_t = вярно; }

}

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

ако (tun3 == 1) {

данни | = 0x04; // t3a

променен_t = вярно;

}

ако (tun3 == 0) {

данни | = 0x05; // t3b

променен_t = вярно;}

}

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

ако (tun4 == 1) {

данни | = 0x06; // t4a

променен_t = вярно;

}

ако (tun4 == 0) {

данни | = 0x07; // f4b

променен_t = вярно;}

}

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

ако (tun5 == 1) {

данни | = 0; // t5a

променен_t = вярно;

}

ако (tun5 == 0) {

данни | = 0x01; // t5b

променен_t = вярно;}

}

и др ………………….

Стъпка 2: Arduino код - TFT дисплей

Arduino код - TFT дисплей
Arduino код - TFT дисплей
Arduino код - TFT дисплей
Arduino код - TFT дисплей
Arduino код - TFT дисплей
Arduino код - TFT дисплей
Arduino код - TFT дисплей
Arduino код - TFT дисплей

Схемата на дисплея остава същата с модифициран код, който показва състоянието на 16 -те стрелки. Забележка: Кодът на библиотеката заема почти цялата памет на кода за скица, оставяйки малко място за нови функции. Ако някой има по -ефективен библиотечен файл за използвания тук TFT, моля да ме уведоми.

Стъпка 3: Контролер за явка

Контролер на избирателната активност
Контролер на избирателната активност
Контролер на избирателната активност
Контролер на избирателната активност

Вижте инструкции как да направите контролера за участие / точки.

Пълната схема контролира 16 точки и 15 аксесоара като светлини, звуци, грамофон и др.

Препоръчано: