lundi 25 janvier 2016

Keyer iambic électronique ultra simple (à base d' ATMEGA 328P)


KEYER ELECTRONIQUE ( F1IEY - 2016)


Voici un petit keyer électronique facile à construire et qui peut rendre service à celles et ceux (les dames d'abord) qui comme moi se lassent vite de la manipulation à la pioche.

Photos de la maquette (version 1/2)






 


Sur ces photos on le voit monté dos à dos avec un petit émetteur 80m QRP de 2 Watts.



 





Vue général du PCB (mode photo dans Sprint Layout).
 
 
Le dessin du PCB fait avec Sprint Layout.




LE SCHEMA:
 

 
 
 
Quelques explications:
 
Le coeur de ce keyer est un ATMEGA328P, c'est le µcontroleur qu'on trouve sur les cartes Arduino.
J'ai donc écrit le programme dans le logiel Arduino et je me suis servi d'une carte Arduino Uno pour le programmer (il est monté sur support, c'est très pratique).
 
L'ATMEGA doit être alimenté en 5V, la tâche est assurée par un régulateur 78L05 découplé par 2 condos de 100nF et un électrochimique de 10µF / 25V.
 
Le keyer peut fonctionner avec une clé double contact, il suffit de la  relier aux bornes "POINT" et "TRAIT" ou avec une simple pioche qui sera reliée sur "PIOCHE". La borne commune sera la masse.
 
 Le potentiomètre de 22K (valeur non critique, un 10K ou un 47K conviennent aussi) règle la vitesse de manipulation.
 
Un des deux transistors 2N7000 sert à manipuler l'émetteur par mise à la masse de son entrée "KEY", l'autre active le buzzer ce qui permet d'écouter sa manipulation. Ce petit transistor MosFet fonctionne à merveille en commutation, on le trouve sur internet, souvent par lot pour un prix dérisoir !
 
Le quartz de 16MHZ relié entre les pattes 9 et 10 du µC aura de préférence son boîtier soudé à la masse du PCB sinon le responsable CEM de mon radio club sera fâché  :-)
 
Le buzzer sera un modèle avec oscillateur interne. A ce propos ! j'ai prévu dans le programme une option qui permet de sortir sur la broche 18 du µC (= broche 12 de l'Arduino) une note BF réglable de 300HZ à un peu plus de 1000HZ, la hauteur de cette note peut se régler avec un potentiomètre de 22K relié à la broche 24 du µC (= broche A1 de l'Arduino). Cette option n'est pas mise à profit sur ce keyer car il a été simplifié pour équipé un TRX QRP. La version 2/2 décrite plus bas intègre les options de réglage de tonalité et volume. Le soft est le même pour les 2 versions.
 
Le PCB a été routé avec SPRINT LAYOUT6, je peux donner le fichier sur demande.
Le programme de l'ATMEGE328P (fichier .ino) est édité ci-dessous, il suffit de le copier dans le logiciel Arduino et de faire "compiler" puis "téléverser".
 
 
// Keyer Iambic
// F1IEY - 2015
byte P_DOT = 2;   // Contact dot sur pin 2
byte P_DASH = 3;   // Contact dash sur pin 3
byte PIOCHE = 4;   //  pioche sur pin 4
byte P_AUDIO = 12;   // Sortie audio
byte P_CW = 13;  // Sortie du keyer, à connecter sur l'entrée key de l'émetteur
byte P_SPEED = A0;   // curseur du potentiomètre speed sur A0
byte P_BIPTON = A1;   // curseur du potentiomètre bipton sur A1
// variable pour les valeurs des potentiomètres.
int speed;
int bipton;
// Initialisation de l'Arduino
void setup()
{

  pinMode(P_DOT, INPUT);
  pinMode(P_DASH, INPUT);
  pinMode(PIOCHE, INPUT);
  pinMode(P_AUDIO, OUTPUT);
  pinMode(P_CW, OUTPUT);
  digitalWrite(P_CW, LOW);      // Sortie du keyer initialisée à LOW au démarrage du programme
}
// Programme en boucle
void loop()
{
  if (!digitalRead(PIOCHE))       // Si la pioche  est activée..
  {
    tone(12, bipton); //génère le bip sur la pin 12
    digitalWrite(P_CW, HIGH);            // Passage en émission
    delay(10);
  }
  else
  {
    noTone(12);
    digitalWrite(P_CW, LOW);            // Arret de l'émission
    delay(10);
  }
  speed = analogRead(P_SPEED); // Lecture de la valeur du potentiomètre speed
  speed = map(speed, 0, 1023, 30, 80); //adaptation de la plage de variation
  bipton = analogRead(P_BIPTON); // Lecture de la valeur du potentiomètre bipton
  bipton = map(bipton, 0, 1023, 200, 1020); //adaptation plage de variation ( de 200 à 1000HZ)
  if (!digitalRead(P_DOT))       // Si le levier dot est activé..
  {
    keyAndBeep(speed);           // ... envoyer un point pendant la durée "speed"
    delay(speed);                 // ..et attendre la durée d'un point
  }
  if (!digitalRead(P_DASH))      // Si le levier dash est activé...
  {
    keyAndBeep(speed * 3);       // ... envoyer un trait pendant la durée "3x speed"
    delay(speed);                // ..et attendre la durée d'un point
  }
}
// Passe le TX en émission (pin 13 à 1) et génère sur la pin 12 un bip de tonalité variable en fonction de la position du potentiomètre bipton.
void keyAndBeep(byte speed)
{
  digitalWrite(P_CW, HIGH);            // Passage en émission
  {
    tone(12, bipton); //génère le bip sur la pin 12
    delay(speed); // durée du bip
    noTone(12); // arrêt du bip
  }
  digitalWrite(P_CW, LOW);             // Fin de l'émission
}
 
Photos de la maquette (version 1/2)
 
montage tester chez F4HMX (Yannick) avant mise en boîtier
 
LE SCHEMA (version 2/2).
 
 
Le dessin du PCB fait avec Sprint Layout (version 2/2).
 
 
 
L'implantation des composant (version 2/2).
 
 
Exemple de réalisation d'une clé avec une lame de scie et quelques ronds d'aluminium
 
 
 
 

Bonne réalisation et bon trafic en CW.
 
73s - Jean-Luc  - F1IEY