Съдържание:
- Стъпка 1: Проектиране на системата
- Стъпка 2: Предавател
- Стъпка 3: Приемник
- Стъпка 4: Стартирайте Locos
Видео: Градински влак - Arduino Wireless NMRA DCC: 4 стъпки (със снимки)
2024 Автор: John Day | [email protected]. Последно модифициран: 2024-01-30 07:52
В допълнение към предишните инструктажи с 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
За да избегнете прекъсване на данните от движение на няколко влака по една и съща релса, трябва да изключите контактите между колелата и коловоза за всеки използван локомотив и камион.
Насладете се на безплатни влакове, независимо от условията на релсите - каква разлика! Без проблеми, без стартиране-спиране и не се изисква почистване.
Батериите, които използвах, са повторно зареждащи се LLoytron AA x 12. Създал съм зарядно устройство специално за тях, което зарежда 6 наведнъж. (вижте инструкции)
Препоръчано:
Играчки с адаптер за превключване: играчка за влак на пара, направена достъпна!: 7 стъпки (със снимки)
Играчки с адаптер за превключване: Играчка с влак на пара, направена достъпна !: Адаптацията на играчките отваря нови пътища и персонализирани решения, които позволяват на деца с ограничени двигателни способности или увреждания в развитието да взаимодействат независимо с играчките. В много случаи децата, които се нуждаят от адаптирани играчки, не могат да си представят
Контролирайте оформлението на своя модел влак с мобилния си телефон!: 11 стъпки (със снимки)
Контролирайте оформлението на модела на влака с мобилния си телефон !: Контролирането на оформлението на модела на влака с дротови дросели и регулатори на избирателната активност може да бъде добро начало за начинаещи, но те създават проблем с непоносимостта. Също така безжичните контролери, които се предлагат на пазара, могат или да контролират само някои локоми
Здравей влак! ATtiny 1614: 8 стъпки (със снимки)
Здравей влак! ATtiny 1614: За моя клас Fab Academy трябва да създам платка с микроконтролер, бутон и светодиод. Ще използвам Eagle, за да го създам
Управляван от клавиатурата модел влак V2.0 - PS/2 интерфейс: 13 стъпки (със снимки)
Управляван от клавиатурата модел влак V2.0 | PS/2 интерфейс: В един от предишните ми Instructable ви показах как да контролирате модела на железопътното оформление с помощта на клавиатура. Той се справи чудесно, но имаше недостатък да изисква работа на компютър. В тази инструкция нека да видим как да управляваме моделен влак с помощта на клавиатура
Система за наблюдение на пресичане на влак: 5 стъпки (със снимки)
Система за наблюдение на пресичане на влакове: Тази инструкция ще ви научи как да използвате MatLab за кодиране на Arduino за управление на част от железопътна система