I was working on a project where I needed 4 different hardware PWM signals to control actuators using PWM drivers. I know that Raspberry pi has four PWM pins but the BCM2711 datasheet shows each pair [GPIO (12,13), (18,19)] is connected to the same channel. Is it possible for me to generate 4 different hardware PWM signals with different duty cycles on each pin at the same time? I use pigpio python library to generate PWM but can do c driver if necessary.
The Pi has only two accessible hardware PWM channels. GPIO 12 and 18 share one setting, GPIO 13 and 19 the other. So if you set GPIO 12 to 15% dutycycle at 400Hz that will come out of GPIO 18 as well (when in PWM mode).
What sort of frequencies and dutycycles do you actually NEED?
For instance pigpio can generate hardware timed PWM at 400 Hz with 250 dutycycle steps (between off and fully on) independently on all of GPIO 0-31.
If that is not good enough you could buy one of those PCA9685 based servo drivers. They are actually general PWM drivers. They might be suitable depending on your requirements.