Transistor ou MOSFET pour moteur 12VDC

Bonjour

Je suis en train de réaliser un système de régulation de pH via introduction de liquides par pompes doseuses. Le tout piloté par une platine Duemilanove.

Après avoir résolu les problèmes d’interfaçage de la sonde pH, j’en suis à résoudre les problèmes de commande des pompes.
Celles-ci sont alimentées en 12VDC. Il s’agit de 2 modèles différents de puissance 10/18W, dont je souhaite pouvoir faire varier la vitesse en fonction de l’écart avec la consigne (PID). Un seul sens de rotation.

J’ai réalisé le schéma qui suit, mais le calcul des composants me pose problème. Ce n’est pas du tout mon domaine, et malgré de nombreuses lectures sur le net, et mon implication pour apprendre les bases de l’électronique, je rame depuis plusieurs jours pour trouver des infos correspondant à mon besoin.

Je dispose de transistors BD131-MAC qui semblent adaptés à mon besoin (3A / gain : 40 / 45V).
Je me suis également orienté sur ce modèle, car il dispose d’une fréquence de fonctionnement possible de 60MHz. Car il semblerait (d’après mes lectures) que le PWM génère du bruit dans les moteurs, et qu’il faille pousser les fréquences pour le limiter. Et comme je fais la chasse aux bruits en tous genre …
Mais comment les alimenter ? Quelle résistance dois-je mettre pour que ceux-ci soient correctement pilotés ?

N'hésitez pas à corriger le schéma si quelque chose ne va pas.

Edit : changement du titre

Merci
Franck

Bonjour,

alors si j'ai bien compris: faire varier la vitesse d'un moteur en un seul sens de rotation.

la résistance de base (entre pin arduino et la base du transistor) doit limiter le courant demandé à l'arduino => au moins 1k Ohms.

comment les alimenter => je ne comprends pas la question (batteries/piles/transformateur?)

en modifiant un peu les registres de l'arduino (je crois que c'est bien les registres) on peut utiliser la fonction PWM avec une fréquence de découpage d'environ 32kHz (inaudible pour les humains il me semble)

Moi ça me semble ok, mais est ce que tu as fait une mesure des pics de courants de ton moteur au démarrage? Car pour un moteur 18W (=1.5A sous 12V ?) ça doit être plus de 3A j'ai peur.

Merci Alexis,

Comment les alimenter :
Je voulais dire, comment alimenter la base des transistors. > Quelle résistance mettre entre la sortie Arduino et la base du transistor pour le saturer.
Comment calcule-t-on cette résistance. Les caractéristiques du moteur (Résistance) sont-elles importante ? Je pose cette question, car j'ai deux pompes différentes à commander

Je n'ai pas fais de mesure sur les moteurs.

Je pose également la question sur ABCélectronique, et on m'oriente vers l'emploi de Mofsets qui semblent plus adaptés.

Je retourne à mes lectures, d'autres questions verront le jour...

Alors en ce moment je fais des ponts en H pour des moteurs 12V 10A, en utilisant des mosfet, c'est légèrement plus compliqué.

Si je peux te conseiller, regarde le courant que pompe ton moteur au démarrage, cela te permettra de savoir où tu vas (et de dimensionner tes transistors). Si tu n'est pas anglophobe, il doit bien y avoir des posts sur la même problématique sur le forum arduino (et même surement en français dans les archives)

Faut faire les choses dans l'ordre, tout d'abord ton shéma est ok (dimensionnement à vérifier si effectivement pic de courant). Ensuite les calculs : si on pars sur 1.5A, ça fait que Ib=Ic/Hfe Hfe tournant souvent autour des 250/350 ça fait en moyenne 5 mA à saturation. A 5V ça nous fait donc 1Kohms pour saturer. Après pour faire varier le courant dans le moteur c'est effectivement en commandant la base en pwm (un filtre passe-bas aide à lisser). Tu peux aussi utiliser un DAC à cet effet.

PS : les 32khz, c'est des signaux électriques, pas sonores :wink:

Merci à tous deux pour votre implication.

Je nai pas de quoi mesurer la pointe de courant de demarrage (ni à vitesse intermédiaire ;))

J'ai donc opté pour ce schéma qui emploie un Mofset IRLZ 24 qui supporte 17A/60V.
le Mofset : http://radiospares-fr.rs-online.com/web/search/searchBrowseAction.html?method=getProduct&R=7084888
Fiche technique : http://docs-europe.electrocomponents.com/webdocs/0e30/0900766b80e309c7.pdf

Et de toutes les façon, si je devais atteindre les limites de courant, il y a longtemps que l'alim se serait mise à genoux (quoi que en écrivant, je me dis que quelques capas bien placées pourraient permettre le pic...).

En recherchant sur les forums Arduino, j'en ai également trouvé qui pilotaient leur Mofset directement par la sortie Arduino, sans passer par une résistance ou un pull-up :astonished:

A moins que vous trouviez quelque chose d'incorrect dans mon schéma, je commande le matériel et vous tiendrais au courant du résultat.

Franck

Comme ça à vue d'oeil pas de soucis sur le shéma ! Après comme je t'ai dit, prend peut-être un condo pour lisser le pwm, et/ou un DAC pour avoir une vraie tension variable.

B@tto:
Après comme je t'ai dit, prend peut-être un condo pour lisser le pwm, et/ou un DAC pour avoir une vraie tension variable.

Pourrais tu préciser stp. Je n'y comprends pas grand chose ! :roll_eyes:

@ B@tto: il y a 2 choses que je ne comprends pas dans ce que tu dis:

  • Pourquoi lisser le signal PWM? le MOSFET va fonctionner en "bloqué/saturé", il faut donc un état haut et un état bas bien différencié. Si on lisse la tension le FET risque de se mettre en mode amplification => chauffe.

-32khz est en effet la fréquence du signal électrique, mais le moteur va se comporter comme un "haut parleur" et si l'on a une fréquence de découpage à 480 Hz par exemple (la fréquence par défaut du PWM) le moteur va "siffler"! Avec une fréquence de découpage de 32khz, le moteur va toujours émettre des vibration, mais inaudibles (car de 32khz)

@Alexis :

  • le bloqué-saturé c'est en quelque sorte une gestion ON/OFF, bien sûr ça marchera mais en lissant la tension tu auras quelques chose de plus stable et le courant traversant le moteur sera plus régulier donc moins d'irrégularités dans la vitesse de rotation. Et ça chauffera autant voir moins puisqu'au final le courant qui traversera le FET sera le même (et avec un lissage tu n'auras pas les pics de saturation). Après bien sûr il faut bien calibrer le montage pour avoir une réponse adaptée.

  • j'avoue que je connaissais pas ce phénomène, peut-être parce que je lisse mon pwm :slight_smile:

@Bubule :

Si tu as un peu étudié le pwm, tu as du comprendre qu'en fait il s'agit d'un signal carré (0V,5V,0V, 5V ...) et on fait "varier le temps" qu'il passe à 5V, ce qu'on appelle le rapport cyclique. Donc au final tu n'as pas réellement une tension variable. Une astuce c'est d'ajouter un filtre RC (Résistance+Condensateur) pour lisser le signal comme dans une alimentation stabilisée.

Le DAC (digital to analog converter) et un circuit imprimé que tu commandes la plupart du temps en i2c ou en SPI et qui te fournir réellement une tension variable et stable qui peut te servir à commander la base de ton FET. Untuto que j'avais fait : http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1283523305

B@tto

Je comprends ce que tu veux dire.
Je pensais qu'il fallait avoir une tension hachée pour piloter le moteur, donc une tension hachée en pilotage du Mosfet. Or je viens de comprendre que le fait d'avoir une tension variable lissée (au lieu d'un U moyen haché) était meilleur. Par expérience, quel valeur de capa mettrais tu (entre la gachette et la source si j'ai bien compris) ? La résistance je l'ai (47K).

Je suis allé m'instruire sur ton lien.
Comme le DAC a encore des secrets à me livrer, je vais tenter sans. Je crains de trop compliquer mon montage, et ne plus m'en sortir.

Je rappelle que je débute. Mais que mon expérience me confirme que le mieux est l'ennemi du bien...

Merci
Franck

Après sans lissage ça marche aussi ! Mais bon personne avec un simple condensateur on améliore bien les choses alors perso je ne m'en prive pas ... Pour la valeur comme ça avec une résistance de 47k je dirais 10 µF mais je te conseille d'acheter plusieurs valeurs différentes (pour le prix !!) car autant tu voudras plus de réactivité ou l'inverse ... et en plus en electronique ça marche pas forcement bien du premier coup, surtout quand on débute !! Et si tu en prends d'autres, tu trouveras bien quelque part plus tard où les mettre :wink:

  • le bloqué-saturé c'est en quelque sorte une gestion ON/OFF, bien sûr ça marchera mais en lissant la tension tu auras quelques chose de plus stable et le courant traversant le moteur sera plus régulier donc moins d'irrégularités dans la vitesse de rotation. Et ça chauffera autant voir moins puisqu'au final le courant qui traversera le FET sera le même (et avec un lissage tu n'auras pas les pics de saturation).

Certainement pas. En bloqué-saturé, lorsque le transistor à une tension à ses bornes il n'y a pas de courant et lorsqu'il y a du courant la tension est pratiquement nulle (VCEsat) en conséquence de quoi la puissance dissipée dans le transistor est faible. Pratiquement toute la puissance délivrée par l'alimentation est dissipée dans le moteur. Dans les faits, la puissance dissipée dans le transistor provient pour l'essentiel des pertes lors des transitions. Les temps de monté/descente n'étant pas nuls on se trouve pendant un court moment avec de la tension et du courant dans le transistor d'où puissance dissipée. Et ces pertes augmentent lorsque le fréquence du PWM augmente c'est la raison pour laquelle on ne peut pas augmenter le fréquence du PWM indéfiniment.

A contrario dans un montage linéaire (avec PWM filtré) la tension aux bornes du transistor n'est pas nulle et donc on dissipe de la puissance dans le transistor.

Après sans lissage ça marche aussi !

En fait c'est le moteur qui réalise le filtrage.

avec un simple condensateur on améliore bien les choses

Cela dépend du besoin:
pour synthétiser une sinusoïde par exemple le filtrage est indispensable
pour piloter le moteur en continu cela n'a pas d'importance, sauf, comme expliqué plus haut ,en ce qui concerne la puissance dissipée dans le transistor

Je dispose de transistors BD131-MAC qui semblent adaptés à mon besoin (3A / gain : 40 / 45V).

Le transistor n'est pas bien adapté. Si tu veux tirer 3A avec le gain annoncé il faut passer 75mA dans la base ce qui est au-delà des possibilités du processeur de l'arduino.

En plus dans la datasheet en ma possession le gain du transistor est spécifié de :
40 pour un courant de collecteur de 500mA
20 pour un courant de 2A

Pour commander des charges demandant un courant important il est préférable de choisir soit des mosFET soit des darlington de puissance.

Un autre point important, la commande de charge inductive nécessite la présence d'une diode de roue libre en inverse aux bornes de la charge pour protéger le transistor des surtensions qui apparaissent lorsque l'on coupe l'alimentation sur la charge.

Certainement pas. En bloqué-saturé, lorsque le transistor à une tension à ses bornes il n'y a pas de courant et lorsqu'il y a du courant la tension est pratiquement nulle (VCEsat) en conséquence de quoi la puissance dissipée dans le transistor est faible. Pratiquement toute la puissance délivrée par l'alimentation est dissipée dans le moteur. Dans les faits, la puissance dissipée dans le transistor provient pour l'essentiel des pertes lors des transitions. Les temps de monté/descente n'étant pas nuls on se trouve pendant un court moment avec de la tension et du courant dans le transistor d'où puissance dissipée. Et ces pertes augmentent lorsque le fréquence du PWM augmente c'est la raison pour laquelle on ne peut pas augmenter le fréquence du PWM indéfiniment.

A contrario dans un montage linéaire (avec PWM filtré) la tension aux bornes du transistor n'est pas nulle et donc on dissipe de la puissance dans le transistor.

Oups en effet autant pour moi, je suis dans les générateurs de courant en ce moment donc je suis rarement à saturation et j'en oublis certaines propriétés ^^

fdufnews:

Je dispose de transistors BD131-MAC qui semblent adaptés à mon besoin (3A / gain : 40 / 45V).

Le transistor n'est pas bien adapté. Si tu veux tirer 3A avec le gain annoncé il faut passer 75mA dans la base ce qui est au-delà des possibilités du processeur de l'arduino.

En plus dans la datasheet en ma possession le gain du transistor est spécifié de :
40 pour un courant de collecteur de 500mA
20 pour un courant de 2A
Pour commander des charges demandant un courant important il est préférable de choisir soit des mosFET soit des darlington de puissance.

Oui, j'ai changé mon fusil d'épaule et me suis orienté vers le Mosfet IRLZ 24 depuis

Un autre point important, la commande de charge inductive nécessite la présence d'une diode de roue libre en inverse aux bornes de la charge pour protéger le transistor des surtensions qui apparaissent lorsque l'on coupe l'alimentation sur la charge.

La diode 1N4007 en haut de mon schéma assure cette roue libre, non ?

La diode 1N4007 en haut de mon schéma assure cette roue libre, non ?

Oui oui c'est bon ^^

oui tout à fait, la diode est faite pour cela.

Tu peux réaliser ce montage (quoique il sera bien de savoir si ça ne dépasse vraiment pas 3A avant), et piloter à partir d'une sortie PWM de l'arduino. Tu verras si le bruit est supportable, sinon tu peux essayer d'augmenter la fréquence (mais surveille que ton mosfet ne chauffe pas trop). Les mosfets IRL sont pratiques parce qu'on peut les piloter en 0-5V (IRL, L pour Logique), mais à ce qu'il parait ils auraient de moins bonnes performances, peut être que tu ne pourrais pas monter à 32kHz. Je te conseille d'essayer différentes fréquences et de prendre la moins pénible.
-Basses fréquences: bruit (entre 20 et 20 000 Hz) voire vibrations mécaniques pour les fréquences vraiment faibles(donc usure), et pics d'intensité qui peuvent griller ton mosfet(tu peux tenter d'ajouter une inductance de lissage, mais bon...ça devient un peu compliqué)
-Hautes fréquences: problème avec le Mosfet (à cause du fait que sa grille se comporte comme un condensateur).

il faut donc trouver le juste milieu :smiley:

ou tu peux faire comme b@tto dit, lisser le PWM, ce qui revient à travailler le mosfet en mode amplificateur (=> pilotage en courant). Mais pas sur qu'il tienne le coup de chaud. Perso j'ai toujours entendu qu'il fallait travailler en bloqué/saturé pour limiter les pertes. En fait ça dépend si tu veux piloter en tension ( = vitesse) ou courant ( =couple).

edit: oups, c'est ça d'attendre 3h avant de clique sur "post" ^^

Bonjour

Quelques nouvelles :

J'ai donc réalisé le montage avec le MOSFET tel qu'évoqué dans les derniers posts.
Cela fonctionne parfaitement. Avec une jolie variation pilotable à souhait.

Mais le chant du moteur est bien présent.
J'ai donc essayé quelques capas, en amont sur la commande du MOSFET, puis en aval, sur la ligne moteur (en // sur le moteur).
Dans les deux cas, le bruit disparait, mais je me retrouve avec un MOSFET qui chauffe, alors qu'il reste bien froid sans.
Autre constat, la vitesse et le seuil de démarrage changent lorsque la capa est mise en pilotage du MOSFET.

Je m'en vais donc chercher de la lecture sur la modification de la fréquence du PWM ...

A bientôt

Pense bien à prendr en compte les effets de bord :wink: