Съдържание:
- Стъпка 1: Код на Arduino - Командна станция с клавиатура
- Стъпка 2: Arduino код - TFT дисплей
- Стъпка 3: Контролер за явка
Видео: Модел на железницата - DCC командна станция, използваща Arduino :: 3 стъпки
2024 Автор: John Day | [email protected]. Последно модифициран: 2024-01-30 07:53
Актуализирано през август 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 дисплей
Схемата на дисплея остава същата с модифициран код, който показва състоянието на 16 -те стрелки. Забележка: Кодът на библиотеката заема почти цялата памет на кода за скица, оставяйки малко място за нови функции. Ако някой има по -ефективен библиотечен файл за използвания тук TFT, моля да ме уведоми.
Стъпка 3: Контролер за явка
Вижте инструкции как да направите контролера за участие / точки.
Пълната схема контролира 16 точки и 15 аксесоара като светлини, звуци, грамофон и др.
Препоръчано:
Мини метеорологична станция, използваща Arduino и ThingSpeak: 4 стъпки
Мини метеорологична станция, използваща Arduino и ThingSpeak: Здравейте на всички. В тази инструкция ще ви водя през стъпките за създаване на персонализирана мини метеорологична станция. Също така, ние ще използваме ThingSpeak API, за да качваме нашите метеорологични данни на техните сървъри, или каква е целта на метеорологичната информация
Стайна метеорологична станция, използваща Arduino & BME280: 4 стъпки
Стайна метеорологична станция, използваща Arduino и BME280: По -рано споделих обикновена метеорологична станция, която показваше температурата и влажността на района. Проблемът с него беше, че ще отнеме време за актуализиране и данните не бяха точни. В този урок ще направим вътрешен монитор за времето
Метеорологична станция Arduino, използваща BMP280 -DHT11 - Температура, влажност и налягане: 8 стъпки
Метеорологична станция Arduino, използваща BMP280 -DHT11 - Температура, влажност и налягане: В този урок ще се научим как да направим метеорологична станция, която ще показва ТЕМПЕРАТУРА, ВЛАЖНОСТ И НАЛЯГАНЕ на LCD дисплея TFT 7735 Гледайте демонстрационен видеоклип
Метеорологична станция, използваща Arduino UNO: 7 стъпки
Метеорологична станция, използваща Arduino UNO: Създадена от: Hazel Yang Този проект е метеорологична станция, използваща Arduino UNO платка за контрол на потока от данни, DHT22 сензор за събиране на данни и OLED екран за показване на данните
Външна метеорологична станция, използваща Arduino: 7 стъпки
Външна метеорологична станция, използваща Arduino: Използвани материали: Цените са приблизителни и по памет. NodeMCU V3 Lua - 3 € Цифрова температура и влажност DTH 22 - 2 € Сензорният модул на фоторезистора (LDR) открива чувствителен към светлина фотодиод за Arduino - 0,80 € 1 комплект/лот Сензор за откриване на сняг/дъждовни капки