J’ai réalisé la partie assemblage d’un robot quadrupède. Chaque « jambe » est contrôlée par 3 servos. Il me faut donc une solution pour contrôler indépendamment 12 servos.
Chaque servo monopolise un pin de la carte Arduino pour être contrôlé via un signal PWM. J’avais expliqué ce montage dans l’article https://randomcraftr.com/?p=1497.
Pour contrôler 12 servos, 12 pins sont nécessaires. Cela laisse peu de place pour connecter au robot un autre équipement : LEDs, actuateur ou senseur. Je décide donc de dédier un arduino complet juste pour la génération des signaux PWMs. Il faut connecter cet arduino à une seconde carte arduino qui le contrôlera. Je choisis pour cela le protocole I2C: il ne nécessite que deux fils pour communiquer avec un composant qui utilise le même protocole.
Il faut donc:
- Programmer une carte Arduino « maître » qui enverra les consignes de positions pour les 12 servos via le protocole I2C.
- Programmer une carte Arduino « esclave » qui traduira les consignes de positions reçues via le protocole I2C en 12 signaux PWM indépendants pour les 12 servos.
Voici le schéma de montage avec le code préchargé pour simuler le comportement sur 3 servos.
Et je reproduis le code de l’Arduino maître:
Ainsi que celui de l’Arduino esclave:
Une fois ce principe de fonctionnement établi, on peut porter la partie esclave sur un ATMEGA hors de la carte Arduino, et brancher ainsi toutes les pattes du robot.
Le schéma sous une forme moins interactive: