Micro:Bit, Arduino, Raspberry-Pi, etc : Amplifier une Sortie Audio PWM

Bien que le contenu de cet article soit développé initialement pour Micro-bit, il s'adapte parfaitement au monde Arduino (et Raspberry-Pi où ce montage améliore la qualité audio).

Sortie Audio, PWM et Piezo Buzzer
Ils sont nombreux les projets utilisant un piezo buzzer pour produire du son aussi bien avec Arduino (voir ce projet ARDX).
Générer de la musique avec Arduino
Source: ardx.mchobby.be

Il est aussi très facile de produire du son sur un Micro:bit à l'aide d'un Piezo Buzzer.
Produire de la musique sur Micro:bit - source: shop.mchobby.be

Avec une vraie sortie analogique
Lorsque les plateformes disposent de vraies sorties analogique (un DAC), il est assez facile de reproduire un son ou une note (qui n'est en fin de compte qu'une sinusoïde à une fréquence donnée).
Source: Cned - Académie en ligne, doc: Séquence 1 - SP03

Mais lorsque la plateforme comme Micro:Bit, Arduino, Raspberry-Pi, il faut "tricher" et utiliser une astuce!

Signal PWM - une base pour produire du son
Sur ces plateformes, ont utilise un signal PWM. Un signal PWM est signal périodique carré, a fréquence élevée, dont on peut commander la longueur d'impulsion. C'est très pratique pour commander des servo moteurs.
Exemple de signal PWM où l'on contrôle la largeur d'impulsion
(aussi dit cycle utile en %)
Produire du son avec un signal PWM
Il est également possible du son avec un signal PWM. C'est loin d'être de qualité irréprochable mais cela est tout à fait correcte pour des applications non audiophile.

Le signal PWM est souvent comparé à une sorte de "sortie analogie" (surtout dans le monde Arduino).  Si cela me semble un peu abusif, il faut cependant reconnaître qu'en appliquant le principe de moyenne (ce que l'électronique peut faire), nous pouvons avoir une "valeur analogique" correspondant au cycle utile du signal PWM.

En faisant varier constamment le cycle utile de façon appropriée, et grâce au principe de moyenne, il est possible de reproduire un signal audible comme le montre le graphique ci-dessous.
Approximation d'une onde sinusoïdale avec un signal PWM
En affinant ce procédé, il est tout à fait possible de produire un signal assez proche du signal audio.

Un Piezo buzzer c'est bien, un ampli ce serait mieux
Comme me le faisait remarqué un professeur "Le Piezo Buzzer" sur le Micro:bit, cela ne fait pas beaucoup de bruit !

Il serait tentant de se dire qu'il suffit de brancher un un amplificateur!
Pourtant, cela n'est pas si simple!
En effet, un amplificateur audio est fait pour amplifier un signal audible (donc entre 0 et 40.000 Hz).
Et le flan montant/descendant d'un signal PWM, c'est comme un signal sinusoïdal de très haute fréquence (fréquence infinie en théorie).

Résultat: on entend presque rien dans l'ampli... parce que presque tout le signal PWM est filtré avant d'atteindre l'étage d'amplification.

La solution : transformer l'audio PWM en vrai signal analogique
Ce qu'il faut, c'est transformer le signal PWM en quelque-chose de plus analogique avant de l'envoyer dans l'ampli. C'est ce que fait le circuit suivant assez simple à réaliser. ...

Ce qui, au passage, améliore sensiblement la qualité du signal.
La sortie analogique du MicroContrôleur est branché sur l'entrée PWM du circuit. La sortie analogique est elle branchée sur l'entrée d'un amplificateur audio.
Améliorer le signal audio PWM
Attention: la sortie analogique de ce circuit doit impérativement être branché sur un amplificateur ! Cela ne fonctionnera pas avec un haut-parleur, ni même un casque.

Sortie audio PWM --> Audio Analog pour amplificateur audio.
Source: shop.mchobby.be
Ce montage qui a été testé avec succès sur Micro:Bit et un amplificateur de 20W.
Nous savons qu'il apporte également une très nette amélioration à la sortie audio PWM du Pi-Zero.

Liste du matériel
Quelques notes techniques.
La résistance de 100 Ohms et capacité de 100nF forment en fils passe-bas. Cela filtre la partie "haute fréquence" du signal PWM et le déforme en quelque chose de plus analogique.
La capacité de 47µF permet d'enlever la composant continue du signal... et ne reste derrière qu'un signal analogique dans la gamme de fréquence de la plupart des amplificateurs. 

2 commentaires:

  1. Bonjour,
    Peut-on remplacer le PAM8302A utilisé dans cet article par le Breakout MAX98357A dont vous avez parlé dans un article précédant. Ces deux amplificateurs sont ils équivalents ?
    Cordialement

    RépondreSupprimer
  2. Non, le MAX98357A est un DAC I2C + AMPLI. Il est donc prévu pour fonctionner sur un bus I2S.
    Dans ce montage, c'est un ampli avec entrée audio qu'il faut!

    RépondreSupprimer