 | Photo du module I2C "double tachymetre" |
Le principe de fonctionnementCe 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.
Registre | Fonction du registre | reg0 | Vitesse Moteur N°1 | reg1 | Vitesse Moteur N°2 | reg2 | Compteur d'impultion Octet1 du moteur N°1 | reg3 | Compteur d'impultion Octet2 du moteur N°1 | reg4 | Compteur d'impultion Octet3 du moteur N°1 | reg5 | Compteur d'impultion Octet1 du moteur N°2 | reg6 | Compteur d'impultion Octet2 du moteur N°2 | reg7 | Compteur d'impultion Octet3 du moteur N°2 |
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  | 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 !
 | 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 ...
 | 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 ).
 | 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 ). NomenclaturePour 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 ! )
LogicielsLe 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 )
 | Illustration du programme de test |
Date de création : 28/10/2005 @ 17:00
Dernière modification : 31/01/2008 @ 07:45
Catégorie : Bus I2C
Page lue 12814 fois
Prévisualiser la page
Imprimer la page
|