PWM module for Arduino


I'm trying to create a Arduino Nano based PWM generator. However, since the pins from the Arduino only can produce PWM signals up to approx. 1kHz (and I need mauybe 2-3kHz) my plan is to use additional components to create the PWM signal.

My idea is to find a single component that can be operated through Arduino and can generate an adjustable PWM signal. But I'm really having a hard time finding this type of module. For example:

AD9833 Module

This one can produce the wanted waveforms but has no duty cycle adjustment.

1Hz-150Khz 3.3V-30V Signalgenerator

This one seems to be able to do everything I need but is not digitally adjustable through Arduino input.

Does anyone have suggestions on what module to use? Thanks!


Thanks for the fast answer! Think that the PCA9685 is exactly what I need.

Will maybe try to find a smaller one with less channels since I only need one.

If you only need few channels, use a free timer on the Arduino, see e.g. TimerOne library. Only timer 0 should not be touched, because the timing functions depend on its frequency.

With some register tweaks you can easily increase the PWM frequency from the default 490 or 980 Hz (depending on the PWM output pin) - but the vast majority of applications doesn't need this.