Четырёхканальный ШИМ
- Войдите на сайт для отправки комментариев
Здравствуйте!
На днях возникла необходимость управления мощными светодиодами с помощью ШИМа. 4 светодиода. 4 потенциометра или 4 энкодера. Арудино Мега 2560 или Нано. Дефолтная частота в 490 Гц не катит, ибо это мерцание может доканать до офтальмолога. Обычно я выбираю частоту за 5000 Гц и выше (чаще просто 30 000). Я по началу подумал, что крайне удобная библиотека PWM.h - мой 15-ти минутный выход из ситуации, потому как уже делал проект подсветки с регулятором на энкодере. Но не тут то было. Эта библиотека наотрез откзывается работать числом каналов больше двух. Тоесть 2 выхода и всё. И на Нано и на Меге, при чём автор указывает способность работы на всех PWM выходах.
Дальше я решил идти по пути программирования таймеров, но эта штука - просто тёмный лес.
Хоть кто нибудь, может подсказать как подойти к этой задаче лучше? Возможно ли 4 ШИМ канала с одинаковой частотой свыше 5000 Гц на Меге или Нано?
Заранее большое спасибо за ответы.
Дефолтная частота в 490 Гц не катит, ибо это мерцание может доканать до офтальмолога.
У Вас уникальные глаза. У всех остальных людей пульсации с частотой свыше 300Гц никакого влияния на мозг не оказывают. При такой частоте (300+) они не норммируются никакимии ГОСТами ибо просто никак на организм не влияют (пруф. ГОСТ Р 54945-2012 раздел 1, там же в ГОСТе есть ссылка на справочную литературу по этому поводу).
Обычно я выбираю частоту за 5000 Гц и выше (чаще просто 30 000).
Ваше право.
программирования таймеров, но эта штука - просто тёмный лес.
Хоть кто нибудь, может подсказать как подойти к этой задаче лучше?
Лучший (и единственный) способ - идти в "тёмный лес" и пугать там леших с кикиморами. Других путей нет. Разве что кто-то успел это сделать до Вас и Вам повезёт найти нахаляву готове решение.
На нано максимальное число каналов с этой библиотекой в безопасном режиме два, а на Меге должно быть четыре. Максимальное число каналов не связано напрямую с числом пинов, а ограничено числом таймеров за вычетом Timer0, как я понял из кода.
Насколько я понимаю, вам не нужно 4 независмых канала с разной частотой? - тогда управление любым числом цифровых пинов можно организовать на одном общем таймере. Всего-то с нужной частотой по прерыванию таймера вызывать свою функцию и писать в нужные пины LOW и HIGH
На нано максимальное число каналов с этой библиотекой в безопасном режиме два, а на Меге должно быть четыре. Максимальное число каналов не связано напрямую с числом пинов, а ограничено числом таймеров за вычетом Timer0, как я понял из кода.
Насколько я понимаю, вам не нужно 4 независмых канала с разной частотой? - тогда управление любым числом цифровых пинов можно организовать на одном общем таймере. Всего-то с нужной частотой по прерыванию таймера вызывать свою функцию и писать в нужные пины LOW и HIGH
Нужно 4 канала с одинаковой частотой, но каждый канал имеет разную скважность (в зависимости от оборотов потенциометра/энкодера). Я пробовал на Меге все PWM выходы с библиотекой - работают нормально только 2 из них, ещё 2 подключеных работают крайне необычно - простейший Fade в смеси с PWM.h заработал на 11 и 12 пине, на 10-9 он мигает, на 44-46 - вообще не включается, остальные пины так же тупят. Я по началу думал, что Мега порченая, но перепроверил все ШИМ выходы без библиотеки - работают.
Но я как понимаю - на одном таймере только 2 выхода?
Евгений, ради эксперемента попробуй включить мощный светодиод в качестве личного освещения часов на 5-8, с частотой 490 Гц и скважностью где нибудь 40-50%. Глаза будут уставать.
Евгений, ради эксперемента попробуй включить мощный светодиод в качестве личного освещения часов на 5-8, с частотой 490 Гц и скважностью где нибудь 40-50%. Глаза будут уставать.
Внушить себе можно всё, что угодно.
- Алё, это радио? Почему Вы перестали передавать про магнитные бури? Мы не знаем когда себя плохо чувствовать!
Впрочем, могу помочь немного разобраться с тёмным лесом: я как-то писал как делать ШИМ произвольной частоты на таймерах - http://arduino.ru/forum/programmirovanie/shim-proizvolnogo-razresheniya-na-unonano-328
Если Вам нужна одна и таже частота, то можно сделать на всех ШИМ-ногах. Если разная - то по количеству таймеров. В пределах одного таймера частота будет одинаковой.
Можно. На ногах 3,9,10,11 для нано. У камня это PB3 PD3 и PB1 и 2. Только на этих. Если кто не напишет раньше , утром скину черновик... Пояснить и комментировать не буду. Я не Гугль и Вики.
Нужно 4 канала с одинаковой частотой, но каждый канал имеет разную скважность (в зависимости от оборотов потенциометра/энкодера).
ну да, я так и понял. В этом случае на аппаратном ШИМе можно сделать на всех PWM выходах, кроме управляемых нулевым таймером (на нано их 4, как уже написал Дракула).
А можно вообще "вручную" - все на одном таймере - вообще на всех цифровых. Правда вручную большой частоты не получить, но несколько КГц, думаю, без проблем.
Евгений, ради эксперемента попробуй включить мощный светодиод в качестве личного освещения часов на 5-8, с частотой 490 Гц и скважностью где нибудь 40-50%. Глаза будут уставать.
есть выход вообще без пульсаций - управлять источником напряжения (вернее тока) и диод дольше проживет. О таком варианте не думали? Там ШИМ вообще через фильтр в ЦАП превращается.
Думаю, не стоит. На 9 и 10 есть готовое решение по ссылке. что я дал ТС. На 3 и 11 сам сделает по образу и подобию. Должно же что-то остаться для самостоятельной работы.
Вроде получилось...)
пока не все получилось.. но близко.
штоп было 31КГц нужно таймеры запустить в фазо-корректный режим, без делителя, а ТАЙМЕР 1 ограничить не 16 битами, а 8, то есть записать в ICR1 255, а не 0xffff, как в примере.
тогда частота будет 16МГц / 512 = 31КГц.
Следующая возможная частота это 8Кгц (я предполагаю, что на обоих таймерах желательно выставить одинаковую, так как на 16битном можно выставить точно почти любую частоту, нас ограничивает 8-ми битный).
Для 8 КГц выбираем fastPWM и делитель на 8. И нужно быть внимательным к константам, в примере ошибка и в них тоже.
Читайте же ДатаШит, мать его! Там примитивным языком все написано,для ниггеров из американского ПТУ!
Читайте же ДатаШит, мать его! Там примитивным языком все написано,для ниггеров из американского ПТУ!
Да был я в этом 660-ти страничном журнале для краснодипломных выпусников физмата со стажем программирования в 20 лет) Тот кто его писал явно не умеет структурировать правильно информацию - WGM13 в даташите встречается 41 раз. И как понять в каком из сорока одном месте это несёт верный смысл для меня - не знаю. Автору даташита стоило просто сделать таблицу с режимами, какие биты включить, а какие выключить, что бы получить тот или иной режим, а в место этого получается 660 страниц каши, из которой только одна треть несёт информацию понятную для нигеров из ПТУ (или таких как я) :)
Даташиты обычно ниггерами из буржуазных ПТУ и пишуца. Технический писатель у них называется.
нужно быть внимательным к константам, в примере ошибка и в них тоже.
Речь о моём примере? Подскажите ошибку, пожалуйста, что мне всё с микроскопом не перепроверять.
Речь о моём примере? Подскажите ошибку, пожалуйста, что мне всё с микроскопом не перепроверять.
Нет, конечно! У ТС в его примере.