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...
- Ce projet a fait l'objet d'un dépôt de paternité
auprès de l'INPI
(Institut National de la Propriété Industrielle) sous le numéro 424252.
- Ce circuit a été conçu non pas pour un besoin particulier,
mais suite à
une idée qui a germée dans mon esprit pendant que je sombrais dans un
sommeil profond. Je ne savais pas du tout si l'idée était viable
(j'avais de sacrés doutes) mais j'avais envie d'essayer, ne serait-ce
que pour voir les limites d'un tel système.
- Je
n'ai pas encore réalisé de prototype et pour l'instant n'ai travaillé
qu'avec mon simulateur (je n'ai pas encore assez de 18F2420
sous la main, il m'en faut assez pour réaliser au moins trois postes).
Mais les résultats obtenus en simulation m'inspirent confiance
car conformes à ceux que je m'attendais à trouver.
- La
liaison entre deux postes est de type asynchrone et ne fait pas usage
de tampon (buffer) ni d'extraction d'horloge pour régulariser la
vitesse des données reçues. Cela peut conduire à des instabilités de
phase (jitter) mais globalement l'ensemble doit être parfaitement
exploitable (on n'est pas dans le domaine de la hifi).
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.
- circuit principal avec PIC (coeur du montage)
- préamplificateur et filtre pour microphone
- filtre et ampli BF
- régulation d'alimentation

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.

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