Archives par mot-clé : G0UPL

Balise WSPR autonome avec MSP430 – suite

Générateur balise autonome WSPR LaunchPad MSP430 (http://xv4y NULL.radioclub NULL.asia/wp-content/uploads/2012/09/100_3289 NULL.jpg)

[GTranslate]

J’ai retravaillé un peu sur ma balise WSPR autonome (http://xv4y NULL.radioclub NULL.asia/2012/05/11/balise-autonome-wspr-avec-msp430/) construite autour de l’émetteur QRSS de G0UPL/G0XAR (http://www NULL.hanssummers NULL.com/qrsskit NULL.html). D’une part j’ai mis le montage “au propre” sur un circuit imprimé de prototype, d’autre part j’ai implémenté la commande de polarisation du PA ce qui permet de ne pas être en émission constamment et de n’envoyer la séquence WSPR qu’une fois sur quatre de manière aléatoire par exemple.

Le code du générateur lui-même a été optimisé pour générer une séquence de test durant  la phase d’attente de synchronisation de l’horloge. Cela permet de vérifier que les différentes valeurs binaires sont envoyées avec la bonne excursion en fréquence (6Hz au total) et que la fréquence de travail désirée est bien la bonne. La durée de chaque valeur est de 5 secondes, plus longue que durant la séquence WSPR, ce qui facilite les réglages.

Générateur balise autonome WSPR LaunchPad MSP430 deux platines séparées (http://xv4y NULL.radioclub NULL.asia/wp-content/uploads/2012/09/100_3290 NULL.jpg)Après quelques cafouillages dus à une erreur de câblage, les 3 premières soirées ont été très concluantes. Les reports sur 30 mètres viennent de Thaïlande, des Philippines, du Japon et d’Australie (environ 6000km). Avec les 90mW de la balise de G0UPL c’est tout ce que je peux espérer de mieux surtout à cette saison. En modifiant le circuit du PA j’en ai profité pour remplacer le 2N7000 par un Bs170. Le 2N7000 chauffait anormalement même s’il n’a jamais failli. Avec le Bs170, la dissipation autorisée est plus importante et il ne chauffe plus du tout… Je vais donc essayer d’augmenter la tension d’alimentation de l’´émetteur pour atteindre 9V et les 200mW en émission. J’espère que cela ne posera pas de difficultés pour l’oscillateur et l’étage buffer qui ne seront plus à leur point de fonctionnement optimal, sinon il me faudra charcuter un peu le circuit et ajouter un régulateur supplémentaire.

Reports WSPR 30m 29 septembre 2012 (http://xv4y NULL.radioclub NULL.asia/wp-content/uploads/2012/10/WSPR_balise_MSP430 NULL.jpg)Il me reste encore quelques petits détails à régler sur le code micro-contrôleur mais je publierai l’ensemble des informations (y compris le schéma) sur une page dédiée d’ici quelques semaines. En attendant n’hésitez pas à me poser des questions si vous en avez.

Nouveau kit QRSS par G0UPL et G0XAR

Schéma G0UPL G0XAR Balise Multimode (http://xv4y NULL.radioclub NULL.asia/wp-content/uploads/2012/05/G0UPL-G0XAR-Balise-Multimode NULL.jpg)Hans et Stephen viennent d’annoncer un nouveau kit balise multimode QRSS / QRPp (http://www NULL.hanssummers NULL.com/qrsskitmm). La grande nouveauté de ce kit c’est que le micro-contrôleur est maintenant un ATMega168 ce qui permet de faire beaucoup plus beaucoup plus de choses que le très limité ATTiny13 utilisé précédemment.

Les modes supportés seront :

  • QRSS (télégraphie lente par porteuse ON/OFF)
  • FSK/CW (télégraphie lente par modulation de la fréquence
  • DFCW (télégraphie lente par modulation de fréquence mais traits et points chacun sur une fréquence)
  • WSPR (Weak Signal Propagation Reporter par K1JT)
  • Hellschreiber lent (Hellschreiber lent par modulation de fréquence)
  • Hellschreiber (Hellschreiber vitesse normale et demi-vitesse)
  • CW (télégraphie normale)
  • Motifs FSK personnalisables

Autres fonctionnalités

  • Afficheur LCD 24 caractères LCD et interface utilisateur deux boutons
  • Programmable par l’utilisateur (indicatif, message, vitesse, FSK, mode, etc)
  • Paramètres stockés en EEPROM
  • Interface GPS pour verrouiller la fréquence
  • Génération du message WSPR (pas de PC requis)
  • Le locator de la séquence WSPR peut être généré à partir des informations du GPS
  • Taille de la trame QRSS paramètrable pour une réception QRSS de trames superposées (moyenne étalée dans le temps)
  • Balise CW standard à intervales réglables
  • Produit 150mW en sortie HF, sortie audio possible pour piloter un transceiver
  • Puissance supérieure possible par l’ajout d’un transistor supplémentaire au PA ou par l’utilisation d’une tension d’alimentation supérieure

Les commandes seront ouvertes d’ici une à deux semaines et l’expédition des kits devrait débuter dans trois semaines. Le prix prévu est de l’ordre de 15 à 20£, soit environ 23-31$US ou 18-25€.

Un brouillon du manuel de 26 pages peut-être téléchargé pour avoir plus de détails (http://www NULL.hanssummers NULL.com/images/stories/qrsskitmm/instructions1 NULL.pdf).

Balise autonome WSPR avec MSP430

[GTranslate]

Ces derniers jours je me suis amusé un peu à programmer le LaunchPad de TI avec Energia. Le but étant de voir si du code Arduino (AVR ATMega) était facilement portable sur le MSP430.

Capture port série Balise WSPR MSP430 XV4Y (http://xv4y NULL.radioclub NULL.asia/wp-content/uploads/2012/05/Capture-Balise-WSPR-MSP430 NULL.jpg)La réponse est oui, si le code est propre (pas toujours facile) et s’il n’utilise pas des librairies non encore portée sur Energia (ce qui va diminuer avec le temps). En pratique je suis parti d’un morceau de code de F4GKA/VA2GKA (http://www NULL.itsrainingelephants NULL.com/2012/04/29/wspr-30m-ready/#comments) et d’un autre de DH3JO (http://wsprnet NULL.org/drupal/node/1342) pour faire une balise WSPR autonome. Le code est fonctionnel mais n’a pas encore été testé sur l’air. Cerise sur le gâteau, il est “rétroportable” sur Arduino car il suffit de changer les numéros de broches.

J’ai encore un peu de travail autour de cela, mais pour les curieux voici les résultats de quelques heures de réflexion ce matin. Il me faut maintenant connecter cela sur la balise QRSS du kit de G0UPL / G0XAR et voir comment cela se comporte en particulier du point de vue dérive de la synchronisation dans le temps. Contrairement à mon Arduino Nano le LaunchPad n’est pas équipé d’origine d’un quartz mais j’ai ce qu’il faut sous la main.

Au passage la modification du kit balise QRSS peut se faire comme l’a fait IW1QLH avec une échelle R-2R (http://www NULL.iw1qlh NULL.net/index NULL.php/projects-hardware-mainmenu-66/99-qrp/115-qrss-beacon).

Le fichier pour Energia/Arduino est disponible au téléchargement (http://xv4y NULL.radioclub NULL.asia/wp-content/uploads/2012/05/WSPR_autonome_XV4Y NULL.txt). Attention, il faudra renommer le fichier en .ino au lieu du .txt (WordPress n’aime pas les .ino)

/* WSPR Static Generator for MSP430G2553
* Code for Energia 005a</code>

* By Yannick DEVOS - XV4Y - May 2012
* Free for HAM Radio usage

* Based on VA2GKA Guenael Jouchet code for sending
* Based on DH3JO Martin Nawrath for WSPR sequence encoding

*
* Internal clock of MSP430 could be not stable enough, try a Crystal
* Start the circuit on the second 0 of an odd minute

* Ouput on 2 bits PinA and PinB
* Mirror on LED1 and LED2 du LaunchPad for testing
* Output to Serial for testing
* Using an R-2R ladder it makes the G0UPL/G0XAR beacon frequency shift
*/

#include// Comment on Arduino, replace mySerial by Serial everywhere

#define wsprPinA 7
#define wsprPinB 6
#define LEDPinA 14
#define LEDPinB 2
#define StartBtn 5

const char SyncVec[162] = {
1,1,0,0,0,0,0,0,1,0,0,0,1,1,1,0,0,0,1,0,0,1,0,1,1,1,1,0,0,0,0,0,0,0,1,0,0,1,0,1,0,0,0,0,0,0,1,0,
1,1,0,0,1,1,0,1,0,0,0,1,1,0,1,0,0,0,0,1,1,0,1,0,1,0,1,0,1,0,0,1,0,0,1,0,1,1,0,0,0,1,1,0,1,0,1,0,
0,0,1,0,0,0,0,0,1,0,0,1,0,0,1,1,1,0,1,1,0,0,1,1,0,1,0,0,0,1,1,1,0,0,0,0,0,1,0,1,0,0,1,1,0,0,0,0,
0,0,0,1,1,0,1,0,1,1,0,0,0,1,1,0,0,0
};

const char call[] = "XV4Y ";
const char locator[] = "OK20";
const byte power = 20;

int i;
char symbol;

int ii,bb;

byte c[11]; // encoded message

byte sym[170]; // symbol table 162
byte symt[170]; // symbol table temp
unsigned long n1; // encoded callsign
unsigned long m1; // encodes locator

TimerSerial mySerial; // Comment on Arduino

//******************************************************************
// Defining pins mode
// Encoding the WSPR sequence

void setup() {
mySerial.begin(); // Comment on Arduino
pinMode(wsprPinA, OUTPUT); // Change for Arduino/AVR
pinMode(wsprPinB, OUTPUT); // Change for Arduino/AVR
pinMode(LEDPinA, OUTPUT); // Change for Arduino/AVR
pinMode(LEDPinB, OUTPUT); // Change for Arduino/AVR
pinMode(StartBtn, INPUT_PULLUP); // INPUT for Arduino and put pin to HIGH
// digitalWrite(StartBtn, HIGH); // Don't use this on LaunchPad/MSP430

mySerial.print("\n\n\n*** MSP430 WPSR beacon \n");

encode_call();
mySerial.print("call: ");
mySerial.print(call);
mySerial.print(" ");
mySerial.print(n1,HEX);
mySerial.println(" ");

encode_locator();
mySerial.print("locator: ");
mySerial.print(locator);
mySerial.print(" ");
mySerial.print(m1 &lt;&lt; 2,HEX);
mySerial.println(" ");
for (bb=0;bb mySerial.print(c[bb],HEX);
mySerial.print(",");
}
mySerial.println("");
encode_conv();

mySerial.println("");

for (bb=0;bbmySerial.print(symt[bb],DEC);
mySerial.print(".");
if ( (bb+1) %32 == 0) mySerial.println("");
}
mySerial.println("");

interleave_sync();

mySerial.println("Channel symbols :");
for (bb=0;bb mySerial.print(sym[bb],DEC);
mySerial.print(".");
if ( (bb+1) %32 == 0) mySerial.println("");
}
mySerial.println("");

};

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

void loop() {
digitalWrite( wsprPinB, LOW );
digitalWrite( LEDPinB, LOW );

digitalWrite( wsprPinA, LOW );
digitalWrite( LEDPinA, LOW );
mySerial.println("*** Sequence sending delayed.");
mySerial.println("*** Press S2 to start now.");
i = 0;
while (i &lt; 9408) {
delay(1);
if (digitalRead(StartBtn)==LOW) {
i = 20000;
} else {
i++;
};

}

for (i = 0; i &lt; 170; i++) { symbol = sym[i]; mySerial.print(symbol%10, DEC); mySerial.print(" "); digitalWrite( wsprPinB, (symbol &gt;&gt; 1) );
digitalWrite( LEDPinB, (symbol &gt;&gt; 1) );

digitalWrite( wsprPinA, (symbol &amp; 1) );
digitalWrite( LEDPinA, (symbol &amp; 1) );
delay(682.667);
};
mySerial.println("\n *** End of sequence");
};

/* Functions declaration
* This code by DH3JO
* KHM 2009 / Martin Nawrath
* Kunsthochschule fuer Medien Koeln
* Academy of Media Arts Cologne
*/

//******************************************************************
void encode() {
encode_call();
encode_locator();
encode_conv();
interleave_sync();
};
//******************************************************************
// normalize characters 0..9 A..Z Space in order 0..36
char chr_normf(char bc ) {
char cc=36;
if (bc &gt;= '0' &amp;&amp; bc = 'A' &amp;&amp; bc &gt; 20;
t1=n1;
c[1]= t1 &gt;&gt; 12;
t1=n1;
c[2]= t1 &gt;&gt; 4;
t1=n1;
c[3]= t1 &lt;&lt; 4; } //****************************************************************** void encode_locator(){ unsigned long t1; // coding of locator m1=179-10*(chr_normf(locator[0])-10)-chr_normf(locator[2]); m1=m1*180+10*(chr_normf(locator[1])-10)+chr_normf(locator[3]); m1=m1*128+power+64; // merge coded locator and power into message array c[] t1=m1; c[3]= c[3] + ( 0x0f &amp; t1 &gt;&gt; 18);
t1=m1;
c[4]= t1 &gt;&gt; 10;
t1=m1;
c[5]= t1 &gt;&gt; 2;
t1=m1;
c[6]= t1 &lt;&lt; 6;

}
//******************************************************************
// convolutional encoding of message array c[] into a 162 bit stream
void encode_conv(){
int bc=0;
int cnt=0;
int cc;
unsigned long sh1=0;

cc=c[0];

for (int i=0; i &lt; 81;i++) {
if (i % 8 == 0 ) {
cc=c[bc];
bc++;
}
if (cc &amp; 0x80) sh1=sh1 | 1;

symt[cnt++]=parity(sh1 &amp; 0xF2D05351);
symt[cnt++]=parity(sh1 &amp; 0xE4613C47);

cc=cc &lt;&lt; 1;
sh1=sh1 &lt;&lt; 1;
}

}

//******************************************************************
byte parity(unsigned long li)
{
byte po = 0;
while(li != 0)
{
po++;
li&amp;= (li-1);
}
return (po &amp; 1);
}

//******************************************************************
// interleave reorder the 162 data bits and and merge table with the sync vector
void interleave_sync(){
int ii,ij,b2,bis,ip;
ip=0;

for (ii=0;iibis=1;
ij=0;
for (b2=0;b2 &lt; 8 ;b2++) { if (ii &amp; bis) ij= ij | (0x80 &gt;&gt; b2);
bis=bis &lt;&lt; 1;
}
if (ij &lt; 162 ) {
sym[ij]= SyncVec[ij] +2*symt[ip];
ip++;
}
}
}

Balise WSPR autonome avec Arduino chez W3PM

Hier j’ai laissé tourné WSPR sur 30 mètres pour voir si la propagation était revenue à un niveau correct sur cette bande. Cela m’a aussi permis de valider les performances de l’OCF Dipole sur le 30 mètres où en principe elle ne devrait pas fonctionner…

Réception WSPR 19 mars 2012 sur 30m (http://xv4y NULL.radioclub NULL.asia/wp-content/uploads/2012/03/WSPR_19mars2012_30m NULL.jpg)En lisant la partie “blog” du site WSPRnet.org (http://wsprnet NULL.org/) je suis tombé sur un OM qui parlait d’une balise autonome WSPR autour d’un Arduino. Intéressé, j’ai creusé un peu et j’ai trouvé une mine d’information sur le site de W3PM (http://www NULL.knology NULL.net/~gmarcus/). Cet OM a fait un excellent travail autour de WSPR en concevant des émetteur-récepteur mais aussi en utilisant des Arduino Uno et Arduino MEGA pour piloter un DDS. Il a aussi conçu le même style de générateur WSPR pour la platine QRSS de G0UPL/G0XAR (http://xv4y NULL.radioclub NULL.asia/2010/08/16/kit-balise-qrss/) mais sur un micro-contrôleur PIC. C’est cette dernière qui m’intéresse le plus mais je n’ai pas de PIC.

J’avoue que pour l’instant je n’ai pas encore eu l’occasion de regarder en détails comment me servir de toutes ces infos. Je me pencherai sur ce projet courant mai. Générer une séquence WSPR “manuellement” est possible car K1JT fournit le petit programme adéquat. Il faut ensuite moduler correctement la fréquence pour un shift de 1 à 3 Hz (positif et négatif, 4 symboles en tout). La difficulté pour les transmissions de séquences WSPR étant de devoir être calé à la seconde près sur les minutes paires sinon aucune trame n’est décodée… Une horloge asservie à un GPS résout le problème, mais je n’en ai pas. W3PM semble utiliser aussi un récepteur de signaux WWBV (disponible à bas prix) mais ça ne marchera pas très bien hors des USA.

A noter que F4GKA (http://www NULL.itsrainingelephants NULL.com/2012/03/04/fabrication-dun-mept/) s’intéresse aussi à ce problème et utilise lui une échelle de 4 résistance comme DAC pour piloter la varicap (une LED sur la balise de G0UPL).

Dernière chose, voici k6HX qui a construit une balise SSTV à partir d’un Arduino (http://brainwagon NULL.org/2009/07/23/success-robot36-encoder-works/). Bon, en fait il génère un fichier son (WAV) sur PC et l’Arduino en déclenche la lecture sur l’AudioShield… mais il y a de l’idée.

Programmer un micro-contrôleur Atmel ATtiny avec un Arduino (MAJ)

[GTranslate]

Il y a plus d’un an j’avais monté un kit balise QRSS (MEPT QRSS pour être exact) de G0UPL (http://xv4y NULL.radioclub NULL.asia/2010/08/16/kit-balise-qrss/). Hans livre le micro-contrôleur ATTiny13 du kit programmé à l’avance avec l’indicatif que vous lui demandez, or le mien a changé entretemps!

Arduino utilisé comme ISP pour reprogrammer un ATTiny13

J’avais donc en tête de reprogrammer celui-ci avec le bon indicatif. C’est facilement faisable avec une platine Arduino programmée pour agir en tant qu’ISP (In System Programmer). Une condition cependant, que les Fuse-bits ne soient pas programmés car dans ce cas un programmateur à tension élevée est nécessaire pour tout remettre à zéro. Hans et Steve m’ont confirmé que ce n’était pas le cas pour leur micro-contrôleur.

Je ne vais pas vous faire un guide pas-par-pas ici, plusieurs tutoriaux sont disponibles sur internet et mieux documentés. Je vais plutôt vous dire où trouver les informations. A noter que j’utilise un Macintosh, mais les grandes lignes restent les mêmes.

Liste des ingrédients :

  • La dernière version de l’IDE de l’Arduino (http://arduino NULL.cc/en/Main/Software).
  • Le pack de développement CrossPack pour AVR (http://www NULL.obdev NULL.at/products/crosspack/index NULL.html) qui permettra de compiler le code vers un binaire AVR avec XCode et installera aussi AVRDude permettant de communiquer avec le microcontrôleur de chez Atmel.
  • Un Arduino avec ATMega328, une plaque d’essais, des câbles, des jumpers et un condensateur (à mettre entre la pin RESET et la masse de l’Arduino.
Recette :
  • Lancer l’IDE Arduino, ouvrir le sketch Arduino ISP des exemples, le programmer dans l’Arduino.
  • Créer un projet dans XCode, copier le code du keyer QRSS (http://www NULL.hanssummers NULL.com/images/stories/qrsskeyer/beacon NULL.c) et le compiler.
  • Câbler l’Arduino et l’ATTiny de telle façon à raccorder les masses et +5V des deux circuits ensembles. Connecter les broches 10, 11, 12 et 13 de l’Arduino respectivement aux broches 1 (RST), 5 (MOSI), 6 (MISO),7 (SCK) de l’ATTiny13. (Voir photo un peu plus haut)
  • Ouvrir une fenêtre du terminal (shell) et récupérer l’ancien binaire (voir capture ci-dessous,cliquez pour élargir).Récupération du binaire du précédent programme dans la Flash de l'ATTiny13 avec AVRDude (http://xv4y NULL.radioclub NULL.asia/wp-content/uploads/2012/01/Download-binaire-ATTiny13-XV4TUJ NULL.jpg)
  • Programmer l’ATTiny avec le fichier .hex généré par XCode (voir capture ci-dessous, cliquez pour élargir).Envoi du binaire du nouveau programme dans la Flash de l'ATTiny13 avec AVRDude (http://xv4y NULL.radioclub NULL.asia/wp-content/uploads/2012/01/Upload-binaire-ATTiny13-XV4Y NULL.jpg)

Ca marche, ma balise envoie maintenant le bon indicatif (voir plus bas pour la mise à jour). Je n’ai plus qu’à procéder au réalignement périodique de la fréquence car celle-ci bouge un peu (50Hz c’est beaucoup en QRSS) avec les changements de saison et de température moyenne.

Mon but était de reprogrammer un ATTiny13 (http://futurlec NULL.com/Atmel/ATTiny13V NULL.shtml) avec le code source de G0UPL/G0XAR. Celui-ci est dans le langage C spécifique à ce micro-contrôleur, et avec le template AVR de XCode ont produit un binaire (fichier .hex) en code machine pour celui-ci. La flash sur l’ATTiny13 et de 1Ko, le binaire fait 664o.

Si vous disposez d’ATTiny45 ou ATTiny85, (http://futurlec NULL.com/Atmel/ATTiny85 NULL.shtml) ceux-ci ayant plus de mémoire, une autre possibilité existe si vous souhaitez créer vos propres programmes. En effet, le projet Arduino-Tiny (http://code NULL.google NULL.com/p/arduino-tiny/) a pour but de porter le noyau Arduino sur ATTiny. Ceci permet d’utiliser l’environnement de développement (IDE) d’Arduino et son langage plus évolué. Toutes les commandes ne sont pas utilisables car certaines sont propres au micro-contrôleur ATMega (http://futurlec NULL.com/Atmel/ATMEGA328P-AU NULL.shtml) des Arduino. Toutefois, pour un bon nombre de projets simples (balise (http://xv4y NULL.radioclub NULL.asia/2011/07/01/balise-cw-a-base-de-micro-controleur-arduino/), manipulateur électronique (http://xv4y NULL.radioclub NULL.asia/2011/12/09/arduino-manipulateur-cw-de-numero-de-serie-pour-concours/)…) cela permet de réduire de le coût et de simplifier le circuit.

Mise à jour : Contrairement à ce que je pensais au début même si la programmation du micro-contrôleur se passait bien aucune “manipulation” n’était effectuée par la balise, le signal restait fixe mais variait à cause du changement de température…

Je prends contact avec Stephen et Hans qui me donne deux informations. D’abord la fréquence à indiquer dans le Makefile pour la compilation est 9 600 000 Hz, car les ATTiny ont été programmés avec les fuse-bytes indiquant une horloge de 9,6 Mhz et pas de prescaling par le diviseur-par-8. Ensuite un petit bogue réside dans leur code qui ne compile plus sur les nouvelles versions de WinAVR (qui utilise avr-libc comme Crosspack). Après quelques recherches (je ne suis pas très doué en programmation), le code est corrigé et compile maintenant parfaitement. La version mise à jour du code devrait être disponible chez G0UPL, n’hésitez pas à me contacter pour plus de détails.

Si570 ou DDS, le dilemne de G0UPL – Partie 3

Suite des précédentes parties 1 (http://xv4y NULL.radioclub NULL.asia/2011/08/24/si570-ou-dds-le-dilemne-de-g0upl/) et parties 2 (http://xv4y NULL.radioclub NULL.asia/2011/08/30/si570-ou-dds-le-dilemne-de-g0upl-partie-2/) de cet article sur une comparaison entre DDS et Si570.

Consommation électrique

Ni le Si570 ni un DDS ne sont réellement économes quand on parle de la consommation électrique. Les deux vont essayer de vider votre batterie avec gloutonnerie, si vous opérez sur batteries bien entendu.

Le Si570 est annoncé avec une consommation de 120 mA à 3,3 V pour la versions LVPECL, ce qui fait 396 mW. Un ADD9912 d’un autre côté demande deux tensions séparées de 1,8 V et 3,3 V pour ses différentes sections (analogiques et numériques). Chaque tension a différentes consommations, mais la datasheet liste des consommations typiques pour différentes configurations. La consommation électrique est entre 637 mW et 747 mW. L’AD9912 a même une plaque de cuivre exposée à l’extérieur pour aider la chaleur à s’en extraire! N’oubliez pas, ceci est avant même que vous ne preniez en compte que le Si570 intègre déjà sa propre horloge de référence, alors qu’un circuit DDS aura besoin que vous lui en fournissiez une, ce qui ajoutera encore une charge sur l’alimentation électrique.

Quelques uns des DDS plus anciens, moins puissants, ont des besoins plus réduits. Mais comme tout mon comparatif s’est fait autour des circuits DDS du haut du panier, en particulier l’AD9912, je dirais qu’ici le Si570 prend l’avantage.

Coût

Aucun des deux n’est bon marché. Le Si570 a un prix comparable à celui de certains DDS bas de gamme mais pour un DDS haut de gamme comme l’AD9910 ou l’AD9912 que j’ai cité auparavant, vous débourserez nettement plus que pour un Si570. De plus, le DDS demande plus de circuits périphériques comme l’horloge externe, qui a peu de chance de se trouver dans un fond de tiroir. D’un autre côté, si vous êtes un radioamateur rusé (et radin), vous avez l’habitude de demande à Analog Device des échantillons gratuits. Vous n’obtiendrez jamais d’échantillons du Si570 par SiLabs. Tout bien pensé, je pense qu’on peut dire que globalement le Si570 gagne sur le plan du coût.

Autres fonctionnalités

Le Si570 est juste un oscillateur basique. Si vous voulez plus de fonctionnalités, vous voulez un DDS. Regardez les datasheets et vous serez plus qu’étonnés! Contrôlez l’amplitude, contrôlez  la phase et même ajoutez une réductions des spurs. Certains circuits DDS contiennent deux coeurs et sorties, qui peuvent être réglées pour être décalées de 90 degrés en phase (pratique pour un mélangeur à conversion directe de type phasing, regardez l’AD9854 (http://www NULL.analog NULL.com/en/rfif-components/direct-digital-synthesis-dds/ad9954/products/product NULL.html)). Automatisez votre modulation d’amplitude, modulation de fréquence, modulation de phase, balayage de fréquence automatique, et tout un tas d’autres possibilités dont je ne peux même pas souvenir ou comprendre. Vous n’en avez probablement pas besoin, ce sont peut-être juste des paillettes et strass pour faire vendre, mais du point de vue fonctionnalités je pense que vous serez d’accord pour dire le DDS est clairement vainqueur.

Complexité globale

Un Si570 est plutôt simple à utiliser. Donnez lui une tension de 3,3 V, connectez-y votre microcontrôleur, ça y est vous êtes prêt.

C’est pas trop ça avec le DDS! Avec un DDS, vous devez avoir quatre sources d’alimentation séparées, propres et bien régulées, certaines à 1,8 V et d’autres à 3,3 V. Vous avez besoin d’une horloge de référence. Certains composants DDS ont un oscillateur intégré où vous pouvez juste y connecter votre quartz. Toutefois pour les meilleures performances vous voudrez clairement concevoir et construire un oscillateur à 1 GHz, ce qui n’est pas un jeu d’enfant, et l’avoir correctement couplé avec les entrées de la puce. Ensuite vous nécessiterez le filtre de reconstruction (typiquement un passe-bas) à la sortie, et ce dernier doit aussi être soigneusement conçu. La carte par elle-même demande pas mal de soins aussi car il y a beaucoup de circuits HF tout autour de votre DDS.

Oui, utiliser un DDS demande beaucoup plus d’efforts qu’un Si570. Donc du point de vue de la complexité, je dirais que le Si570 est là aussi définitivement gagnant.

En résumé

Après tout cela, voici un résumé de mon avis sur les différents critères par lesquels juger ces deux types d’oscillateur. Gardez à l’esprit que chaque application est différente! Dans certaines, certains de ces critères ne sont pas importants du tout, ou bien vos propres priorités sont claires (et opposées à ma conclusion). Dans d’autres applications, vous devez faire face à des compromis inévitables. Performances et complexité, fonctionnalités et coûts, etc. Pour conclure quand même, je vais donc généraliser et travailler de manière bipolaire en donnant mon gagnant pour chaque catégorie sans tenir compte des autres. Je vous laisse juge des priorités selon vos applications.

Catégorie Gagnant
Facilité de construction Si570
Forme d’onde en sortie DDS
Gamme de fréquence Si570
Précision et stabilité en fréquence DDS
Agilité en fréquence DDS
Interface de programmation DDS
Performances : Pureté spectrale Si570
Performances : Bruit de phase DDS
Consommation électrique Si570
Coût Si570
Autres fonctionnalités DDS
Complexité glogale Si570

D’autres lectures

Pour une saine lecture pleine d’inspiration à propos d’un projet de récepteur aux performances ultimes, décrivant les raisons pour lesquelles Martein de PA3AKE a choisi le DDS AD9910 pour son oscillateur, merci de visiter son site (http://www NULL.xs4all NULL.nl/~martein/pa3ake/hmode/). Pour les kits Si570 jetez un oeil chez SDR Kits (http://www NULL.sdr-kits NULL.net/). Il y a des tas de kits DDS disponibles sur la toile, utilisez votre moteur de recherche préféré pour les trouver. Pour d’autres informations intéressantes et des discussions à propos du Si570, aller sur la page Si570 d’Andy G4OEP (http://g4oep NULL.atspace NULL.com/si570index/si570index NULL.htm); tout comme Martein PA3AKE, Andy ne fait jamais les choses à moitié.

Mon favori

Ce qui est le mieux dépend vraiment de vos besoins. Mais si vous êtes toujours en train de me lire, et que vous pensez que je dois quand même donner ma préférence globale, je dirais le DDS. C’est juste comme une couleur préférée, ou un chiffre porte-bonheur, il n’y a aucune vraie raison. C’est juste celui que je préfère!

Kit balise QRSS

Je viens de recevoir un kit simple et rapide à réaliser. Il a été conçu par QRP Labs, groupe plus connu sous les personnes de Hans G0UPL et Steve G0XAR. Ce kit avait déjà reçu un très grand succès quant il avait été distribué aux salons de Dayton puis Friedrichaven. Plusieurs centaines de kit programmés sur place s’étaient écoulé comme des petits pains. La qualité du kit et le prix très contenu (moins de 15€ port compris) n’y sont pas étrangers.

Composants et notice du kit balise QRSS de G0UPL et G0XAR (http://capheda NULL.files NULL.wordpress NULL.com/2010/08/100_2518 NULL.jpg)Ce kit balise QRSS (QRSS QRP beacon kit (http://www NULL.hanssummers NULL.com/qrsskit NULL.html)) est composé d’une trentaine de composants. C’est un oscillateur à quartz, suivi d’un étage buffer et d’un amplificateur de puissance à FET. Il peut sortir environ 100mW pour travailler dans de bonnes conditions. L’oscillateur est modulé en fréquence par un micro-contrôlleur programmé par les auteurs du kit. Le micro-contrôlleur transmet un signal QRSS DFCW à 5 Hertz avec une longueur de point programmable (de 1 à 20s, ou CW 6 ou 12 mots par minutes). A l’achat, une fréquence sur 3,5 MHz, 7 MHz ou 10,140 MHz peut être choisie. J’ai préféré la bande des 30 mètres (10,100-10,150 MHz) car du point de vue étude de la propagation c’est celle qui offre le plus de curiosités. Elle offre une excellente couverture en tant que bande de nuit mais aussi une propagation de jour pas négligeable.

Je vous en dirai plus quand le kit sera monté et opérationnel…