Base PC USB-CAN auto-alimentée
Date d'initialisation : Août 2008
État actuel : Terminé
Sommaire
![]()
Description générale
L'objectif de ce montage est de permettre de visualiser l'activité d'un bus CAN sur le port USB un PC (compatible à la fois avec Windows, Linux et Mac), et de pouvoir envoyer des messages sur le bus par la même occasion.
Pour ceux qui ne connaîtraient pas, un bus CAN (Controller Area Network) est un bus de terrain permettant à divers composants électroniques intelligents de communiquer entre eux grâce à seulement deux fils (ligne différentielle). Le grand avantage de ce bus par rapport à des communications par I2C, SPI ou série (UART) est son extrême fiabilité. Là où des erreurs de transmissions sont possibles pour ces autres modes de transmission de données, le bus CAN intègre en hardware des vérifications de validité de trame (CRC, stuff error, etc...), si bien qu'il est quasi-impossible d'avoir des messages corrompus (il paraît que le taux d'erreur résiduel est de 4.7x10-11 !).
Le bus CAN est nativement multi-maîtres et gère très bien les priorités de messages. En cas d'erreur de transmission (parasite, etc...), le hardware se charge tout seul de retenter jusqu'à réussir à envoyer le message aux destinataires sur le bus. La vitesse de transmission peut aller jusqu'à 1Mb/s. C'est ce qui équipe l'immense majorité des véhicules pour faire communiquer les différents organes électriques internes en toute sécurité et en limitant le câblage au strict minimum.
Ce module est donc là pour vous apporter une aide dans le développement et le monitoring de modules électroniques dialoguant sur un bus CAN. Il est composé d'un transceiver Microchip MCP2551 (servant d'interface électrique à l'instar d'un MAX232 pour une liaison série), d'un Atmel AT90CAN32 comme contrôleur CAN et microcontrôleur central, ainsi qu'un classique FT232 pour s'interfacer simplement sur le port USB d'un PC (et s'alimenter dessus par la même occasion) tout en étant compatible à la fois Windows, Linux et Mac.
Du point de vue du PC, le module sera reconnu comme une liaison série. Cela signifie que n'importe quel programmeur sachant utiliser une liaison série pourra développer ses propres petits scripts (par exemple en langage PERL, mais la quasi-totalité des langages de programmation sont utilisables du moment qu'ils peuvent dialoguer avec un port série) afin d'analyser le bus selon ses besoins propres. Pour des besoins plus basique, un simple terminal série, comme Minicom sous linux ou l'Hyperterminal sous Windows suffit pour visualiser les trames, et même pour émettre des données.
Le tout est intégré dans un joli boîtier Hammond disponible chez Farnell sous la référence 4272936. Le circuit intégré peut être commandé chez Futurlec à très bas prix (en fournissant le fichier .brd téléchargeable plus bas sur cette page). En tout et pour tout, cette interface -avec sa finition complète- revient à environ 70€, sachant que les modules commerciaux équivalents (sans compter le prix du logiciel d'analyse associé) reviennent entre 2 et 5 fois plus cher. Si vous souhaitez baisser au maximum le prix, vous pouvez toujours ne pas acheter de boîtier, ne pas vernir le circuit imprimé (voire le faire vous-même) et utiliser un connecteur RJ45 simple (au lieu d'un connecteur double) ou bien un connecteur DB9 (se référer à la norme DS102 du CAN-CiA), auquel cas le montage vous reviendra à moins de 40€.
Photos
Côté gauche du boîtier, avec le connecteur CAN au format RJ45 répliqué deux fois pour s'insérer en milieu de chaîne si besoin.
Le boîtier final câblé et en fonctionnement. On distingue bien le bouchon du bus CAN (connecteur sans câble).
Schéma et Circuit Imprimé
Commentaires des visiteurs
Par totokick le 06/09/2008
Joli projet, on sent le professionnalisme!
Pour avoir déjà pensé à réaliser ce type de convertisseur, je m'étais imaginé pouvoir écouter tous les messages circulant sur un bus CAN d'une voiture. Pour par exemple retranscrire la vitesse du véhicule sur un écran LCD...
As-tu songé à ce genre d'utilisation? Sinon quels utilisation en ferais-tu?
Merci
Par Totofweb le 06/09/2008
totokick> Il est effectivement envisageable de relier cette interface au bus ODB d'une voiture pour exploiter les informations disponibles sur le bus (mais dans ce cas, je conseille de configurer le contrôleur pour se mettre en mode "listening" et être sûr de ne pas intervenir sur le bus).
L'autre utilisation possible (celle à laquelle cette interface est destinée) est le développement de robots dont les divers éléments communiquent via un bus CAN, qui est particulièrement adaptés pour les conditions difficiles (grande résistance aux erreurs en tous genres) tout en étant très puissant (l'identifier des messages peut servir d'adressage, on peut avoir un grand nombre d'intervenants sur le bus, la vitesse de transmission est élevée, le hardware se charge de la gestion des erreurs, etc...).
Par tyseb le 04/02/2009
Bonjour j analyse votre schéma et je voit les résistance R8 et R10 que veut dire 0 NC et 120 NC ?en faite il n y a pas de résistance physique c est le circuit imprimer qui est fait résistance ???de plus je voudrait savoir le type des résistance et des condensateur si possible.Merci.Cordialement.seb.
Par tyseb le 04/02/2009
Bonjour j analyse votre schéma et je voit les résistance R8 et R10 que veut dire 0 NC et 120 NC ?en faite il n y a pas de résistance physique c est le circuit imprimer qui est fait résistance ???de plus je voudrait savoir le type des résistance et des condensateur si possible.Merci.Cordialement.seb.
Par tyseb le 04/02/2009
Bonjour j analyse votre schéma et je voit les résistance R8 et R10 que veut dire 0 NC et 120 NC ?en faite il n y a pas de résistance physique c est le circuit imprimer qui est fait résistance ???de plus je voudrait savoir le type des résistance et des condensateur si possible.Merci.Cordialement.seb.
Par Totofweb le 05/02/2009
tyseb> "NC" signifie "Non Connectée". Tout simplement, la résistance de 120R est la résistance bouchon potentielle (documente-toi sur les bus CAN, il est nécessaire de mettre deux résistances de 120R en bouchon aux deux extrêmités du bus).
La résistance de 0R est un potentiel shunt qui sert à relier les alimentations de l'interface USB-CAN au reste du montage. Tu peux alors alimenter ton montage s'il ne consomme que quelques mA (pour des tests basiques) ou bien alimenter l'interface depuis ton montage (à condition alors de ne pas relier la sortie d'alimentation du FT232).
Les résistances et condensateurs sont du type que l'on rencontre classiquement au format CMS 0805 : carbone couche épaisse pour les résistances, céramique multicouche pour les condensateurs.
Par tyseb le 05/02/2009
Bonjour,Merci des infos, le SV2 sa correspond a quoi?je n'arrive pas savoir quel est ce composant.Merci.Cordialement.SEB.
Par Totofweb le 05/02/2009
tyseb> Regarde sur la photo du circuit monté. SV2 n\'est pas un composant, c\'est le connecteur de reprogrammation. Un connecteur HE14 à 2x5 point est utilisé.
Par tyseb le 05/02/2009
excuse moi encore, 1/le connecteur, tu le connecte comment pour reprogrammer?.2/as-tu des infos sur la reprogrammation du at90can32?si tu as des liens internet ou des infos si tu prefere envoie moi par mail.merci des réponse il est vrai que je ne suis pas un pro de la programmation.Merci.Cordialement.Seb
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).
