Как использовать ШИМ с DRV8870?

Я использую Arduino nano и не могу работать с микросхемой DRV8870 в режиме ШИМ. Когда я использую analogWrite(_pin, duty_cycle);, двигатель издает странные звуки. Я думал, что это из-за частоты ШИМ, поэтому я попытался изменить ее с помощью TCCR1B = TCCR1B & B11111000 | B00000011; но не получилось.

Компания Texas Instruments написала в своем pdf-файле следующее: "При использовании PWM лучше всего работает переключение между движением и торможением. Например, чтобы запустить двигатель вперед с 50 % от максимального числа оборотов в минуту, IN1 = 1 и IN2 = 0 в течение периода движения, а IN1 = 1 и IN2 = 1 в течение другого периода».

drv8870_pdf

, 👍2

Обсуждение

Вы уверены, что меняете правильный таймер? Только контакты 9 и 10 генерируются Timer1., @KIIV


1 ответ


1

analogWrite(_pin, duty_cycle) будет правильно работать только с выводами, поддерживающими ШИМ. Старые платы Arduino с ATmega8 поддерживают только функцию AnalogWrite() на контактах 9, 10 и 11. Плата Arduino Due поддерживает функцию AnalogWrite() на контактах со 2 по 13, а также на контактах DAC0 и DAC1. В отличие от контактов PWM, DAC0 и DAC1 являются цифро-аналоговыми преобразователями и действуют как настоящие аналоговые выходы. Чтобы найти свой, перейдите по следующей ссылке: https://www.arduino.cc/reference/en/language/functions/analog -io/analogwrite/

,