Ajuster la tension d’un module buck en pwm avec un arduino

Ajuster la tension d’un module buck en pwm avec un arduino

Pour un projet, j’ai eu besoin d’un module buck basé sur un LM2596 dans le but d’abaisser une tension en provenance d’une batterie/panneau solaire pour alimenter une pompe d’une fontaine décorative afin d’ajuster le débit à l’effet visuel voulu. Ça marchait très bien, mais pour ajuster la tension de sortie, il fallait actionner le potentiomètre multi-tours au tournevis.
J’aurais voulu pouvoir l’ajuster via une interface facilement entre 8 et 12V environ.

FeedBack

Le montage du LM2596 en convertisseur buck utilise un pont diviseur pour avoir un retour de sa tension de sortie (R1 et le potentiomètre R2). Il ajuste automatiquement la tension de sortie pour avoir la tension de référence de 1.23V sur sa broche 4.

L’idée, ça va être de venir titiller ce feedback avec notre arduino afin d’obtenir la tension qu’on désire en sortie. J’ai ajouté un fil de contrôle à la broche de feedback avec une résistance (en rouge). L’entrée de contrôle va être pilotée par une tension entre 0 et 5V issue d’une des sorties PWM d’un arduino.

Un peu de maths

La tension sur la broche 4 au point de feedback se calcul avec le théorème de Millman sur les 3 branches : GND et R1, Vout et R2 et Vc et R3. Sur mon module, R1 = 330 Ohms.

    \[\frac{\frac{0}{330}+\frac{V_c}{2200}+\frac{V_{out}}{2900}}{\frac{1}{330}+\frac{1}{2200}+\frac{1}{2900}} = V_{ref} = 1.23V\]

On suppose maintenant qu’en entrée du module buck, il y a une tension d’au moins 12V.

J’ai pris une résistance R3 de 2.2kΩ, ce qui me donne pour une tension de sortie maximum de 12V lorsque Vc = 0 un potentiomètre R2 réglé à environ 2.5kΩ. En passant maintenant à Vc = 5V dans le théorème de Millman, une tension Vout d’environ 6.3V. À noter que le contrôle est inversé, on a la tension Vout maximum quand Vc est au minimum.

Petit schéma

R4 et C  forment le filtre passe-bas, suivi de l’AOP en suiveur. Ne pas oublier l’alimentation de l’AOP qui n’est pas représentée sur le schéma. R3 est la résistance R3 en rouge du schéma ci-dessus.

Tension de contrôle

Maintenant, pour obtenir la tension de contrôle, on va utiliser une des sorties PWM d’un arduino. Sur l’arduino nano que j’ai utilisé il y a plusieurs sorties PWM qui sortent un signal à 490Hz (il y a d’autres sorties qui elles ont une fréquence de 980Hz).
En utilisant la fonction analogWrite(PIN, value) avec value entre 0 et 255, on va faire varier le rapport cyclique du signal. Ce signal sera dirigé vers un filtre passe-bas pour en obtenir une tension continue, puis vers un ampli-op juste en suiveur pour avoir une haute impédance à la sortie du filtre passe-bas.

En jaune, c’est le signal PWM et en bleu la tension après le filtre passe-bas, on retrouve une composante continue. En sortie d’AOP, on trouvera la même tension qu’en entrée vu qu’il est en suiveur.
A noter que si l’AOP est alimenté avec la même tension que l’arduino et son signal PWM (5V) et qu’il n’est pas rail-to-rail, il manquera les extrémités de tension en sortie, ce qui réduira la plage de contrôle de notre module buck. J’ai utilisé un MCP602 que j’avais dans un tiroir, il est rail-to-rail en sortie, et juste « rail » en entrée dans le sens où il n’inclue que la masse.

Réglages finaux

Pour régler la tension maximale de sortie du module buck :

  1. Régler la sortie PWM au minimum avec une valeur de 0 en paramètre de la fonction analogWrite.
  2. Tourner le potentiomètre du module jusqu’à avoir la tension maximale voulue en sortie du buck.
  3. Régler la sortie PWM au maximum avec une valeur de 255 en paramètre de la fonction analogWrite.
  4. La tension de sortie sera la tension minimum atteignable en sortie du buck.
  5. Maintenant les valeurs entre 0 et 255 passées dans analogWrite couvriront les tensions de sortie entre le min trouvé et le max configuré.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *