Servo Node

De Wiki LOGre
Aller à : navigation, rechercher

Projet réalisé par fma38.

En cours

Présentation

Pour piloter mon hexapode, j'ai développé un hat pour Raspberry Pi, avec 2 chips PCA9685. Chacun de ces chip permet de sortir 16 PWM hardware, ce qui permet de contrôler au total 32 servos (mon hexapode en utilise 24). Avec cette solution, c'est le Rapsberry Pi qui doit générer les variations de PWM pour déplacer les servos de manière synchrone. Mon framework Python (Py4bot), utilise un coeur dédié du RaspBerry pour cette tache.

Le but du présent projet est de déporter la génération des PWM et la synchronisation des servos sur des cartes dédiées. le µ-contrôleur ATtiny841 dispose de 2 timers 16 bits, pouvant donc générer 4 PWM hardware, et, surtout, d'un port I²C esclave hardware. Non seulement cela simplifie l'écriture de la partie I²C (c'est le µ-contrôleur qui gère les erreurs et les timings), mais cela laisse surtout la majorité du temps CPU pour faire des choses sioux.

J'ai donc créé une petite carte pouvant contrôler 4 servos, gérer 3 I/O et lire un ADC. En mettant une carte par patte, et en les reliant en I²C, on obtient un système très modulaire, et qui permet de réaliser un câblage plus léger. Les I/O peuvent par exemple être utilisées comme détection (sol, collisions...).

Électronique

Le projet Kicad peut être téléchargé depuis le dépôt Framagit

Servo Node 1.png Servo Node 2.png

Logiciel

Le code est écrit directement avec avr-libc, ce qui permet beaucoup plus de souplesse qu'en utilisant les librairies Arduino. Par contre, faut se bouffer de la datasheet :o/

Il peut être téléchargé depuis le dépôt Framagit

Liens