Съдържание:

Градински влак - Arduino Wireless NMRA DCC: 4 стъпки (със снимки)
Градински влак - Arduino Wireless NMRA DCC: 4 стъпки (със снимки)

Видео: Градински влак - Arduino Wireless NMRA DCC: 4 стъпки (със снимки)

Видео: Градински влак - Arduino Wireless NMRA DCC: 4 стъпки (със снимки)
Видео: НАДИГРАВАНЕ - ЯКИ КЮЧЕЦИ - Славяново - MUSI BEND BREMEN 2024, Юни
Anonim
Image
Image
Проектиране на системата
Проектиране на системата

В допълнение към предишните инструктажи с DCC на система за мъртва релса, доразвих идеята допълнително с ръчна DCC командна станция с клавиатура и LCD дисплей. Командната станция съдържа цялото кодиране, необходимо за инструкциите на NMRA DCC, но вместо да се свързва с релсите, данните се прехвърлят чрез радиомодул RF24L01+ към приемник, монтиран в камион или под локомотива - където помещението позволява.

Разбира се, вашите локомотиви трябва да бъдат оборудвани с декодер на товароносимост, подходящ за двигателите на двигателя.

Стъпка 1: Проектиране на системата

Проектиране на системата
Проектиране на системата

Arduino Pro Mini е в основата на дизайна. Използване на Fritzing за разработване на веригата и за производство на печатни платки.

Успях да използвам една и съща печатна платка както за предавателя, така и за приемника, като по този начин спестя някои разходи.

Предавателят има връзки за клавиатура и LCD, докато приемникът не се нуждае от тях и използва H-моста за захранване на DCC изхода за локомотива.

По-нататъшното развитие включва връзки за по-голям H-мост, ако е необходимо за по-мощни локомотиви.

PCF8574 може да бъде изтрит, ако използвате LCD дисплей, който се доставя с раницата, позволяващ SCA / SCL връзки на Arduino да захранват дисплея само с 2 проводника. Списък с части: Общо = приблизително £ 60 за DCC Command Station + 1 приемник = Приблизително 10,00 паунда всеки. + батерии

Arduino Pro Mini. x 2 = 4,00 паунда

4x3 мембранна клавиатура = £ 3,00

20 x 4 LCD дисплей = £ 7,00

PCF5874 = £ 1,80

NRF24L01+. радиомодули x 2 = 5,80 паунда

Производство на печатни платки за 10 отстъпка (или може да се използва Vero платка) = £ 24 или £ 4,80 за 2 off

3.3 v Регулатор = £ 0.17 (пакет от 25 от RS Comp)

5v регулатор LM7805 = £ 0.30

H-мост SN754410ne = £ 3,00

Lloytron презареждащи се 2700 maH AA батерии x 12 = 22,00 паунда. (батериите с по -ниска maH стойност са по -евтини)

Кондензатори, саксии, щифтове, съединители и т.н = прибл

Корпус 190x110x60 mm = 8,00 £

Предавател - зарядно устройство / батерия на телефона = 2,00 паунда

Стъпка 2: Предавател

Предавател
Предавател

Схемата е показана, където щифтовете D2 до D8 на Arduino Pro Mini са свързани към клавиатурата, 100 k ом потенциометър е свързан към аналоговия щифт A0 за регулиране на скоростта. A5 на Arduino Pro Mini посредством запоени проводници към щифтовете на горния слой на Pro Mini.

Скицата на Arduino е прикачена за изтегляне.

Използвах 20 x 4 LCD дисплей, позволяващ 4 реда информация с 20 знака на ред. Клавиатурата предоставя следното меню:

1 до 9 = локо адрес * = посока 0 = светлини # = Функционално меню за бутони от 1 до 8

Основно описание на скицата на Arduino Pro Mini: Този ред на кода подрежда DCC съобщението във формат HEX. struct Съобщение [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]; // масив за задържане на реж

int fla [20]; // масив за задържане на светлини

int f1a [20]; // масив за поддържане на fun1…..

int f8a [20]; // масив за поддържане на fun8

За да позволите инструкциите на DCC да се изменят, докато вървим:

За инструкции за скорост: void replace_speed (struct Message & x) {

x.data [0] = locoAdr;

x.данни [1] = 0x40; // locoMsg с 28 скоростни стъпки}

За инструкции за функцията:

void ament_group1 (struct Message & x) {

x.data [0] = locoAdr;

x.данни [1] = 0x80; // locoMsg с групова инструкция 0x80}

Основният цикъл на скицата:

void loop (void) {if (read_locoSpeed ()) {assemble_dcc_msg_speed ();

send_data_1 (); // изпращане на данни по безжичен път

забавяне (10);

send_data_3 (); // показване на данни на LCD дисплей

send_data_4 (); // показва данни на сериен монитор}

if (read_function ()) {

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; прекъсване; }}

Актуализирайте данните, когато функциите се променят:

булева функция read_function ()

if (fla [locoAdr] == 0) {данни = 0x80;

} // фаровете на главата са изключени

if (fla [locoAdr] == 1) {

данни = 0x90;

} // включени фарове

За всяка функция:

if (f2a [locoAdr] == 0) {данни | = 0; }. // Функция 2 е изключена

ако (f2a [locoAdr] == 1) {

данни | = 0x02; // Функция 2 on} 'data' се изгражда чрез комбиниране на ['| =' съставен побитов или] HEX кодовете за всяка функция.

Стъпка 3: Приемник

Приемник
Приемник

Схемата на схемата е показана, където щифтове 5 и 6 на Arduino Pro Mini се използват за подаване на DCC сигнал, подаван към H-моста. Двойките H-мост са свързани паралелно, за да увеличат капацитета на тока. В зависимост от тока, извлечен от локомотива, може да се наложи радиатор да бъде прикрепен към 16-пиновото DIP устройство или да може да се свърже външно H-мост с висока мощност.

Скицата на Arduino е приложена за изтегляне. DCC сигналът се състои от часовник, работещ на 2MHZ

void SetupTimer2 () върши тази работа.

Часовникът включва „къси импулси“(58us) за „1“в DCC данни и „дълги импулси“(116us) за „0“в DCC данни.

Цикълът void, получава данни от радиото и ако се намери валиден низ, данните се преобразуват в DCC данни.

void loop (void) {if (radio.available ()) {bool done = false; направено = radio.read (inmsg, 1); // чете получените данни

char rc = inmsg [0]; // поставяме прочетения знак в този масив

ако (rc! = 0) {. // ако знакът не е равен на нула

inString.concat (rc); // изграждане на съобщението}

if (rc == '\ 0') {// ако знакът е '/0' края на съобщението

Serial.println (inString); // отпечатваме събраното съобщение

низ (); // деконструираме низовото съобщение, за да получим DCC инструкции

} } }

Стъпка 4: Стартирайте Locos

Пуснете Locos
Пуснете Locos

За да избегнете прекъсване на данните от движение на няколко влака по една и съща релса, трябва да изключите контактите между колелата и коловоза за всеки използван локомотив и камион.

Насладете се на безплатни влакове, независимо от условията на релсите - каква разлика! Без проблеми, без стартиране-спиране и не се изисква почистване.

Батериите, които използвах, са повторно зареждащи се LLoytron AA x 12. Създал съм зарядно устройство специално за тях, което зарежда 6 наведнъж. (вижте инструкции)

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