Archives par mot-clé : projet

Milliwattmètre à AD8307

Note: tous les liens s’ouvrent dans un nouvel onglet.

Introduction

Le circuit AD8307 d’Analog Devices est un détecteur logarithmique. Il est capable de mesurer la puissance d’un signal radio jusqu’à 500 MHz.

Voyons pourquoi la caractéristique logarithmique est intéressante. Un détecteur à diode (un pont de diodes utilisant des diodes Schottky rapides) produit un signal de sortie proportionnel à la puissance du signal radio. C’est pratique pour des signaux importants, mais en pratique, si le signal est trop faible, le détecteur sort soit aucune tension, soit une tension trop faible pour être mesurée sans amplificateur additionnel.

Un détecteur logarithmique, au contraire, est construit comme une suite d’amplificateurs saturables, et produit une tension correspondant au… logarithme de la puissance radio, en général quelques millivolts par décibel. Pour faire simple, cela fonctionne comme un multimètre à calibre automatique. Chaque fois que le signal est trop grand ou trop petit, le chip passe au “calibre” précédent ou suivant et donne une information mesurable. Cela lui permet d’avoir une plage de sensibilité (dynamique) beaucoup plus grande, tout en gardant un signal de sortie qui varie dans des proportions limitées.

On peut alors utiliser ce composant comme milliwattmètre (ou wattmètre avec le bon atténuateur). Mesurer de manière précise une puissance RF dans une large plage dynamique a de nombreuses applications pratiques, comme par exemple la réalisation d’un analyseur scalaire, ou la mesure de composants RF, comme des atténuateurs ou amplificateurs.

Dans le cas de l’AD8307, la dynamique est de 90 dB.

10dB représentent un rapport de 10^(10/10)=10 entre le mini et le maxi détectable, soit par ex. de 1 a 10 mW ou de 100 mW à 1W.

90dB représentent un rapport de 10^(90/10) = 10^9, soit 1 milliard, par ex de 1uW à 1 kW, ou encore 1nW à 1W, ou de 1pW à 1mW

Dans notre cas le maximum détectable est de de +15 dBm (30mW), ce qui amène le minimum à -75 dBm (30 pW, oui pico-watts!)

Ce rapport de 1 milliard entre la puissance la plus basse mesurable et la plus élevée est ramené a une plage de tension de 5V, la fonction logarithme “écrase” donc considérablement ces variations extrêmes de puissance pour les rendre mesurables. Une variation de 10 dB produira un résultat de 200 mV que le signal mesuré varie de -70 à -60 dB ou bien de -10 à 0 dB.

Le schéma

Le schéma est un classique qu’on retrouve un peu partout sur le web. L’impédance d’entrée du circuit est spécifiée a 1.1 kohms, une résistance parallèle de 52.3 ohms  permet de la ramener au classique 50 ohms. On peut alors faire une mesure directe de la puissance envoyée par une source de cette impédance sans réflexions parasites.

500 MHz est une bande passante très large, donc attention aux bruits divers mesurés en même temps que le signal utile: Il faudra bien blinder le boitier!

L’alimentation est régulée à 5V et nettoyée par des condensateurs de découplage. une résistance série de faible valeur sur l’alimentation de l’AD8307 améliore encore ce découplage (en cas de “pics” (bruit) de consommation, une différence de potentiel apparait aux bornes de cette résistance, ce qui évite de faire varier d’autant la tension du bus commun d’alimentation. Les potentiomètres de réglage de la pente et de l’offset sont repris du datasheet du composant et permettent de régler précisément le “gain” du circuit a 20 mV par décibel.

La sortie du circuit est bufferisée par un ampli-io rail to rail qui permet de fournir assez de courant sous une impédance suffisamment basse pour attaquer un cable et un multimètre ou un convertisseur analogique-numérique. Lui aussi est alimenté a travers une résistance série, et les condensateurs de découplage sont au plus près de la patte d’alimentation

Réalisation

Le PCB (13x45mm, panel de 8 circuits à l’échelle 1) est réalisable par la méthode du toner transfer sur de l’époxy double face. Il y a un straps et trois vias de masse (0.6mm, faisable a la main avec un petit mandrin pour éviter de casser le foret dans une dremel qui vibre!) Nul besoin de trous métallisés, on s’en sort en soudant des bouts de fil rigides de chaque coté du PCB. Le circuit a été étamé au fer a souder pour éviter son oxydation, en utilisant du flux colophane pour faciliter le mouillage. Souder d’abord l’ad8307 et l’ampli op, puis les passifs 0805 et finir par les potentiomètres (5Eur le bout, soyez délicats!) Finir par une SMA “flange” ou “end launch” en laiton (les modèles inox ou nickelés ne sont pas soudables).

Le montage

Le circuit finalisé, après test, est enveloppé d’une petite boite faite en clinquant de laiton. La version “flange” de la fiche SMA facilite la réalisation du blindage.

On peut ensuite visser à la SMA un adaptateur SMA male-male pour protéger la fiche SMA femelle, car celle ci est fragile.

Tests et calibration

Alimenter le montage sous 9V DC.

Pour calibrer il faut disposer:

  • d’une source RF de puissance suffisante (10 dBm) à une fréquence moyenne, par ex. 10 MHz. J’utilise un OCXO mais un oscillateur DIL suivi d’un DC-block (100nF en série, Xc=0.16 ohms @ 10 MHz) fonctionne aussi.
  • d’atténuateurs 10,10,20,30 dB. Attention à ne pas appliquer la composante continue d’un signal TTL (Vcc/2) à un atténuateur résistif!

Connecter l’atténuateur 10 dB (signal sur l’AD8307 aux alentours de 0 dBm). Mesurer le niveau, de sortie et le noter.

Connecter des atténuateurs supplémentaires pour diminuer le signal de, disons 50 ou 60 dB supplémentaires. Mesurer encore la tension. On doit trouver 60×20 = 1200 mV de moins. Régler le potentiomètre Slope (RV1) pour que ce soit le cas (théoriquement le potard permet un réglage entre 18 et 22 mV/dB). OK, la pente est calibrée.

Note: il faut mesurer boitier fermé, même si on doit l’ouvrir pour régler RV1 !

Ensuite, court-circuiter l’entrée et calibrer l’intercept (RV2) pour avoir xxx mV (TBD).

Une meilleure calibration, plus absolue est possible avec un générateur d’amplitude connue (ce n’est pas si évident).

Mais dans la plupart des cas, on va vouloir mesurer des atténuations ou des amplifications par rapport à une référence, donc seul le réglage de la pente est réellement “critique” et pourrait être à revoir pour des fréquences vraiment faibles ou élevées. D’après le datasheet, il devrait être encore bon à 100 MHz. En général une mesure large bande commence par une acquisition permettant la calibration automatique du détecteur sur chaque fréquence. Nous en reparlerons plus tard.

Utilisation

Il suffit d’alimenter le montage et de lire le niveau de signal a l’aide d’un multimètre ou d’un galvanomètre.

On peut bien entendu connecter la sortie du montage à un ADC pour lire le niveau de signal sur un arduino ou autre. La résolution de l’ADC donnera directement l’incrément de puissance mesurable:

8 bits: 256 steps -> 90/256 = 0.35 dB/step
10 bits: 1024 steps -> 0.09 dB/step
12 bits: 4096 steps -> 0.02 dB/step

A partir de 12 bits on atteint une précision qu’il n’est pas réaliste d’obtenir, même avec des calibrations métrologiques de haute précision (pour des mesures plus précises, comme on le fait en radiastronomie, il faut un radiomètre, il y a plusieurs technologies). Les effets de la température, de la linéarité, et de la réponse en fréquence sont plus importants que cette précision théorique. Même 0.1 dB significatifs sont difficiles à justifier. Donc inutile de donner des mesures en dB avec plus d’un chiffre significatif, cette précision n’a aucune signification. 0.5 dB est déja une bonne indication. Lors de votre mesure avec un arduino, pensez à moyenner plusieurs mesures pour éviter les effets du bruit de la mesure et de l’ADC.

Etat d’avancement du projet NFC au 19 Septembre 2013

Après avoir travaillé de manière intense sur ma fraiseuse numérique pour pouvoir la présenter au salon des Associations de ma ville, j’ai repris du temps pour faire avancer mon projet NFC. Voici ce qui a été réalisé.

J’ai implémenté les codes nécessaires pour piloter le bus SPI depuis le chip ARM de commande. Ce n’était pas très complexe. J’ai pu vérifier avec un analyseur logique que les signaux étaient corrects. Le Tiva a plein de registres qu’il faut configurer correctement, mais il met à disposition une doc assez complète qui décrit les séquences d’initialisation. Quand on les suit sans se tromper, ça marche!

Les choses sont plus compliquées du côté du front end NFC. Pour commencer, j’ai réussi à obtenir de nouveaux samples de Texas, que j’ai soudé correctement cette fois: Pas d’apport supplémentaire de pâte à braser, mais utilisation de flux et chauffage rapide. Le soudage est très nettement amélioré, l’étain déjà présent sur la carte suffit à assurer la soudure sans débordements.

Il me manque encore tous les composants de la partie analogique et les condensateurs de découplage, mais j’avais envie d’essayer quand même. Effectivement, le chip réagit, puisque le passage de sa ligne “Enable” dans le bon état produit le démarrage de toutes les alimentations secondaires produites par le chip. Au moins, j’ai la preuve que certaines pattes sont correctement soudées et que le chip n’est pas totalement grillé 😀

Par contre, il m’a été pour l’instant impossible de lire par SPI la moindre valeur de registre depuis le chip. Et c’est là que j’ai commencé à découvrir pas mal de défauts du circuit.

Pour commencer, sa documentation n’est absolument pas claire. Elle répète certaines informations dans des paragraphes différents, se contredit, et contient des manques et des erreurs. On ne s’en rend pas compte en première lecture, mais le nombre de messages d’incompréhension sur leur forum “E2E” en dit long.

Le circuit n’est pas non plus exempt de bugs “silicium”. Il réagit de manière non documentée, ou imprévue, quand son pilotage est réalisé comme dans la datasheet. Par exemple, le chip dispose de trois modes de pilotage:

  • un mode parallèle (on pilote 8 fils de données, puis on valide une horloge)
  • un mode SPI sans signal CS : dans ce cas ils ont “inventé” un genre de start condition ressemblant à de l’I2C, mais qui n’est pas de l’I2C, et qui n’est pas supporté par le Tiva, ce qui demanderait un pilotage manuel par bit banging
  • un mode SPI avec signal CS : dans ce cas l’assertion de la ligne CS démarre la transaction SPI, et la désassertion la termine. Sauf que, lors de cette déassertion, il n’y a pas de nouveau signal d’horloge généré,ce qui est normal pour du SPI. Eh bien dans certains cas, ceci empêche le circuit de prendre en compte la commande envoyée. Pour corriger cela, il faut générer une unique pulse d’horloge supplémentaire pour valider la commande. Pas 8, sinon le chip croit qu’une autre commande lui est addressée. Ceci demande de reconfigurer terporairement le bus SPI en GPIO normales, puis d’envoyer la pulse, puis de reconfigurer le bus SPI.

Vous voyez le genre de techniques tordues qu’il faut appliquer… Et qui ne sont pas documentées clairement, malgré leur bizarrerie. Et on n’en est encore qu’à la couche transport, je n’imagine même pas encore tous les bugs fonctionnels que je vais trouver! Je trouve ça assez peu sérieux de la part d’un grand fabricant de circuits intégrés, surtout quand on essaye de concurrencer NXP et Broadcom sur le marché du front end NFC.

Exemple de documentation: dans une version précédente, les données SPI envoyées au chip étaient valides sur le front descendant de SCLK, et les données retournées juste après étaient disponibles sur le front montant de l’horloge… Pas très pratique. Mais bon. Dans la dernière révision du chip, ceci a été corrigé. Toutes les données (MOSI et MISO) sont valides au front descendant de SCLK. Mais la datasheet n’a pas été mise à jour, jusqu’à ce que quelqu’un se plaigne sur le forum!

J’avoue que tous ces problèmes m’ont été signalés par un ami qui avait déja travaillé avec ce circuit, sinon j’en serais encore à savoir pourquoi ça ne marche pas. D’un autre coté, pour DIY qui se voulait électroniquement simple, ces bugs m’agacent, car ils vont complexifier le projet. Je n’attendais pas de me heurter à des problèmes techniques aussi basiques à un stade aussi peu avancé.

Donc pour le moment, je mets ce projet de côté et je repars sur mon autre projet: la fraiseuse.

En attendant, j’ai mis à disposition de tous le code de démarrage que j’utilise pour faire fonctionner le cpu ARM Tiva. J’ai fait un projet github avec tous les codes communs qui évitent de ‘réinventer la roue’. J’ai choisi la licence WTFPL pour son coté humoristique et très proche du domaine public. En effet, je trouve indécent de vouloir mettre des licences restrictives (dites libres ou non) sur un code aussi basique et aussi nécessaire. Ca se passe sur github:

http://www.github.com/f4grx/freestella

 

Le projet du Lundi – Graveuse Laser avec des pièces de lecteur CD

Aujourd’hui pas de revue de presse, mais un point d’avancement de mon projet en cours.

J’ai passé les semaines précédentes à démonter des lecteurs DVD pour en récupérer les diodes laser. J’ai réussi à en faire marcher quelques unes, certaines suffisamment puissantes pour noircir la surface de morceaux de bois.

J’ai passé un peu de temps à savoir ce que je pourrais en faire… Certes, jouer au sabre laser est amusant (à ces puissances, les faisceaux sont visibles car ils font briller la moindre particule en suspension dans l’air) mais je cherchais toutefois une application concrète.

En même temps, pour récupérer mes diodes, je jetais pas mal d’éléments des lecteurs DVD, pourtant certains de ces éléments étaient intéressants. Dans les lecteurs pas trop bon marchés (on remarque vite l’obsolescence programmée dans ces appareils : ceux qui sont conçus pour ne pas durer – ou pour être le moins cher possible, comme on voudra) ont des chariots de positionnement de tête en plastique, mais ceux qui sont plus haut de gamme ont des chariots en aluminium), l’assemblage de lecture est composé d’un moteur pas à pas couplé à une vis d’avancement en laiton, de deux rails cylindriques en inox, et d’un chariot portant la tête de lecture en aluminium moulé.

C’est évidemment un élément de base d’une machine à commande numérique. Encore fallait il savoir comment assembler deux de ces pièces! L’inspiration m’est venue grâce à cet instructable, où les auteurs assemblent deux chariots de lecteurs CD/DVD pour en faire une “bio imprimante”. Un bien grand mot, mais les images publiées m’ont fourni l’inspiration nécessaire.

J’ai décidé de construire une machine basée sur le même principe, mais plus robuste, et dont le but n’est pas l’impression de cellules, mais le déplacement d’un pointeur laser focalisé pour découper des feuilles de papier ou graver des objets plats.

Les objectifs que j’ai suivi pendant la conception mécanique ont été:

  • récupérer un maximum de choses
  • utiliser seulement des matériaux trouvables en grande surface de bricolage
  • utiliser uniquement des outils simples
  • essayer d’être compatible avec les outils logiciels existants

Les seuls outils que j’ai utilisé pour la partie mécanique ont donc été:

  • une scie à métaux
  • une lime plate
  • une perceuse à main avec des forêts de 3,4 et 6 mm
  • des clés plates et à pipe, et une pince multiprises

Les matériaux que j’ai utilisé se sont résumés à:

  • du profilé alu en U de 36x19mm, épaisseur 1.5mm
  • du profilé alu en L de 27x15mm, épaisseur 1.5mm
  • des boulons M4 x 10 (tête hexa) et des écrous M4
  • une tige filetée M6 (j’ai pris de l’inox pour la rigidité) et des écrous M6
  • deux chariots de lecteur CD/DVD tout alu

Voici quelques photos de l’assemblage. J’ai d’abord réalisé un socle en accolant 4 morceaux de profilé en U, boulonnés en trois points, et j’ai ajouté deux morceaux en  L sur les cotés pour améliorer la planéité et la rigidité de l’ensemble. Cela ne se voit pas, mais percer correctement ces éléments pour que les trous soient bien en face est un défi. Le seul moyen d’en être sûr, c’est de percer les deux éléments en même temps, ce qui n’était pas possible pour les profilés en U. J’ai dû être très prudent en perçant, faire des marques, des avant trous, et pas mal de reprises pour que tout soit aligné le plus correctement possible.

surface supérieure surface inférieure L'axe Y monté

Ensuite il a fallu ajuster les chariots optiques aux géométries un peu tordues pour que je puisse y fixer une plaque horizontale. Sur la première photo, on voit en noir les parties à enlever, puis ensuite, différentes étapes de la modification. Tout se fait à la lime, avec patience:

SAMSUNG SAMSUNG SAMSUNG

SAMSUNG SAMSUNG

Ensuite j’ai modifié le câblage du moteur pour que celui ci soit plus facilement accessible. Il semble que ce moteur pas à pas miniature soit assez récurrent dans les lecteurs DVD, c’est un modèle 5 volts capable de 20 pas par tour, ce qui permettra d’en obtenir 40 en mode demi-pas. Le pas de la vis est de 3mm, ce qui fera une résolution longitudinale de 3mm/40 = 75 microns ou 0,075mm. Des contrôleurs particuliers de moteurs sont capables de faire du micro-step (1/8e de pas) pour une résolution encore meilleure, mais alors, attention aux jeux! J’ai aussi ajouté un petit contacteur de fin de course.

SAMSUNG SAMSUNG

J’ai ensuite passé pas mal de temps à faire les différents perçages requis pour assembler tous les éléments.

Et voici l’état actuel de la machine:

Etat au 3 Février
Etat au 3 Février

Il reste encore beaucoup de travail, cette semaine je vais être occupé en électronique pour piloter tout cela 😀 Les moteurs seront pilotés par des L293 commandés sur ebay, en attendant je vais écrire du code pour un PIC (18F4685) et me documenter sur les G-codes qui servent à piloter une telle machine. Cela me permettra de rester compatibles avec les outils CNC déja développés par d’autres projets.