Electronica

http://cgrosse1.free.fr/guppy/

Module I2C : Tachymètre pour deux moteurs (Bus I2C)

 tachy.jpg
Photo du module I2C "double tachymetre"

Le principe de fonctionnement

Ce module se connecte sur l'interface i2c universelle pour PC décrite sur ce site grace a un cable muni de connecteurs 6P/4C.La base du montage est le module "interface I2C pour PIC16C84" décrit sur ce site auquel a été ajouté quelques composants pour la fonction tachymétrique. Une fois connecté sur le bus et alimenté via celui-ci ,le PIC16C84 se comporte comme un composant I2C possédant 8 registres internes 8 bits accessibles individuellement en lecture et en écriture.Le contenu de ces registres permettra de connaitre précisement la vitesse de rotation des deux moteurs ainsi que la distance totale qui a été parcourue par chaque roue ( voir le tableau ci-dessous ). D'autre part , il est possible de stocker ces registres dans l'EEPROM du PIC qui assure la rétention des données même en cas de coupure de l'alimentation. Les données stockés dans l'EEPROM peuvent être rechargés dans les registres de manière automatique lors des prochaines mises sous tension ! Pour chaque moteur , on dispose d'un registre qui indique sa vitesse et de trois autres registres qui comptabilise toutes les impulsions reçues.

RegistreFonction du registre
reg0Vitesse Moteur N°1
reg1Vitesse Moteur N°2
reg2Compteur d'impultion Octet1 du moteur N°1
reg3Compteur d'impultion Octet2 du moteur N°1
reg4Compteur d'impultion Octet3 du moteur N°1
reg5Compteur d'impultion Octet1 du moteur N°2
reg6Compteur d'impultion Octet2 du moteur N°2
reg7Compteur d'impultion Octet3 du moteur N°2
Les registres du PIC

Pour chaque moteur , le nombre total d'impulsions reçue se calcule facilement par la formule :

Nombre total d'impulsions = Octet1 + Octet2 * 256 + Octet3 * 65536

Ce module pourra être détecté automatiquement grace à sa chaine d'identification ( voir interface I2C pour PIC16C84 pour plus de précisions ) qui vaut :

Chaine d'identification = Tachy
Numéro de version = 1.0

Schéma et réalisation pratique

 moteur.jpg
Photo du capteur tachymétrique ( fourche Opto + roue dentée )

Comme le montre la photo ci-dessus , le capteur de vitesse est une simple fourche optique collée sur le moteur. Une roue dentée montée sur l'arbre moteur sert d'opturateur. L'alternance des dents produit un signal alternatif sur la diode réceptrice. Le réglage est assez pointu et demande l'utilisation d'un oscilloscope car vu la taille des dents , la position de la fourche doit être déterminée avec une assez grande précision. J'ai utilisé de la patte à mastic pour fixer la fourche opto ( séchage très lents ... ). Pour vous faire une idée du résultat obtenu : sachant que la roue comporte 50 dents et que le réducteur utilisé a un rapport de 1:33,2 , un tour de roue correspond a exactement 1660 impusions !

 tachy.gif
Shémas de l'interface d'un capteur tachymétrique

Le schémas ci-dessus devra être réalisé en double ( deux capteurs de vitesses ) : le premier capteur sera relié à la broche RB3 du PIC et le deuxième à RB2. La résistance R1 limite le courant qui circule dans la diode émettrice de la fourche optique. R2 et R3 polarise l'anode de la diode réceptrice aux +5V . Lorsque celle-ci reçoit un signal lumineux , son anode se trouve connecté à la masse. Ce signal est envoyé sur l'entrée non inverseuse de l'ampli op IC1 ( un vulgaire uA741 ) monté en comparateur de tension. R4 et VR1 forme un pont diviseur de tension variable grace a l'ajustable VR1 . Cette tension variable est appliquée sur l'entrée inverseuse de IC1 et permet de choisir la tension de basculement du comparateur. Le signal de sortie de IC1 disponible sur la broche 6 est un signal carré dont la fréquence dépend directement du nombre de dents qui passent entre la fourche optique. Le condensateur C1 et la diode D3 permettent d'obtenir de courtes impulsions sur les fronts montants du signal carré ( la diode D3 court-circuitant les tensions négatives du aux fronts descendants ) . R5 polarise les entrées du PIC16C84 au 0V. La vitesse d'exécution du PIC16C84 à 4Mhz permet par un simple pooling logiciel de détecter les courtes impulsions sans perte ...

 conpic1.gif
Shémas de connexions des capteurs aux PIC16C84

Comme d'habitude , les lignes SDA et SCL sont directement reliées aux broches bidirectionnels RB0/RB1. L'utilisation de RB0/INT permet de déclencher une interruption logicielle du PIC16C84 lors de l'arrivé d'une trame I2C.Les broches RB4,RB5 et RB6 sont des entrées qui possède des résistances de pull-up vers le +5V. Un dip-switch à 3 interrupteur permet de forcer celles-ci à l'état bas.Il est ainsi possible de personaliser l'adresse I2C de la platine ( même lorque le montage est alimenté ! ).L'adresse de base étant 24. Un oscillateur à quartz cadencé à 4Mhz est connecté sur les entrés OSC1 et OSC2.L'alimentation du montage se fait directement à partir du bus I2C. Les broches RB3 et RB2 servent a connecter les deux interfaces tachymétriques ( voir plus haut ).

 conecb.gif
Brochage du module vu de dessus


Les deux modular jack ont un brochage différent repéré par les symboles comme sur la photo ci-dessus. Pour avoir plus de précision sur la connection de ce module à l'interface allez voir sur la page de cette dernière. Tous les composants prennent place sur une platine d'expérimentation ELEX N°1 ( voir la photo du début ).

Nomenclature

Pour la réalisation des deux capteurs tachy et de leurs interfaces il faudra doubler le nombre de certains composants ( voir le premier schémas ).

Résistances

R1 : 820
R2,R5 : 1K
R3,R4 : 10K
VR1 : 10K ajustable

Condensateurs


C1 ( tachy ) : 100 nF
C1,C2 ( PIC ) : 20 pF
C3 : 100 nf

Diodes


D3 : 1N4001

Circuits Intégrés

IC1 ( pic ) : PIC16C84
IC1 ( tachy ) : Ampi-Op uA741

Divers :

Un quartz 4Mhz
Un porte circuit 6 broches
Un porte circuit 18 broches
Deux porte circuits 8 broches
Deux connecteur modular jack 6P/4C à souder sur CI.
Le cordon de laison 6P/4C.
Un dip-switch à 3 interrupteurs
Une barrette sécable de 36pts simple rangée droite
Deux fourches-optos ( les miennes sont récupérés sur de vieilles imprimantes ! )

Logiciels

Le source TACHY.ASM devra être compilé par l'assembleur MPASM de MICROCHIP.Le résultat obtenu est le fichier TACHY.HEX qui servira a programmer le PIC16C84.
Une unité écrite en Turbo Pascal permet de gérer ce module.Vous pouvez librement télécharger le source ( TACHY.PAS ) de cette unité , ou directement l'unité compilée ( TACHY.TPU ) a intégrer dans vos projets futurs. Le listing étant documenté , je ne m'attarderais pas sur le fonctionnement de cette unité.

Une DLL ( 16 bits ) sera bientot disponible pour ceux qui désirerait programmer sous windows.

A titre d'exemple, le programme TTACHY.EXE permet de tester ce module. Vous pouvez également télécharger le source TTACHY.PAS ( nécessite les fichiers BUSI2C.TPU , PIC.TPU et TACHY.TPU )

 ttachy.gif
Illustration du programme de test