Schéma électronique pour dimmer une alimentation DC24V avec le PWM de l'ESP32

Bonjour la communauté,

Je cherche à fabriquer un dimmer de light linéaire contrôlé avec un signal PWM de l'ESP32.
j'aimerais que le contrôle de l'alimentation soit vraiment linéaire au signal PWM envoyé de 0 à 100%.
j'ai essayer d'utiliser juste un mosfet IRF720, un autre essai avec juste un TIP122, les voltages mesurés en sortie sont correct à vide mais dès que je branche des LEDS tout est faussé.
Y a t-il des personnes qualifiées pour m'aider à comprendre et m'aider dans mon projet SVP?

Cordialement?

Sam.

Séries IRF : à éviter. Essaie avec une IRL, un IRLZ44N par exemple.
Il y a encore mieux, mais tout dépend du courant demandé, mais tu n'en dis rien ...

hbachetti:
Séries IRF : à éviter. Essaie avec une IRL, un IRLZ44N par exemple.
Il y a encore mieux, mais tout dépend du courant demandé, mais tu n'en dis rien ...

Bonsoir hbachetti,
en sortie je cherche à controler 3 "bandeaux" de 8 leds 3W 700ma, les bandeaux seront connectés en parallèle sur le mosfet, soit environ 72W

Le signal PWM de 3.3V de l'ESP32 est-il assez puissant, à quelle fréquence faut-il le programmer?

Je cherche à fabriquer un dimmer de light linéaire contrôlé avec un signal PWM de l'ESP32.

Quelle fonction doit être linéaire? Le courant dans les leds en fonction du 0-100 du PWM? Le flux lumineux en fonction du 0-100? Le ressenti que l'on a de l'éclairement en fonction du 0-100?
Parce que d'une part les diodes ne sont pas linéaires, par exemple plus elle sont alimentées plus le rendement baisse. Et la perception ne l'est pas non plus. En principe un PWM linéaire en courant va faire que le mi-éclairement ressenti va se situer plutôt vers 10 que vers 50.

dès que je branche des LEDS tout est faussé.

Ce n'est pas assez précis. faussé dans quel sens? Ca s'allume au moins? C'est les tensions qui ne sont plus bonnes (ce qui peut s'expliquer par le choix du transistor)? ou c'est que ce n'est pas linéaire?

Le signal PWM de 3.3V de l'ESP32 est-il assez puissant, à quelle fréquence faut-il le programmer?

Dans la datasheet de l'IRF720 aucune donnée n'est fournie concernant une commande de grille en dessous de 4.5V. Donc on est dans le flou total.

D'autre part pourquoi choisir un MOSFET haute tension supportant un courant aussi faible, et ayant une résistance RDSon aussi élevée (1.8Ω pour une tension Vgs de 10V) ?
Tout le contraire de ce qu'il faut faire ...

Suggestion : lis ceci mosfets-de-puissance

j'ai essayer d'utiliser juste un mosfet IRF720, un autre essai avec juste un TIP122, les voltages mesurés en sortie sont correct à vide mais dès que je branche des LEDS tout est faussé.

Ce qui me surprend est qu'avec un bipolaire TIP122 le problème de seuil de conduction n'existe pas.
Difficile de donner un coup de main avec le peu de précision des renseignements donnés.

Schéma utilisé ?
Quel instrument de mesure ?
tout est faussé : c'est vague ...

mais dès que je branche des LEDS tout est faussé.

Excuses nous, mais pour nous cela ne veux rien dire, donc on ne peut pas t'aider.

Qu'est-ce que cela veut dire "faussé" ?
Quel courant passe dans les DELs (led) ?
Quelle tension sur les DELs ?
Sont t-elles en série ? en parallèle (là ça craint si elles n'ont pas chacune une résistance en série) ?
etc...
etc.....

Ensuite pour le choix des transistors tu es aussi à coté de la plaque avec un TIP122 qui est un montage Darlington et qui donc présente un VBE de 1,6V.

J'espère que tu as placé une résistance entre la sortie de l'ESP et la base du TIP122.

Un transistor bipolaire ne s'utilise pas comme un transistor MosFet.

Hbachetti t'as aiguillé vers de la documentation sur le choix d'un MosFet moi je t'indique un tuto sur ce forum sur une initiation aux transistors bipolaires et Mosfet.
https://forum.arduino.cc/index.php?topic=100727.0

Attention au paramètre Vgsth des MosFets qui correspond à la tension qui permet le passage d'un courant de 0,25 mA. Oui seulement 250µA.
Il faut largement plus pour débloquer le transistor --> d'où la mise en garde d'Henri sur les IRF, à fuir et a remplacer par des IRL (quand on est sous 5V ! )

Avec un ESP qui est sous 3,3V un IRL avec un Vgsth de 2V ne convient pas, ou avant de passer commande il faut aller mettre des cierges à Lourdes pour tomber sur un bon lot de fabrication (comme pour un IRF utilsé sous 5V).
Un AO3400 qui a un Vgsth max de 1V conviendra beaucoup mieux.

Pour la fréquence de PWM tu prends le réglage par défaut, tu as des travaux plus urgents à terminer et si c'est pour des DELs avec la persistance rétinienne l’œil ne ferra aucune différence.

Bonjour à tous,

merci pour toutes vos réponse et désolé de revenir si tard.
J'avoue que je ne suis pas très précis car j'ai un faible niveau de connaissance en électronique.

Mon projet dans l'idéal serait que la variation de l'intensité lumineuse des leds soit proportionnelle à la commande 0-100% du signal PWM de l'ESP mais pour ça j'imagine qu'il faudrait avoir des caractéristiques techniques précises sur les LEDS et serait surement très compliquer à mettre en œuvre.
Je me limite donc dans mon projet à essayer de retranscrire la variation en pourcentage du signal PWM 3.3Vde l'ESP32 de 0 à 100% pour avoir une variation de mon alimentation de 0 à 100%.

Niveau caractéristiques, je vise une alimentation 24VDC fournissant assez de puissance pour l'ensemble des LEDs, le schema simplifié de mon projet sera comme cette image(un ami m'a orienté sur le principe, ici avec un arduino mais pour moi ce serait un ESP32), avec chaque sortie LEDs pouvant aller d'1 à 3 bandeaux de 3 LEDs 3W 700mA :

schema.png

schema.png

Sur le schema, il faut rajouter une résistance sur la grille de chaque MOS,

a part cela le schema de principe est OK,

Le MOSFET, 3.5A pour 60V, il est OK, meme si j'aurais pris un 5A.. pour etre mieux

en fait tu veux faire un fading de 0% a 100%,

int ledPin = 6;    // LED connected to digital pin 9

void setup() {
  // nothing happens in setup
}

void loop() {
  // fade in from min to max in increments of 5 points:
  for (int fadeValue = 0 ; fadeValue <= 255; fadeValue += 5) {
    // sets the value (range from 0 to 255):
    analogWrite(ledPin, fadeValue);
    // wait for 30 milliseconds to see the dimming effect
    delay(30);
  }

  // fade out from max to min in increments of 5 points:
  for (int fadeValue = 255 ; fadeValue >= 0; fadeValue -= 5) {
    // sets the value (range from 0 to 255):
    analogWrite(ledPin, fadeValue);
    // wait for 30 milliseconds to see the dimming effect
    delay(30);
  }
}

Voici un exemple que tu peux t'inspirer
compris entre 0 (rapport cyclique 0%) et 255 (rapport cyclique 100%).

Si tu veux convertir ta valeur en pourcentage en 0/255

fadevalue = (valeurEnPourcentage /100)*255

Ou l'inverse

ValeurEn% = (fadeValue /255)*100

hazerty565:
Sur le schema, il faut rajouter une résistance sur la grille de chaque MOS,

a part cela le schema de principe est OK,

Oui enfin il faudrait aussi penser à réunir les masses pour que cela fonctionne.
GND de l'arduino au GND de l'alimentation 24V. Sinon les mosFET ne seront jamais passants.

hazerty565:
Sur le schema, il faut rajouter une résistance sur la grille de chaque MOS,

a part cela le schema de principe est OK,

Le MOSFET, 3.5A pour 60V, il est OK, meme si j'aurais pris un 5A.. pour etre mieux

en fait tu veux faire un fading de 0% a 100%,

int ledPin = 6;    // LED connected to digital pin 9

void setup() {
 // nothing happens in setup
}

void loop() {
 // fade in from min to max in increments of 5 points:
 for (int fadeValue = 0 ; fadeValue <= 255; fadeValue += 5) {
   // sets the value (range from 0 to 255):
   analogWrite(ledPin, fadeValue);
   // wait for 30 milliseconds to see the dimming effect
   delay(30);
 }

// fade out from max to min in increments of 5 points:
 for (int fadeValue = 255 ; fadeValue >= 0; fadeValue -= 5) {
   // sets the value (range from 0 to 255):
   analogWrite(ledPin, fadeValue);
   // wait for 30 milliseconds to see the dimming effect
   delay(30);
 }
}




Voici un exemple que tu peux t'inspirer
compris entre 0 (rapport cyclique 0%) et 255 (rapport cyclique 100%).


Si tu veux convertir ta valeur en pourcentage en 0/255

fadevalue = (valeurEnPourcentage /100)*255

Ou l'inverse


ValeurEn% = (fadeValue /255)*100

Merci pour ta réponse Hazerty565, le IRLZ44N que me conseille hbachetti semble être parfait pour mon projet non?
La resistance sur la grille est-elle obligatoire en sortie de l'ESP32 , car elle n'envoie pas de courant je crois en PWM, non?

La resistance sur la grille est-elle obligatoire en sortie de l'ESP32 , car elle n'envoie pas de courant je crois en PWM, non?

Attention il y a plusieurs courant : les courants voulus et les courant parasites.

Effectivement la commande d'un mosfet se fait en tension sans demander de courant.

SAUF QUE l'entrée d'un mosfet se fait sur un condensateur. Plus le mosfet peut passer de courant plus la valeur de ce condensateur augmente.

Il faudra charger le condensateur et le charger nécessitera d'y envoyer des électrons et donc créera ce courant que j'appelle parasite.
Une fois le condensateur d'entrée chargé effectivement il ne passera aucun courant.

Quand la tension de grille (gate) est à 0V le condensateur est déchargé.
Quand la tension de grille passe à 5V le condensateur va se charger.
Qu'est ce qui limitera le courant de charge ?
Si on ne fait rien ce sera le rdson des transistors de sortie du microcontroleur qui fait environ 30 ohms, ce qui donne un courant instantané maximum de 5/30 = 170 mA alors que ces transistors de sortie ne supportent que 20 mA, 40 mA exceptionnellement.

On place donc en série une résistance de 100 à 200 ohms pour protéger le micro.
Attention il ne faut pas mettre une valeur trop élevée en se disant comme cela je suis tranquille, car si le condensateur se charge trop lentement le mosfet mettra plus de temps pour passer de l'état bloqué à l'état court-circuit et il chauffera inutilement.

Il y a une autre résistance qui peut être très importante si le micro et les mosfets sont sur des cartes différentes et reliées par des câbles.
Du à la très forte impédance d'entrée et au condensateur parasite d'entrée, si un fil se déconnecte et se retrouve "en l'air" il fera antenne et chargera le condensateur.
Si la charge du condensateur est suffisante le transistor mosfet peut se mettre à conduire sans ordre de le faire et cela peut être dangereux.
Dans ce cas on place à raz du transistor mosfet une résistance de 10k entre la grille (gate) et la masse.

Voir de la documentation sur la charge d'un circuit RC.

68tjs:
Attention il y a plusieurs courant : les courants voulus et les courant parasites.

Effectivement la commande d'un mosfet se fait en tension sans demander de courant.

SAUF QUE l'entrée d'un mosfet se fait sur un condensateur. Plus le mosfet peut passer de courant plus la valeur de ce condensateur augmente.

Il faudra charger le condensateur et le charger nécessitera d'y envoyer des électrons et donc créera ce courant que j'appelle parasite.
Une fois le condensateur d'entrée chargé effectivement il ne passera aucun courant.

Quand la tension de grille (gate) est à 0V le condensateur est déchargé.
Quand la tension de grille passe à 5V le condensateur va se charger.
Qu'est ce qui limitera le courant de charge ?
Si on ne fait rien ce sera le rdson des transistors de sortie du microcontroleur qui fait environ 30 ohms, ce qui donne un courant instantané maximum de 5/30 = 170 mA alors que ces transistors de sortie ne supportent que 20 mA, 40 mA exceptionnellement.

On place donc en série une résistance de 100 à 200 ohms pour protéger le micro.
Attention il ne faut pas mettre une valeur trop élevée en se disant comme cela je suis tranquille, car si le condensateur se charge trop lentement le mosfet mettra plus de temps pour passer de l'état bloqué à l'état court-circuit et il chauffera inutilement.

Il y a une autre résistance qui peut être très importante si le micro et les mosfets sont sur des cartes différentes et reliées par des câbles.
Du à la très forte impédance d'entrée et au condensateur parasite d'entrée, si un fil se déconnecte et se retrouve "en l'air" il fera antenne et chargera le condensateur.
Si la charge du condensateur est suffisante le transistor mosfet peut se mettre à conduire sans ordre de le faire et cela peut être dangereux.
Dans ce cas on place à raz du transistor mosfet une résistance de 10k entre la grille (gate) et la masse.

Voir de la documentation sur la charge d'un circuit RC.

Merci beaucoup pour toutes ces explications, je m'aperçois que mon projet n'ai pas si simple que ça.
Penses-tu qu'en trouvant la bonne valeur de cette résistance, le mosfet pilotera la sortie proportionnellement à l'entrée de 0 à 100% comme je le souhaite, ou y a t-il d'autres paramètres à gérer, sachant que le signal de sortie PWM de l'ESP32 n'est pas très élevé (il varie entre 0 et 3.3V si j'ai bien compris le principe)?

Tu mélange deux sujets qui sont totalement décorrélés.


Premier sujet : comment commander un transistor mosfet en toutes sécurité.
C'est le rôle des deux résistances : la série pour protéger le microcontrôleur, la parallèle pour ne pas qu'une coupure de câble provoque un incident grave.

Ce qui t'a été dit s'applique uniquement à la commande du mosfet et s'appliquera à toutes les commandes de mosfet peut importe à quoi va servir le mosfet.


Deuxième sujet : est-ce que la PWM est un principe de commande qui va convenir à mon projet.

j'aimerais que le contrôle de l'alimentation soit vraiment linéaire au signal PWM envoyé de 0 à 100%.

C'est quoi l'alimentation ? des volts ? des ampères ?

Je cherche à fabriquer un dimmer de light linéaire

  1. Je pense que c'est pour commander des DEL d'éclairage (led en anglais) enfin je le devine plutôt.
  2. "vraiment linéaire" = sans sanction chiffrée à mettre en face personne ne peut répondre.

Ce que je peux dire parce que j'ai un peu "joué" avec des dels et des lasers de télécom :
Je ne connais que la puissance optique exprimée en watts en fonction du courant.
Hélas pour toi je ne connais pas les lumens, lux, candelas, stéradians et autres unités des éclairagistes qui je pense sont plus adaptées à la perception de la lumière par l'œil.

Avec ce que je connais je dis que

  • la puissance optique (W) est proportionnelle à l'intensité du courant qui traverse la Del.
  • c'est quasiment une droite jusqu'à 80 % de la puissance max.
    Au delà il se produit un phénomène de saturation et la puissance n'augmente plus beaucoup.

Je dirai que la relation entre le courant dans la DEL et la puissance optique est linéaire jusqu'à 80 % de la puissance max, elle ne l'est plus au delà.


PWM :
Mathématiquement cela consiste à intégrer une constante sur une partie d'une période , l'intégrale d'une constante est une droite donc c'est linéaire.

Commande des DELs :
On a vu qu'il faut une commande en courant (surtout pas en tension).
Comment va tu la faire ? Peut être que cela aura une importance sur la linéarité.

Et pour finir : je pense que tu te fais inutilement des nœuds au cerveau sur la linéarité.
Si c'est pour de l'éclairage l'œil lissera tout, si c'est pour un instrument de mesure là je vois mal avec quoi tu vas faire les mesures.

sachant que le signal de sortie PWM de l'ESP32 n'est pas très élevé (il varie entre 0 et 3.3V si j'ai bien compris le principe)?

Là je dis casse cou avec un signal 3,3V il faut un transistor mosfet dont le Vgs_threshold MAX (pas typique et encore moins le min) qui ne dépasse pas 1 V.
Il faut que tu vérifie ce point en téléchargeant la datasheet du transistor que tu vas utiliser.

Le paramètre Vgs_threshold ne correspond pas au courant max mais au déblocage du transistor : c'est par convention un courant de 250 micro ampères

Encore merci pour tes explications 68tjs,

mon projet est bien de commander des DEL d'éclairage oui.

j'envisageais de limiter la puissance des DEL à 80% pour ne les solliciter aux max, donc, si je programme mon signal PWM de sorte qu'il varie entre le Vgsth et 80% de 3.3V ma commande Mosfet est-elle correct?

J'ai pensé à utilisé un petit ampli op en non inverseur pour augmenter le signal PWM de 0-3.3V à 0-5V ou même 0-10V pour pour une marge plus grande sur la référence du Mosfet à choisir, est-ce une bonne idée?

Concernant la commande de courant des DEL, je pensais qu'en faisant varier la tension de sortie grâce au mosfet entrainait également une variation de l'intensité, mais apriori non? Comment doit-je m'y prendre?

Lorsqu'on parle de PWM, le pourcentage indique le rapport cyclique du signal cela n'a rien à voir avec la tension. Le rapport cyclique c'est le temps ou le signal est actif (à 1 en général) sur la période total du signal. Donc un PWM à 80% c'est un signal qui est 80% du temps à 1 et 20% du temps à 0.

Un ampli op pour augmenter l'amplitude du signal et se donner plus de choix dans les mosFET pourquoi pas mais il faut s'assurer des performances dudit ampli op et être certain par exemple qu'il pourra fournir le courant nécessaire pour piloter la gate du transistor ou que ses temps de commutation sont suffisamment rapides pour ne pas faire chauffer le transistor.

En faisant varier la tension, le courant va évidemment varier mais cette relation n'est pas linéaire dans une diode. Maintenant, comme la sensibilité de l'oeil à un flux lumineux n'est pas linéaire non plus je pense que tu te fais bien des noeuds au cerveau pour pas grand chose.
Le plus simple c'est d'essayer le montage le plus simple et au pire tu feras une table de linéarisation après coup.

franchement, pourquoi se faire des noeuds au cerveau comme dit plus, haut,

tu as sur internet, des schemas ou tu as du 24V qui controle des led avec arduino et mosfet....