Убедительная просьба оффтопик прятать под оффтопик.
Вы оба правы и наоборот. Один мог быть дать пруф-линк (ссылку), а второй мог бы и погуглить. Предлагаю в теме не отклоняться от темы
С учетом второго дня экспериментов пересмотрел схему. Поменял транзисторы на ULN2003, т.к. попробовал на макетке - работает, спасибо за совет. Оказывается я про нее знал уже и даже нашел в закромах, заранее купленную, только в DIP корпусе. И места на плате вроде как прибавилось.
Что нового:
- пауэрпак перенесен на "высоковольтную" часть и полностью переделан на четыре "тантала" в корпусе 7343 (D,E)
- транзисторы заменены на ULN2003
- убран последовательный порт
p.s. Жуткая штука - макетка. Ищешь часами проблемы в коде, а она в контактах. Хорошо, когда код отлажен и работает. Кстати, в этот раз специально копался в макете при включенном питании, пару раз удалось даже переклинить МК, но прошивку и EEPOM он ни разу после установки фьюзов не потерял, ура
Последний раз редактировалось shalex; 11.02.2017 в 22:01.
Насчет эффектов, кажется пришел и их черед. Т.к. "железо" уже почти на финише (запросил цену на плату у китайцев и у наших), можно заняться "софтом" и прибегнуть к мощи битовых шаблонов а именно задавать в нескольких CV последовательность вкл/выкл в виде битов, и потом "проигрывать" каждый бит в течении времени дискретности. Время дискретности тоже может задаваться в CV, а лучше двух, для возможности широкой настройки.
оффтопик
Последний раз редактировалось shalex; 12.02.2017 в 01:41.
Если некоторые цепи светодиодов могут оказаться по потреблению в переборе,то есть выход. Некоторые входы и выходы парелелятся на ULN2003 и тем самым можно увеличивать нагрузку. Проверенно,я так делала на своих платах.
Обновил код прошивки и теперь список возможных режимов стал такой:
- SIMPLE просто вкл/выкл.
- PATTERN_CYCLE проигрывание битового шаблона из 64-х бит.
О последнем подробнее...
Время проигрывания каждого бита задается через CV для соотв. канала: (Option1 * Option2 * 100мсек). Например: (10 * 1 * 100мсек) = 1000мсек = 1 сек.
Другой вариант - выставляем время проигрывания бита в 1 минуту (например Option1= 60, Option2 = 10), то в шаблоне можно практически поминутно задать время включения или выключения в рамках часа.
Внимание, максимальное значение любого CV - 255, поэтому с помощью Option1 и Option2 можно задать максимальное время проигрывания ОДНОГО бита в 108 минут.
Сам шаблон задается в 8-и CV для каждого канала. По-умолчанию на канале 0 , на функцию F0 настроен режим PATTERN_CYCLE, с Option1=10 и Option2=1, с шаблоном "аварийки" или blink. В-общем, если декодер после сброса к заводским настройками и после включения света на "мышке" моргает -значит исправен
в проекте :
PATTERN_START_AND_ON - стартовать с шаблона, проиграть и оставить включенным
PATTERN_START_AND_OFF - стартовать с шаблона, проиграть и оставить включенным, или проиграть шаблон один раз.
ON_AND_PATTERN_END - при включении функции свет включается как обычный,а при выключении проигрывает шаблон
OFF_AND_PATTERN_END - при включении функции свет не включается, а при выключении проигрывается шаблон
PATTERN_BY_PATTER - один битовый шаблон задает порядок проигрывания другого шаблона. Скорее всего будет 32 бита в главном и подчиненном шаблонах. Option1 будет задавать интервал для главного шаблона, а Option2 -для подчиненного. Причем главный шаблон не будет дожидаться, когда подчиненный отыграет все свои 32 бита, а просто прервет, если время шага из Option1 закончилось и следующий шаг "не играть", т.е. следующий бит=0.
Осталось только прикрутить режим ШИМ, с плавным включением и регулировкой яркости, но че-то уже лениво. Свой максимум я выполнил, возможно прикручу просто регулировку яркости. Остальное по настроению...
И, пожалуй, поставлю все таки оптопару, один чип уже окирпичился, второй после долгого выключения "потерялся" (а может и я после прошивки не сбросил в дефолт).
Последний раз редактировалось shalex; 12.02.2017 в 22:18.
Поскольку немного задолбался отлаживать голый чип, то теперь поступаю проще - беру Ардуино Нано, запускаю скетч на ней, но только исправляю все пины для выводов на 13. Дело в том, что на ардуинах, на выводе D13 (или 13 в скетче) штатно стоит светодиод. Поэтому даже не надо подключать светодиоды - вся индикация есть уже на плате. Один момент - тестировать надо только один канал. Остальные Fn даже не включать, чтобы не получить неадекват при старте декодера.
В-общем, комфортно отлаживаю код на арудине нано - с портом и с кучей памяти. Весь отладочный код "обернут" в #ifdef, чтобы потом закомментировать один #define и весь отладочный код будет игнорироваться при сборке для Attiny.
Свежая схема с оптопарой PC817. Зря я от нее отказывался раньше. Надо было выход просто подтянуть 1К к питанию 5В и все отлично работает И есть нормальный SMD вариант, в отличии от 6N136.
Последний раз редактировалось shalex; 13.02.2017 в 00:27.
Как одолеть битовый шаблон собственными силами...
Пишем на бумаге/планшете и т.д. требуемую последовательность из 64 разрядов. В каждом разряде должен быть 0 или 1. Т.е. включена лампа, или нет. Если написать последовательность в одну строку, то воспроизводиться она будет слева направо.
Дальше разбиваем разряды на группы по 8 шт. Это байты. Каждый из этих 8-и байтов должен быть записан в CV декодера в виде десятичных чисел.
Для перевода используем Калькулятор из Windows, в режиме "инженерный". Переводим в "бинарный" режим "bin", вносим первый байт в виде 0 и 1. Переводим систему в "dec" и полученное десятичное значение сохраняем в CV.
Например, для Канала 0 первый байт надо записать в CV46, второй в CV47 и т.д. Всего должно быть 8 байтов.
Внимание: если число для записи в CV получилось больше 255 - значит где то ошибка.
Допил остальные режим, остался самый интересный - по шаблону проигрывать другой шаблон.
Пока список режимов такой:
MODE_SIMPLE =0
просто включить выключить
MODE_PATTERN_CYCLE= 1
бесконечно проигрывать битовый шаблон, шаг шаблона = Option1 *Option2 *100ms
MODE_PATTERN_START_AND_ON= 2
проиграть один раз при включении битовый шаблон и оставить включенным, шаг шаблона = Option1 *Option2 *100ms
например, моргание стартера при включении фонаря
MODE_PATTERN_START_AND_OFF = 3
проиграть один раз при включении битовый шаблон и оставить выключенным, шаг шаблона = Option1 *Option2 *100ms
например, одинокая вспышка, молния, что-то ритмично отморгало и погасло, даже если не выключать кнопку на мышке, ту же сварку можно попытаться изобразить.
MODE_ON_AND_PATTERN_END = 4
зажигается при включении, а при выключении проигрывает один раз битовый шаблон , шаг шаблона = Option1 *Option2 *100ms
например то, что при выключении моргает
MODE_OFF_AND_PATTERN_END = 5
при включении НЕ зажигается, а при выключении проигрывает один раз битовый шаблон , шаг шаблона = Option1 *Option2 *100ms
например ... даже не знаю как применить.
Допилил режимы, связанные с направлением и скоростью.
SPEED_NONE 0 - включаться независимо от скорости
SPEED_ZERO 1 - включаться если скорость 0, правда в тот момент, когда на мышке выбран 0, а не когда состав реально остановился
SPEED_IN_MOVE 2 - включать канал, только скрость не равна 0
DIR_NONE 0 - включаться канал независимо от направления
DIR_FWD 1 - включать если режим "вперед"
DIR_BACK 2 - включать, если режим "назад".
Все это будет закодировано по 4 бита на канал, в 2-х CV. Остался режим PWM. Потребуется 16 бит или еще 2 новых CV.
Последний раз редактировалось shalex; 14.02.2017 в 16:49.