Главное меню
Мы солидарны с Украиной. Узнайте здесь, как можно поддержать Украину.

Ответ

Следующие ошибки возникли при попытке отправки сообщения:
Внимание! Пока вы просматривали тему, появилось несколько новых ответов (21). Возможно, вы захотите изменить свое сообщение.
Обратите внимание: данное сообщение не будет отображаться, пока модератор не одобрит его.
Ограничения: максимум вложений в сообщении — 3 (3 осталось), максимальный размер всех файлов — 300 КБ, максимальный размер одного файла — 100 КБ
Снимите пометку с вложений, которые необходимо удалить
Перетащите файлы сюда или используйте кнопку для добавления файлов
Вложения и другие параметры
Проверка:
Оставьте это поле пустым:
Наберите символы, которые изображены на картинке
Прослушать / Запросить другое изображение

Наберите символы, которые изображены на картинке:

√36:
ALT+S — отправить
ALT+P — предварительный просмотр

Сообщения в этой теме

Автор Yougi
 - августа 20, 2021, 13:53
 Пришла купленная на распродаже Teensy LC. Хотел прикупить Teensy 4 ( 600 MHz тактовой! ), но не успел - кончились все. Попробую на ней сделать фильтр Гилберта на 120 точек. Должно хватить ресурсов.
Если кто знает трюки по вычислению фильтров ( на проце с обычными командами, mul + add там нету ) - ихние советы выслушаются с повышенным вниманием.
Автор mnashe
 - июля 30, 2021, 18:18
Цитата: Bhudh от июля 30, 2021, 17:59
А то, что чужой код будет user frendly, никто не обещал. :eat:
Ну да, только преимущество ардуина ведь в том и состоит, по замыслу, что после того, как кто-то это написал, другим уже не придётся тратить на это время.
А оно так криво написано бывает, что смысла нет.

В принципе, не только в ардуинах писать самому иногда в конечном итоге проще, чем пытаться подключать написанное другими.
Очень часто я решал сам какие-нибудь технические задачи, а через некоторое время мне попадался какой-нибудь application note, в котором эта же задача решалась тем же способом, но гораздо менее эффективно.
Свежий пример — этот мой новый диммер. В нём я решил не пользоваться аппаратным ШИМом (во-первых, аппаратный 10-битный ШИМ, который есть в большинстве PIC16 / PIC12, не позволяет полностью задействовать весь диапазон диммирования PT4115 — 1:5000; во-вторых, если обойтись без аппаратного ШИМ, то хватит самого дешёвого мк — PIC12F675). Я уже реализовывал программный ШИМ несколько лет назад, но решил в этот раз его переписать, оптимизировать. И в какой-то момент придумал ухищрение, сделавшее код обработчика прерывания существенно короче. А потом увидел то же самое ухищрение в application note, только у меня реализация вышла гораздо короче.

Кстати, о прерываниях в ардуине — мне так и не удалось найти, почему иногда мой старый контроллер освещения перестаёт реагировать на пульт. А потом снова нормально работает. Обработку ИК приёмника я там повесил на прерывание, но в ардуине почти любая совершенно примитивная (при программировании напрямую) задача решается длиннющим кодом, с кучей всякого мусора. Чем разбираться в этих дебрях, проще самому с нуля писать.
Поэтому я кроме того контроллера (он, кстати, недавно сгорел, проработав года три: сначала стал время от времени ресетиться, потом зависать, а потом совсем перестал включаться) ничего пока на ардуинах не делал, только PIC использую. Ардуино — только чтобы что-то быстренько протестировать.
Автор Bhudh
 - июля 30, 2021, 17:59
Цитата: Yougi от июля 30, 2021, 16:51И это называется user frendly железяка.
Ну вот к тому юзеру, у которого Вы код взяли, она была friendly, он как хотел её под себя переделал.
А то, что чужой код будет user friendly, никто не обещал. :eat:
Автор Yougi
 - июля 30, 2021, 16:51
 Не, всё-таки ардуина это зло...
Давеча надумал сделать одну фигню, нашёл проект похожий, спаял железяку, компилю программу - ругается на отсутствие библиотеки. Стал искать - нашёл в сети штук 6 одинаково называющихся библиотек.
Какую из них автор использовал - хз. Методом тыка нашёл нужную. Скомпилил. Залил. Не работает - прерывание не вызывается. Стал курить описание прерываний, убил полдня - не, всё правильно написано... Полез в библиотеки - опа! Чувак там переопределяет назначение выводов, причём исключительно безальтернативно. Пришлось курочить библиотеку...  После этого всё заработало.
И это называется user frendly железяка.
Проще было с нуля всё самому написать.
Автор mnashe
 - июля 28, 2021, 21:23
Получилось. Добавил программное сглаживание плюс простенький программный фильтр, теперь всё светит гладко, помехи не видны.

1. Частоту измерений повысил в 4 раза (до 122 Гц).
2. Вместо текущего замера для вычисления яркости беру среднее арифметическое последних 16 замеров.
Точнее, чтобы не хранить таблицу из 16 чисел, я после каждого измерения уменьшаю накопленную сумму на 1/16 и добавляю к ней предыдущий замер (почему предыдущий, а не текущий, — см. п.3). А в экспоненциальную функцию яркости подставляю вместо текущего замера 1/16 накопленной суммы.
3. Если предыдущий замер меньше обоих соседних (предпредыдущего и последнего), то я пропускаю для него п.2 (то есть игнорирую этот замер). То же самое, если он больше обоих соседних. Иначе говоря, п.2 выполняется для каждого x₋₁ только если x₋₂≤x₋₁≤x₀ или x₋₂≥x₋₁≥x₀, иначе сумма на данном шаге остаётся прежней.

Со всеми добавлениями плюс тестовым режимом программа (включая таблицу) заняла почти всю память (1018 слов из 1024).
Автор mnashe
 - июля 26, 2021, 00:59
Думаю попробовать обойтись чисто программным сглаживанием: яркость вычислять не из текущего значения потенциометра, а из среднего арифметического последних четырёх или восьми измерений.
Может, поднять частоту измерений вдвое, чтобы не было слишком большой задержки при повороте ручки.
Автор mnashe
 - июля 26, 2021, 00:57
Цитата: ivanovgoga от июля 26, 2021, 00:23
В импульсном и не будет, если помехи намного меньше импульсов управления. Цифра потому и помехозащищенная.
Я имею в виду, что свет в кнопочном режиме стабильный.
Кнопочный режим — это когда потенциометр продолжает измеряться, но не принимается в расчёт, пока его не сдвинут хотя бы на ⅛ оборота.
Очевидно, помехи такого уровня не достигают, и устройство стабильно остаётся в кнопочном режиме.
Стало быть, помехи ловятся именно проводами потенциометра.
Автор mnashe
 - июля 26, 2021, 00:50
Цитата: ivanovgoga от июля 26, 2021, 00:23
Да еще глянул. У вас сглаживающие кондеры только электролиты или танталовые? Надо бы в параллель им керамику по 0.1 мкФ. Это обязательно.
Не, у меня совсем электролитов нет, все конденсаторы — качественная керамика.
Там обе микросхемы высокочастотные, им по-другому нельзя. Да и смысла нет.


Потенциометр цепляется на три вертикальные линии, идущие от мк вниз: GP1, GP0, VSS.
Автор ivanovgoga
 - июля 26, 2021, 00:23
Цитата: mnashe от июля 26, 2021, 00:19
Не-не, я ж написал: в кнопочном режиме помех нету
В импульсном и не будет, если помехи намного меньше импульсов управления. Цифра потому и помехозащищенная. 
Да еще глянул. У вас сглаживающие кондеры только электролиты или танталовые? Надо бы в параллель им керамику по 0.1 мкФ. Это обязательно.
Автор mnashe
 - июля 26, 2021, 00:19
Цитата: Yougi от июля 25, 2021, 21:21
Взять ферритовое колечко небольшое, тремя сложенными вместе проводами намотать 5-7 витков ( сколько влезет ) и подключить потенциометр ( дроссель ближе к контроллерной части).
Ааа... Точно, ведь так на всех этих блоках питания сделано.

Цитата: Yougi от июля 25, 2021, 21:21
30 герц для такого дросселя - тьфу, ничего. Задержка незаметна будет. А всякую ВЧ-дрянь он отсечёт.
30 герц понятно, что ничего.
Но я же для экономии энергии отключаю верхнее плечо потенциометра от VDD, и подключаю его туда (через выход микроконтроллера) только непосредственно перед измерением. Экспериментально подобрал задержку между подключением и началом измерения — 9 мкс (начиная с этой задержки, результат измерения не меняется), и немного добавил — 12 мкс.
Вот я и думаю: если там будет колечко, то задержка придётся увеличить в разы, и надо перестраивать программу: после включения потенциометра не мерять сразу, а заводить таймер и возвращаться в цикл. Только по истечении таймера запускать измерение.
В принципе, не страшно, места ещё немножко осталось в памяти...

Цитата: ivanovgoga от июля 25, 2021, 21:34
Чуствительность у ацп какая?
10 бит.

Цитата: ivanovgoga от июля 25, 2021, 21:34
Опорное напряжение какое 2вольта?
VDD, ≈3,1В в моей схеме.

Цитата: ivanovgoga от июля 25, 2021, 21:34
а может у вас пульсации вообще с самого блока питания
Не-не, я ж написал: в кнопочном режиме помех нету
Цитата: mnashe от июля 25, 2021, 19:03
Помеха явно ловится этими проводами, потому что если нажать кнопку, помехи исчезают (пока не вернёшься в аналоговый режим).