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

Dernière mise à jour : 11/09/2011

Article non terminé, volontairement non référencé dans les sommaires du site


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 à base de PIC 16F886 (et qui a servi de base à la construction de celui-ci) est décrite à la page Interphone 004. La différence principale qui existe 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. Bien entendu, si vous avez envie de vous tester à ce genre de circuit, je ne saurais trop vous recommander de commencer avec la version 004b à base de 18F2420.

Avertissements

Avant de m'écrire pour me demander comment faire mieux... Voyez dans ce montage une étude de faisabilité et non un circuit fonctionnel !

Schéma 004b - avec PIC 18F2420

Le schéma de l'interphone 004b est donné ci-après en une seule partie, mais il peut être 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.
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 et qu'il ne peut assurer lui-même concerne toute la circuiterie audio analogique demandée 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 totalement 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 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 ce qu'on demande en priorité.

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

Cette fois pas de surprise pour le fonctionnement global, je ne me suis pas laissé avoir deux fois de suite avec les mêmes "pièges". Mais je me suis tout de même cassé la tête encore un bon moment avec cette brave LED Tx qui ne voulait pas s'allumer. Un truc tout bête qui m'était déjà arrivé à mes débuts dans la programmation des PIC, et que j'avais bêtement oublié. Il arrive que certaines broches soient de type drain ouvert... et évidement c'est le cas de la ligne RA4 du 18F2420 ! Deux solutions possibles : soit inverser le sens de la LED pour placer son anode côté +5V et sa cathode sur la ligne RA4, soit la déplacer sur une autre ligne qui elle accepte de sortir une tension positive. C'est la seconde solution que j'ai adoptée et c'est pourquoi la LED LedTx se trouve désormais décallée vers la ligne RA1 qui jusqu'alors était restée libre.

Amélioration possible

Je suis persuadé qu'on peut encore améliorer le système en utilisant un autre type de microcontrôleur et en écrivant un code plus "sérieux", ce dont à priori je ne suis pas capable à ce jour. Ce circuit est cependant plus performant que l'interphone 004 avec PIC 16F886, c'est déjà un bon point pour moi.

Logiciel du PIC

Non disponible.

Circuit imprimé

Non réalisé.