01.10.2017, 22:10 | #126 |
Московский модуль
Регистрация: 02.02.2015
Адрес: Москва
Сообщений: 942
Сказал(а) 'не согласен(а)'!: 9
Сказали 'не согласен'! 2 раз(а) в 2 сообщениях
Сказал(а) спасибо: 3,989
Поблагодарили 3,315 раз(а) в 638 сообщениях
:
0 за это сообщение 0 Всего Репутация: репутация неоспорима (3330)
|
Не знаю, можно ли сравнить, у меня на стрелочном пульте при включении и загрузки программы сначала опрашиваются тумблера и отправляются команды по адресам чтобы стрелки перевелись в соответствии с положением тумблеров.
Может также как то ? |
|
Пользователь сказал cпасибо: |
01.10.2017, 22:16 | #127 | |
Местный
Регистрация: 08.07.2015
Адрес: МО
Сообщений: 2,865
Сказал(а) 'не согласен(а)'!: 0
Сказали 'не согласен'! 3 раз(а) в 2 сообщениях
Сказал(а) спасибо: 4,665
Поблагодарили 3,280 раз(а) в 1,176 сообщениях
:
0 за это сообщение 1 Всего Репутация: репутация неоспорима (3291)
|
Цитата:
Случилось ЧП, отрубилось питание на рельсах, на шину выдана команда PWR_OFF. Потом перевели тумблер, а потом включили питание и дали команду PWR_ON. Собственно уже добавил в код проверку. И если питание отключено, то отправка не идет, стоит в очереди. Какое-то время можно щелкать тумблерами, но если долго, то прога зависнет. Надо делать проверку на переполнение и если оно было, то при по команде PWR_ON буфер чистить и отправлять вообще все что, есть. |
|
|
01.10.2017, 22:25 | #128 |
Московский модуль
Регистрация: 02.02.2015
Адрес: Москва
Сообщений: 942
Сказал(а) 'не согласен(а)'!: 9
Сказали 'не согласен'! 2 раз(а) в 2 сообщениях
Сказал(а) спасибо: 3,989
Поблагодарили 3,315 раз(а) в 638 сообщениях
:
0 за это сообщение 0 Всего Репутация: репутация неоспорима (3330)
|
|
|
Пользователь сказал cпасибо: |
01.10.2017, 22:33 | #129 |
Местный
Регистрация: 08.07.2015
Адрес: МО
Сообщений: 2,865
Сказал(а) 'не согласен(а)'!: 0
Сказали 'не согласен'! 3 раз(а) в 2 сообщениях
Сказал(а) спасибо: 4,665
Поблагодарили 3,280 раз(а) в 1,176 сообщениях
:
0 за это сообщение 1 Всего Репутация: репутация неоспорима (3291)
|
|
|
01.10.2017, 22:56 | #130 | ||
Местный
Регистрация: 29.06.2010
Адрес: Москва
Сообщений: 2,838
Сказал(а) 'не согласен(а)'!: 6
Сказали 'не согласен'! 2 раз(а) в 2 сообщениях
Сказал(а) спасибо: 974
Поблагодарили 2,653 раз(а) в 1,570 сообщениях
:
0 за это сообщение 1 Всего Репутация: репутация неоспорима (2679)
|
Там отдельная DCC шина. #201
Цитата:
Цитата:
Для того локонет и делали чтоб от рельсов не зависеть. |
||
|
Пользователь сказал cпасибо: |
01.10.2017, 23:21 | #131 |
Местный
Регистрация: 08.07.2015
Адрес: МО
Сообщений: 2,865
Сказал(а) 'не согласен(а)'!: 0
Сказали 'не согласен'! 3 раз(а) в 2 сообщениях
Сказал(а) спасибо: 4,665
Поблагодарили 3,280 раз(а) в 1,176 сообщениях
:
0 за это сообщение 1 Всего Репутация: репутация неоспорима (3291)
|
|
|
01.10.2017, 23:34 | #132 |
Местный
Регистрация: 29.06.2010
Адрес: Москва
Сообщений: 2,838
Сказал(а) 'не согласен(а)'!: 6
Сказали 'не согласен'! 2 раз(а) в 2 сообщениях
Сказал(а) спасибо: 974
Поблагодарили 2,653 раз(а) в 1,570 сообщениях
:
0 за это сообщение 1 Всего Репутация: репутация неоспорима (2679)
|
|
|
Пользователь сказал cпасибо: |
01.10.2017, 23:56 | #133 |
Местный
Регистрация: 08.07.2015
Адрес: МО
Сообщений: 2,865
Сказал(а) 'не согласен(а)'!: 0
Сказали 'не согласен'! 3 раз(а) в 2 сообщениях
Сказал(а) спасибо: 4,665
Поблагодарили 3,280 раз(а) в 1,176 сообщениях
:
0 за это сообщение 1 Всего Репутация: репутация неоспорима (3291)
|
Т.е. я так понял не волноваться, КС примет стрелочную команду по локонету, даже если рельсы выключены. Хотя если не примет, то можно и допилить это дело. Пусть потом стрелками дергает, отрабатывая переключения тумблера.
|
|
02.10.2017, 02:45 | #134 |
Заглянувший
Регистрация: 27.02.2017
Адрес: Нашенский
Сообщений: 147
Сказал(а) 'не согласен(а)'!: 0
Сказали 'не согласен'! 0 раз(а) в 0 сообщениях
Сказал(а) спасибо: 302
Поблагодарили 439 раз(а) в 97 сообщениях
:
0 за это сообщение 0 Всего Репутация: - очень-очень хороший человек (439)
|
|
|
Пользователь сказал cпасибо: |
02.10.2017, 15:00 | #135 |
Местный
Регистрация: 22.07.2014
Адрес: Санкт Петербург
Сообщений: 1,431
Сказал(а) 'не согласен(а)'!: 18
Сказали 'не согласен'! 6 раз(а) в 5 сообщениях
Сказал(а) спасибо: 2,959
Поблагодарили 1,496 раз(а) в 716 сообщениях
:
0 за это сообщение 0 Всего Репутация: обеспечил(а) себе прекрасное будущее (1507)
|
|
|
Пользователь сказал cпасибо: |
02.10.2017, 15:48 | #136 |
Местный
Регистрация: 08.07.2015
Адрес: МО
Сообщений: 2,865
Сказал(а) 'не согласен(а)'!: 0
Сказали 'не согласен'! 3 раз(а) в 2 сообщениях
Сказал(а) спасибо: 4,665
Поблагодарили 3,280 раз(а) в 1,176 сообщениях
:
0 за это сообщение 1 Всего Репутация: репутация неоспорима (3291)
|
согласен, для дом. условий надо переходить на навесные компоненты и одностороннюю плату. Но мне проще заказать, если тестовый вариант на макетке заработает. В данном случае все компоненты "главной" платы, да и все остальные протестированы в ЛУТе. Тут главная запара будет с софтом.
|
|
Пользователь сказал cпасибо: |
02.10.2017, 22:55 | #137 |
Местный
Регистрация: 08.07.2015
Адрес: МО
Сообщений: 2,865
Сказал(а) 'не согласен(а)'!: 0
Сказали 'не согласен'! 3 раз(а) в 2 сообщениях
Сказал(а) спасибо: 4,665
Поблагодарили 3,280 раз(а) в 1,176 сообщениях
:
0 за это сообщение 1 Всего Репутация: репутация неоспорима (3291)
|
Пока успехи такие: создан черновой вариант кода, на базе предыдущих разработок.
К сожалению, управление 32 сервами уже просто не помещается (реализация плавности перехода между состояниями) плюс пока непонятно как detach делать на модуле PCA9685 Что поместилось: - опрашивать и в случае изменений отправлять статусы датчиков 24 шт, адрес начала серии настраивается в CV - программная задержка на отправку "свободен", что фильтрует плохой контакт и вообще полезно - плюс при сработке датчика можно отправить либо датчик, либо стрелку либо и и то и другое(задается в CV) - управляемые по стрелочным адреса 32 каналама PWM, но только для просто переключения между 2 уровнями PWM_HIGH и PWM_LOW (уровни задаются в CV, первый адрес тоже) - управление КЗ и автореверс - отправка датчика КЗ и команды Power Off при КЗ - индикация режимов светодиодами - традиционное чтение/запись CV по Loconet - режим программирования с индикацией Пока можно сэкономить 24 байта на CV настройки режима режима сработки датчика, если принять за правило, что если есть адрес стрелки в нужном CV, то отправлять еще и стрелочную команду, помимо "датчиковой". Код:
Скетч использует 15462 байт (50%) памяти устройства. Всего доступно 30720 байт. Глобальные переменные используют 1573 байт (76%) динамической памяти, оставляя 475 байт для локальных переменных. Максимум: 2048 байт. Недостаточно памяти, программа может работать нестабильно. |
|
3 пользователя(ей) сказали cпасибо: |
02.10.2017, 23:11 | #138 | |||
Местный
Регистрация: 29.06.2010
Адрес: Москва
Сообщений: 2,838
Сказал(а) 'не согласен(а)'!: 6
Сказали 'не согласен'! 2 раз(а) в 2 сообщениях
Сказал(а) спасибо: 974
Поблагодарили 2,653 раз(а) в 1,570 сообщениях
:
0 за это сообщение 1 Всего Репутация: репутация неоспорима (2679)
|
Цитата:
Цитата:
Цитата:
Другое дело, что на основе схемы и кода можно будет сделать отдельный пульт. |
|||
|
3 пользователя(ей) сказали cпасибо: |
02.10.2017, 23:44 | #139 | |
Местный
Регистрация: 08.07.2015
Адрес: МО
Сообщений: 2,865
Сказал(а) 'не согласен(а)'!: 0
Сказали 'не согласен'! 3 раз(а) в 2 сообщениях
Сказал(а) спасибо: 4,665
Поблагодарили 3,280 раз(а) в 1,176 сообщениях
:
0 за это сообщение 1 Всего Репутация: репутация неоспорима (3291)
|
Цитата:
Ну почему напрасно PCA9685 - 32 канала освещения уже хорошо. Немного допилить - и для двухцветных светофоров постоянного свечения можно использовать, как тот декодер по ссылке. То, что нужно? спасибо большое! ... В-общем "выкинул" весь отладочный текст и вывод в "сериал и теперь: Код:
Скетч использует 14374 байт (46%) памяти устройства. Всего доступно 30720 байт. Глобальные переменные используют 1353 байт (66%) динамической памяти, оставляя 695 байт для локальных переменных. Максимум: 2048 байт. Так что памяти еще немного есть, можно попробовать прикрутить плавный перевод PWM. Хотя много накладных расходов памяти, но можно попробовать. |
|
|
2 пользователя(ей) сказали cпасибо: |
03.10.2017, 02:41 | #140 |
Заглянувший
Регистрация: 27.02.2017
Адрес: Нашенский
Сообщений: 147
Сказал(а) 'не согласен(а)'!: 0
Сказали 'не согласен'! 0 раз(а) в 0 сообщениях
Сказал(а) спасибо: 302
Поблагодарили 439 раз(а) в 97 сообщениях
:
0 за это сообщение 0 Всего Репутация: - очень-очень хороший человек (439)
|
|
|
Пользователь сказал cпасибо: |
03.10.2017, 08:09 | #141 |
Пользователь
Регистрация: 23.06.2016
Адрес: Санкт-Петербург
Сообщений: 925
Сказал(а) 'не согласен(а)'!: 25
Сказали 'не согласен'! 11 раз(а) в 11 сообщениях
Сказал(а) спасибо: 1,321
Поблагодарили 606 раз(а) в 318 сообщениях
:
0 за это сообщение 0 Всего Репутация: - это имя известно всем (618)
|
|
|
Пользователь сказал cпасибо: |
03.10.2017, 08:57 | #142 |
Местный
Регистрация: 06.03.2009
Адрес: Питер
Сообщений: 3,693
Сказал(а) 'не согласен(а)'!: 10
Сказали 'не согласен'! 0 раз(а) в 0 сообщениях
Сказал(а) спасибо: 6,942
Поблагодарили 4,844 раз(а) в 1,822 сообщениях
:
0 за это сообщение 0 Всего Репутация: репутация неоспорима (5127)
|
ИМХОЭто если нагрузки на них нет. А когда серва, из-за нагрузки не дойдёт до нужного положения потенциометра, то тут и появится жужание.
__________________
HO, цифра, OpenDCC, S-88N, OpenCar, BiDiB С приветом из подземки!!! |
|
2 пользователя(ей) сказали cпасибо: |
03.10.2017, 13:00 | #143 |
Местный
Регистрация: 08.07.2015
Адрес: МО
Сообщений: 2,865
Сказал(а) 'не согласен(а)'!: 0
Сказали 'не согласен'! 3 раз(а) в 2 сообщениях
Сказал(а) спасибо: 4,665
Поблагодарили 3,280 раз(а) в 1,176 сообщениях
:
0 за это сообщение 1 Всего Репутация: репутация неоспорима (3291)
|
Да, прога пишется на C++, который стандартный для Ардуино.
Очень много, да почти весь функционал, вынесен в библиотеку и оформлен в виде объектов. Один объект - на одну функцию(например В основном же скетче, выполняется связывание всех компонентов воедино. Например, ниже обработчик сработок от ОС, который поддерживает три режима - отправку сенсора, отправку стрелочной команды или все вместе: Код:
... void notifyFBSensor(uint8_t index, uint8_t State){ Serial.print("U FB:"); Serial.print(index); Serial.print(" s:"); Serial.println(State); switch (lncv[CV_FB_MODE_CH0 + index]) { case FB_MODE_FB_ONLY: CmdQueue.PushCmd(CMD_FEEDBACK, lncv[CV_ADDR + index], State, 0); break; case FB_MODE_TR_ONLY: CmdQueue.PushCmd(CMD_TURNOUT, lncv[CV_TRN_ADDR_CH0 + index], State, 0); break; case FB_MODE_FB_TR: CmdQueue.PushCmd(CMD_FEEDBACK, lncv[CV_ADDR + index], State, 0); CmdQueue.PushCmd(CMD_TURNOUT, lncv[CV_TRN_ADDR_CH0 + index], State, 0); default: break; } ... } ---------- Сообщение добавлено в 13:00 ---------- Предыдущие сообщение было в 12:56 ---------- Этого как раз хочется избежать - переписывания. |
|
2 пользователя(ей) сказали cпасибо: |
03.10.2017, 17:09 | #144 |
Заглянувший
Регистрация: 27.02.2017
Адрес: Нашенский
Сообщений: 147
Сказал(а) 'не согласен(а)'!: 0
Сказали 'не согласен'! 0 раз(а) в 0 сообщениях
Сказал(а) спасибо: 302
Поблагодарили 439 раз(а) в 97 сообщениях
:
0 за это сообщение 0 Всего Репутация: - очень-очень хороший человек (439)
|
Это меняет дело. Если бы брались какие-то стандартные подпрограммы с просторов инета, тогда можно было бы со временем их оптимизировать. А так получается только ассемблер поможет впихнуть невпихиваемое.
оффтопик |
|
03.10.2017, 17:23 | #145 |
Местный
Регистрация: 08.07.2015
Адрес: МО
Сообщений: 2,865
Сказал(а) 'не согласен(а)'!: 0
Сказали 'не согласен'! 3 раз(а) в 2 сообщениях
Сказал(а) спасибо: 4,665
Поблагодарили 3,280 раз(а) в 1,176 сообщениях
:
0 за это сообщение 1 Всего Репутация: репутация неоспорима (3291)
|
А там, на просторах, особо ничего приличного нет из "стандартного" для применения в декодерах. Открытый код, который публикуют некоторые ардуинщики, иногда лучше просто сразу пропустить мимо, чтобы не терять время, т.к. судя по коду - даже не надо тестировать, чтобы понять, что работать не будет или будет, но с дикими ограничениями.
Собственно мне нравится, как написана библиотека Loconet - код выглядит очень неплохо. Ее и использую. Вот, собственно, из стандартного - только несколько библиотек, чтобы "велосипеды" не плодить. Все остальное (библиотека классов) для моего проекта написано мной и с нуля. Может быть чутка взято из моих же предыдущих разработок. При этом я отдаю себе отчет, что мой код тоже не идеален, канеш. Например, вот список подключенных модулей в основном скетче. Первые четыре - "стандартные", а остальное - самописное: Код:
#include <Wire.h> #include <LocoNet.h> #include <EEPROMex.h> #include <MemoryFree.h> #include <cmdqueue.h> #include <shortctrl.h> #include <dccctrl.h> #include <sensors.h> #include <prgctrl.h> #include <i2cqueue.h> #include <I2CPwrCtrl.h> #include <fbmodes.h> Последний раз редактировалось shalex; 03.10.2017 в 19:38. |
|
3 пользователя(ей) сказали cпасибо: |
04.10.2017, 00:23 | #146 |
Местный
Регистрация: 08.07.2015
Адрес: МО
Сообщений: 2,865
Сказал(а) 'не согласен(а)'!: 0
Сказали 'не согласен'! 3 раз(а) в 2 сообщениях
Сказал(а) спасибо: 4,665
Поблагодарили 3,280 раз(а) в 1,176 сообщениях
:
0 за это сообщение 1 Всего Репутация: репутация неоспорима (3291)
|
Очередной промежуточный итог...
самое главное - добавил для PWM режим плавного перевода из крайних состояний. Попробовал в отладке - вроде работает. На самой медленной скорости "1" одна серва переводится примерно 10 сек, десять серв примерно столько же, на 30 сотых позже. Нормально, в-общем. Правда тестировал без серв и плат PCA, закомментировав обработку ошибок инициализации I2C. Когда будет реальная отправка команд, самая медленная скорость сервы может стать еще медленнее и более того, зависеть от кол-ва плат Возможно и очень не сильно, все таки редко одновременно переводится много серв. На 1-2 будет совсем не заметно. Все это удалось благодаря отказу от "штатной" библиотеки с реализацией очереди и написанию свои объектов очереди FIFO. На этом сэкономил память и теперь под буферы команд сразу бронируется память, поэтому без всяких сюрпризов переполнения. Дополнительно в обработчик команд I2C добавил опцию - теперь команды можно обрабатывать пачками регулируемого размера. Алгоритмы тестирования запускаю цифрами через сериал-порт. Легко можно имитировать команды с пульта. Например, на команду в виде цифры "0" навесил одновременный перевод 10 стрелок Видимо скоро придется писать протокол на сериал-порт, чтобы уже по-серьезному нагружать, например из "терминала" какого нить запуская тестовые скрипты. Код:
Скетч использует 13390 байт (43%) памяти устройства. Всего доступно 30720 байт. Глобальные переменные используют 1598 байт (78%) динамической памяти, оставляя 450 байт для локальных переменных. Максимум: 2048 байт. Недостаточно памяти, программа может работать нестабильно. |
|
2 пользователя(ей) сказали cпасибо: |
04.10.2017, 08:19 | #147 | |
Заглянувший
Регистрация: 26.01.2013
Адрес: Минск
Сообщений: 204
Сказал(а) 'не согласен(а)'!: 0
Сказали 'не согласен'! 1 раз в 1 сообщении
Сказал(а) спасибо: 458
Поблагодарили 454 раз(а) в 135 сообщениях
:
0 за это сообщение 0 Всего Репутация: - луч света в тёмном царстве (454)
|
Цитата:
А вот модули уже другая песня, там обычно простая рельсовая схема, и маленькое устройство на 4 сервы и 6-8 датчиков будет в самый раз. Посмотрите на пример на MiniMax, или то же T-Trak, почти везде одна ардуино нано перекроет все потребности в электронике, даже без плат расширения... |
|
|
2 пользователя(ей) сказали cпасибо: |
04.10.2017, 11:29 | #148 | |
Местный
Регистрация: 08.07.2015
Адрес: МО
Сообщений: 2,865
Сказал(а) 'не согласен(а)'!: 0
Сказали 'не согласен'! 3 раз(а) в 2 сообщениях
Сказал(а) спасибо: 4,665
Поблагодарили 3,280 раз(а) в 1,176 сообщениях
:
0 за это сообщение 1 Всего Репутация: репутация неоспорима (3291)
|
Цитата:
Сегодня есть мысль попробовать реализовать в устройстве реализацию несложных светофоров. Большая просьба поделиться информацией - светофоры какого типа наиболее часто используются на модулях? ---------- Сообщение добавлено в 11:29 ---------- Предыдущие сообщение было в 11:27 ---------- Пока рано! Еще осталось почти 400 байтов памяти, а значит можно и реализацию светофоров добавить |
|
|
04.10.2017, 12:00 | #149 |
Местный
Регистрация: 08.07.2015
Адрес: МО
Сообщений: 2,865
Сказал(а) 'не согласен(а)'!: 0
Сказали 'не согласен'! 3 раз(а) в 2 сообщениях
Сказал(а) спасибо: 4,665
Поблагодарили 3,280 раз(а) в 1,176 сообщениях
:
0 за это сообщение 1 Всего Репутация: репутация неоспорима (3291)
|
Хотя на самом деле все не так оптимистично. Стрелочные адреса сейчас хранятся в формате byte, а значит возможна нумерация только с 1 до 255 Часть памяти может уйти на хранение длинных адресов, чтобы нумерация адресов была с 1 до 65535.
Плюс надо добавить реализацию светофоров, хотя бы простейших - с двумя огнями, управляемых по одному-двум стрелочным адресам. Поэтому есть вопрос - какие вообще типы светофоров чаще всего встречаются на макетах/модулях? p.s. беглый поиск показал, что для РЖД надо 5 огней на светофор. Последний раз редактировалось shalex; 04.10.2017 в 13:21. |
|
04.10.2017, 14:12 | #150 | |
Местный
Регистрация: 29.06.2010
Адрес: Москва
Сообщений: 2,838
Сказал(а) 'не согласен(а)'!: 6
Сказали 'не согласен'! 2 раз(а) в 2 сообщениях
Сказал(а) спасибо: 974
Поблагодарили 2,653 раз(а) в 1,570 сообщениях
:
0 за это сообщение 1 Всего Репутация: репутация неоспорима (2679)
|
Цитата:
Модули с входным светофором только в планах, но потребность уже есть. Плюс сильно зависит от того, у кого какая тематика. Поэтому это отдельная серьёзная тема. Плюс не забывайте про размер модуля. Не так много на нём можно уместить. Так же учитываем конструкцию светофора. По хорошему нужна будет плата с ключами. Т.ч. пока имеет смысл ограничится 2 огнями. |
|
|
Пользователь сказал cпасибо: |
Опции темы | |
Опции просмотра | |
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
фото-детектор местной занятости. | Tankist | Электрика и DCC | 55 | 03.04.2023 18:28 |
Детектор занятости блок-участков CD1 | shabans79 | Цифровая аппаратура Modelldepo | 160 | 21.03.2023 21:19 |
Детектор занятости для шины s88 от LDT | Alex_S | Электрика и DCC | 13 | 13.01.2015 13:36 |
Детектор занятости блок-участков CD1 | kutepoff | Цифровая аппаратура Modelldepo | 41 | 19.07.2013 10:39 |
Детектор занятости | pandrey | Цифровая аппаратура Modelldepo | 1 | 01.12.2010 21:30 |