Страница 19 из 19

Re: Модуль обратной связи DCC (токовый) для LocoNet

Добавлено: Пн ноя 16, 2015 6:07 pm
Engineer_Keen
Кстати да, в одну, если оптопара не с двумя светодиодами... Поэтому на DCC реагирует, а на аналоге так просто не получится.

Re: Модуль обратной связи DCC (токовый) для LocoNet

Добавлено: Пт ноя 20, 2015 1:08 pm
Onegin
Оптопара реагирует на одну полярность. Достаточно перед ней разместить диодный мост, чтобы при наличии на входе любого напряжения, на входе в оптопару была именно эта полярность.

Re: Модуль обратной связи DCC (токовый) для LocoNet

Добавлено: Чт апр 21, 2016 10:24 am
shalex
Пришлось немного допиливать скетч, т.к. обнаружилась проблема при увеличении кол-ва датчиков: при одновременной отправке статусов по примерно 100 датчикам часть пакетов терялось (включение питания на рельсах). Терялось немного, 1-2 датчика, но и это критично.

В качестве простого решения переделал ф-ию отправки статуса.
[Оффтопик]
void sendSensor1 (int addr, boolean state)
{
LN_STATUS ret;
ret = LocoNet.reportSensor(addr, state);
Serial.print("SEND addr:");
Serial.print(addr);
Serial.print(" state:");
Serial.print(state);
Serial.print("try:");
Serial.print(tries);
Serial.print("ret:");
Serial.println(ret);
}

Стало:
#define SEND_TRIES 4
#define SEND_TIMEOUT 50
#define SEND_TIMEOUT_RAND 5


void sendSensor1 (int addr, boolean state)
{
byte tries = 0;
LN_STATUS ret;
do {
tries ++;
ret = LocoNet.reportSensor(addr, state);
if (ret != LN_DONE) delay(SEND_TIMEOUT + random(SEND_TIMEOUT_RAND + 1));
Serial.print("SEND addr:");
Serial.print(addr);
Serial.print(" state:");
Serial.print(state);
Serial.print("try:");
Serial.print(tries);
Serial.print("ret:");
Serial.println(ret);

} while(tries <= SEND_TRIES && ret != LN_DONE);
if (ret != LN_DONE) Serial.println("send FAILED");
}

Re: Модуль обратной связи DCC (токовый) для LocoNet

Добавлено: Ср дек 20, 2017 1:00 pm
shalex
Найден более дешевый и компактный вариант диодного моста и оптопары (вместо MCT6 и 1N4004):

- DB107
- EL357