Catégorie : QRP

Transceivers et accessoires QRP

The QCX: A QRP transceiver kit by Hans G0UPL

Hans G0UPL a récemment publié une vidéo du QCX. C’est un kit facile à monter qui vous permet d’avoir un transceiver 5W mono-bande pour 49USD.

Ce transceiver permet de communiquer en telegraphie (CW) sur une bande au choix entre les bandes 80, 60, 40, 30, 20 or 17 mètres. Il utilise un Si5351A pour générer la fréquence du VFO et dispose de filtre 7 pôles avec une bande passante de 200Hz. La réception se fait par détection par quadrature (QSD). Le manipulateur électronique, les mémoires et les fonctions habituelles de transceiver modernes sont disponibles grâce à un micro-contrôleur ATMega328.

Plus de détails sur le site de QRP Labs. (http://qrp-labs NULL.com/qcx NULL.html)

Vidéo du QCX par G0UPL

Merci à K4SWL pour l’information. (http://qrper NULL.com/2017/10/videos-featuring-the-qcx-transceiver-kit/)

Nouveaux transceiver SDR QRP CommRadio CTX-10

Commradio CTX-10 (http://blog NULL.qscope NULL.org/wp-content/uploads/2016/10/CommRadioCTX-10 NULL.jpg)Le site QRPer.com a annoncé l’arrivée prochaine d’une nouvelle radio très prometteuse (http://qrper NULL.com/2016/10/the-new-commradio-ctx-10-qrp-general-coverage-transceiver/).

Offrant la couverture générale du 160 au 10 mètres (réception de 200 KHz à 30 MHz), tous les modes et une puissance en émission allant jusque 10W dans un format plutôt valorisant, la CommRadio CTX-10 a de beaux atouts. Elle semble aussi optimisée pour le QRP avec un affichage OLED économique en énergie ainsi que des batteries Li-ion de 2600mAh avec chargeur intelligent inclus. Encore mieux, une boîte d’accord d’antenne et un décodeur CW sont présents.

Pas de prix annoncé.

Nouveaux kits récepteurs SDR par Hans G0UPL

Récepteur SDR I/Q QRP Labs G0UPL (http://blog NULL.qscope NULL.org/wp-content/uploads/2016/08/rx NULL.jpg)Hans vient d’annoncer deux nouveaux kits originaux dans la lignée de ses célèbres balises QRSS ou WSPR Ultimate (http://blog NULL.qscope NULL.org/2014/09/18/nouveautes-chez-qrp-labs-g0upl/) qui ont fait retrouver à des milliers de radioamateurs le goût de la construction de kits.

Le premier est un kit récepteur SDR de type I/Q (détection QSD) qui peut servir à la réception des signaux faibles WSPR ou QRSS, mais pas seulement. Il est proposé à 25 USD avec un module filtre de bande aux choix entre 160m et 10m.

Module démodulateur polyphase QRP Labs G0UPL (http://blog NULL.qscope NULL.org/wp-content/uploads/2016/08/pic23 NULL.jpg)Le deuxième est un module optionnel de démodulateur polyphase pour le récepteur. Il permet de se passer d’une carte son stéréo pour la démodulation des signaux I/Q et produit un signal BLU en sortie.

Comme toujours les kits produits par Hans sont un excellent compromis prix / qualité et surtout proposent des solutions techniques originales. Ils sont ouverts à l’expérimentation et laissent la place pour la personnalisation.

LNR Precision LD-11 : Premier transceiver HF QRP à couverture générale et conversion directe

QRP HF SDR transceiver (http://blog NULL.qscope NULL.org/wp-content/uploads/2016/05/379503272 NULL.jpg)

QRP HF SDR transceiver

Ouf, le titre est long mais c’était dur de faire plus synthétique car la nouvelle est de taille. En tous cas suffisante pour que je me motive à écrire un nouvel article sur ce blog que je pensais laisser en sommeil.

Ce matin j’ai reçu un message de K4SWL qui a tout de suite attiré mon attention. Sur son blog il présente un petit bijou qui va intéresser pas mal de monde (http://qrper NULL.com/2016/05/the-new-lnr-precision-ld-11-transceiver-is-essentially-general-coverage/). Le LD-11 est en effet une première : QRP et SDR comme le KX3 d’Elecraft et à conversion directe comme l’Icom IC-7300. Il est proposé à 775 USD mais est actuellement en rupture de stock (les premiers sont partis comme des petits pains). Vous pouvez surveiller le réapprovisionnement sur la boutique de LNR Precision (http://www NULL.lnrprecision NULL.com/store/#!/LD-11/p/64137743/category=10468544).

Les caractéristiques sont les suivantes :

  • Réception et transmission tous modes (BLU, CW, AM, FM, Digi)
  • Couverture toutes bandes radioamateurs (et apparemment aussi 11m)
  • Processeur STM32 et ADC/DAC à échantillonage directe
  • Gamme dynamique de 100dB à 10 KHz, 130dB à 50 KHz
  • Puissance en émission entre 5 et 8W pour une tension d’alimentation entre 11,5V et 14,8V
  • Consommation de 350mA en réception et jusque 1,5A-2A en émission
  • Bandscope intégré et affichage du ROS, de la puissance et de la tension d’alimentation
  • Oscillateur local Si570, stabilité +/- 3 ppm

Autre point intéressant, en modifiant les paramètres du transceiver, il est possible d’élargir les limites des bandes amateurs et donc de le transformer en récepteur à couverture générale. Comme les fitlres sont entièrement paramètrables jusquà 9,6KHz de largeur, la réception AM est apparemment excellente.

Code source ultra-simpliste pour Arduino/MSP430 d’un VFO à AD9850/AD9851

Prototype kit Balise WSPR DDS XV4Y (http://xv4y NULL.radioclub NULL.asia/wp-content/uploads/2012/12/100_3339 NULL.jpg)Dans un commentaire Sylvain F6GGX m’a demandé après ce bout de code. Il était disponible gratuitement dans la boutique mais comme j’ai désactivé cette dernière il a disparu du site…
Voici donc le code source d’un VFO très simpliste à base de AD9850/AD9851 qui utilise les librairies que j’ai écrites ou adaptées (http://xv4y NULL.radioclub NULL.asia/docs/). Honnêtement je pense pas que ce code soit très utile, rien de particulièrement compliqué et l’ergonomie à 4 boutons n’est pas super. C’est utile en dépannage avec le kit balise WSPR que je produisais mais c’est tout. Le code est écrit pour Energia sur MSP430, le porter sur Arduino (ATMega328) ne devrait poser aucun problème.

/* Simple VFO with DDS for MSP430G2553
 * Code for Energia 009
 
 * By Yannick DEVOS - XV4Y - March 2013
    http://xv4y.radioclub.asia/

    Copyright 2012-2013 Yannick DEVOS under GPL 3.0 license
    Any commercial use or inclusion in a kit is subject to author approval

====
 * Agile Frequency generation using AD9850/9851 DDS
 * Output to Nokia 5110 compatible LCD
 * Check if P2_2 has changed state and switch VFO (like when PTT is pressed to operate split)

Usage for short press of buttons :
- Up / Down      increase or decrease the frequency following the choosen digit
- Left / Right   increase or decrease the digit
- OK             validate the frequency and send it to the DDS
Long press of buttons :
- Left           Set the current VFO to the next band bottom frequency
- Right          VFO A = VFO B
- OK             Switch between VFO A and VFO B

====
Revision history :
v1.00    2013-03-18
         First release

====
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You can download a copy of the GNU General Public License at <http://www.gnu.org/licenses/>
*/

// Here modify to your taste or needs

#define PTT_key          P2_2
#define ANALOG_BUTTONS   A5
#define AUTO_VALID       // Uncomment if you want the DDS frequency to be udapted automatically after each value change

#define DEFAULT_FREQ    8            // Value 8 in Frequencies array is 14000000
// Here under don't touch anything unless you know what you do

#include <legacymsp430.h>
#include <AD9850.h> // Library for AD9850 control by MSP430

#include <LCD_5110.h>

              // Frequencies (1 Hz precision) you can select
const unsigned long int frequencies[] = {
  137000, 471000, 501000, 1830000, 3500000, 5200000, 7000000, 10100000,
  14000000, 18068000, 21000000, 24890000, 28000000, 50000000, 70000000};
  
const byte Analog_Noise = 5;    // Margins for reading analog buttons

boolean   vfo=0, saved_PTT;  // VFO A or B and PTT input state
char      multiplier, aff_multiplier, freq_select=DEFAULT_FREQ;
unsigned  long int frequency_A=frequencies[DEFAULT_FREQ], frequency_B=frequencies[DEFAULT_FREQ], debounce;

char chaine_txt[6] = {' ', ' ', ' ', ' ', ' ', 0x00};


AD9850 myDDS (P1_0, P1_1, P1_2, P1_4);  // Call the AD9850 Library, AD9850 pins for CLOCK, LOAD, DATA and RESET
//AD9850 myDDS (P1_1, P1_2, P1_0, P1_4);  // Call the AD9850 Library, AD9851 pins for CLOCK, LOAD, DATA and RESET

LCD_5110 myScreen(P2_3,    // Chip Select *
         P1_6,    // Serial Clock *
         P2_5,    // Serial Data *
         P2_4,    // Data/Command *
         NULL,    // Reset *
         P1_7,    // Backlight
         NULL);  // Push Button 0

//******************************************************************
// Defining pins mode and initializing hardware

void setup() {
  pinMode(PTT_key, INPUT_PULLUP);

  myDDS.begin();
  
   
  pinMode(ANALOG_BUTTONS, INPUT);

  myScreen.begin();
  myScreen.setBacklight(1);
    
  myScreen.setFont(1);
  myScreen.text(0, 0, "sVFO");
  myScreen.text(0, 2, "AD9850");
  myScreen.setFont(0);
  myScreen.text(0, 4, "v1.00 - XV4Y");
  myScreen.text(0, 5, "Init...");
  
  delay(1000);
  
  myDDS.reset();
  
  myDDS.SetFrequency( frequency_A, 0, false );

  digitalWrite( PTT_key, LOW );

};

//******************************************************************
// Here starts the actual sequence sending

void loop() {
    myScreen.clear();
    myScreen.setBacklight(1);
    myScreen.setFont(1);
    if (vfo == 0) {
      myScreen.text(0, 0, "VFO A");
      myDDS.SetFrequency( frequency_A, 0, false );
    } else {
      myScreen.text(0, 0, "VFO B");
      myDDS.SetFrequency( frequency_B, 0, false );
    };

    myScreen.setFont(0);
    display_freq (frequency_A, 3);
    display_freq (frequency_B, 5);

    while (read_buttons()==5 || read_buttons()==4 || read_buttons()==2) delay(10); // Debounce except for UP/DWN

    while (1) {
      // Update the frequencies display
      if (multiplier > 5) {
        aff_multiplier = multiplier + 2;
      } else if (multiplier > 2) {
        aff_multiplier = multiplier + 1;
      } else {
        aff_multiplier = multiplier;
      };
      myScreen.text(0, 4, "          ");
      if (vfo == 0) {
        myScreen.text(9-aff_multiplier, 4, "^");
      } else {
        myScreen.text(9-aff_multiplier, 4, "v");
      }
      display_freq (frequency_A, 3);
      display_freq (frequency_B, 5);
  
      // Read the analog buttons input
      if(read_buttons()==1) {            // Up we increase frequency
        delay(200);  // Debounce
        if (vfo == 0) {
          frequency_A = frequency_A + powf(10,(float)multiplier);
        } else {
          frequency_B = frequency_B + powf(10,(float)multiplier);
        };
#if defined AUTO_VALID
        break;
#endif

      } else if (read_buttons()==3) {    // Down we decrease frequency
        delay(200);  // Debounce
        if (vfo == 0) {
          frequency_A = frequency_A - powf(10,(float)multiplier);
        } else {
          frequency_B = frequency_B - powf(10,(float)multiplier);
        };
#if defined AUTO_VALID
        break;
#endif

      } else if (read_buttons()==2) {    // Left we increase multiplier
        debounce = millis();
        while (read_buttons()==2) {  //Debounce
          if ((millis()-debounce)>1000) {  // Long press we do "Band UP"
            freq_select++;
            if (freq_select > 14) freq_select = 0;
            if (vfo == 1) frequency_B = frequencies[freq_select]; else frequency_A=frequencies[freq_select];
            multiplier--;
            break;
          };
        };
        multiplier++;
        if (multiplier > 7) multiplier = 7;

      } else if (read_buttons()==4) {    // Right we decrease multiplier
        debounce = millis();
        while (read_buttons()==4) {  //Debounce
          if ((millis()-debounce)>1000) {  // Long press we do VFO A=B
            if (vfo == 1) frequency_A = frequency_B; else frequency_B=frequency_A;
            multiplier++;
            break;
          };
        };
        multiplier--;
        if (multiplier < 0) multiplier = 0;

      } else if (read_buttons()==5) {    // OK we go out
        debounce = millis();
        while (read_buttons()==5) {  //Debounce
          if ((millis()-debounce)>1000) {  // Long press we switch VFO A/B
            if (vfo == 1) vfo=0; else vfo=1;
            break;
          };
        };
        break;   // Short press we just leave the loop so the frequency is transmitted to the AD9850
      }

      // Check if we are transmitting split (momentaneous VFO A->B switch)
      if (saved_PTT != digitalRead(PTT_key)) {
        saved_PTT = digitalRead(PTT_key);
        if (vfo == 1) vfo=0; else vfo=1;
        break;
      };
    }

};


//******************************************************************
// Display the frequency
void display_freq (unsigned long freq, char ligne) {
  myScreen.text(10, ligne, " Hz ");
  chaine_txt[5] = 0x00;
  chaine_txt[4] = 0x30 + (((freq)/1)%10);
  chaine_txt[3] = 0x30 + (((freq)/10)%10);
  chaine_txt[2] = 0x30 + (((freq)/100)%10);
  chaine_txt[1] = '.';
  chaine_txt[0] = 0x30 + (((freq)/1000)%10);
  myScreen.text(5, ligne, chaine_txt);
  chaine_txt[5] = 0x00;
  chaine_txt[4] = 0x30 + (((freq)/10000)%10);
  chaine_txt[3] = 0x30 + (((freq)/100000)%10);
  chaine_txt[2] = '.';
  chaine_txt[1] = 0x30 + (((freq)/1000000)%10);
  chaine_txt[0] = 0x30 + (((freq)/10000000)%10);
  myScreen.text(0, ligne, chaine_txt); 
}

//******************************************************************
// Display a 2 digits number
void display_number (byte number, char column, char ligne) {
  chaine_txt[2] = 0x00;
  chaine_txt[1] = 0x30 + (number%10);
  chaine_txt[0] = 0x30 + ((number/10)%10);
  myScreen.text(column, ligne, chaine_txt);
}

//******************************************************************
// Return a button value depending on the analog reading
byte read_buttons () {
  int value = analogRead(ANALOG_BUTTONS);
  if ( value<(1+Analog_Noise) ) {
    return 1;
  } else if ( value<(78+Analog_Noise) ) {
    return 2;
  } else if ( value<(146+Analog_Noise) ) {
    return 3;
  } else if ( value<(205+Analog_Noise) ) {
    return 4;
  } else if ( value<(255+Analog_Noise) ) {
    return 5;
  } else {
    return 0;
  }
}

Sproutie : La balise QRSS HiFer de Dave AA7EE

AA7EE carte ATTiny programmateur pour Arduino (http://xv4y NULL.radioclub NULL.asia/wp-content/uploads/2015/11/AA7EE_programmer_ATTiny NULL.jpg)Il y a quelques temps, Dave AA7EE m’a contacté pour avoir ma version corrigée du code la balise QRSS de G0UPL/G0XAR (http://xv4y NULL.radioclub NULL.asia/2012/01/11/programmer-un-micro-controleur-atmel-attiny-avec-un-arduino/). Il l’a utilisé pour modifier sa propre balise et la placer sur la bande dite HiFer 13553-13567 KHz  autorisée aux USA sans licence. Lisez sur son blog le détail de son projet. Personellement moi j’adore la construction soignée de son programmateur de micro-contrôleur ATTiny.

La valise portable KX3 autonome de Scott AK5SD

Valise KX3 par AK5SD vue de faceMerci à K4SWL et son site QRPer.com de nous présenter ce montage très bien réalisé. (http://qrper NULL.com/2015/11/scotts-elecraft-kx3-go-box/) L’article devait paraître il y a quelques jours mais j’ai eu quelques soucis avec la migration du blog sur un nouveau serveur… la structure de la base de données était corrompue.

En effet l’idée de rassembler dans une valise un shack autonome complet prêt à utiliser en voyage ou en cas d’urgence, la qualité du travail effectué par Scott AK5SD est au dessus de la moyenne. Je vous laisse aller voir la page originale (en anglais) qui contient moult photos et explications détaillées.

Pour ma part, j’ai juste deux petites remarques. La première c’est que l’opérateur n’est clairement pas un adepte de la CW mais plutôt de la BLU et des modes numériques, dans ce cas il faudra aussi prévoir un PC et son alimentation. Valise KX3 par AK5SD détails intérieurLa deuxième c’est que suis toujours un peu sceptique avec l’utilisation de packs d’alimentation à batteries intégrées.
Séduisants sur le papier, je crains qu’il ne génère beaucoup de bruit en HF et gène la réception. On voit d’ailleurs que AK5SD se plaint de la réduction de bruit du KX3 et doit lui adjoindre un DSP externe… L’avis de propriétaires du KX3 serait le bienvenu pour éclairer ma lanterne sur le sujet.

Nouveau kit par NM0S : la boîte d’accord 4S-Tuner

Four States QRP Group Antenne Tuner by NM0S (http://xv4y NULL.radioclub NULL.asia/wp-content/uploads/2015/11/4stuner_panel NULL.jpg)Merci à K4SWL pour l’information (http://qrper NULL.com/2015/11/new-kit-by-nm0s-the-4s-tunerantenna-coupler/).

Dave NM0S a conçu un nouveau kit pour le Four States QRP group. Il s’agit cette fois d’un coupleur d’antenne de type T-match conçu pour adapter l’impédance de presque n’importe quel bout de fil. Le petit plus de son design est d’avoir deux LEDs pour le réglage : une pour le pic de ROS et une pour le pic de puissance. Le prix est de 60$US avec frais de ports à l’étranger inclus. Tous les détails sur le site du 4 States QRP Group (http://www NULL.4sqrp NULL.com/4stuner NULL.php).

Les caractéristiques sont les suivantes :

  • Large gamme d’accord (de 80 mètres jusque 10 mètres),
  • Testé sur antenne demi-onde End-Fed (EFHW) et long fil de 30 mètres,
  • Puissance maxi supportée testée à 10W,
  • Tore de ferrite de largement dimensionné à faibles pertes,
  • 12 prises intermédiaires pour une sélection de l’impédance graduelle précise,
  • Faibles pertes d’insertion à l’accord,
  • Taille du boîtier 75x75x50mm,
  • Construction à Pittsburg.

Kit Analyseur d’impédance vectoriel AQRP VIA par K5BCQ

K5BCQ VIA Analyseur d'impédanceJe discutais avec F4GRT à propos de l’analyseur de réseau scalaire de G4NQX (http://xv4y NULL.radioclub NULL.asia/2015/10/23/un-analyseur-de-reseau-tres-simple-a-base-dad9850-et-arduino-nano/) en me disant que ce serait bien si quelqu’un comme K5BCQ pouvait en proposer un kit. Je suis donc allé sur le site de Kees et ô surprise (http://www NULL.qsl NULL.net/k5bcq/Kits/Kits NULL.html)!
Bon, ok, ce n’est pas un analyseur de réseau mais un analyseur d’impédance, cela-dit les caractéristiques sont très sympas et le prix de 73 USD écran couleur LCD compris très très raisonnable. Il faut ajouter à ça la carte Discovery programmée pour 20 USD et les frais de port vers l’étranger de 26,50 USD, soit en tout moins de 120 $US. C’est le kit numéro 25 sur la page de Kees K5BCQ (http://www NULL.qsl NULL.net/k5bcq/Kits/Kits NULL.html).

Le design est de W8NUE qui utilise la même base de travail que les SDR2GO, modem numérique NUE-PSK et STM32-SDR (http://xv4y NULL.radioclub NULL.asia/2013/12/12/stm32-sdr-un-sdr-iq-autonome-et-opensource/) avec un micro-contrôleur STM32F407 Discovery boards. En bref les points forts :

  • K5BCQ VIA Analyseur d'impédance intérieur (http://xv4y NULL.radioclub NULL.asia/wp-content/uploads/2015/11/VIAinside2 NULL.jpg)Mesure des tensions (V) et courants (I)
  • Calcule de Z (impédance complexe), Y (admittance complexe), k (pour les français ρ, coéficient de réflexion), RL (Perte en réflexion), VSWR (ROS ou Rapport d’onde stationnaires en tension)
  • Traçage de Z, Y, k, RL, VSWR, et abaque de Smith (pour le coefficient de réflexion). Z et Y sont des tracés de nombres complexes.
  • Curseur vertical sur tous les graphes, indiquant la fréquence.
  • Par défaut la gamme de fréquence va de 1 à 150 MHz, un mode LF alternatif couvre 8KHz à 1MHz.
  • Mode de balayage (scan) manuel et automatique
  • Fréquences de départ et de fin, pas de fréquence et temps de mise en place (en ms) tous configurables.
  • Tous les paramètres sont sauvegardés pour un rappel facile lors de la prochaine mesure.
  • 500 points de mesure peuvent être enregistrés pour être transférés plus tard sur un PC.
  • Alimentation par 6 piles AA ou alimentation à découpage 5V. Une batterie LiPO externe peut être ajoutée pour alimenter l’alim à découpage.
  • Utilise un affichage LCD TFT 320QVT (320×240 pixels, couleur) avec écran tactile résistif, disponible sur eBay.

K5BCQ VIA Analyseur d'impédance menu (http://xv4y NULL.radioclub NULL.asia/wp-content/uploads/2015/11/VIAp5 NULL.jpg)

K5BCQ VIA Analyseur d'impédance boîtier (http://xv4y NULL.radioclub NULL.asia/wp-content/uploads/2015/11/K5LNfront NULL.jpg)

3 projets QRP par VU2ESE

VU2ESE - Amplificateur linéaire 25W IRF510 (http://xv4y NULL.radioclub NULL.asia/wp-content/uploads/2015/07/20131122_081706 NULL.jpg)Farhan VU2ESE, auteur des BITX (http://xv4y NULL.radioclub NULL.asia/2010/05/18/kit-bitx-%e2%80%93-12-en-boite/) et MINIMA (http://xv4y NULL.radioclub NULL.asia/2015/05/21/une-nouvelle-version-du-transceiver-hf-qrp-minima-par-vu2ese/), nous avait récemment fait part de ses expérimentations autour d’une boîte d’accord QRP (http://xv4y NULL.radioclub NULL.asia/2015/07/02/experimentations-autour-dune-boite-daccord-symetrique-par-vu2ese/).

Ces derniers jours il a envoyé sur quelques listes de diffusion l’adresse d’un nouveau site web où il partage trois autres projets (http://hfsignals NULL.blogspot NULL.in/p/about NULL.html) assez innovants :

  • SWEEPERINO (http://hfsignals NULL.blogspot NULL.in/p/sweeperino NULL.html), un générateur de signal / wobulateur / ROSmètre construit autour d’un Arduino, d’un Si570 et d’un détecteur de signal W7ZOI à base d’AD8307.
  • Un amplificateur linéaire 25W bi-bandes 20/40 mètres (http://hfsignals NULL.blogspot NULL.in/p/25-watt-linear-for-40-and-20 NULL.html) à base d’IRF510, pour 2W en entrée et alimentation 30V.
  • Les détails du BITX40 (http://hfsignals NULL.blogspot NULL.in/p/in-hamfest-india-of-2014-kitbag NULL.html) dont le kit a été distribué à la Hamfest India.