Electronica

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

Module I2C : Variateur de vitesse n°2 (Bus I2C)


 vari.jpg
Photo du montage

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 commande des moteurs. Une fois connecté sur le bus et alimenté via celui-ci ( Seul une alimentation externe pour les moteurs est requise ),le PIC16C84 se comporte comme un composant I2C possédant 8 registres internes 8 bits accessible individuellement en lecture et en écriture.Le contenu de ces registres permettra de commander précisément le sens de rotation ainsi que la puissance électrique fournit à quatre moteurs ( 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 ! Ainsi , il est possible de définir un régime de fonctionnement par défaut pour les 4 moteurs lors de la mise sous tension du montage. Pour chaque moteur , on peut controler le sens de rotation ( horaire ou anti-horaire ) et la puissance donnée au moteur. Le controle d'un moteur nécessite donc l'utilisation de deux registres du PIC.

RegistreFonction du registre
reg0Sens du moteur N°1
reg1Puissance du moteur N°1
reg2Sens du moteur N°2
reg3Puissance du moteur N°2
reg4Sens du moteur N°3
reg5Puissance du moteur N°3
reg6Sens du moteur N°4
reg7Puissance du moteur N°4
Les registres du PIC

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 = Vari
Numéro de version = 1.0

Le montage proposé ici permet de commander quatre moteurs a courant continue en controlant leur vitesse et leur sens de rotation via le bus I2C. Le montage repose sur le principe du hachage de la tension d'alimentation. la figure 1 explique comment en faisant varier le rapport cyclique de la tension d'alimentation on peut controler la puissance électrique fournie a un moteur ( et donc sa vitesse ... ). Notre hacheur repose sur ce principe. Le montage s'articule autour d'un PIC16C84 qui génére les signaux a rapport cyclique variable .
vari1.gif 
figure 1


Schémas

 vari.gif
Le coeur du montage est un PIC16C84

Ce montage sera relié à 4 interfaces de puissances commandant chacune un moteur.
Le brochage retenu est le suivant :
Broche du PIC16C84Fonction de la broche
RA1Sens du moteur N°1
RB7Puissance du moteur N°1
RA0Sens du moteur N°2
RB3Puissance du moteur N°2
RA2Sens du moteur N°3
RB2Puissance du moteur N°3
RA3Sens du moteur N°4
RA4Puissance du moteur N°4

 puiss.gif
L'étage de puissance qui pilote un moteur

L'étage de puissance composé des quatres transistors T1 à T4 permet de commander un moteur a courant continu de 5V à 40V et jusqu'a 3A ( avec radiateur ... ). Le moteur possède une alimentation propre entre +V mot et 0V mot.Attention ! la masse du moteur 0V mot doit être connecté à la masse du bus I2C. En appliquant des signaux de polarité contraire sur R3 et R4 , le moteur sera alimenté. Si l'on inverse la polarité sur les deux entrée , on inverse ainsi , le sens de rotation du moteur. En appliquant des signaux de même niveau sur les deux entrée , le moteur ne sera pas alimenté.

Réalisation pratique

 conecb.gif
Brochage du module vu de dessus


Comme le montre la photo au début de l'article, le montage a été cablé sur une platine d'expérimentation ELEX N°2.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.

Nomenclature

Résistances

R1,R2,R3,R4 : 2.2K

Condensateurs

C1,C2 : 20pF
C3 : 100nF

Transistors et diodes

T1,T2,T3,T4 : BD679 ( boitier TO126 )
D1,D2 : 1N4004

Circuits Intégrés

IC1 : PIC16C84

Divers :

Un quartz 4Mhz
Un porte circuit 6 broches
Un porte circuit 18 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
Des moteurs courant continu
Eventuellement deux plots ou un connecteur pour l'alimentation des moteurs

Logiciel

Le source VARI.ASM devra être compilé par l'assembleur MPASM de MICROCHIP.Le résultat obtenu est le fichier VARI.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 ( VARI.PAS ) de cette unité , ou directement l'unité compilée ( VARI.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 TVARI.EXE permet de tester ce module. Vous pouvez également télécharger le source TVARI.PAS ( nécessite les fichiers BUSI2C.TPU , PIC.TPU et VARI.TPU )

 tvari.gif
Illustration du programme de test

L'expérience montre que la vitesse de rotation est une fonction quasi-linéaire de la puissance électrique fournit au moteur. Le graphique ci-dessous montre bien la linéarité à partir de 10% de puissance ( il faut bien compenser les frottements ). Ce graphique a été réalisé en respectant le cahier des charges suivant :
- Moteur tournant à vide ( sans charge )
- Alimentation nominale des moteurs à 10V
- Incrémentation de la puissance par pas de 0,4% continuement de 0% à 100%
- Mesure de la vitesse de rotation à l'aide du module tachymètre ( précision de 12 tr/min )

 gvari.gif
Variation de la vitesse en fonction de la puissance électrique