mardi 28 juillet 2015

Brancher un haut-parleur à l'Arduino

Vous désirez produire un son ou de la musique au moyen de votre Arduino?  Ce n'est pas très compliqué, puisque la commande "tone()" permet de faire osciller n'importe quelle sortie de l'Arduino à la fréquence désirée.

Il reste à brancher à cette sortie un transducteur qui transformera cette oscillation électrique en onde sonore.  Si vous optez pour un buzzer piézo de forte impédance, pas de problème majeur: vous branchez une de ses connexions à la masse (GND) et l'autre à la sortie de l'Arduino que vous faites osciller.

Cependant, les choses se compliquent un peu si vous utilisez un haut-parleur électrodynamique, puisque la plupart d'entre eux ont une faible impédance de 8 Ω...

Supposons que vous branchez un haut-parleur de 8 Ω directement à l'une des sorties de l'Arduino, tel qu'illustré ci-dessous.  Cette sortie oscille entre une tension nulle et une tension de 5 volts.  Une application rapide de la loi d'Ohm nous permet d'estimer qu'une charge de 8 Ω soumise à une différence de potentiel de 5 volts sera traversée par un courant de 5 / 8 = 0,625 A ou 625 mA.  Le hic, c'est qu'il n'est pas conseillé de faire circuler par une sortie de l'Arduino un courant supérieur à... 20 mA.  Le branchement illustré risque donc de griller votre microcontrôleur!



Une solution possible est d'ajouter une résistance en série avec le haut-parleur de façon à ce que le courant soit de 20 mA.  Nouvelle application de la loi d'Ohm:  résistance totale = 5/0,20 = 250 Ω. Vous pouvez essayer, mais il y a fort à parier que votre haut-parleur émettra un son de très faible intensité.

Que faire alors?   Commander le haut-parleur par l'entremise d'un transistor, tout simplement.  Dans le montage illustré ci-dessous, le faible courant qui circule dans la sortie numéro 5 de l'Arduino et dans la base du transistor contrôle le courant qui circule dans le haut-parleur et à travers le trajet collecteur-émetteur du transistor.


Le courant maximal pouvant circuler dans la sortie 5 volts de l'Arduino est indépendante du microcontrôleur, elle dépend plutôt des normes USB (en supposant que votre Arduino est alimenté par son port USB) et par le fusible réarmable (polyfuse) installé sur la carte:  ce courant peut atteindre près de 500 mA sans problème (mais pas uniquement pour votre haut-parleur:  pour la totalité de la carte).

Notre calcul plus haut a montré qu'un haut-parleur  de 8 Ω soumis à une tension de 5 volts sera traversé par un courant de 625 mA, ce qui semble un peu trop élevé.  Bien sûr le transistor absorbera une petite fraction de ces 5 volts, mais  il est  quand même plus sage d'ajouter une résistance d'au moins 10 Ω en série avec le haut-parleur (j'ai personnellement utilisé 100 Ω). Cette résistance peut être un potentiomètre si vous désirez contrôler le volume du son émis.




N'importe quel transistor NPN devrait faire l'affaire, il faut simplement s'assurer qu'il peut tolérer un courant d'environ 500 mA à travers le trajet collecteur-émetteur.  Avec son courant maximal de 200 mA, le 2N3904 ne semble pas un très bon choix.  Pour la rédaction de cet article, j'ai utilisé un PN2222 (courant maximal de 500 mA).

Pour vérifier que votre circuit fonctionne convenablement, vous pouvez utiliser l'exemple "toneMelody" fourni avec l'IDE Arduino (Exemples - 02.Digital - toneMelody).  La mélodie s'exécute à l'intérieur du setup, vous pouvez donc appuyer sur le bouton "reset" si vous désirez qu'elle joue une autre fois.



Ajout (17 mai 2017):

Vous pouvez remplacer le transistor bipolaire par un MOSFET.  Le schéma ci-dessous montre un circuit utilisant un MOSFET, dans lequel on a ajouté un potentiomètre pour contrôler le volume sonore (source:  forum Arduino).



Yves Pelletier   (TwitterFacebook)

3 commentaires:

  1. Salut

    Effectivement il est bon de rappeler qu'un montage "barbare" est incompatible avec le courant Max supporté par les sorties de l'arduino.

    Cependant, concernant les resistances en série que tu ajoutes, pour le reflexe et pour la forme, il serait bon de procéder au calcul de la puissance dissipée par la resistance : calcul du nouveau I dans la resistance, et calcul de P =R.I²
    Pour mémoire, la plupart des resistances et potentiomètres supportent 1/4 de W !

    Ex : pour ta resistance de 100 ohm, on arrive à 0.15W = parfait.
    Pour une resistance de 10 ohm : 239mA, ce qui nous donne 1.02W dans la reisstance !! Autant dire qu'une 1/4 de watt ne va pas durer longtemps !

    RépondreSupprimer
    Réponses
    1. Bon point! Si vous utilisez une résistance de 10 Ω, il faut prévoir une résistance d'au moins 1/2 W (le rapport cyclique du signal PWM étant de 50%).

      Supprimer
  2. Bonsoir,
    Pensez-vous qu'il serait possible de récuperer les vibrations d'une guitare à l'aide d'un piézo utilisé en sens direct, de traiter (amplifier ce signal avec une carte arduino) puis de renvoyer ce signal dans un buzzer piezo ? (que je fixerai dans la caisse de résonnance de ma guitare pour amplifier encore un peu plus le son ?)
    Si oui, ou pourrais-je me fournir en patch piezo en particulier le buzzer ?
    Merci d'avance pour le temps consacré à me répondre,

    Martin Marescaux
    martinmarescaux97@free.fr

    RépondreSupprimer

Related Posts Plugin for WordPress, Blogger...