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 :

 

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

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).

 

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 :

-> Ouvrir le port

Le niveau sonore doit s'afficher (avec une mise à jour toutes les 140 ms).

 











Télécharger le typon au format .pdf


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