Académique Documents
Professionnel Documents
Culture Documents
Pas Mal Rapport
Pas Mal Rapport
CHATEL-GOLDMAN JONAS
GIOANI MARTIN
MERON-LOCHET LISE
PERILLAT ANTHONY
Amplificateur de classe D
Nous tenons à adresser nos sincères remerciements à Emilie Hérault et Laurent Aubard
pour leur soutien lors du développement, débogage, routage, (…) de notre application pendant les
nombreuses séances où ils nous ont encadrés. Nous remercions également notre tuteur Patrice
Petitclair pour son suivi et l’apport de nouvelles solutions techniques. Enfin, un grand merci à
Antoine Pisa et Julien Traveaux, qui se sont vraiment impliqués et sans qui nous n’aurions pas de
carte à l’heure actuelle !
PLAN
Introduction 4
III). Réalisation 20
a). Tests du signal de commande PWM 20
b). Choix de la carte DE1 23
b). Partie commande et pont en H 24
c). Dimensionnent réel des filtres de sortie 25
d). Conception du circuit intégré avec Altium 27
Conclusion 29
Bibliographie 30
Annexes 31
Le fonctionnement des amplificateurs classe D est à distinguer de ceux des autres classes.
En amplification "classique" (classe A, B, AB ou C), le signal d'entrée est directement amplifié à
travers des transistors. Pour la classe D, le signal est converti en un rapport cyclique avant d'être
filtré : tous les composants de puissance fonctionnement en tout ou rien.
a). 1. La PWM
La PWM (ou MLI, "modulation de largeur d'impulsion")
traduit l'amplitude instantanée du signal en rapport
cyclique d'un créneau.
Sur l'image ci-contre, l'amplitude de Ve (signal d'entrée)
est proportionnelle au rapport cyclique de Vs (signal
après PWM).
Pour que la modulation ne soit pas source de perte
d'information, la fréquence de Vs doit être bien
supérieure à la fréquence maximale de Ve. Figure 1 : Principe
d'une PWM
La figure ci-dessous illustre d'une façon un peu différente le principe de la PWM : la modulation en
amplitude peut aussi être comprise comme le résultat de la comparaison du signal d'entrée (un
sinus ici) avec un signal en dents de scie de même amplitude maximale. En pratique, c'est de cette
façon qu'on réalisera la PWM.
Figure 2 : Principe
d'une PWM (2)
a). 3. Filtrage
Figure 3 : Exemple
d'étage d'amplification
Pour récupérer le signal d'entrée modulé
et amplifié, un filtre passe bas suffit.
En résumé, voici un schéma qui illustre bien les différentes étapes de l'amplification classe
D (attention, on rappelle que l'étage d'amplification, en réalité un pont en H, est volontairement
simplifié ici).
Signal
numérique
échantillonné
Réglage Vol. Commande
Amplification
Egaliseur PWM
Signal
Signal
Signal modulé en
audio
numérique largeur
analog.
d’impulsion
Solutions Solutions
Solutions
Puce spécialisée Pont en H
DSP
FPGA canal N
FPGA
Microcontrôleur canal P et N
Microcontrôleur
Bloc logique demi-pont
C'est à partir de ce schéma de fonctionnement que nous avons structuré notre travail.
• Caractéristiques principales
- Puissance de 50W dans une charge de 8Ω
- Distorsion : THD compris entre 0,4 et 10%
- Rendement supérieur à 95%
- Lecture directe de fichiers numériques au format .wav
- Faible encombrement
• Caractéristiques annexes
- Lecture de fichiers mp3
- Égalisation et contrôle de volume numériques
Étude de puissance
La puissance souhaitée en sortie étant de 50W pour une charge de 8 Ohms, on doit avoir
une tension 20V à ses bornes et un courant de 2,5A qui la traverse. On a négligé ici l'aspect résistif
des transistors, qui revient simplement à l'ajout de 2 petites charges de l'ordre de 0,01 Ohm
chacune dans notre cas. Autrement dit, le pont doit être alimenté par une tension d’au moins 20V.
L'ordre de grandeur du courant nous a permis de caractériser les transistors à choisir pour le
montage.
Remarque : Dans certains cas, les HP ont une impédance de 4 Ohms. On a alors V=14,1V et
I=3,5A. On fera donc attention à choisir des transistors ayant une bonne marge en termes de
courants acceptés.
A titre de comparaison, les amplificateurs 50W vendus dans le commerce ont un taux de
distorsion compris entre 0,4 et 10%. Dans notre cas, on distinguera deux types de bruits apportés
par l’amplification :
- Bruit numérique : ici le signal est détérioré car on ne prend pas en compte la totalité
de l’information : précision en nombre de bits tronquée (ici les bits de poids faibles)
pour des raisons technologiques dues aux limitations des transistors.
- Bruit analogique : dans ce cas, c’est le principe même de l’amplification classe D
(découpage en états passants/bloqués) qui impose la distorsion.
Pour les transistors choisis (dissipation maximale de puissance de 35W à 25°C), on obtient
pour la sortie (HP + pont), un rendement de 97,8% (=8/(8+2*0,09))
Signaux
obtenus en
Signal pratique
Courant dans la charge I
théorique
parfait
Tension Vds
ton toff
La puissance dissipée dans les transistors est différente selon leur état :
- En commutation :
E∗I
w ON = ∗t on
2
P COMM.= f w ON w OFF
E∗I
w OFF = ∗t off
2
- En conduction:
P COND.=Rds ON ∗I
La répartition du travail s'est fait en fonction des modules à créer (cf figure XXX dans la
partie principe de fonctionnement) mais aussi en fonction des goûts de chacun. Ainsi les créations
du pont en H, des filtres et de la PWM ont été des pistes de travail tout au long du projet.
Cette partie traitera de notre méthode de conception, ou plus exactement des méthodes de
conceptions qui ont été entreprises pour chacune des pistes de travail. On inclura également les
utilisations possibles de nouveaux matériels ou encore la partie "codage VHDL".
C'est la partie réalisation qui illustrera la confrontation de nos méthodes et de nos calculs à
la pratique. Nous inclurons également les modifications de notre planning, dues aux résultats
pratiques, ou encore aux nouvelles pistes de travail envisagées (comme l'utilisation d'une carte de
développement Altera DE1 par exemple).
Il s’agit d’une fonction entièrement numérique, qui doit assurer le lien entre le fichier audio
(numérique) et la partie amplification (analogique).
Pour générer le signal PWM, il existe plusieurs possibilités : réaliser une comparaison entre
les valeurs des échantillons sonores et celles d’un compteur, algorithme qui calcule la sortie de
commande pour chaque échantillon, ou alors utiliser une mémoire incorporant une table qui
permette de coder chaque niveau sonore en une séquence PWM.
Le schéma XX1 illustre le fonctionnement du tout. A chaque instant, l’échantillon sonore est
à une valeur donnée, comprise en 0 et 28 = 256. On peut donc le comparer avec un compteur qui
s'incrémente pendant la période d’échantillonnage Te. Le résultat de cette comparaison donne
directement le signal PWM.
Signal
PWM
1
T= =22,7 s
44100
Signal
PWM
0
1
T= =5,7 s
4∗44100
Figure 5b: génération du signal PWM avec un compteur cadencé à 176,4KHz
Ci-dessus le schéma bloc tel qu’il a été crée sous QuartusII. On peut distinguer trois blocs
principaux : altpll0, lecture_conv et make_pwm. Leur rôles sont expliqués page suivante.
make_pwm : Il s’agit de la fonction qui génère le signal PWM. Elle accepte en entrée les
données sur 8bits, l’horloge générée précédemment et un signal de reset. Cela permet
d’initialiser le compteur et d’effectuer la comparaison. On retrouve deux signaux sur un bit en
sortie : le premier est le signal PWM proprement dit, le second est un signal de synchronisation
destiné utile pour les mesures à l’oscilloscope.
Nous avons décidé pour cela d'utiliser la structure du pont en H avec quatre transistors
TMOS à canal N. En effet, la solution consistant à associer deux TMOS à canal N et deux à canal
P implique d'inverser les commandes en cas d'utilisation d'un circuit dédié, et surtout augmente le
risque de différences de temps de commutations. De plus, le fait d'implémenter un pont en H
uniquement avec des TMOS à canal N est relativement simple.
Un aspect important qu’il faut prendre en compte est la présence d’une partie inductive
dans le filtre de sortie. Cette dernière, par restitution de l’énergie initialement transmise à la charge,
peut endommager irrémédiablement les transistors. Il est donc nécessaire d’incorporer des diodes
de roue libre entre la drain et la source de chaque transistor pour éviter ce phénomène. Bien qu'en
réalité ce ne soit pas indispensable (en effet, il y a déjà l'équivalent d'une diode entre le drain et la
source), cela permet tout de même d'accélérer la restitution d'énergie et donc la commutation.
Nous utilisons pour cela des diodes Schottky, possédant un temps de commutation très court.
Pour faire fonctionner ce montage, il est nécessaire de mettre en forme les signaux de
commande des transistors à partir du signal PWM. Pour cela, nous avons décidé d'utiliser un
circuit dédié, le HIP 4080. Ce dernier peut débiter d’importants pics de courants (jusqu’à 2,5A), ce
qui permet d’assurer un temps de commutation le plus rapide possible. De plus, il simplifie le
schéma du montage en gérant les potentiels flottants dû à la position de la charge dans la structure
du pont en H. Enfin, il assure des temps de transition minimum nécessaires pour éviter tout
phénomène de cross-conduction entre les transistors.
Pour respecter le cahier des charges, il nous faut être capable de délivrer 50W sur la
charge. Sachant qu'on dimensionne notre amplificateur pour un haut-parleur possédant une
impédance de 8Ω il faut alimenter le pont en H en 0-20V, ainsi la charge est traversée par un
courant de 2,5A et dissipe une puissance de 50W.
L'utilisation de filtres passe-bas s'est rapidement avérée nécessaire pour plusieurs raisons.
Par principe, on ne peut pas se permettre de penser que le haut-parleur filtrera lui même les
hautes fréquences. En effet, il existe un risque d'endommagement de celui-ci d'une part, et d'autre
part les distorsions engendrées nuisent à la qualité audio signal.
Dans le but de ne perdre aucune énergie, nous avons décidé d'élaborer deux filtres LC de part et
d'autre du haut-parleur qui sert de charge.
Les contraintes et objectifs de dimensionnement étaient les suivants :
- Une atténuation d'au moins 35 dB à la fréquence d'échantillonnage
- Une fréquence de résonance en dehors du domaine audible :
1
F 0= = 15 kHz
2 2 LC 2,41
fc=
- Une fréquence de coupure entre 20 et 40kHz : 2∗ pi∗ LC
1 1
car ∣ 1−(2πf)²LC ∣=
2
- Les inductances devront laisser passer 5A L
Ve C Vs
1
La fonction de transfert d'un simple LC étant H f = , on impose :
1-(2πf)²LC
1
- G F e =20 log∣H F e ∣=20 log
∣ ∣
1− 2 F e 2 LC
−35 dB (fe = 176,4 kHz au moins)
- G(domaine audible) = 0 dB
Avec ces valeurs là, on trouve des valeurs théoriques : Fo = 23,2 kHz
1
G Fe=20log
∣ 1− 2∗ pi∗Fe ∗LC ∣
2
3 2
=−20 log ∣1− 2 176,4∗10 ∗4,7 .10 .10 −12
∣
Comment ça marche ?
En pratique, les données
sont transmises via le canal 1 : Masse
gauche d’un Jack mono (elles sont 2 : Canal gauche
transmises en double sur chaque 3 : Canal droit
canal d’un jack stéréo), comme le 4 : anneaux isolants
montre le schéma ci-contre :
Figure 11 : Connectique S/PDIF
Pour avoir un signal centré et pour faciliter la récupération de l’horloge à partir du flux de données,
le signal transmis est encodé en biphase-marque (codage BMC pour biphase-mark-code), c’est-à-
dire que chaque bit à transmettre est représenté par un symbole comprenant deux états binaires
successifs :
_ _ _ _ _ _ _ _ _ _ _ _
| | | | | | | | | | | | | | | | | | | | | | | |
horloge 0 ___ _| |_| |_| |_| |_| |_| |_| |_| |_| |_| |_| |_| |_
En plus des données à transmettre, le signal émis contient également plusieurs en-têtes comme
des bits de validité, de signalisation, et de détection d’erreurs ; ce qui porte la longueur de chaque
trame à 32bits.
Réalisation
L’amplification directe d’un signal au format S/PDIF est impossible, il faudra donc passer
par un récepteur S/PDIF. Ce récepteur devra être capable de détecter l’horloge de 5,64Mhz dans le
signal transmis pour ensuite décoder celui-ci et renvoyer en sortie un signal numérique classique
44.1kHz / 8bits. Pour travailler à haute fréquence comme c’est le cas ici, il faudra donc s’orienter
sur un récepteur codé en VHDL et implémenté sur FPGA.
Au cours de nos recherches et après quelques échanges avec un contact au sein de la société ST
Microelectronics, il est ressorti que concevoir ce type de récepteur était difficile et coûteux en
temps et que nous préférions nous concentrer sur la réalisation d’un amplificateur opérationnel
avant de nous pencher sur cette amélioration possible.
Néanmoins il faut savoir qu’un tel récepteur est bien synthétisable. Pour preuve, nous avons trouvé
sur le site personnel d’Uwe Beis la description d’un projet qui nécessitait un récepteur S/PDIF, et le
code VHDL correspondant. Avec son autorisation, et dans le cadre d'un projet de plus grande
envergure, il aurait été judicieux d'implémenter ce récepteur afin que notre amplificateur puisse
être doté d'une interface S/PDIF.
Dans un premier temps, nous avons réalisé la procédure de test sur le bloc PWM
uniquement. Pour ce faire, nous avons généré en interne une rampe par le biais d’un simple
compteur qui s’incrémente de 0 à 210 à la fréquence 45,158 MHz. Nous obtenons ainsi un signal
PWM cadencé à 44,1KHz (nb : cela revient exactement au même que de compter de 0 à 2 8 en
étant cadencé à 4*44,1KHz, comme dans le cas du mode de fonctionnement définitif). Cela nous
permet d’avoir un bon signal de test simple et très visuel : les premiers échantillons de la rampe
correspondent aux impulsions les plus courtes, et vice versa.
Le signal de test n’est pas observable sous sa forme de base : il s’agit d’un vecteur de
10bits qui s’incrémente indéfiniment. On peut cependant retrouver son allure en moyennant le
signal PWM : on réalise ainsi un (mauvais) filtre passe-bas grâce à l’oscilloscope.
La figure 12a ci-dessus est une capture du signal PWM moyenné. Nous pouvons observer un
signal de synchronisation en bleu, et en jaune on retrouve bien notre rampe initiale. Qu’en est-il
de ses caractéristiques ?
− Fréquence : 44100/2^10=43Hz OK
− Amplitude : La mesure se fait à travers une sonde x10, donc l’amplitude moyenne varie
bien de 0 à 3,5V.
A l’inverse, en milieu de rampe (1/2 amplitude max) le signal PWM a un rapport cyclique ½, comme
le montre la figure 12c.
Les figures suivantes sont des zooms sur des échantillons donnés :
- Figure 12d: échantillon n°11
o Durée théorique : 11/45,158M=243,6ns
o Durée pratique : 240ns
Figures 12d et 12e: signal de test PWM, zoom sur le 11éme et 2ème échantillon de la rampe
Ces résultats sont satisfaisants, on retrouve bien les rapports cycliques et durées
désirées, donc le signal PWM résultant est bien l’image (en moyenne) du signal initial. Cependant,
des ondulations de l’ordre de 30% sont présentent lors des changements d’état (voir ci-dessus).
Elles sont dues aux transistors présents dans la carte de développement DE1, et illustrent
clairement la limite en termes de définition du son. En effet, celle-ci a une incidence directe sur
le nombre de bits du compteur (ou la fréquence d’horloge) et donc la largeur minimale de
l’impulsion lorsque l’on code des amplitudes proches de 0 ou de Vmax comme c’est le cas ici, où
nous sommes clairement à la limite de l’acceptable. Cela nous permet de fixer la définition
maximale que l’on peut espérer atteindre : 8 bits en étant cadencé à 176,4KHz.
Nous implémentons la fonction de génération du signal PWM sur le FPGA d'une carte
ALTERA DE1. L'intérêt est de pouvoir travailler sur un matériel entièrement remodulable, avec à
notre disposition de nombreux modules présents sur cette carte de développement : mémoire,
logique préprogrammée, entrées/sorties analogiques/numériques, module MP3…
Ces modules auraient ainsi dû nous permettre de charger un son en mémoire afin de lire
directement ses échantillons. En pratique, au bout de 5 semaines d’essais infructueux, il s’est
avéré impossible d’utiliser la mémoire ou les convertisseurs de la carte DE1. Afin de pouvoir quand
même faire fonctionner l’ampli sur de l’audio (musique, voix…) nous avons décidé d’incorporer un
étage de conversion analogique/numérique en entrée de la fonction PWM. Celui-ci nous permet
d’amplifier « en direct » un signal issu d’un baladeur MP3 ou d’une chaîne Hi-fi. Ce faisant, nous
sommes conscients de rompre la chaîne sonore qui devrait être entièrement numérique pour
satisfaire la problématique du sujet. Cependant, tout ce qui se trouve en amont de la génération du
signal PWM n’est pas dans l’amplificateur classe D. Qui plus est, nous avons choisi de privilégier
l’aspect pratique afin de construire une carte qui soit fonctionnelle.
Lors de nos séances d'atelier, nous avons tâché de faire fonctionner le pont en H
commandé par le HIP 4080. Pour cela nous avons tenté de faire fonctionner le driver seul, en lui
fournissant les entrées correctes et en le câblant comme indiqué dans la documentation
technique :
Nous avons passé beaucoup de temps à tâcher de faire fonctionner correctement le driver,
néanmoins nous n'avons jamais réussi à obtenir un résultat pleinement satisfaisant. En effet, les
sorties ALO, ALS, BLO et BLS censées commander les deux transistors du bas (appelés T2 et T4
dans la partie conception) ne donnaient pas le résultat attendu.
Après avoir vainement tenté de comprendre pourquoi ces sorties ne fonctionnaient pas
comme prévu, nous avons finalement essayé de mettre au point une solution pour commander le
pont en utilisant seulement la moitié des sorties du driver. Nous avons donc essayé de faire
commuter les deux transistors du bas non plus avec le HIP mais directement avec les sorties PWM
et PWM. En effet, cela est possible puisqu'il s'agit des deux transistors avec source à la masse,
ainsi les tensions Vgs correspondent aux tensions Vgm (ça n'aurait pas été possible avec les deux
transistors du haut, puisque dans ce cas il faudrait imposer une tension sur Vgs sans mettre la
source à la masse).
Grâce à de nombreux essais, nous sommes finalement parvenus à faire fonctionner le pont
en H de manière acceptable. Néanmoins cela nous a demandé beaucoup de temps et de travail,
bien plus que si nous avions pu faire fonctionner le driver simplement. De ce fait nous avons pris
du retard sur les tests de fonctionnement global et sur la fabrication du circuit.
Après avoir effectué le gabarit du filtre souhaité, son dimensionnement et les valeurs
théoriques qu'il fournissait, nous nous sommes confrontés à la réalité en passant à la pratique.
Nous avons alors obtenu les résultats suivants :
Fo = 20kHz
Fc = 38kHz
G(176kHz) = -11dB.
Ceci n'était donc pas très satisfaisant (atténuation trop faible). Nous avons alors décidé
d'augmenter la capacité utilisée car nous n'avions pas d'inductance équivalente laissant passer le
même courant.
Nous avons alors procédé en effectuant différents tests selon les capacités choisies.
4
2
0
-2 0,60 3,00 10,00 27,00 60,00 176,00 520,00
-4
G (dB)
-6
-8
-10
-12
-14
-16
-18
f (kHz)
La création d'une carte implémentant l'amplificateur classe D a pour but d'avoir un montage
au fonctionnement plus propre, qui s'affranchit notamment des bruits et dysfonctionnements liés au
capacités parasites des plaquette à trou. Nous avons modélisé ci-dessous le schéma électrique de
notre circuit de puissance avec le logiciel Altium.
Vers HP
Depuis FPGA
Figure 17 : PCB
Les inductances (ici à gauche) sont dans un package CMS, nous les avons donc soudées
sur la bottom layer contrairement aux autres composants.
Ce projet, visant à l'élaboration d'un amplificateur de classe D, aura été pour nous un travail
éclectique et complet. En effet, il a fait appel à la fois à des connaissances concrètes en
électronique quant à la conception et la réalisation du pont en H et du PWM, mais aussi à un savoir
non négligeable en programmation informatique et en électronique pour l'implémentation de
composants. Enfin, le domaine du traitement du signal a aussi été abordé à travers l'élaboration du
filtre de sortie de l'amplificateur.
La réunion de toutes ces connaissances a été possible grâce à la diversité des membres du
groupe et leur coordination quant aux tâches à effectuer.
Ce projet d'électronique a été pour nous tous avant tout une confrontation avec l'aspect
concret et technique de la conception d'un amplificateur, même si l'aspect de l'enjeu économique
n'était pas présent comme il peut l'être en entreprise.
Ce travail en équipe a représenté un réel apport pour nous aussi bien d'un point de vue
scientifique que humain.
Sur le classe D
http://uuu.enseirb.fr/~dondon/puissance/ampliclasseD/ACLD.html
http://www.youtube.com/watch?v=iJXb7Yf_j5w
http://communication.minatec.inpg.fr/petitcla/Elec2A/ArticleClasseD/i...
http://fr.wikipedia.org/wiki/WAV
http://www.unusedino.de/ec64/technical/formats/wav.html
http://www.sonicspot.com/guide/wavefiles.html
Pour le SPDIF
www.commentcamarche.net
http://www.epanorama.net/documents/audio/spdif.html
Denis Dutey, contact chez ST
Standard du S/PDIF – IEC60958-3
http://www.beis.de/Elektronik/DPLCM/DPLCM.html
Bloc lecture_conv :
entity lecture_conv is
port(
Hc: in std_logic;
Res: in std_logic;
Data_Conv: in std_logic_vector(7 downto 0);
begin
process(Hc) -- ce process gère le CAN
begin
if Hc'event and Hc='1'then
if Res='1'
then A<="00000000";
B<="00000000000";
else B<=B+1;
end if;
if ( B< "10000000000")
then RD<='1';
else RD<='0'; -- on déclenche la conversion au milieu du cycle
end if;
if ( B="11110000000" )
then A<=Data_conv;
end if;
S<=A;
end if;
end process;
end archi;
Bloc make_PWM:
library IEEE;
use IEEE.std_logic_1164.all;
use IEEE.numeric_std.all;
entity make_pwm is
port(
Hc: in std_logic;
Res: in std_logic;
Data: in std_logic_vector(7 downto 0); -- échantillons en entrée
process(Hc)
begin
if Hc'event and Hc='1'then
if Res='1'
then Comp<="00000000"; -- initialization du compteur
else
Comp<=Comp+1;
end if;
end if;
end process;
end archi;