|
Электрика и DCC Обсуждение цифрового и аналогового управления |
|
Опции темы | Опции просмотра |
18.08.2021, 18:18 | #1 |
Местный
Регистрация: 22.11.2010
Адрес: Москва
Сообщений: 3,038
Сказал(а) 'не согласен(а)'!: 4
Сказали 'не согласен'! 29 раз(а) в 19 сообщениях
Сказал(а) спасибо: 1,707
Поблагодарили 1,646 раз(а) в 830 сообщениях
Репутация: обеспечил(а) себе прекрасное будущее (1681)
|
Контроллер освещения на ATtiny13
Пришла мысль оживить "темное время" на макете путем переключения отдельных элементов освещения строений. Например, у церквушки 3 "лампы": одна над входом, вторая в башне, третья в основном помещении. Если над входом свет может гореть всегда, то в башне и основном помещении будет логично иногда его выключать. Аналогично со зданием вокзала, где первый этаж всегда включен, а на втором окна могут загораться и гаснуть. Ну или свет в жилых домах и уличные фонари по той же логике.
Немного поразмыслив получился следующий алгоритм управления лампочками:
Логика простая, с ней прекрасно справится самый простой и дешевый микроконтроллер ATtiny13, который тут же был заказан, но еще в пути... Основываясь на опыте платы для подключения диодов, решил дополнить ее микроконтроллером. У ATtiny13 есть 5 ножек, которые можно использовать, 4 под диоды, 1 под переключение режима работы (цикл 15 или 60 минут). Таким образом плата освещения будет иметь все те же 8 выходов, только 4 будут управляться контроллером, а остальные 4 всегда включены. Пока ко мне едут ATtiny13, набросал скетч для ардуино, чтоб оценить что получается: Скрытый текст
Столкнулся с неожиданной проблемой получения случайного числа, на основе которого работает алгоритм освещения. Классический арудино подход, когда для инициализации генератора случайных чисел используется чтение с неподключенной аналоговой ножки, тут сложно применим т.к. у ATtiny13 остается всего одна ножка и это ресет, который желательно подключить через сопротивление к питанию, чтоб избежать случайных перезагрузок. Хотя в случае с освещением они не страшны, если будут не часто. И второй вариант - использование специальной библиотеки для ATtiny, которая генерит случайные числа и запоминает вектор инициализации в EEPROM, чтоб после каждой перезагрузки не повторять пройденную последовательность. Сейчас все собрано на ардуино нано и успешно моргает диодами, оценить не воткнув в здание нереально, но макет пока не готов к размещению домиков, поэтому буду рад советам по алгоритму...
__________________
🎉 мой канал в телеграм @aleksandr_ru_blog |
2 пользователя(ей) сказали cпасибо: |
18.08.2021, 19:13 | #2 |
Местный
Регистрация: 29.06.2010
Адрес: Москва
Сообщений: 2,837
Сказал(а) 'не согласен(а)'!: 6
Сказали 'не согласен'! 2 раз(а) в 2 сообщениях
Сказал(а) спасибо: 972
Поблагодарили 2,652 раз(а) в 1,569 сообщениях
Репутация: репутация неоспорима (2678)
|
|
Пользователь сказал cпасибо: |
18.08.2021, 19:29 | #3 |
Местный
Регистрация: 22.11.2010
Адрес: Москва
Сообщений: 3,038
Сказал(а) 'не согласен(а)'!: 4
Сказали 'не согласен'! 29 раз(а) в 19 сообщениях
Сказал(а) спасибо: 1,707
Поблагодарили 1,646 раз(а) в 830 сообщениях
Репутация: обеспечил(а) себе прекрасное будущее (1681)
|
у вас там прям все расписано и повторяется каждый цикл, да еще и нужно знать куда что подключено, чтоб расписать интервалы...
у меня планируется использовать контроллер под каждым зданием т.е. их будет около 10 и для каждого писать индивидуальную логику не хочется, поэтому пока остаюсь приверженцем рандома. по текущему впечатлению от алгоритма выше и наблюдению за диодами на 15 минутном цикле, кажется что слишком долго диоды остаются выключенными, возможно стоит уменьшить выключенное время не в 2 а в 4 раза от случайного... или брать за основу время, которое диод был включен и вычислять рандом от него... и делить еще может...
__________________
🎉 мой канал в телеграм @aleksandr_ru_blog |
19.08.2021, 07:22 | #4 | ||
Заглянувший
Регистрация: 26.01.2013
Адрес: Минск
Сообщений: 204
Сказал(а) 'не согласен(а)'!: 0
Сказали 'не согласен'! 1 раз в 1 сообщении
Сказал(а) спасибо: 458
Поблагодарили 454 раз(а) в 135 сообщениях
Репутация: - луч света в тёмном царстве (454)
|
Цитата:
Цитата:
оффтопик |
||
19.08.2021, 09:28 | #5 |
инженер-электроник
Регистрация: 19.07.2012
Адрес: Тула
Сообщений: 562
Сказал(а) 'не согласен(а)'!: 30
Сказали 'не согласен'! 28 раз(а) в 17 сообщениях
Сказал(а) спасибо: 359
Поблагодарили 715 раз(а) в 280 сообщениях
Репутация: - просто великолепная личность (741)
|
|
19.08.2021, 09:45 | #6 |
Местный
Регистрация: 22.11.2010
Адрес: Москва
Сообщений: 3,038
Сказал(а) 'не согласен(а)'!: 4
Сказали 'не согласен'! 29 раз(а) в 19 сообщениях
Сказал(а) спасибо: 1,707
Поблагодарили 1,646 раз(а) в 830 сообщениях
Репутация: обеспечил(а) себе прекрасное будущее (1681)
|
под мои цели это перебор, мне 4 мигающих и 4 постоянно включенных более чем)
я может что не понимаю но быстро гугулиг показал что за цену одного esp8266 получится 5 attiny13, да и esp8266 это про вайфай вроде, который тут нефик не нужен
__________________
🎉 мой канал в телеграм @aleksandr_ru_blog |
19.08.2021, 17:46 | #7 |
Местный
Регистрация: 22.11.2010
Адрес: Москва
Сообщений: 3,038
Сказал(а) 'не согласен(а)'!: 4
Сказали 'не согласен'! 29 раз(а) в 19 сообщениях
Сказал(а) спасибо: 1,707
Поблагодарили 1,646 раз(а) в 830 сообщениях
Репутация: обеспечил(а) себе прекрасное будущее (1681)
|
что в них такого плохого?
__________________
🎉 мой канал в телеграм @aleksandr_ru_blog |
Пользователь сказал cпасибо: |
19.08.2021, 18:26 | #8 |
Заглянувший
Регистрация: 26.01.2013
Адрес: Минск
Сообщений: 204
Сказал(а) 'не согласен(а)'!: 0
Сказали 'не согласен'! 1 раз в 1 сообщении
Сказал(а) спасибо: 458
Поблагодарили 454 раз(а) в 135 сообщениях
Репутация: - луч света в тёмном царстве (454)
|
|
2 пользователя(ей) сказали cпасибо: |
19.08.2021, 19:01 | #9 |
Пользователь
Регистрация: 28.08.2010
Адрес: Челябинск
Сообщений: 626
Сказал(а) 'не согласен(а)'!: 0
Сказали 'не согласен'! 2 раз(а) в 2 сообщениях
Сказал(а) спасибо: 692
Поблагодарили 813 раз(а) в 346 сообщениях
Репутация: - просто великолепная личность (818)
|
У меня приблизительно такой же подход. Но мне хотелось, чтобы еще было можно у любого канала яркость регулировать, не заморачиваясь с подбором резисторов. Ну, и для различных эффектов (огонь, телевизор и т.д.). И такое решение (для себя, по крайне мере) я нашел. Это Tiny, которая управляет микросхемами WS2811 (для адресных светодиодов).
Потом на Stummi-форуме нашел похожее решение, но более сложное. |
19.08.2021, 19:10 | #10 | |
Местный
Регистрация: 22.11.2010
Адрес: Москва
Сообщений: 3,038
Сказал(а) 'не согласен(а)'!: 4
Сказали 'не согласен'! 29 раз(а) в 19 сообщениях
Сказал(а) спасибо: 1,707
Поблагодарили 1,646 раз(а) в 830 сообщениях
Репутация: обеспечил(а) себе прекрасное будущее (1681)
|
Цитата:
---------- Сообщение добавлено в 19:10 ---------- Предыдущие сообщение было в 19:04 ---------- каким образом регулировать? ну тоесть мне пока кажется самой простой идея поставить по потенциометру на каждый канал что б крутить "не отходя от кассы", только это уж какоето неоправданное нагромождение выходит для того что нужно 1 раз сделать, а если программно то больно сложная процедура настройки выхоит
__________________
🎉 мой канал в телеграм @aleksandr_ru_blog |
|
20.08.2021, 11:39 | #12 |
Местный
Регистрация: 22.11.2010
Адрес: Москва
Сообщений: 3,038
Сказал(а) 'не согласен(а)'!: 4
Сказали 'не согласен'! 29 раз(а) в 19 сообщениях
Сказал(а) спасибо: 1,707
Поблагодарили 1,646 раз(а) в 830 сообщениях
Репутация: обеспечил(а) себе прекрасное будущее (1681)
|
JS захватывает мир) но учитывая особенности языка, для МК это не лучшее решение, имхо, не говоря про потребность в ресурсах и цены на их платки...
наверное единственный просто доступный вариант это закатить его на stm32, но проделав все эти танцы с бубнами появится вопрос "зачем мне вся эта мощь и жаваскрипт, чтоб просто лампочками мигать?" в общем выглядит как из пушки по воробьям имхо
__________________
🎉 мой канал в телеграм @aleksandr_ru_blog |
21.08.2021, 08:52 | #13 | |
инженер-электроник
Регистрация: 19.07.2012
Адрес: Тула
Сообщений: 562
Сказал(а) 'не согласен(а)'!: 30
Сказали 'не согласен'! 28 раз(а) в 17 сообщениях
Сказал(а) спасибо: 359
Поблагодарили 715 раз(а) в 280 сообщениях
Репутация: - просто великолепная личность (741)
|
Цитата:
Какой самый-самый первый проект/скетч на ардуино? Правильно, зажечь лампочку. Дальше объяснять? |
|
21.08.2021, 11:43 | #14 |
Местный
Регистрация: 22.11.2010
Адрес: Москва
Сообщений: 3,038
Сказал(а) 'не согласен(а)'!: 4
Сказали 'не согласен'! 29 раз(а) в 19 сообщениях
Сказал(а) спасибо: 1,707
Поблагодарили 1,646 раз(а) в 830 сообщениях
Репутация: обеспечил(а) себе прекрасное будущее (1681)
|
да что уж там, давайте сразу поставим под каждый домик малинку, чтоб 4 лампочками мигать, ну и что, что она займет кучу места, зато можно будет на питоне писать или на любом другом любимом языке )))
если вы почитаете писанину из первого поста, то тут задача именно лампочками моргать, я пытаюсь решить ее максимально дешево и компактно, т.е. выбрать оптимальное аппаратное решение под требования. достоинства espruino очевидны - это понижение порога входа в тему для тех, кто не знает си и не хочет заморачиваться как работает мк, но это же и основной недостаток - на ней после загрузчика 300кб интерпретатора жс, который исполняет ваш предкомпилированный скрипт на лету, ровно поэтому возможна такая удобная отладка, но это полный провал по ресурсам, в отличие от компилятора си. Безусловно, если цена и размер будут одинаковым, то выбор будет за еспруино, но а пока за цену одного еспруино £20.00 можно купить примерно 20 ATtiny13. Для мигания лампочками, кажется, выбор очевиден)
__________________
🎉 мой канал в телеграм @aleksandr_ru_blog |
2 пользователя(ей) сказали cпасибо: |
21.08.2021, 18:04 | #15 |
Пользователь
Регистрация: 23.12.2011
Адрес: Киев, Украина
Сообщений: 626
Сказал(а) 'не согласен(а)'!: 135
Сказали 'не согласен'! 48 раз(а) в 42 сообщениях
Сказал(а) спасибо: 371
Поблагодарили 634 раз(а) в 328 сообщениях
Репутация: - просто великолепная личность (857)
|
|
6 пользователя(ей) сказали cпасибо: |
02.09.2021, 12:39 | #16 |
Заглянувший
Регистрация: 16.07.2019
Адрес: -
Сообщений: 80
Сказал(а) 'не согласен(а)'!: 2
Сказали 'не согласен'! 0 раз(а) в 0 сообщениях
Сказал(а) спасибо: 50
Поблагодарили 125 раз(а) в 46 сообщениях
Репутация: скоро придёт к известности (125)
|
Эх, а ведь еще в прошлом году их можно было купить по 16р/штука... Чертов дефицит микроэлектроники.
По делу - ногу RESET тоже можно использовать как GPIO, точнее, как вход кнопки. Тут возможно 2 варианта: 1. выключить функцию RESET совсем, тогда ногу можно использовать как угодно, но никак нельзя будет перезагрузить МК. Но это перебор, на мой вкус, перепрошивка будет очень проблематичной. 2. подключать кнопку к ноге так, чтобы она ни в отжатом, ни в нажатом состоянии не просаживала напряжение ниже 4-4.5В (логический 0 на этой ноге приведет к перезагрузке), а состояние кнопки считывать АЦП. Освободившуюся АЦП-ногу можно использовать как источник энтропии для RNG. Можно, по идее, и цифровую висящую ногу использовать как источник энтропии. О! Вот еще нашел статью о том, как неточность таймера вочдога используют как источник энтропии на AVR: https://sites.google.com/site/astudy...ntropy-library https://hackaday.com/tag/entropy-library/ https://sites.google.com/site/astudy...no-random-seed Автор проверял в том числе на Attiny (Не 13, но на ней должно тоже работать). Никаких модификаций железа не надо. Кажется, как раз то, что доктор прописал. |
Пользователь сказал cпасибо: |
02.09.2021, 12:49 | #17 |
Местный
Регистрация: 22.11.2010
Адрес: Москва
Сообщений: 3,038
Сказал(а) 'не согласен(а)'!: 4
Сказали 'не согласен'! 29 раз(а) в 19 сообщениях
Сказал(а) спасибо: 1,707
Поблагодарили 1,646 раз(а) в 830 сообщениях
Репутация: обеспечил(а) себе прекрасное будущее (1681)
|
согласен перебор, от этой идеи сразу отказался
тоже не хочется городить огород на маленькой платке, хочется чтоб попроще и тут либо последнюю свободную ногу использовать (но вроде есть какие-то сложности с тем что analogRead 0 всегда возвращает) и потерять пин для настройки длительности интервлаа (хотя может и не нужно, по факту смотреть надо) либо софтовую приблуду вроде вашей библиотеки, прелесть которой в том, что в еепром ничего не пишет, в отличие от других
__________________
🎉 мой канал в телеграм @aleksandr_ru_blog |
02.09.2021, 14:27 | #18 |
Заглянувший
Регистрация: 16.07.2019
Адрес: -
Сообщений: 80
Сказал(а) 'не согласен(а)'!: 2
Сказали 'не согласен'! 0 раз(а) в 0 сообщениях
Сказал(а) спасибо: 50
Поблагодарили 125 раз(а) в 46 сообщениях
Репутация: скоро придёт к известности (125)
|
Еще одно решение, проще некуда:
Выделить переменную в области оперативной памяти, которая не инициализируется на старте МК. После подачи питания она будет иметь случайное значение (На старте ею можно инициализировать ГСЧ и записать в нее новое значение, чтобы после перезагрузки без обесточивания получать новые случайные значения, а не те же, что и при подаче питания) Пруф оф концепт: Arduino код:
|
Пользователь сказал cпасибо: |
02.09.2021, 19:03 | #19 |
Заглянувший
Регистрация: 26.01.2013
Адрес: Минск
Сообщений: 204
Сказал(а) 'не согласен(а)'!: 0
Сказали 'не согласен'! 1 раз в 1 сообщении
Сказал(а) спасибо: 458
Поблагодарили 454 раз(а) в 135 сообщениях
Репутация: - луч света в тёмном царстве (454)
|
А если просто опросить аналоговую ножку перед ее инициализацией как выхода?
Попробовал подключить диод+1к резистор на А0 и к 5в с другой стороны и получил разные значения после ресета. Скрытый текст
|
02.09.2021, 21:38 | #20 |
Местный
Регистрация: 22.11.2010
Адрес: Москва
Сообщений: 3,038
Сказал(а) 'не согласен(а)'!: 4
Сказали 'не согласен'! 29 раз(а) в 19 сообщениях
Сказал(а) спасибо: 1,707
Поблагодарили 1,646 раз(а) в 830 сообщениях
Репутация: обеспечил(а) себе прекрасное будущее (1681)
|
мне казалось что если на ней чтото висит, то значения будет всегда одно...
__________________
🎉 мой канал в телеграм @aleksandr_ru_blog |
02.09.2021, 23:18 | #21 |
Заглянувший
Регистрация: 26.01.2013
Адрес: Минск
Сообщений: 204
Сказал(а) 'не согласен(а)'!: 0
Сказали 'не согласен'! 1 раз в 1 сообщении
Сказал(а) спасибо: 458
Поблагодарили 454 раз(а) в 135 сообщениях
Репутация: - луч света в тёмном царстве (454)
|
|
Пользователь сказал cпасибо: |
05.09.2021, 14:54 | #22 |
Местный
Регистрация: 22.11.2010
Адрес: Москва
Сообщений: 3,038
Сказал(а) 'не согласен(а)'!: 4
Сказали 'не согласен'! 29 раз(а) в 19 сообщениях
Сказал(а) спасибо: 1,707
Поблагодарили 1,646 раз(а) в 830 сообщениях
Репутация: обеспечил(а) себе прекрасное будущее (1681)
|
не работает(
выдает одно и то же после перезагрузки на моей нано а вот это похоже работает, но требует больше времени на инициализацию и не на attiny13 (
__________________
🎉 мой канал в телеграм @aleksandr_ru_blog |
07.09.2021, 00:44 | #23 |
Заглянувший
Регистрация: 16.07.2019
Адрес: -
Сообщений: 80
Сказал(а) 'не согласен(а)'!: 2
Сказали 'не согласен'! 0 раз(а) в 0 сообщениях
Сказал(а) спасибо: 50
Поблагодарили 125 раз(а) в 46 сообщениях
Репутация: скоро придёт к известности (125)
|
О как. На моей Uno проверял, работало. А что пишет?
Ну автор пишет, что пол-секунды это дело стартует, что, в относительных числах очень много, но в абсолютных, наверное, приемлемо? Я сейчас далеко от компа, через пару дней посмотрю, что там с Attiny13. Возможно, имена регистров другие. |
07.09.2021, 14:11 | #24 |
Местный
Регистрация: 22.11.2010
Адрес: Москва
Сообщений: 3,038
Сказал(а) 'не согласен(а)'!: 4
Сказали 'не согласен'! 29 раз(а) в 19 сообщениях
Сказал(а) спасибо: 1,707
Поблагодарили 1,646 раз(а) в 830 сообщениях
Репутация: обеспечил(а) себе прекрасное будущее (1681)
|
изначально в неинициализированной переменной 5, кandomSeed, получаем случайное число 11, записываем в ту самую переменную, выключаем.
ждем, включаем, в переменной теже 11, следующее случайное 5, записываем выключаем и так по кругу. тоесть оно ведет себя как постоянная память и какаято невнятная штука с генерацией первого случайного числа. может между выключениями надо было ждать более минуты или на тини будет по-другому себя вести... ругается на чтото около WDT из чего бегло делаю вывод, что в ней вочдогтаймаута нет ( по итого пока рабочее решение оставить ресет в воздухе и аналогРидом с него читать значение для рандомСид...
__________________
🎉 мой канал в телеграм @aleksandr_ru_blog |
09.09.2021, 11:42 | #25 | |
Заглянувший
Регистрация: 16.07.2019
Адрес: -
Сообщений: 80
Сказал(а) 'не согласен(а)'!: 2
Сказали 'не согласен'! 0 раз(а) в 0 сообщениях
Сказал(а) спасибо: 50
Поблагодарили 125 раз(а) в 46 сообщениях
Репутация: скоро придёт к известности (125)
|
Цитата:
То, что память хранит значение, пока есть питание - это нормально. При этом, для сохранения значений памяти достаточно не 5В, а гораздо меньше, т.е. ядро МК уже не работает, а память сохраняет значение. Если отключить питание от МК, но оставить подключенными землю и, скажем, ноги UART, подключенные к USB-UART-преобразователю, то память вполне может питаться паразитно от этих ног. |
|
Опции темы | |
Опции просмотра | |
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Освещения в вагоне | djluna1627800 | ЧАВО | 29 | 15.12.2019 17:08 |
мощный стационарный декодер как pwm (ШИМ) - контроллер. | vspider | Электрика и DCC | 11 | 14.04.2014 11:54 |
сопутствующие проблема с китом освещения | Alex_S | Личный опыт | 11 | 15.08.2012 16:47 |
Столбы освещения | Jevgen | ЧАВО | 3 | 14.04.2012 16:21 |
подключение освещения | malder | Электрика и DCC | 5 | 18.09.2008 20:56 |