decoderpic

Voici la description d'un décodeur de fréquence BF construit autour d'un PIC12F683.

Pour un prix à peine plus élevé qu'un classique décodeur à NE567, vous aurez :

- Un décodage plus efficace
- Une stabilité bien supérieure
- Un seuil réglable avec hystérésis
- La possibilité de réglage de 100 à 2148 Hz ou une fréquence fixe
- Aucun composant éxotique ou particulier

Cet article est mon retour d'expérience d'une description trouvée sur cette page.

Suit la description de mon propre circuit pour un décodeur 1750Hz pour contrôle d' un relais.

Pour construire ce décodeur, vous aurez besoin d'un programmateur de PIC 12F683, de l'assembleur gratuit MPASM si vous souhaitez modifier le code source pour une autre fréquence fixe.

Le schéma d'origine

diagram

La description du circuit peut être trouvée sur la page suivante. Cette description est complète et je ne reviendrais pas dessus.

Construction :

Les lignes suivantes décrivent ce que j'ai fait pour remplacer un décodeur 1750 Hz construit autour d'un circuit intégré NE567 sur une platine de contrôle d'un relais radioamateur.

Malgré toutes les précautions que j'avais prises (composants à 1%, condensateurs de grande qualité), ce décodeur a toujours été instable et souffrait de dérives thermiques. La platine additionnelle suivante permet de résoudre ce problème.

tonde decoder board vignetteCette platine a été pensée pour être universelle et pourra être utilisée dans d'autres projets et situations.

Pour permettre un réglage plus aisé, (fréquence et seuil de détection), certaines résistances ont été divisées physiquement en 2 composants séparés. La combinaison de 2 valeurs standards permet d'atteindre la valeur voulue.

Un transistor a été ajouté pour inverser la tension de sortie qui passe d'origine à l'état haut lorsqu'une tonalité a été détectée. Deux sorties sont proposées, une à l'état haut et l'autre à l'état bas. Ce transistor peut également commander une autre platine ou un relais. Vous pouvez omettre ce transistor et la résistance R7 dans le cas contraire.

Le logiciel ne permet pas le décodage EXACT de la fréquence de 1750 Hz, mais 1748 ou 1752 Hz, ce qui n'a aucune influence en pratique.

 
Le schéma et le circuit ont été réalisés avec le logiciel KICAD. Les fichiers suivants sont disponibles  :

Schéma du décodeur
Circuit imprimé

Vous aurez également besoin de programmer un PIC 12F683 avec le code suivant :

Fichier HEX d'origine
Ficher assembleur d'origine pour le décodeur pour ceux qui veulent modiier le code d'origine.

Pour rendre les choses plus faciles, une version spéciale a été écrite pour ne décoder QUE la fréquence de 1750 Hz. Si vous utilisez cette version, vous pouvez omettre  le pont de résistances R3/R4 sur la pin 4 du PIC.

Les fichiers HEX et ASM sont disponibles ci-dessous. Le code ASM est commenté afin de permettre de le modifier pour n'importe quelle autre fréquence en changeant les valeurs sin et cos que l'on pourra trouver dans les tableaux en bas de code.

Fichier ASM pour le décodeur 1750Hz
Fichier HEX pour le décodeur 1750Hz

Nativement, le logiciel ne peut détecter ques des fréquences supérieures à 100Hz, donc uniquement quelques valeurs des fréquences TCS. 
Prenez le temps de lire l'article d'origine afin de conaitre les précautions à prendre pour décoder ces fréquences ( filtre passe-bas, aliases)

Pour une fréquence centrale de 1750 Hz, j'ai mesuré une bande passante de 2%. La bande passante n'est pas exactement centrée sur la fréquence à détecter cible. J'ai testé 3 PICs, et aucun n'était sur la bonne fréquence centrale, un n'arrivait même pas à détecter le 1750 Hz ! Ceci est probablement dû à la dispersion de l'oscillateur interne.
Vous pouvez corriger ceci en changeant la tension sur la pin 6, mais ceci rend le montage peu reproductible.

Afin de corriger ce problème, une version avec oscillateur à quartz externe a été étudiée.

Mise à jour du 21 fév. 2013 :

Après de nombreux échanges de mails avec le concepteur du logiciel et pas mal d'essais, j'ai finalement modifié le logiciel pour utiliser un oscillateur à quartz externe de 8 MHz afin d'avoir la certitude que la cause était la précision de l'oscillateur. Malgré la précision du quartz, le problème mentionné plus haut était toujours là , mais maintenant tous les PICs donnaient des résultats parfaitement identiques bien que sur la mauvaise fréquence !

Ceci prouvait que le logiciel avait un petit problème...

L'auteur a fini par trouver que le logiciel faisait quelques approximations lors de calculs mathématiques, ce qui est normal pour un PIC si simple. Il a dû utiliser quelques astuces pour résoudre des équations que le PIC ne pouvait faire nativement, ce qui a provoqué quelques approximations. CQFD !

La fréquence cible doit donc être ajustée entre 1750 Hz et 1760 Hz pour un décodage parfaitement centré sur 1750 Hz, et tout fonctionne à merveille ! J'ai procédé par mesures de la fréquence de décodage centrale et j'ai corrigé les valeurs sin et cos pour centrer cette valeur sur 1750 Hz.

Le logiciel suivant est prévu pour cet usage, donc oscillateur externe et décodage sur 1750 Hz. Les pins ont dû être redistribués afin d'utiliser un quartz entre les pins 2 et 3.

Voici les fichiers pour la version définitive :

Fichier ASM pour décodage 1750Hz et quartz 8 MHz
Fichier HEX pour décodage 1750Hz et quartz 8 MHz
Schéma KICAD
Circuit imprimé KICAD

Conclusion :

J'ai été bluffé par les résultats obtenus par ce petit montage ! L'auteur a écrit une petite merveille de logiciel et a réussi à le faire tenir dans un minuscule PIC.

Le montage décode parfaitement et tous les relais dont j'ai la charge fonctionnent maintenant sans soucis...

J'espère que cet article sera de quelque utilité pour vous.