/home/totofweb/homepage
Christophe Le Lann's Homepage v0.8
 

Carte de contrôle de 12 servomoteurs sur bus CAN

Date d'initialisation : Juin 2009
État actuel : Terminé

Sommaire

Carte de contrôle de 12 servomoteurs sur bus CAN

Description générale

Caractéristiques principales

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é).
global.jpg
Photo de la carte terminée (sur cette photo, le microcontrôleur AVR AT90CAN128 n'est pas encore soudé).

Schéma et Circuit Imprimé


Aperçu du schéma au format PNG.
schema.png
Aperçu du schéma au format PNG.
Typon du circuit sous Eagle.
Servomoteurs.brd
Typon du circuit sous Eagle.
Schéma du circuit sous Eagle.
Servomoteurs.sch
Schéma du circuit sous Eagle.
Aperçu du typon au format PNG.
typon.png
Aperçu du typon au format PNG.

Code source


Constantes définissant les identifiers utilisés.
can_protocol.h
Constantes définissant les identifiers utilisés.
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.
code.zip
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.
main.c
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é.
servos.c
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

Laisser un commentaire

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).


Pseudo
Mail (facultatif)
Votre message
erreur de génération du cryptogramme visuel. Veuillez recopier le cryptogramme visuel :