[RESOLU] Arduino qui s'éteint après alimentation de deux buzzers

Bonjour à tous ! :)

Le titre est partiellement faux puisque cela concerne une carte stand-alone que j'ai créé possédant un ATmega328p-au. La carte est alimenté en 3.3V et l'horloge cadencée à 8MHz. Néanmoins je programme sur l'IDE Arduino.

Voilà pour l'équipement. Ce que je désire, c'est alimenter deux buzzers (datasheet ici). Pour cela, en gros, je dispose: - De mes deux buzzers ; - D'un MOSFET canal N (datasheet) ; - De deux résistances de 330 mOhm 1/4 W ; - Ma carte.

Le schéma électrique est le suivant :

Note : L'alimentation 3.3V n'est pas fournie par le mC. C'est une alimentation à part qui peut débiter s'il le faut.

Bref, lorsque je mets en place cette configuration avec un seul buzzer, cela fonctionne. Mais lorsque j'essaye avec les deux, mon microcontrôleur agit bizarrement. Comme s'il s'éteignait puis reboot. Le comportement est semblable à une situation où le microcontrôleur doit fournir trop de puissance pour ce qu'il peut supporter. Pourtant, ce n'est pas lui qui fournit la puissance pour les buzzers, le microcontrôleur n'est là que pour piloter le MOSFET.

Auriez-vous une idée pour ce problème ? Je ne vois, à priori, pas de solution...

Je vous remercie ! :)

Redox:
L’alimentation 3.3V n’est pas fournie par le mC. C’est une alimentation à part qui peut débiter s’il le faut

Débiter, oui mais combien? Avec 2 haut-parleurs, l’alim se trouve à débiter dans une charge de 4Ohms. Et c’est pas les résistances qui vont beaucoup limiter le courant?
Elle ne s’écroulerait pas un peu par hasard?

l'alim se trouve à débiter dans une charge de 4Ohms

plutôt 4,2Ω même non --> 0,825A ?

Merci de ta réponse fdufnews !

Alors justement j'ai fait le test et non elle ne change pas. Tout du moins j'en ai pas l'impression. Une protection sur cette alim est placée pour des courants allant au-delà de 2.5A, ce qui n'est pas atteint ici. Je mesure un courant de 0.7 A à peu près lorsque le mC reboot de lui-même.

Bonjour,

A mon avis la tension de 3.3V n'est pas suffisante pour commander le IRF530. Selon les spécifs à 800mA il faut une tension de gate de 4.8V pour être saturé. Avec un seul haut parleur il faut une tension plus basse, mais c'est déjà limite. Il faudrait utiliser un IR*L*530.

Edit: j'avais regardé le IRF530 car c'est ce qu'il y a sur le schéma. La spécif que tu donnes est pour le MGSF1N02L qui semble mieux adapté, mais pour commander 800mA on n'est quand même pas loin des 3V. Est ce que la tension de sortie de l'arduino est suffisante? Surtout que je crois que l'impédance des HP est donnée à 1000Hz, à des fréquences plus basses elle est sans doute inférieure.

Je fais juste remarquer que ce ne sont pas des buzzers mais de vrai haut parleurs. Sur le site du fabricant ils sont dans la rubrique 'speakers" et non pas "buzzers" Habituellement ces objets sont utilisés avec des signaux alternatifs sans présence de continu. Est-ce que la bobine acceptera 0,4 A continu ?

Alors pour confirmer mes dires précédents, la tension ne changent pas. Et pour être plus précis, ma carte dispose également d'un écran (EA DOGM128W) avec un backlight.

J'ai d'abord placé un premier buzzer (avec un signal PWM à 100% donc pas de son). Je vois bien l'intensité du courant changer et mon écran affiche bien des caractères (backlight allumé). Sans les buzzers la carte consomme aux alentours de 0.12 A. Avec un buzzer j'ai un pic à 0.46 A. Lorsque je connecte le second buzzer, j'ai mon écran qui s'éteint (pic autour de 0.68A). Le backlight reste allumé pendant 2-3 secondes puis il s'éteint à son tour. Si je laisse les deux buzzers connectés, je mesure une intensité aux alentours de 0.6A mais mon mC est toujours éteint (ainsi que tous ses périphériques). Lorsque je déconnecte un buzzer, le mC reboot et mon écran se rallume.

Visiblement il y a un soucis de puissance reçu par le mC. Je ne comprends cependant pas comment cela peut se produire étant donné que, certes, la carte et les buzzers sont alimentés par la même source, mais ce n'est pas le mC qui fournit la puissance aux buzzers.

@karnill : Les buzzers tirent aux alentours de 0.6mA. Certes mon MOSFET ne doit pas voir plus de 750mA mais même si c'était le cas, au pire il grillerait sans pour autant avoir une influence sur le mC (je me trompe ?). J'ai bien 3.3V en sortie, ce qui me semble bien suffisant compte tenue de la DS du MOSFET (2.4V).

@68jts : Le signal PWM est habituellement mis à un ratio de 50%. J'ai bien un son qui est émis.

Merci pour votre aide ! :)

Redox: J'ai bien 3.3V en sortie, ce qui me semble bien suffisant compte tenue de la DS du MOSFET (2.4V).

Il ne faut pas se fier au Gate Threshold Voltage qui est mesuré à 250µA (avec ça tu alimentes pas grand chose) mais à la courbe I=f(VGS). Mais, effectivement d'après les caractéristiques si ta sortie fait bien 3.3V ce devrait être suffisant pour alimenter tes deux hauts parleurs.

J’ai fait d’autres tests et peut-être que tu as raison karnill.

Cette fois j’ai bypassé mon MOSFET-N. J’alimente donc ma carte et mes haut-parleurs (merci @68jts pour la rectification ^^) avec la même alimentation mais mon mC ne pilote plus les hauts parleurs. (mais je prends la tension 3.3V sur ma carte).

J’ai donc une intensité aux alentours de 0.62A et l’ensemble est alimenté, mon mC ne reboot pas. Le problème viendrait donc du MOSFET et/ou de son pilotage par le mC.

EDIT : Aurait-il était plus “judicieux” dans mon montage d’utiliser 2 MOSFET-N avec un signal PWM commun ?

Finalement, je pense que le problème n'est pas la tension de commande de la gate, car si elle était insuffisante les haut-parleurs ne seraient pas commandés, mais ça ne provoquerait pas un reset de la carte (ou alors il y a un phénomène plus que bizarre).

une question idiote - mais “just to be safe” - dans le code Arduino, la pin qui envoie le PWM, elle est bien en output et ne repasse jamais en input ?

Avez vous une résistance de limitation de courant d’appel sur la pin et une autre de pull-down de votre MOFSET qu’on ne voit pas sur le schéma?

La résistance de R1 sert à maintenir le MOSFET bloqué en tirant la Gate à la masse tant que la broche de l’Arduino n’est pas programmée - sinon G peut flotter et selon la charge électrique présente le MOSFET peut être passant donc courant dans les Haut-Parleurs. (R1 de l’ordre de 100kΩ sans doute OK)

La résistance de R2 évite que trop de courant ne soit tiré de la broche de l’Arduino. En effet, les MOSFET ont sur la Gate l’équivalent d’un condensateur de valeur assez importante. Sans cette résistance le courant serait ponctuellement important et dépasserait les capacités de l’Arduino. (en prenant 270Ω ou 330Ω le courant instantané ne dépasse pas 20mA de la spec).

Je pense que ce point sur R2 pourrait être le point où votre arduino est impacté par ce qu’il se passe côté Haut-parleurs

@J-M-L : Alors la PIN qui envoie la PWM (la 6 selon la nomenclature Arduino) est bien mise en OUTPUT et ce, dans le setup(). Sa direction n'est jamais changé par la suite. Mon programme pour les haut-parleurs consiste, dans les grandes lignes, à écrire analogWrite(6, 127) pendant X secondes et analogWrite(6, 0) pendant Y secondes de telle manière à avoir sur un intervalle de temps de (X+Y) secondes un bip émis pendant X secondes.

Concernant les résistances citées R1 et R2, elles n'existent pas en effet. Pour les deux j'avoue ne pas du tout y avoir pensé. J'utilise le même procédé pour faire un dimming de 7 LEDs de 20mA et cela marche (après, l'intensité mise en jeu n'est, bien sûr, pas la même). Par ailleurs, en voyant le schéma que tu donnes, la résistance R1 n'existent-elle pas dans le mC directement ?

Concernant R2 effectivement cela pourrait être le problème. Je ne pensais pas que la Gate d'un MOSFET pouvait tirer autant de courant. Du moins assez pour faire se mettre en sécu un mC ATmega. Je vais essayer de faire cet essai et je vous tiens au courant.

Merci de l'info :)

@J-M-L : Je confirme tes dires. Avec une résistance (220ohm car je n'avais pas plus proche que ce que tu recommandais) mon système fonctionne ! Je te remercie pour ton aide :)

Merci à tous pour vos réponses, vous êtes formibales ! :D

Je passe le sujet en "résolu".

Super :)

Redox: Par ailleurs, en voyant le schéma que tu donnes, la résistance R1 n'existent-elle pas dans le mC directement ?

Quand vous mettez une pin en OUTPUT elle passe en "low-impedance" et elle est capable de fournir 20mA (la spec max dit 40mA mais il ne faut pas jouer avec le feu) ou d'absorber jusqu'à 20mA (40 max). je pense qu'on parle plus de dizaine d'Ohms que de centaines.

Je ne pensais pas que la Gate d'un MOSFET pouvait tirer autant de courant.

Selon la grosseur du transistor la capacité entre la masse et la gate peut varier de quelques picofarad à plusieurs nanofarad --> c'est un problème de surface en regard. Ce condensateur devra être chargé (Sortie à l'état haut) et déchargé (sortie à l'état bas). C'est un simple calcul de charge de condensateur au travers d'une résistance.

Le rdson des transistors de sortie du micro-contrôleur est évalué à 35 ohms, il ne peut pas limiter l'appel de courant donc il est préférable de "l'aider" à supporter ce courant impulsionnel.

Retour sur le HP

Je me posais des questions sur la fiabilité de l'affaire sachant que ce genre de HP est "en principe" utilisé en alternatif sans composante continue. Je ne doutais pas que cela pourrait produire un son, de la musique là par contre ce n'est pas gagné d'avance parce que linéarité (harmoniques) et bande passante doivent être quelque peu chahutées.

Rappel sur la capacité des sorties.

Limite ABSOLUE et EXCEPTIONNELLE --> 40 mA sur une sortie et non pas sur les sorties.

Service permanent : Il faut que SIMULTANEMENT les conditions suivantes soient satisfaites. - Pas plus de 200 mA sur Vcc - Pas plus de 200 mA sur GND - Pas plus de 150 mA en mode source sur un PORT de sorties (Source --> la pin fourni du courant qui provient de Vcc) - Pas plus de 100 mA en mode sink sur un PORT de sorties (Sink --> la pin absorbe du courant qui s'écoule par GND) et - Pas plus de 20 mA par sortie.

C'est un peu plus complexe que les présentations habituelles.

Redox: Je ne pensais pas que la Gate d'un MOSFET pouvait tirer autant de courant.

Moi aussi je ne pensais pas que la gate pouvais tirer autant de courant. Je suis quand même étonné de l'explication qui est que l'appel de courant soit intense au point de faire reseter le micro. D'autant qu'il y ait un HP ou deux HP, la capactité de gate est toujours la même. Enfin si ça fonctionne ...

kamill:
Moi aussi je ne pensais pas que la gate pouvais tirer autant de courant.
Je suis quand même étonné de l’explication qui est que l’appel de courant soit intense au point de faire reseter le micro. D’autant qu’il y ait un HP ou deux HP, la capactité de gate est toujours la même.
Enfin si ça fonctionne …

ça se calcule

On a des données dans la spec

et pour tout savoir lire des trucs sur le GATE CHARGE

Je suis quand même étonné de l’explication qui est que l’appel de courant soit intense au point de faire reseter le micro.

Je te suis sur ce point la RAZ du micro doit être provoquée par autre chose. Il y a eu des opérations de recâblage qui n’ont pas du être neutre dans la résolution.

Plutôt que d’appliquer des consignes c’est plus satisfaisant pour l’esprit quand on sait pourquoi il est préférable de placer une résistance.

Si on veut aller plus loin dans le raisonnement cette résistance série a aussi un inconveniant : le transistor va chauffer davantage !
Je m’explique : un transistor câblé en régime tout ou rien ne chauffe pas.
La puissance c’est P = VDS * ID
Quand le transistor est bloqué VDS = 5V et ID = 0A donc P = 0 watt
Quand le transistor est passant VDS = 0V et ID = 10A donc P = 0 watt
(j’ai considéré RDSon comme négligeable)

Cette présentation est vraie si le basculement de l’état passant à l’état bloqué (et vice-versa) est quasi instantané. Dit autrement le transistor ne fonctionne qu’un très très bref instant en régime linéaire.
Dans la réalité ce n’est pas le cas mais ce basculement est très court donc l’échauffement est très faible.

Par contre si on choisi une valeur trop élevée pour la résistance série le condensateur mettra du temps pour se charger et le transistor restera un temps beaucoup plus long en régime linéaire donc il chauffera davantage.
C’est toujours pareil on ne peut pas avoir le beurre et l’argent du beurre.

Pour répondre dans l'ordre :) :

@68jts : Pour ce qui de ma méconnaissance sur la Gate, je vais lire la doc fournie par @J-M-L afin de mieux comprendre le soucis qui s'est présenté. Je rejoins ton avis dans ta deuxième réponse concernant la satisfaction pour l'esprit de "comprendre" plutôt que "d'appliquer". C'est une situation que je n'avais jamais rencontré auparavant. Ma faible expérience dans le domaine explique sans doute cela. Mais il est vrai que dans la très grande majorité des schémas électroniques que j'ai pu voir je n'ai jamais vu la présence d'une résistance sur la Gate d'un MOSFET. C'est, au final, une situation plutôt intéressante dans la mesure où elle pourra, je l'espère, aider d'autres personnes.

Pour ce qui est du HP, effectivement je n'essaye pas de faire jouer de la musique mais juste d'émettre un BIP à la fréquence de mon signal PWM. Est-ce le meilleur choix ? Sans doute pas mais j'ai essayé beaucoup d'autres buzzers sans qu'ils ne soient satisfaisant (à mon goût).

Merci pour la rappel sur les perfs du mC. Je les connaissais mais partiellement (seulement les valeurs 20mA / 40mA pour chaque sortie). C'est quelque chose que je vais sauvegarder pas loin de mon PC !

Pour ce qui est de l'opération de recablâge et de l'apparente résolution du problème en fait il n'y en a pas eu. J'ai laissé ma carte telle quelle puis j'ai créé un deuxième circuit (MOSFET + Résistance). Le signal PWM provenait toujours de mon mC et la puissance était délivré par une sortie 3.3V de ma carte. En gros j'ai fait un deuxième circuit en parallèle du premier. Les changements sont donc mineurs. Donc quelque part un autre problème se pose : - Soit effectivement la résistance à un effet réellement bénéfique ; - Soit le premier MOSFET à en fait un soucis de fabrication. Le problème disparait donc avec l'utilisation du deuxième MOSFET qui est "clean".

@J-M-L : Merci pour ta documentation. Je vais la lire de ce pas.

la puissance était délivré par une sortie 3.3V de ma carte

J'espère que vous ne parlez pas de la broche 3.3V de votre arduino... elle peut au max vous fournir 50 mA...