Describe the scope of your change--i.e. what the change does and what parts
of the code were modified.
In theory the datasheet says the internal oscillator (clock) is 25MHz but in testing the internal oscillator for the PCA9685 chip is a range between about 23-27MHz.
Adafruit testing for implementing the int.osc. showed and upper level of about 27 Mhz
My own testing with 4 different Adafruit PCA9685 16-Channel Servo Drivers gave 24060000, 24090000, 24600000, and 25000000 Mhz when tuning the int.osc. frequency to get approximately 50Hz PWM signals. Actual pwm signals were 50.6xx to 50.1xx Hz across the four chips tested as the PCA9685 chip output is not super precise.
This PR expands the notes on the PWM frequency and gives rough instructions on checking the PWM frequency for tuning the int.osc. value.
Describe any known limitations with your change.
none
Please run any tests or examples that can exercise your modified code.
Adafruit testing for implementing the int.osc. showed and upper level of about 27 Mhz
My own testing with 4 different Adafruit PCA9685 16-Channel Servo Drivers gave 24060000, 24090000, 24600000, and 25000000 Mhz when tuning the int.osc. frequency to get approximately 50Hz PWM signals. Actual pwm signals were 50.6xx to 50.1xx Hz across the four chips tested as the PCA9685 chip output is not super precise.
Test were conducted with an Arduino Uno or an Arduino Mega, 4 different Adafruit PCA9685 16-Channel Servo Drivers; either as a single chip or chained as two drivers, and later implemented as four chained drivers. as 4 chained drivers and the tuned int.osc. values for each specific chip the 50 hz PWM signals were able to correctly drive 25 ESC's adding a second layer of verification that the tuned int.osc values were correct.
Video of the 25 fan array utilizing the four Adafruit PCA9685 16-Channel Servo Drivers after tuning the int.osc. frequency. Prior to tuning the int.osc. value some of the ESCs would not respond.
https://youtu.be/eqOsOWWBtR0
This PR expands the notes on the PWM frequency and gives rough instructions on checking the PWM frequency for tuning the int.osc. value.
Describe any known limitations with your change. none
Please run any tests or examples that can exercise your modified code. Adafruit testing for implementing the int.osc. showed and upper level of about 27 Mhz My own testing with 4 different Adafruit PCA9685 16-Channel Servo Drivers gave 24060000, 24090000, 24600000, and 25000000 Mhz when tuning the int.osc. frequency to get approximately 50Hz PWM signals. Actual pwm signals were 50.6xx to 50.1xx Hz across the four chips tested as the PCA9685 chip output is not super precise.
Test were conducted with an Arduino Uno or an Arduino Mega, 4 different Adafruit PCA9685 16-Channel Servo Drivers; either as a single chip or chained as two drivers, and later implemented as four chained drivers. as 4 chained drivers and the tuned int.osc. values for each specific chip the 50 hz PWM signals were able to correctly drive 25 ESC's adding a second layer of verification that the tuned int.osc values were correct. Video of the 25 fan array utilizing the four Adafruit PCA9685 16-Channel Servo Drivers after tuning the int.osc. frequency. Prior to tuning the int.osc. value some of the ESCs would not respond. https://youtu.be/eqOsOWWBtR0