Electronique > Réalisations > Générateurs > Générateur PWM (MLI) 004

Dernière mise à jour : 21/10/2009

Présentation

Ce quatrième générateur PWM (MLI) produit un signal dont le rapport cyclique est proportionnel à une tension continue, pouvant provenir par exemple d'un simple potentiomètre. Ce circuit peut servir de base à un gradateur de lumière évolué (voir page Gradateur de lumière 012), ou à la commande de moteurs électriques via une interface de puissance en pont (bridge) adaptée à l'utilisation voulue. Il est fait ici usage d'un PIC de type 18F2520, qui intègre tout le nécessaire pour la lecture de la tension de commande (convertisseur analogique / numérique intégré) et pour la commande de la charge (sortie PWM évoluée).

Le schéma

Le circuit ci-après montre le circuit de commande, sans la partie puissance qui devra être choisie en fonction de la charge à piloter.

gene_pwm_004

Fonctionnement général
Il est assez simple en fin de compte. Le PIC 18F2520 comporte un CAN (Convertisseur Analogique / Numérique) intégré, que l'on met à contribution pour lire la tension de commande. La valeur numérisée est ensuite directement utilisée pour définir le rapport cyclique du générateur PWM lui aussi intégré sur la puce du microcontrôleur. On peut exploiter la pleine échelle du CAN tout comme on peut l'exploiter en partie, mais cette dernière option n'a guère d'intérêt ici. Il est donc décidé qu'à une tension de commande de 0 V correspond un rapport cyclique de 0 %, et qu'à une tension de commande de +5 V correspond un rapport cyclique de 100 %. Comme le CAN à une résolution de 10 bits, la valeur numérisée peut se trouver entre 0 et 1023 (1024 valeurs possibles). Pour obtenir un rapport cyclique de 50 % en sortie du générateur PWM, il faut donc une tension de commande de +2,5 V, qui une fois numérisée donnera la valeur de 511 ou 512. Le calcul est donc vraiment tout bête à faire : on fait la conversion de la tension de commande (Vcde), et on divise la valeur numérisée par 10,2 pour obtenir en un seul coup la valeur du rapport cyclique.
RapportCyclique = ValeurNumérique[Vcde] / 10.2
Facile, non ?

Commande d'un moteur (au cas où l'idée vous viendrait à l'esprit)

La commande d'un moteur peut s'effectuer de différentes façons. Si on se contente de vouloir réguler la vitesse d'un petit moteur à courant continu, on peut se contenter d'une commande à "un seul fil", tel qu'on peut le voir sur les pages Régulation simple pour moteur 003 ou Générateur PWM 003. Si on veut faire tourner un moteur dans un sens ou dans l'autre, le fonctionnement diffère légèrement, même si le principe du signal PWM reste appliqué. Pour cela, on commande le moteur non pas au travers d'un seul transistor, mais avec deux transistors (alim double requise) ou avec quatre transistors (alim simple requise). C'est ce que montrent les schémas qui suivent.

pwm_moteur_001a
Commande en "deux fils"

pwm_moteur_001b
Commande en "quatre fils"

Conduction simultanée de tous les transistors
Les transistors sont de type MOSFET car ils présentent en mode passant, une résistance plus faible que les transistors bipolaires, et occasionnent ainsi moins de perte en conduction (et donc moins d'échauffement). Mais malheureusement aussi, une capacité parasite plus élevée au niveau de leur patte de commande (Gate), qui "conserve en mémoire" l'état ON même quand on leur demande de ne plus conduire. Cet état mémoire, lié à la charge emmagasinée dans la capacité parasite, est pénalisant pendant les phases de transistion On/Off et Off/On car le temps de coupure (passage à l'état bloqué des transistors) est plus long que le temps d'établissement (passage à l'état passant). Cela signifie simplement que si on se contente de piloter les transistors "complémentaires" par des signaux de polarité opposée, il se trouve un moment ou tous sont conducteurs en même temps, ce qui occasionne de fortes pointes de consommation et réduit le rendement globale de l'interface de puyissance. Dans les cas extrêmes, cela peut même détruire les transistors de puissance. La commande de ces derniers doit donc de préférence se faire avec une petite période de temps mort au moment des transistions : on coupe les transistors qui doivent être bloqué, on attend un petit peu (le petit peu est évidement relatif à la fréquence de fonctionnement), et on active les transistors qui doivent être passants. Si tout se passe bien, on ne trouve à aucun moment tous les transistors simultanément en conduction. La gestion de ce temps mort peut être assurée par des circuits logiques traditionnels, ou peut être prévue dans un circuit intégré spécialisé pour le contrôle de moteurs ou dans un microcontrôleur.

Adaptation pour pilotage d'un moteur (au cas où...)

Le schéma montré en début de page, avec le logiciel proposé en téléchargement ci-après, convient pour la commande de "petits" moteurs. Pour le pilotage d'un gros moteur, il convient de connaitre avec précision ses caractéristiques techniques pour ne pas s'exposer à des problèmes de fonctionnement, voire à la destruction d'un ou plusieurs composants (transistors MOS de puissance ou moteur lui-même). Il vous faudra en particulier vous assurer que la fréquence de fonctionnement du ou des signaux PWM convient à votre moteur (pas de raté ni surconsommation), et éventuellement jouer sur la durée des "temps morts" (dead-band). Ici, la fréquence est fixée à 10 KHz, mais vous pouvez la modifier dans la section d'initialisation principale Main_Init du code source fourni :

// generateur PWM 004

procedure MainInit;
begin
{
partie du code non montrée ici

}
// PWM init
CCP1CON := CCP1CON or %00001111;
PWM1_Init(10000); // Freq = 10 KHz
PWM1_Set_Duty(0);
PWM1_Start;
PWM2_Init(10000); // Freq = 10 KHz
PWM2_Set_Duty(255);
PWM2_Start;
end;


Notez la présence de deux séquences d'initialisation, une pour la sortie PWM1 et l'autre pour la sortie PWM2 (la fréquence est obligatoirement la même pour les deux). La seconde peut être supprimée si vous ne comptez pas l'utiliser.

Logiciel du PIC

Les fichiers de code source (MikroPascal V3.20 Pro) et binaire compilé (*.hex) sont disponibles dans les archives dont les liens suivent. 
Générateur PWM 004 - PIC 18F2520 - 21/10/2009
Si vous souhaitez recevoir par la poste un PIC préprogrammé et prêt à utiliser, merci de consulter la page PIC - Sources.