Encodeur CTCSS
Arduino / ON7NU
ce qui empêche
de trafiquer sur
la plupart des relais.
Objectif: simplicité,
peu de composant périphériques, obtenir un choix
de fréquences CTSS, et
faible couts.
Pour
générer du CTCSS, Il existe à ma
connaissance trois solutions:
L'inconvénient
réside dans le fait que idéalement
la fréquence de coupure du filtre doit être
ajustée pour
chaque fréquence CTCSS.
Ceci
reste plus couteux et plus compliqué.
-
La technique du Pulse With Modulation (PWM).
Le principe de
cette technique est de faire
varier le rapport cyclique ce qui revient à modifier la
largeur des
impulsions. La périodicité est constante
et a pour valeur 62.5KHz = 16µs.
Dans la pratique,
une impulsion de courte
durée provoque une tension efficace faible. En revanche, une impulsion plus longue engendre
une
tension efficace plus élevée.
Les impulsions
à elles seules ne peuvent
générer une sinusoïde puisque
l’amplitude est constante.
Par contre, si ces
impulsions passent via un
circuit intégrateur de type RC série, une moyenne
va en résulter
et ce sera une sinusoïde à condition
qu'un algorithme correct soit appliqué.
C'est
cette solution qui est retenue.
Moyens mis en œuvre:
-
Un Arduino Uno ou nano, un intégrateur R.C., un dip switch,
un atténuateur, un
condensateur de liaison.
Desription du
montage:
La
sortie N°6 (PWM) de l'Arduino est la seule sortie
utilisée. Les impulsions qui
en sortent sont la résultante d'un tableau qui est
gelé dans la mémoire de
l'Arduino.
Ce
tableau de data comporte les 256 valeurs hexadécimal d'une
sinusoïde.
Voici
les 4 premières valeurs du tableau:
0x80,0x83,0x86,0x89,
Un
seul switch à la fois doit être fermé
sur ON, ce qui permet de sélectionner 8
fréquences au choix.
Au
démarrage, l'Arduino, va lire l'état des 8
switchs via les entrées
2,3,8,9,10,11,12,13.
Après
lecture de l'état des switchs, la sortie PWM est active,
mais à partir de cet
instant, il n'est plus possible de modifier la fréquence. Un
reboot est nécessaire
soit par
un appui sur la touche reset ou
bien couper l'alimentation.
La
sinusoide est donc présente aux bornes de ce condensateur,
mais les impulsions
ont un niveau logique de +5V. La tension sinusoïdale pointe
à pointe est elle
également proche de 5V et avec une
tension continue résiduelle de U/2,
soit +2.5V.
Pour
attaquer le tranceiver, Il faut donc ramener cette valeur autour de
quelques
mV.
C'est
le rôle de la résistance de 33K et du Trim Pot de
10K.
Cette
résistance permet de ne pas atténuer le signal en
provenance du micro dans le
cas ou le curseur du Trim Pot serait proche de la masse.
Procédure de réglage :
Le
mieux serait d'attaquer directement le modulateur.
Ceci
permet d'injecter derrière les filtres et le
préampli audio. Malheureusement,
ceci nécéssite le démontage du
tranceiver et impose aussi de connaitre
l'endroit exact pour l'injection.
J'ai
personnellement testé avec succès l'injection
micro du CTCSS sur trois
tranceivers.
Attention après chaque
changement sur le Dip Switch, toujours reseter pour lancer
une nouvelle sctrutaion de celeui-ci.
-
Choisir
sa fréquence de CTCSS à l'aide du DIP Switch puis
rebooter.
J'ai
réalisé un tableau qui comporte 6
fréquences CTCSS, il reste donc deux fréquences
qui peuvent
être customisées.
-
Placer le curseur du Trim Pot au minimum.
-
Brancher la sortie de l'encodeur sur
l'entrée
micro.
-
Envoyer une porteuse pour activer le relais.
Mais celui-ci ne devrait pas s'ouvrir.
-
Augmenter progressivement le niveau d'attaque
CTCSS par essais successifs.
-
Quant le relais s'ouvre, faire un essais avec
un niveau légèrement inféreur pour
éviter la saturation
de l'étage d'entrée micro,
mais aussi pour éviter
le cliping au niveau du limiteur du modulateur
FM.
.
Dans
le code, voici la partie qui associe la fréquence au switch:
if (Lire1 == LOW)
{
long Frequence = _67Hz; // 67Hz pour 67Hz il faur
écrire _67Hz Modifez cette ligne pour changer la
fréquence.
return Frequence;
}
//*************************************
int Lire2 =
digitalRead (2); // *** Lire Dip Switch 2 sur
entrée 2 ***
if (Lire2 == LOW)
{
long Frequence = _74_4Hz; //74.4Hz pour
définir 74.4Hz il faut écrire: _74_4Hz
return Frequence.
De cette manière vous pouvez attribuer n'imprte
quel fréquence CTCSS à n'imprte quel switch
(entre 67Hz et 151.4Hz).
Dans
le programme (sketch), j'ai inclus toutes les fréquences
CTCSS de 67Hz à 151.4Hz. et
vérifié au fréquencemètre.
Switch |
Status |
Freq. (Hz) |
1 |
ON |
67 |
2 |
ON |
74,4 |
3 |
ON |
79,7 |
4 |
ON |
88,5 |
5 |
ON |
107,2 |
6 |
ON |
131,8 |
7 |
ON |
71,9 |
8 | ON | 77 |
Télécharger => CTCSS.ino
Voir le fichier => CTCSS.txt
Contact :on7nu@codiweb.be