Arduino, генерирующий меньшую частоту, чем 31 Гц
Я управляю приборной панелью автомобиля с помощью Arduino с помощью функции tone (), однако с минимальной частотой 31 Гц Arduino Uno я могу установить спидометр только на ~12 миль в час или более. Я хотел бы иметь возможность установить скорость от 0, что, по-моему, потребует около 10 Гц. Есть ли какие-нибудь кодовые трюки, которые я мог бы использовать? Может быть, мне следует использовать аппаратный таймер или другую плату?
@Piotr, 👍0
Обсуждение1 ответ
Лучший ответ:
Для этого я бы рассмотрел возможность использования таймера 1 в режиме 14 (быстрая ШИМ, с максимальным значением, контролируемым ICR1), с настройкой прескалера на 64. Затем таймер будет настроен на частоту 250 кГц, что даст вам следующие характеристики:
- частота таймера: 250 кГц (разрешение по времени = 4 мкс)
- минимальная частота: 3,81 Гц (точный период = 218 мкс = 262 144 мс)
- максимальная частота: 125 кГц (период = 8 мкс)
Поскольку разрешение по времени остается постоянным, разрешение по частоте ухудшается по мере увеличения частоты. При частоте 400 Гц разрешение составляет около 0,16%, или 0,64 Гц.
Это не единственное возможное решение. Также будет работать режим переключения, а также другие значения прескалера, которые будут давать различные диапазоны частот и разрешения.
Проверьте таблицу данных, чтобы узнать, как установить биты конфигурации (в основном: неинвертирующая ШИМ на OC1A или OC1B, режим генерации сигналов = 14, прескалер = 64). Возможно, вы сможете найти библиотеки для этого, если вы предпочитаете такой подход, я не проверял эту возможность.
- Генерировать 1,7 МГц с PWM в Uno?
- Можно ли сгенерировать точный тактовый импульс 15 кГц с помощью ардуино?
- Изменение частоты вывода ШИМ на Arduino Uno
- Затухающий светодиод с разными частотами
- Установите частоту ШИМ на 25 кГц.
- Управление скоростью вентилятора с помощью библиотеки Arduino PID
- Как устранить шум от вентилятора 12 В с ШИМ-управлением на низкой скорости
- Генерация частоты ШИМ выше 125 кГц с помощью Arduino Uno
Какой частотный диапазон вы хотели бы охватить?, @Edgar Bonet
Скажем, 10-400 Гц, у меня нет точного числа, потому что каждая комбинация приборов отличается, но 10-400 Гц должны охватывать большинство из них, @Piotr
разве вы не можете включать и выключать штифт в loop (), чтобы снизить частоту импульсов в секунду с 30? Это может быть не так точно, но ваш медленно реагирующий спидометр не будет возражать против дрожания 200us., @dandavis
попробуйте библиотеку Timer1, @Juraj