My team is using two iFlight SucceX 50A BLHeli_32 ESCs. To provide PWM signals for these ESCs we use the Adafruit pca9685 board.
We have a problem where it seems like we dont get the thrust we should, given the PWM signal we are providing. When programming the ESCs with BLHeliSuite32 the PWM Frequency was set do the default 24kHz. On the PCA-board we are using 50Hz. These values confuse us a bit. What are the differance between these two frequencies and do they have an effect on each other and perfomance? What PWM Frequency is on the BasicESC.
As specified in the technical details, the Basic ESC is driven by a pulse-width of 1100-1900us (full-reverse to full-ahead), and has a maximum update rate of 400Hz. The PWM frequency you run at is the ‘update rate’, and the pulse-width is the duration of time that the signal line is set HIGH (3.3-5V) within each period (with the rest of the time set LOW, 0V).
A 50Hz frequency gives a 20ms (20,000us) period within which to do your 1100-1900us pulse to set the speed, which means duty cycles (ratio of HIGH-time to LOW-time) of 5.5-9.5%. Similarly 400Hz → 2.5ms period → valid duty cycles of 44-76%. A 24kHz frequency has a period of ~42us, which is far shorter than the shortest valid HIGH-time of 1100us, so the ESC isn’t able to determine in any meaningful way what speed it’s supposed to be going at.
Hope this helps you understand. Conveniently all the PWM-driven bluerobotics components (lights, gripper, etc) run off the same pulse times of 1100-1900us, so if you can understand one then you can use them all