Projet à microcontrôleur PIC
16F88
Sonomètre - Indicateur de niveau sonore
Il s'agit d'un sonomètre qui mesure en temps réel le niveau sonore en décibels.
La plage de mesure va de 20 dB à 100 dB.
N.B. Ce sonomètre n'a pas de prétentions métrologiques : c'est plutôt un indicateur de niveau sonore.
Ce projet s'appuie sur le projet Carte d'acquisition à 7 entrées analogiques pour signaux lents.
Ici, une seule des 7 voies est utilisée (voie 0).
La fréquence d'acquisition est de 7 Hz.
La carte se connecte à un ordinateur (via une liaison RS232).
Une application Windows affiche le niveau acoustique en temps réel (7 acquisitions par seconde) :
3-1- Le capteur de son : microphone Electret
Le microphone fournit une tension dont la composante alternative est proportionnelle à la pression acoustique du son.
La sensibilité du microphone s'exprime en dB avec la référence : 0 dB <=> 1 V par µbar
Pour les microphones de type Electret, la sensibilité est typiquement comprise entre - 35 dB et - 50 dB.
Pour une sensibilité de - 40 dB, cela correspond à : 0,01 V / µbar.
La bande passante du microphone va de 50 Hz à 10 kHz (valeurs typiques).
3-2- Niveau sonore en décibel (dB)
Par définition, le niveau sonore L en dB est :
L (en dB) = 20 log (p eff / p eff 0)
avec : p eff 0 = 20 µPa = 0,000 2 µbar
(On rappelle que : 1 bar = 100 000 pascals)
niveau sonore (en dB) |
pression acoustique efficace (en bar) |
pression acoustique efficace (en pascal) |
0 dB (seuil d'audibilité)
|
0,000 2 µbar
|
20 µPa
|
20 dB
|
0,002 µbar
|
200 µPa
|
40 dB
|
0,02 µbar
|
2 mPa
|
60 dB
|
0,2 µbar
|
20 mPa
|
80 dB
|
2 µbar
|
200 mPa
|
100 dB
|
20 µbar
|
2 Pa
|
120 dB (seuil de douleur)
|
200 µbar
|
20 Pa
|
3-3- Correspondance entre le niveau de tension du microphone et le niveau sonore
Pour un microphone de sensibilité - 40 dB, la réponse est de 0,01 V / µbar (Cf. 3-1).
niveau sonore |
pression acoustique efficace |
tension efficace de la composante alternative (broche 1 du microphone) (sensibilité du microphone : - 40 dB) |
0 dB (seuil d'audibilité)
|
0,000 2 µbar
|
2 µV
|
20 dB
|
0,002 µbar
|
20 µV
|
40 dB
|
0,02 µbar
|
200 µV
|
60 dB
|
0,2 µbar
|
2 mV
|
80 dB
|
2 µbar
|
20 mV
|
100 dB
|
20 µbar
|
200 mV
|
120 dB (seuil de douleur)
|
200 µbar
|
2 V
|
3-4- Traitement du signal du microphone
En sortie du suiveur (c'est-à-dire en entrée du convertisseur analogique-numérique), on veut une tension continue image de la tension efficace de la composante alternative du signal du microphone.
3-4-1- Amplification et filtrage
C13, R2, R5 et U4 (TL071) forment un amplificateur sélectif de type passe-bande.
L'amplification est réglable avec le potentiomètre R5 (de type logarithmique) de façon à avoir 11 V crête en sortie pour un son de niveau 100 dB.
L'amplification est donnée par la relation : |A| = R5/R2
Pour un microphone de sensibilité - 40 dB, il faut donc une amplification égale à :
11 V / (200 mV x racine(2)) = 11 V / 283 mV = 39
Avec R2 = 2,7 kiloohms, cela donne théoriquement : R5 = 39 x 2,7 = 105 kiloohms.
La fréquence de coupure basse est donnée par : 1/(2.pi.R2.C13) # 60 Hz
La fréquence de coupure haute est donnée par : B1 / A = 3 MHz / 39 # 77 kHz
avec : B1(unity-gain bandwidth) = 3 MHz pour le TL071
Pour en savoir plus sur la bande passante d'un amplificateur opérationnel
3-4-2- Détecteur d'amplitude
Le détecteur d'amplitude permet d'extraire l'enveloppe supérieure d'un signal alternatif.
Sa constante de temps est : R6.C14 = 18 ms
Notez la présence d'un diviseur de tension (R4 et R6) qui ramène la tension de saturation du TL071 (environ 11 V) à environ 5 V, valeur compatible avec la plage d'entrée du convertisseur analogique-numérique (0 V à 5 V).
3-4-3- Suiveur
Le suiveur fait simplement tampon entre le détecteur d'amplitude et l'entrée du convertisseur analogique-numérique.
En définitive, en sortie du suiveur, la correspondance entre tension et niveau sonore est :
Formule générale : L(dB) = 20 log (tension en V / 50 µV)
3-5- Le filtre anti-repliement
Un filtre anti-repliement est intercalé entre la tension à mesurer et le canal d'entrée de l'ADC du PIC 16F88.
Il s'agit ici d'un simple filtre analogique passe-bas de fréquence de coupure 34 Hz.
Pour plus d'informations sur les filtres anti-repliements
3-6- Le convertisseur analogique - numérique (ADC)
Le convertisseur analogique - numérique est situé dans un module interne du microcontrôleur PIC 16F88.
La tension d'alimentation du PIC 16F88 (broche VDD) sert aussi de tension de référence pour le convertisseur analogique - numérique, ce qui justifie la présence d'un régulateur de tension (7805).
Le convertisseur analogique - numérique a les caractéristiques suivantes :
Pour plus d'informations sur le fonctionnement du convertisseur analogique - numérique du PIC 16F88
3-7- Le filtrage numérique
Un filtrage numérique (passe-bas) est effectué de façon à enlever le maximum de bruit (en particulier le bruit de ronflement du secteur 50 Hz). Ce filtrage numérique est réalisé de manière logicielle par le PIC 16F88 (pendant la phase de traitement du résultat de la conversion).
Caractéristique du filtre numérique :
Le filtre numérique calcule la moyenne arithmétique sur 256 échantillons (filtre numérique à moyenne glissante).
Pour beaucoup plus d'informations sur le filtrage numérique
3-8- La liaison RS232
- 3-8-1- Le câble de communication entre l'ordinateur et la carte
Il faut bien sûr un ordinateur qui possède un port COM, reconnaissable par son connecteur SubD 9 broches mâle.
Il faut brancher un câble "null-modem" (câble croisé) entre l'ordinateur et la carte.
Si vous n'en avez pas, vous pouvez facilement en faire un (il faut 3 fils et 2 connecteurs SubD 9 broches femelle).
- 3-8-2- Protocole de communication entre l'ordinateur et la carte
Seul l'ordinateur prend la parole (maître).
Le microcontrôleur PIC 16F88 se contente de répondre (esclave).
L'ordinateur envoie un octet (via la liaison RS232) toutes les 140 ms (d'où une fréquence d'acquisition d'environ 7 Hz).
Cet octet contient le numéro du canal (voie) à échantillonner :
Une fois l'octet reçu, le PIC 16F88 sélectionne le canal indiqué (canal 0), et lance une série de 256 conversions (une toutes les 390,6 µs).
Cela prend : 256 x 390,6 µs = 100 ms
Le microcontrôleur PIC effectue la moyenne des 256 résultats de conversion.
Sachant que la résolution du convertisseur ADC est 10 bits, la somme nécessite un nombre de 18 bits.
La moyenne correspond à la somme avec la virgule décalée de 8 bits vers la gauche.
Par exemple :
Somme brute (18 bits) : 10 10010010 01000101 = 168 517 (en décimal)
On décale la virgule de 8 positions :
10 10010010 , 01000101
Partie entière (10 bits) : 10 10010010 = 658 (en décimal)
01000101 = 1/4 + 1/64 + 1/256 = 0,26953125
Finalement :
168 517 / 256 = 658,26953125
Notez que la résolution est améliorée : on passe de 10 bits à 18 bits.
On pratique, on restera prudent, et on considérera que la résolution est d'au moins 12 bits (soit une résolution de l'ordre de 5 V / 4096 # 1 mV) :
(658,26953125 / 1023) x 5 volts = 3,217 volts
La moyenne (10 10010010 , 01000101) est envoyée telle quelle vers l'ordinateur sous la forme de 3 octets :
N.B. C'est l'ordinateur qui fera le calcul du logarithme (application sonometre102.exe) :
3,217 V <=> 20 log (3,217 V / 50 µV) = 96,2 dB
Avant-propos
Cette application a été écrite en C++ Borland Builder 5.0.
L'application fonctionne sous Windows
XP.
N.B. La gestion de la liaison RS232 nécessite l'installation du composant TComPort (la version 2.64 est suffisante) :
Procédure d'utilisation
-> Brancher le câble "null-modem" entre l'ordinateur et la carte (hors tension)
-> Mettre la carte sous tension
-> Ouvrir l'application
-> Configurer les paramètres de la liaison RS232C :
- 9600 bauds/s
- 8 bits de données
- Pas de bit de parité
- 1 bit de STOP
- Pas de contrôle de flux
-> Ouvrir le port
Le niveau sonore doit s'afficher (avec une mise à jour toutes les 140 ms).
- 1 câble null-modem (femelle/femelle)
- 1 ordinateur avec port COM
- 1 programmateur pour flasher le programme du microcontrôleur PIC 16F88
Le code source a été écrit en langage assembleur avec l'environnement de développement gratuit MPLAB IDE de Microchip.
Le code source est identique à celui du projet Carte d'acquisition à 7 entrées analogiques pour signaux lents.
(C) Fabrice Sincère ; Révision 1.2.6