Carte de contrôle de 12 servomoteurs sur bus CAN
Date d'initialisation : Juin 2009
État actuel : Terminé
Sommaire
Description générale
Caractéristiques principales
- Microcontrôleur Atmel AVR AT90CAN128 (c'est un AtMega128 avec un contrôleur CAN intégré)
- Gestion de 12 servomoteurs de modélisme dans la version présentée ici, jusqu'à une cinquantaine en ajoutant quelques composants.
- Précision de 8bits
- Vitesse de rotation paramétrable
- Enregistrement des positions par défaut en EEPROM
- Alimentation à découpage par un module TI PTN78060 (supporte jusqu'à 18V en entrée, rendement de 95%)
- Optoisolation entre la partie logique et la partie puissance
- Envoi de commandes de contrôle par deux moyens possibles :
- Un bus CAN (jusqu'à 1Mb/s)
- Une liaison série (jusqu'à 115200bps)
Description
Cette carte permet de contrôler jusqu'à 12 servomoteurs de modélisme. En réalité, le principe peut être étendu pour cette carte jusqu'à presque 50 servomoteurs simultanément.
La vitesse de rotation des servomoteurs est paramétrable, ce qui se traduit en réalité par une variation progressive des signaux PWM envoyés aux servomoteurs (puisque les servomoteurs de modélisme ne peuvent pas d'eux-mêmes paramétrer leur vitesse de rotation)
Elle dispose d'une double interface de commande, il est ainsi possible de la piloter soit à partir d'un bus CAN (très robuste et très pratique à mettre en oeuvre dans un robot) ou bien à partir d'une liaison série (plus simple à mettre en oeuvre, généralement plus répandue).
Génération des servomoteurs
La méthode de génération des signaux PWM (inspirée de celle du projet Bleuette) est tout particulièrement conçue de manière à optimiser l'usage du microcontrôleur pour ne nécessiter qu'une faible partie de son temps tout en évitant que les signaux soient perturbés lors de l'arrivée de commandes sur l'une des deux interfaces.
Il est en effet courant, que ce soit sur les cartes "maison" ou même sur des cartes achetées, que les signaux des servomoteurs soient déformés temporairement lors de l'arrivée de commandes, ce qui se traduit par des petits sursauts des servomoteurs. Ce n'est pas le cas ici.
Isolation
L'isolation entre la partie puissance et la partie logique est assurée par des circuits ADuM1400 de chez Analog Devices. Si vous souhaitez économiser un peu sur le prix de la carte, il est possible de s'en passer (à vos risques et périls), mais je conseille toutefois de conserver un minimum de protection contre les remontées de parasites en provenance des servos : un simple buffer logique de la série des 74xx, inverseur ou non, ou au moins une simple résistance de protection.
Photos

Photo de la carte terminée (sur cette photo, le microcontrôleur AVR AT90CAN128 n'est pas encore soudé).
Schéma et Circuit Imprimé
Code source

Ensemble des quelques 25 fichiers en C permettant de faire fonctionner la carte : cela peut sembler beaucoup, mais le code est beaucoup compartimenté, car beaucoup de fichiers sont des drivers génériques personnels.

Fichier principal du code, où l'on peut voir les parseurs des commandes en provenance du bus CAN et du port série.

Principal fichier concerné par la génération du signal PWM des servomoteurs, avec une gestion de la vitesse de mouvement. La génération se fait en utilisant des masques binaires ordonnés chronologiquement pour gagner en efficacité.
Commentaires des visiteurs
Par #6 le 20/08/2009
il est mentionné que la carte est facilement extensible. Avez-vous une version du typon prenant en compte un pus grand nombre de servo ?
Par Totofweb le 20/08/2009
#6> Désolé, je n'ai pas d'autre typon à proposer, mais la démarche à suivre est simple : il suffit de répliquer les portes d'isolation ADuM1400 et le reste des composants de la partie de gestion des servos et de les mapper vers des pattes libres du microcontrôleur. Dans le code, il faut aussi penser à modifier les masques binaires du fichier servo.c pour qu'il les prenne en compte. La structure du code à base de masque binaires fait que la gestion de nombreux servos est possible là où d'autres algorithmes donneront de moins bonnes performances pour un nombre important de servos.
Par mortaurat le 31/01/2010
Bonjour,
j\'ai regardé avec attention votre projet et je me demandé où se trouvé la parti puissance ?
le ADuM1400 ne peut fournir que 20mA environ, alors qu\'un servo avec charge consomme 200mA.
Par Totofweb le 01/02/2010
Mortaurat> L'ADuM1400 n'est là que pour driver les signaux de commande tout en garantissant une isolation équivalente à celle d'un optocoupleur. Les servos ne consomment qu'un courant négligeable sur ces signaux de commande. La puissance fournie aux moteurs provient du fil (+6V) de ces servos, lequel est ici câblé sur la sortie d'une alimentation a découpage capable de fournir un courant de plusieurs ampères (des servos à fort couple ont parfois besoin de beaucoup, et comme en plus on en utilise plusieurs en parallèle...).
Par hugo86000 le 23/12/2010
Pouvez vous m envoyer les fichiers code.zip,main.c et servos.c sur florianf86190@hotmail.fr svp, car je n arrive pas à les recupérer sur la page web.
Merci d'avance
Par tyty le 27/07/2011
Je suis en train d'étudier votre code pour coder ma propre communication mais il manque l'include can_protocol.h dans les sources, pouvez-vous me dire où le trouver, merci.
Par Totofweb le 27/07/2011
Tyty> Le fichier can_protocol.h ne contient rien d'autre que quelques constantes propres à chaque application, les identifiers des messages CAN. Ces constantes seront probablement amenées à changer pour ton propre projet. J'ai quand même rajouté celui que j'avais utilisé, comme exemple (à côté du zip contenant le code)
Par Emmanuel SOCRATE le 06/07/2012
J'ai un groupe electrogene de 440 kva dont la surveillance est effectuée sur base d'une carte de données appelée "CB 12"dont j'ignore le fonctionnement,l'utulisation....car le groupe est équipé d'un moteur volvo penta du type TAD 1242 GE.
Le moteur demarre au bout de 2 minutes il arrete de soi meme.
Veuillez m'aider à trouver cette panne car ma profession en depend.
Merci
Par Bes63 le 19/10/2012
Salut Emmanuel Socrate ton groupe est équipe de quel automat necsys Telys??
Par aiche le 17/05/2013
je chercher un projet de traitement du signale avec pic 18f
Par aiche le 17/05/2013
bonj je chercher un projet qui explique le traitement du signal avec pic 18f
Laisser un commentaire
Merci de ne poster ici que des questions ou commentaires concernant réellement le projet présenté sur cette page. Si vous recherchez de l'aide pour réaliser vos propres projets, merci de vous tourner vers des forums appropriés tel que celui de Planète-Sciences (où je suis très présent).