PCA9685

Portrait de krockdur

Bonjour à tous,

J'utilise une carte ADAFRUIT pour contrôler plusieurs servomoteurs. Elle est construite autour d'un PCA9685.

La carte : https://www.adafruit.com/product/815

Jusqu'à maintenant je l'utilisais de la manière suivante (sans vraiment comprendre...) :

  1. Détermination du pulse mini pour chaque servo qui correspond au 0°
  2. Détermination du pulse maxi pour chaque servo qui correspond à 180°

Ensuite,j'utilise la fonction map() pour directement donner l'angle à l'instruction setPWM()

Exemple :

map_pwm.setPWM(2, 0, map(angle_degre, 0, 180, pulse_min, pulse_max))

Mais apparemment, ce n'est pas la mailleur solution pour piloter des servomoteurs avec le PCA9685.

Ce que je pense comprendre : le pulse pris en paramètre de setPWM est une durée d'impulsion.

Sur le github, il propose d'utiliser cette fonction qui permet de donner les pulse en seconde :

// you can use this function if you'd like to set the pulse length in seconds
// e.g. setServoPulse(0, 0.001) is a ~1 millisecond pulse width. its not precise!
void setServoPulse(uint8_t n, double pulse) {
  double pulselength;
  
  pulselength = 1000000;   // 1,000,000 us per second
  pulselength /= 60;   // 60 Hz
  Serial.print(pulselength); Serial.println(" us per period"); 
  pulselength /= 4096;  // 12 bits of resolution
  Serial.print(pulselength); Serial.println(" us per bit"); 
  pulse *= 1000;
  pulse /= pulselength;
  Serial.println(pulse);
  pwm.setPWM(n, 0, pulse);
}

Je ne comprend pas l'interêt, est ce la bonne manière de faire ?

2nde question, comment connaître la fréquence de la PWM à indiquer ? (je met 60Hz par défaut....)

Merci à tous, bonne journée.

Portrait de krockdur

Bonjour Brossden,

Oui j'avais vu cette vidéo. Mais elle n'aborde pas la question de la fréquence PWM à mettre en place dans mon cas (utilisation d'une PCA9685).

Mon architecture me fait utiliser 16 servos, c'est pour ça que je passe par la carte d'afadruit.

A+

Portrait de krockdur

Oups pardon, dans le datasheet du servo c'est bien précisé 50Hz :)

Portrait de krockdur

Merci,donc c'est bon j'en fais une bonne utilisation. Pour infos, ca me sert pour ce projet (la V2 à gauche).

img_0141.jpg