Un variateur de vitesse I2C pour moteur a courant continue ( sans microcontrolleur )


Photo du montage

Le principe de fonctionnement

figure 1

Le montage proposé ici permet de commander un moteur a courant continue en controlant sa vitesse et son 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 donc autour d'un générateur de signal a rapport cyclique variable . La forme des signaux seront codées dans une eprom par une "trame" de 128 octets. ( un octet programmé a 255 corresspondant a la présence d'alimentation , alors qu'un octet valant 0 correspond a l'absence d'alimentation ). Il suffira donc d'assurer un balayage répétitif du contenu de l'eprom ( une "trame" de 128 octets ) pour obtenir en sortie , un signal périodique dont le rapport cyclique pourra être programmé avec précision. Une eprom de type 27C256 pourra accueillir un grand nombre de "trame" différentes : chacune correspondant a un signal de sortie ayant un rapport cyclique différent.
Le choix de la liaison I2C est motivé par sa souplesse . En dotant le montage d'une telle liaison , celui-ci s'intégrera sans problème dans une chaine I2C déja existante ,et cela avec une simple liaison bifilaire. Je propose , ailleur sur ce site , des informations sur le bus I2C ainsi qu'un montage qui permet de simuler le bus I2C a l'aide d'un port parallèle d'ordinateur.

Schémas

figure 2

Les schémas du variateur sont visibles sur la figure 2 . Un PCF8574 ( interface 8 bit I/O ) permet a partir des lignes SDA et SLC du bus I2C de commander notre variateur. La ligne D5 du PCF8574 commande une horloge ( IC4a et IC4b ) . Ainsi , si l'on positionne la ligne D5 de IC1 a 1 , on provoque le démarrage de l'horloge . Le signal carré généré par celle-ci attaque l'entrée CK du compteur binaire IC2 . la sortie Q7 de IC2 a été reliée a l'entrée de remise a zéro : Ceci provoque la remise a zéro du compteur dés qu'il atteint la valeur 128 ( Q7 = 1 ) . On obtient donc sur les sortie Q0 à Q7 du compteur IC2 , succesivement , les valeurs 0 à 127 . Celle-ci étant reliées aux lignes d'adresse A0-A6 de d'une eprom 27C256 , on obtient un balayage régulier de 128 octets consécutifs de l'eprom. Ce sytême assure donc le balayage régulier d'une "trame" de 128 octets. Les lignes D0-D4 du PCF8574 permettent de sélectionner quel "trame" de l'eprom on désire balayer. Les lignes A7 à A11 de IC3 permettent de distinguer 32 "trames" différentes ( Trame n°0 à la trame n°31 ). Chaque "trame" de 128 octets code la forme du signal de commande qui sera appliqué au moteur.
figure 3

La figure 3 montre le lien entre le contenu de l'eprom et le signal obtenu en sortie ( Ligne D0 de l'eprom ). 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 est connecté entre M- et M+ et son alimentation entre 0V et V++ . Si l'on applique une tension sur R3 le transistor T2 devient passant : Le point M- sera donc relié a la masse 0V. La base du transistor T1 étant relié à la masse il reste bloqué Si l'on applique une tension nulle sur la résistance R3 , le transistor T2 reste bloqué . La base de T3 recoit donc une tension non nulle , il est conducteur : Le point M- sera dans ce cas relié à v++ . Le montage est symétrique . On peut donc de la même façon relier M+ à la masse ou à V++. En appliquant des signaux de polarité contraire sur R3 et R6 , le moteur sera alimenté via M- et M+ . 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

Programmez l'EPROM avec le contenu de ce fichier binaire. La programmation de l'EPROM est tel que la variation de puissance appliquée au moteur soit linéaire de 0% à 100% par pas de 3%. Vous pouvez obtenir ce fichier a l'aide de ce petit programme.
program eprom_vari1;
var
   i,j,n,actif : integer;
   b : byte;
   fichier : file of byte;

begin
     assign(fichier,'c:\eprom1.bin');  {Le fichier ou se trouve le résultat}
     rewrite(fichier);
     for n:=0 to 31 do
         begin
              actif:=round(n*128/31);
              b:=255;
              for i:=1 to actif do write(fichier,b);
              b:=0;
              for j:=1 to 128-actif do write(fichier,b);
         end;
     close(fichier);
end.
Ne disposant pas d'un routeur , je ne peut malheureusement pas vous proposer de "typon" prêt a l'emploi.Si un cybernaute se sent l'envie d'un réaliser un , surtout qu'il ne s'en prive pas ! Ce serait bien d'en faire profiter tout le monde ! et moi en premier ... |:-)
Sinon vous pouvez faire comme moi , et utiliser une platine pastillée pour expérimentation.

Logiciel

Vous pouvez téléchargez le logiciel de commande du variateur. Ce logiciel permet a l'aide d'un menu de commander le moteur , son sens de variation , sa vitesse via le bus I2C. Vous devrez auparavant construire l'interface port parallèle/Bus I2C décrit sur ce serveur. Ce programme est écrit en turbo pascal et est facilement adaptable a un autre language.


Vous pouvez m'écrire à l'adresse suivante : chrisg@easynet.fr .