Electronique > Réalisations > Interphone 004b - avec PIC 18F2420 - [Pro]

Dernière mise à jour : 16/10/2016

Présentation

Cet interphone d'un genre un peu particulier s'appuie sur une liaison filaire numérique en boucle de courant (parfait pour de grandes distances) et permet le raccord simultané de plusieurs postes. Une seule personne peut parler à un instant donné (poste en position émission) et toutes les autres peuvent entendre (postes en réception). Le passage d'un poste en mode émission bloque automatiquement les autres postes en mode réception, la tentative de passer un second poste en émission est refusée (c'est le plus rapide qui a gagné). Le montage s'appuie sur un PIC 18F2420 pour effectuer la conversion A/N (microphone vers liaison numérique) et pour effectuer la conversion N/A (liaison numérique vers HP). L'UART interne au PIC est mis à contribution pour la gestion des données émises (signal audionumérique) via un adaptateur RS485 qui prend la forme d'un rigolo petit circuit intégré à 8 broches nommé MAX487 (voir page Bases - MAX487). Une autre version de cet interphone, l'interphone 004 à base de PIC 16F886, a servi de base à la construction de celui-ci. La différence principale entre les deux interphones 004 avec PIC 16F886 et 004b avec PIC 18F2420 réside dans la vitesse de traitement des informations et dans la bande passante du signal audio transmis en numérique.
- Interphone 004 avec PIC 16F886 : 2 kHz (2,5 kHz en poussant un peu);
- Interphone 004b avec PIC 18F2420 : bande passante 3 kHz (4 kHz en poussant un peu).
Pour tout le reste (alimentation, préampli micro, ampli BF) il est fait usage des mêmes circuits. Ce circuit n'est pas forcément plus performant qu'un bon interphone analogique. Mais il permet un petit encryptage des données émises...

Avertissements

Quelques remarques...

Schéma 004b - avec PIC 18F2420

Le schéma de l'interphone est décomposé en plusieurs sections qui sont les suivantes :

interphone_004b
Circuit principal (coeur du montage)

Vitesse de fonctionnement générale...
Avant de commencer l'analyse indépendante de chaque section, je souhaite parler des réfléxions primaires qui ont conduit à l'étude de ce circuit. Je savais dès le début que le traitement d'échantillons obtenus après conversion analogique / numérique ne pourrait pas se faire à une vitesse très élevée, même en employant un quartz de 20 MHz (5 MHz en interne PIC) et en limitant la quantification à 8 bits. Pour me faire une idée de la vitesse maximale de traitement des échantillons (qu'on ne pourrait en aucun cas dépasser) j'ai d'abord commencé en faisant le plus simplement du monde possible au niveau logiciel, à savoir envoyer directement les données acquises par le module ADC (10 bits) vers le port B (8 bits de poids fort de la valeur acquise). Histoire de voir à quelle fréquence de traitement des échantillons on pouvait grimper (bien entendu, on pouvait aussi savoir cela par le calcul).
ADC_In -> PORTB
Avec un quartz 20 MHz pour l'horloge principale du PIC, on arrive à une fréquence de traitement des échantillons légèrement supérieure à 12,4 kHz (valeur à ne pas confondre avec la fréquence d'échantillonnage du CAN du PIC). Donc possibilité de passer un signal audio dont la bande passante ne dépasse pas 6 kHz (théorème de Shanon / Niquist). Et encore, 6 kHz avec un filtre passe-bas à pente très raide si on veut limiter au max les problèmes de repliement de spectre (aliasing) - il est plus raisonable de se limiter à 5 kHz. Ce qui reste largement suffisant pour passer un signal BF de type voix intercom - on peut se contenter d'une limite supérieure de 3 kHz comme c'est le cas pour le téléphone analogique standard RTC. Mais évidement, ajouter des fonctions logicielles supplémentaires va forcément ralentir tout ça et c'est là que ça devient intéressant. Maintenant, envoi des échantillons non plus directement sur le port B du PIC mais sur la sortie RC6/TX (et donc via l'UART), bouclage Tx/Rx en reliant ensemble les deux broches RC6/TX et RC7/RX, puis transfert des données reçues sur RC7/RX vers le port B.
ADC_In -> UART_TX -> UART_RX -> PORTB
Toujours avec un quartz 20 MHz pour l'horloge principale du PIC et avec une vitesse de transmission de 115200 bauds, on arrive à une fréquence de traitement des échantillons légèrement supérieure à 5 kHz, ce qui permet de monter avec une bande passante un peu inférieure à 2,5 kHz. Là encore cette valeur de 2,5 kHz serait plausible avec un très bon filtre passe-bas, disons qu'une valeur de 2 kHz est plus réaliste. Ce n'est pas ce qu'on peut faire de mieux, mais pour de la voix ça passe encore même si ça sonne un peu "sourd". Si on descend la vitesse de transmission à 9600 bauds, la fréquence de traitement des échantillons dégringole à 860 Hz pour une bande passante de 350 Hz à 400 Hz. Là ça commence à faire mal, en fait ce n'est plus du tout exploitable. En poussant la vitesse de transmission de l'UART à 200000 bauds, on arrive à une fréquence de traitement des échantillons 6,4 kHz, ce qui nous permettrait en théorie de disposer d'une bande passante de 3 kHz. On n'est pas loin d'un truc correct, non ?

Circuit principal avec PIC (coeur du montage)
Tout (ou presque) repose sur un circuit intégré de quelques euros. Le PIC assure en effet le rôle de convertisseur A/N, de convertisseur N/A (on utilise ici un réseau de résistances R/2R mais on aurait pu employer un DAC 8 bits tel le DAC80x), il cadence l'émission et la réception des échantillons audio sous format série (RS232/RS485), et il gère l'ensemble des actions utilisateur. Ce qu'il faut lui ajouter (qu'il ne peut pas assurer lui-même) concerne toute la circuiterie audio analogique requise pour la préamplification et le filtrage du signal microphone et l'amplification de puissance pour attaquer un HP.
Le MAX487 permet de transmettre des données jusqu'à une vitesse de 250 kbps (250000 bauds) ce qui convient parfaitement ici.

Préamplificateur et filtre pour microphone
Le microphone délivre un signal dont l'amplitude de quelques mV est trop faible pour attaquer directement le convertisseur A/N du PIC qui fonctionne sur une plage de 0 à +5 V. On aurait pu abaisser cette plage en faisant usage d'une référence de tension haute inférieure à +5 V au niveau du CAN du PIC, mais je ne me suis pas ennuyé avec ça. Une amplification est donc nécessaire et c'est la tâche qui se voit confiée aux circuits U3:A et U3:B, qui assurent l'amplitude requise en deux étapes successives. Le filtrage quant à lui est indispensable pour éviter que le signal audio ne soit trop entâché de cochonneries sonores "métalliques". La bande passante est en effet limitée par la fréquence de traitement des échantillons sonores et il convient de ne pas laisser passer des fréquences audio qui dépassent la moitié de cette fréquence de traitement. Certes, le filtrage adopté ici est quelque peu sommaire (pente d'atténuation pas très raide) et insuffisant pour un résultat parfait. Mais dans l'ensemble le message sonore parlé est compréhensible et c'est la priorité. L'ajout d'un compresseur/limiteur de dynamique même très simpliste (AOP+FET) serait ici un plus très apprécié pour optimiser le rapport signal/bruit de l'ensemble émetteur/récepteur.

Filtre et ampli BF
Un filtrage est également nécessaire en sortie BF, car si on ne fait rien on a droit à un splendide petit sifflement dans les oreilles. Et dans le cas présent mieux vaut le filtrer assez énergiquement, même si ce dernier n'est pas audible en période de pause, quand aucun poste n'est en mode émission. L'amplification BF en elle-même est confiée à un circuit intégré que j'ai utilisé de multiples fois et qui fonctionne très bien, le LM386. Libre à vous d'adopter un autre type d'amplificateur BF, ce n'est pas ce qui manque sur le marché !

Régulation d'alimentation
Enfin un module simple dans cet horrible réalisation ! Un régulateur de tension intégré de type 7805 suffit en effet à fournir la tension de +5 V et l'énergie requise pour le PIC. Notez que l'amplificateur BF prend sa source d'alimentation avant la régulation de cette tension de +5 V.

Procédure de simulation

La simulation a été opérée en deux étapes, comme je l'avais fait pour la version 004 avec PIC 16F886 :
- première étape consistant à mettre un seul circuit en place et à vérifier le bon fonctionnement des routines de base.
- seconde étape consistant à mettre en place deux circuits identiques sur une même ligne "RS485" avec un des deux positionné en émission, comme le montre le schéma suivant.

interphone_004b_simul

Prototype

Tests pratiques à venir avec des modules RS485 "prêts à l'emploi".

module_rs485_001a

Je possède déjà plusieurs CI d'interface RS485, mais ai décidé d'effectuer mes tests avec des modules précâblés.

Logiciel du PIC

Non disponible.

Circuit imprimé

Non réalisé.

Historique

16/10/2016
- Première mise à disposition.