Преобразователь частоты ШИМ
- Войдите на сайт для отправки комментариев
В общем, задача такая: имеется датчик, выдающий ШИМ-сигнал частотой 760 Герц с заполнением 0-90 процентов. Требуется получить ШИМ-сигнал такого же заполнения, но частотой 200 Герц. Я разработал два решения, но ни одно из них не работает.
Решение 1: самое простое - считаем длину импульса через pulseIn();, умножаем её ~на 4 и пишем digitalWrite, потом - пауза вычисленной длины.
Не работает, т.к. операции чтения занимают слишком много времени, не получается уложиться в паузу
Решение 2: простейший ЦАП - RC-фильтр, ОУ и на аналоговый вход. Если делать analogRead циклом в 100 итераций, то получается очень даже сносно, разброс порядка 1%, вполне допустимо. Потом полученное значение забиваем в analogWrite, и... получаем частоту 490 Гц. А надо 200. Надо другой предделитель.
Посоветуйте, пожалуйста, куда копать.
P.S. забыл приложить мой код (хотя, вряд ли он правильный)
Решение 1:
Решение 2: