lundi 5 août 2013

Circuit de commande MOSFET

Depuis quelques jours j'ai des difficultés sur la commande du MOSFET FQP50N06 à partir d'Arduino.

Ce MOSFET de récupération demande en effet une tension de commande de 10V (pour être dans l'état saturé dans lequel il y a moins de perte et d'échauffement). La commande de l'arduino ne peut-être que de 5V. D'autre part un courant important est nécessaire pour que la transition d'état se fasse rapidement (si la transition est lente, il y a de même échauffement).
La solution propre est d'utilisé un circuit de commande de la porte (gate driver) du MOSFET. Des circuits intégrés existent pour réaliser cette fonction.
Je voulais la réaliser avec un simple transistor, mais j'ai eu du mal à trouver un schéma correct validé par plusieurs sources.

J'ai finalement trouvé http://code.google.com/p/qut-brushless-controller/wiki/mosfetdrive mais je n'arrivais pas à faire marcher ce montage (le moteur tourne tout le temps!)
J'ai finalement multiplié la valeur de la résistance du haut du schéma par 3 de manière à ce que lorsque le transistor joue le rôle d'un interrupteur fermé, le pont diviseur créé par les deux résistances donne une tension inférieure à 4V sur la grille du MOSFET. Lorsque le transistor jour le rôle d'un interrupteur ouvert, la tension monte à 12V, en l'absence de courant pour créer une chute de tension dans la résistance.

La commande fonctionne donc maintenant correctement, et pour pas cher. Je souhaitais coupler cette commande avec un inverseur double pour contrôler le sens de rotation du moteur, malheureusement le relais demande une intensité en entrée qui ne peut pas être donnée directement par Arduino (100mA nécessaire d'après http://www.omron.com/ecb/products/pdf/en-g5v_2.pdf alors que Arduino est limité à 40mA par pin).
La solution est également d'utiliser un transistor NPN. Malheureusement, j'ai cramé le deuxième que j'avais...

Autre difficulté, la modulation de largeur d'impulsion (PWM) n'est toujours pas facile avec le moteur et son réducteur.
Si j'utilise directement le pin de l'Arduino (attention, elles ne le permettent pas toutes, certaines à 500Hz, d'autres à 1000Hz), il y a un sifflement désagréable et le moteur ne tourne pas à basse vitesse. Le moteur démarre cependant bien en augmentant la tension (alors qu'il y avait un décrochage avec le H-Bridge).

J'ai cependant repris la philosophie du PWM maison pour pouvoir commander des vitesses plus faibles. J'ai également rajouté un peu d'aléatoire dans les périodes des cycles afin d'étaler le spectre du bruit (j'ai vu que cela se faisait dans les années 90; même si aujourd'hui la solution est plus souvent de passer dans les ultrasons).

En attendant, de retrouver un transistor, je vais continuer les tests avec le sabertooth.

Aucun commentaire:

Enregistrer un commentaire