Оглавление:

Садовый поезд - Arduino Wireless NMRA DCC: 4 шага (с изображениями)
Садовый поезд - Arduino Wireless NMRA DCC: 4 шага (с изображениями)

Видео: Садовый поезд - Arduino Wireless NMRA DCC: 4 шага (с изображениями)

Видео: Садовый поезд - Arduino Wireless NMRA DCC: 4 шага (с изображениями)
Видео: Введение в RailCom часть 2 2024, Июнь
Anonim
Image
Image
Дизайн системы
Дизайн системы

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

Конечно, ваш локомотив должен быть оснащен декодером грузоподъемности, подходящим для двигателей двигателей.

Шаг 1: Дизайн системы

Дизайн системы
Дизайн системы

В основе дизайна лежит Arduino Pro Mini. Использование Fritzing для разработки схемы и производства печатных плат.

Я смог использовать одну и ту же печатную плату как для передатчика, так и для приемника, что позволило сэкономить на некоторых затратах.

Передатчик имеет соединения для клавиатуры и ЖК-дисплея, в то время как приемник не требует их и использует H-мост для питания выхода DCC для локомотива.

Дальнейшее развитие включает соединения для большего H-моста, если требуется для более мощных локомотивов.

PCF8574 можно удалить, если вы используете ЖК-дисплей, который идет в комплекте с рюкзаком, позволяющий SCA / SCL-соединениям на Arduino питать дисплей, используя только 2 провода. Список запчастей: всего = около 60 фунтов стерлингов за командную станцию DCC + 1 приемник Дополнительные расходы на приемник = 10,00 фунтов стерлингов за штуку. + батарейки

Arduino Pro Mini. x 2 = 4 фунта стерлингов

Мембранная клавиатура 4x3 = 3,00 фунта стерлингов

ЖК-дисплей 20 x 4 = 7,00 фунтов стерлингов

PCF5874 = 1,80 фунта стерлингов

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

Изготовление печатной платы за 10 шт. (Или можно использовать плату Vero) = 24 £ или 4,80 £ за 2 шт.

Регулятор 3,3 В = 0,17 £ (упаковка из 25 шт. От RS Comp)

Регулятор 5 В LM7805 = 0,30 £

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

Перезаряжаемые батареи Lloytron емкостью 2700 мАч x 12 = 22,00 фунта стерлингов. (батареи с меньшим номиналом мАч дешевле)

Конденсаторы, электролизеры, контакты, разъемы и т. Д. = 2,00 фунта стерлингов приблизительно

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

Передатчик - зарядное устройство для телефона / аккумулятор = 2,00 фунта стерлингов

Шаг 2: передатчик

Передатчик
Передатчик

На принципиальной схеме контакты D2 - D8 на Arduino Pro Mini подключены к клавиатуре. Потенциометр 100 кОм подключен к аналоговому контакту A0 для регулировки скорости. Контакты SDA и SCL, образующие микросхему PCF8574, подключены к контактам A4 и A5 на Arduino Pro Mini с помощью припаянных проводов к контактам на верхнем слое Pro Mini.

Эскиз Arduino прилагается для скачивания.

Я использовал ЖК-дисплей 20 x 4, позволяющий выводить 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 по ходу:

Для инструкций по скорости: voidmend_speed (struct Message & x) {

x.data [0] = locoAdr;

x.data [1] = 0x40; // locoMsg с 28 шагами скорости}

Для инструкций по функциям:

void correc_group1 (struct Message & x) {

x.data [0] = locoAdr;

x.data [1] = 0x80; // locoMsg с инструкцией первой группы 0x80}

Основной цикл скетча:

недействительный цикл (недействительный) {если (read_locoSpeed ()) {build_dcc_msg_speed ();

send_data_1 (); // отправляем данные по беспроводной сети

задержка (10);

send_data_3 (); // выводим данные на ЖК-дисплей

send_data_4 (); // отображаем данные на последовательном мониторе}

if (read_function ()) {

Assembly_dcc_msg_group1 ();

send_data_1 ();

задержка (10);

send_data_3 (); }}

Обновлять данные при изменении скорости:

boolean read_locoSpeed () Это обнаруживает новый адрес локомотива, скорость или настройку направления и соответственно изменяет HEX-данные. Здесь я указал 28 шагов скорости и для соответствия стандарту NMRA S 9.2 данные скорости должны быть найдены из справочной таблицы в 'speed_step ()'

void speed_step () {переключатель (locoSpeed) {

случай 1: данные | = 0x02; перерыв;

случай 2: данные | = 0x12; перерыв;

случай 3: данные | = 0x03; перерыв;

………

случай 28: данные | = 0x1F; перерыв; }}

Обновлять данные при изменении функций:

логическая функция read_function ()

если (fla [locoAdr] == 0) {данные = 0x80;

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

if (fla [locoAdr] == 1) {

данные = 0x90;

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

Для каждой функции:

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

if (f2a [locoAdr] == 1) {

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

Шаг 3: Получатель

Получатель
Получатель

На принципиальной схеме показаны контакты 5 и 6 Arduino Pro Mini, которые используются для передачи сигнала DCC на H-мост. Пары H-моста подключаются параллельно для увеличения допустимой нагрузки по току. В зависимости от тока, потребляемого локомотивом, может потребоваться присоединение радиатора к 16-контактному DIP-устройству, или H-мост для тяжелых условий эксплуатации может быть подключен снаружи.

Скетч Arduino прилагается для загрузки. Сигнал DCC формируется часами, работающими на частоте 2 МГц.

void SetupTimer2 () выполняет эту работу.

Часы включают «короткие импульсы» (58 мксек) для «1» в данных DCC и «длинные импульсы» (116 мксек) для «0» в данных DCC.

Цикл void получает данные от радиомодуля, и если действительная строка найдена, данные преобразуются в данные DCC.

недействительный цикл (void) {если (radio.available ()) {bool done = false; done = radio.read (inmsg, 1); // читаем полученные данные

char rc = inmsg [0]; // помещаем считанный символ в этот массив

если (rc! = 0) {. // если символ не равен нулю

inString.concat (RC); // создаем сообщение}

if (rc == '\ 0') {// если символ равен '/ 0' конец сообщения

Serial.println (inString); // выводим собранное сообщение

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

} } }

Шаг 4: Запустите локомотивы

Запустите локомотивы
Запустите локомотивы

Чтобы избежать прерывания данных при движении нескольких поездов по одному и тому же пути, необходимо отключить контакты между колесами и путём для каждого задействованного локомотива и грузовика.

Наслаждайтесь поездами, курсирующими бесплатно, независимо от состояния путей - какая разница! Никаких хлопот, старт-стопа и очистки не требуется.

Я использовал перезаряжаемые батареи LLoytron AA x 12. Я сделал зарядное устройство специально для них, которое заряжает 6 штук за раз. (см. инструкции)

Рекомендуемые: