Quoi de neuf 2014

From Eric

(Redirected from Journal)
Jump to: navigation, search

Experiments carried out in the past (from 2011) are described hereafter:

"Quoi de neuf" means "What's new"...

For 2014, everything is described in the current page...

Contents

Décembre 2014

  • 28/12/2014
    • In my desperate search for something interesting-but-useless to do, I finally grabbed a TCD1201D CCD sensor that I once bought on eBay:
      Tcd1201D.jpg
      Tcd1201D p1.jpg
      Tcd1201D p2.jpg
      (The last two pictures are taken from here.)
    • This kind of sensor is used in bar code readers. I drive it with an Atmega8. The setup is as simple as possible:
      Ccdsensor setup.jpg
      Ccdsensor setup tdc.jpg
      On the second image, the TCD is under the black tape. You can see that I have left a small "window" in order to test the device. Note that I have not used a HC04 to drive the signals (as recommended in the datasheet). Well, it seems to work anyway.
    • It is fairly easy to use once (i) you follow the timing charts given in the datasheet and (ii) you take into account its extreme sensitivity (so it easily saturates). Have a look at this discussion on eevblog. RS and BT shall be carefully managed, according to the following chart:
      Ccdsensor timing.jpg
    • Here is a capture of the SH (input) and OS (analog output). The sensor is almost completely covered with black tape, except a narrow stripe.
    • The analog value is read back by the ATmega on ADC5. The analog value is discretized in [0,1] according to some threshold. The 2048 bits are packed into 256 bytes. To see what's going on, I add another discretization step: each byte whihc value is greater than 128 is represented by a "*" otherwise it is represented by a " ". Those characters are transmited to a PC via a serial line. The result can be watched on this video. Nothing fancy, but it works...
    • (Send me an email at duhbe (at) free (dot) fr. If you need the "software".
  • 26/12/2014
    • As I am convinced that my solution based on linear actuator can't work (see previous posts), I have decided to try another one based on hard disks voice coils. Hopefully, I had 3 or 4 more-or-less dead hard disks in my junk box. I dismantled them and put apart the brushless motors and those magnificent aluminium disks (they could be useful one day...). Then I removed as much as possible of the aluminium frame and cut the arms (those that hold the read/write heads). As with my previous tentatives, I think that to position the arm at a given angle, open-loop control is a dead-end. In order to close the control loop, I need some sort of position sensor. One guy who managed to built an (an ILDA 4K scanner this way. He uses an optical sensor (a led on the moving part and a TSL230R light-to-frequency converter). Another solution is to use a hall effect sensor and two magnets. This is a solution adopted by several people who wanted to replace a traditional potentiometer by something more durable. For instance:
    • We need a linear Hall sensor, i.e., one of those used to measure magnetic fields, not a Hall switch with filtering and hysteris. SO, I have ordered two A1302 and a bunch of A3503 which are much cheaper (the A1302 is a drop in replacement of the A3503). Another solution could be to use a built-in hall angle sensor such as the EM3242. Tindie used to sell a breakout board for the little thingie, but it is no more available. You can still find it at Digikey for around $7/pce (at round $40 for shipping in Europe ;-)). Another one : the MLX90316 (see here or there.
    • About hall sensor, see Honeywell application note "Hall effect sensing and application".
    • A few other solutions (note that most of them use an open-loop control) :
  • 23/12/2014
    • Back to my galvo: I want to complete my previous setup in which (i) the mirror is attached on a triangular shape and (ii) each apex is attached to a solenoid.
    • My first trial is shown below:
      Galvo carbon triangular solenoid.jpg
    • It was nice but, unfortunately, it can't work: when a solenoid extends itself, the distance between its end and the end of its two neighbours increases while the distance between the two apex can't change (it is the length of the vertex of the triangle). So I ended up with the following structure:
      Galvo carbon triangular 1.jpg
      Galvo carbon triangular 2.jpg
    • Here, the main frame is still made of carbon fiber. The three bisectors are made of steel: each bisector "hosts" a nylon spherical rod end. The rod end can move freely back and forth on the steel wire. The mirror is attached to the frame thanks to three tiny steel wires. The result is shown below:
      Galvo carbon triangular 3.jpg
    • The electronic part is very simple: an Atmega64 with three BJTs and three MOSFETS (IRF840). The BJTs are necessary because those MOFSETs need much more than 5V on their gates to switch on (I should have read the datasheet before soldering them...). The BJTs are driven by the Atmega64's PWM outputs. By the way, note that (1)the Atmega64 efuses must be set of 0xFF so as to inhibit compatibility with the Atmega104 (when the AT104 mode is activated the third PWM output of timer 1 can't be used), and (2) the stack pointer needs to be initialized to 2048 (Inital Stack Address). Don't now why it is not set by default...
    • The final result is not very convincing (as usual I would say...). As you can see here and there, the movement of the solenoid rod suffers from a *** very *** bad hysteresis. It is pretty impossible to put those rods in an intermediate position between fully extended and fully retracted. A close-loop control may be a solution, but then I'll have to acquire the position of the rod and that's another difficulty (maybe using a hall sensor and a small neodyme magnet at the end of the rod...).
    • To make it short, I think that this solution (a mirror fixed on a triangular shape is a bad idea and can't work.
  • 07/12/2014
    • I have resumed an old experiment: building a so-called "galvo". This time, I will use 3 or 4 solenoids that will move the mirror.
    • I have built a triangular frame out of carbon fiber and have glued a neodyme magnet on the three points. I had the (really stupid) idea to make this frame levitate above three other magnets. Needless to say, this is quite impossible to stabilize the frame without using some threads or some rigid axis that finally prevent the mirror to move... To give an idea:
      Mirror-magnets.jpg
      .
    • Another stupid idea: using relay coils to rotate an axis mounted on two ball-bearings :
      Mirror-and-coils.jpg
    • The electro-magnets were (magically, for sure) supposed to attract small metal plates located at both ends of the small "arm" glued on the axes. Needless to say, the magnetic field does not reach the plates: even under 30V, the arm barely moves...)
    • I have also removed the dust off my RaspBerry. My new objective: using the Pi as a "bare metal" platform (i.e., without Linux). Some guidelines are given at Valver's site but also here and here for those who like assembly programming. Some information about the Videocore can be fund here. The guy retro-engineered the video core... hopefully, Broadcom eventually provided some information about the chip. For the moment, I have simply followed James Walmsley's indication: FreeRtos bactually boots and my the OK led on my RPi blinks... (Don't forget to use MSYS, not Cygwin.)

Novembre 2014

  • Rien ou presque.

Octobre 2014

  • 23/11/2014
    • I have completed the first version of my simple "FPGA breakout game". Nothing very fancy but this is my first "serious" experiment with FPGAs. There is a video here. I will soon write a document about this experience (see examples on Documents page). The (poooooorly written) VHDL code will be included in the word doc to come.
    • I have to admit that, right now, the synthesis phase is still somewhat mysterious to me. I'll investigate this before going any further. Here are a picture of the board and a screenshot of the VGA display:
Breakout fpga board.jpg
Breakout fpga display.jpg
  • 11/10/2014
    • J'ai repris un vieux montage à base de FPGA Cyclone II. L'idée est de faire une espèce de casse-briques sur un écran VGA... en VHDL. J'ai rajouté de la RAM par configuration (un Megablock d'Altera) et un buzzer... Je peux désormais afficher quelques pixels (128*256) en plus de la raquette et de la balle. Maintenant, il me faut utiliser ces pixels pour afficher les briques et gérer les collisions... A suivre.
  • 09/10/2014
    • Le mois d'octobre est bas et lourd et pèse un peu comme une bouche d'égout en fonte. Pour l'instant, un seul truc amusant : un article de Muller et al intitulé "Modeling, modeling, modeling" qui définit une forme d'algèbre (?) sur les modèles dans le but de clarifier leurs relations... Cet article s'accompagne fort bien de la présentation de Génova "What is a model: syntax and semantics" qui, elle, aborde la notion de sémantique d'un modèle. C'est un sujet intéressant car il relève autant (plus) du domaine de la communication au sens large que de l'informatique. Ceci dit... je n'ai plus guère d'énergie pour faire autre chose que de bosser comme un imbécile.

Septembre 2014

  • 12/09/2014
    • Je viens de changer (plus ou moins) de travail et n'ai guère de temps libre. Ceci dit, j'ai découvert le site de Ben Krasnow, le "bricoleur" le plus invraisemblable que qu'il m'ait été donné de voir. Entre la construction d'un laser à rubis et le montage de son propre microscope électronique à balayage, l'animal bricole un système de radiographie à rayon X, cuisine, fait du vin, pique à la machine, etc. Ses explications sont toujours limpides ; ses vidéos sont très intéressantes et instructives. Un gars exceptionnel à côté duquel la plupart des bricoleurs sont des bricoleurs.

Aout 2014

  • 31/08/2014
    • Dans les billets précédents, j'ai fait part de mes investigation autour de la haute-tension. Jusqu'ici, je n'ai considéré que le transformateur HT que l'on trouve dans les téléviseurs ou les moniteurs d'ordinateurs. Or il existe (au moins) une autre source de haute-tension domestique : celle utilisée comme source d'accélération des électrons dans le magnétron d'un four micro-onde. Cette source est composée d'un transformateur qui élève la tension du niveau du secteur (110V ou 220V) à un niveau d'environ 2000V. Cette tension alternative est redressée et doublée au moyen d'une diode et d'un condensateur HT (voir ici, par exemple). Certains utilisent ce transformateur dans le sens inverse : pour réduire la tension et accroître l'intensité disponible au secondaire. Etant donné la puissance supportée par le transformateur (environ 800W), on peut obtenir des niveaux d'intensité très élevés sous quelques volts! Certains utilisent ce type d'installation pour réaliser un poste de soudure à points (spot welder) primitif (voir par exemple ici et une vidéo très claire ici et aussi .).
    • Il s'agit d'un montage très "populaire" sur Internet : il suffit de chercher "mot spot welding" sur youtube, par exemple. Voir aussi, par exemple, ici.
    • Concernant la récupération du transformateur, il faut veiller à bien décharger la capacité HT avant d'y mettre les doigts! L'éventuel démontage du magnétron doit se faire avec douceur car il semble que certains des matériaux utilisés comme isolants soint toxiques. Quant à bidouiller le magnétron pour en faire un "canon", c'est à la fois inutile et dangereux, donc idiot. L'un des risques concerne le cristallin qui, s'il est soumise à un échauffement important, peut conduire à une cataracte anticipée (une opacification). Noter que l'on peut aussi s'électrocuter fort proprement avec le MOT...
    • On trouve beaucoup d'informations plus ou moins simplifiées et exactes sur le fonctionnement du four micro-ondes, sur la production des ondes par le magnétron, sur leur propagation et leur conversion en augmentation de chaleur des aliments. Il est intéressant de noter que le nombre de composants est très réduit : une minuterie (plus ou moins mécanique), un transformateur, une diode et un condensateur HT, le magnétron et son guide d'onde (il y a quelques autres composants annexes), notamment ceux assurant la sécurité du système). Concernant la structure interne d'un four, on peut lire le cours de bac pro (qui ne donne que des informations assez élémentaires mais cependant intéressantes, notamment sur les dispositifs de protection). On peut aussi lire le Service Manual de l'un des modèles de fours produits par la société GoldStar.
  • 17/08/2014
    • J'ai complété mon petit ECG : j'y ai rajouté un écran graphique (un écran de Nokia 5110) qui est sensé afficher l'électrocardiogramme proprement dit. Comme d'usage, ça marchotte : le signal est excessivement bruité et il est difficile d'obtenir un graphe vraiment lisible... Néanmoins, on trouvera dans la rubrique ECG quelques détails sur ce montage. Voila le montage terminé
      Ecg-with-display.jpg
  • 16/06/2014
    • Je poursuis mes investigations concernant les transformateurs THT (flyback transformer). Le site www.repair.org donne de très intéressantes informations concernant la structure et le principe de fonctionnement d'un tel transformateur. On notera, par exemple, que le terme "flyback" est relatif au balayage du faisceau électronique, qu'il s'agit d'un transformateur spécialisé optimisé pour une gamme de fréquences étroite et conçu pour stocker de l'énergie (comme une inductance) plutôt que pour transférer de l'énergie (comme un transformateur "classique"). La note d'application slup127 donne quelques informations théoriques sur le fonctionnement de ce type de transformateurs.
    • J'ai récupéré un second transformateur, cette fois-ci d'une vieille télévision (OREGA type 47320041). Il semblerait que le brochage soit le suivant :
      Flybackpinout.jpg
  • 06/08/2014
    • J'ai récupéré le transformateur HT d'un moniteur HS. Il s'agit d'un SAMPO E159656. Il dispose de 10 broches disposées selon une forme de fer à cheval et trois autres broches séparées. Il ne reste plus qu'à déterminer la position du deuxième fil du secondaire (le premier est facile à trouver : il s'agit de celui connecté à une sorte de connecteur en forme de ventouse). Quant au primaire, sur les montage que j'ai pu voir, il est réalisé en plaçant une dizaine de tours de fil sur le noyau en ferrite. On ne peut sonder le second fil du secondaire car il y a une diode HT en série et cette diode a une tension de polarisation très élevée (plus de 20 volts). La technique pour sonder les fils consiste à utiliser une source de tension d'une vingtaine de volts avec une résistance en série (voir par exemple le site de J.-L Naudin (repris sur le site des Instructables).
    • Plutôt que d'utiliser un transformateur de moniteur, certains réalisent leur propre transformateur. Ainsi, "Makerj101" a réalisé une intéressante vidéo dans laquelle il montre comment il bobine le secondaire du transformateur (environ 6 couches de 100 tours de fil). Il place son transformateur dans un flacon d'huile (de cuisine...) et il élimine l'air pris dans la bobine à l'aide d'une pompe à vide.
    • "Conamusa" (ici) utilise un oscillateur à 2N3055 pour générer le signal au primaire du flyback. Le montage est le suivant
      Flybackoscillator2N3055.jpg
    • On trouvera ici le schéma de plusieurs drivers, dont un qui utilise de "vrais" drivers de MOSFETs :
      Halfbridge-mains.jpg
      Au passage, si le flyback comprend une diode HT (ce qui est le cas dans les FB modernes), il faut éviter d'utiliser un driver à deux MOSFETs car la diode HT n'apprécie pas trop les tensions inverses trop importantes...
    • Les différents types de flybacks sont répertoriés par Jozef Bogin. Il semblerait que le transformateur que j'ai récupéré soit du type "4A" (selon la nomenclature de J. Bogin). Ce type de transformateur comporte un condensateur... ce qui signifie qu'il faut éviter de les toucher, même après avoir coupé l'alimentation....
    • Il semblerait que le montage suivant (trouvé ici) évite la destruction prématurée du MOSFET :
      Ignition coil driver circuit diagram 4x.jpg
    • D'autres dispositifs de protection sont proposés ici :
      Protection.jpg
    • Le document des étudiants Hopkins et Houlahan donne quelques indications sur le fonctionnement du haut-parleur à plasma (comment passe-t-on de la modulation d'une porteuse à quelques KHz à un son audible?). Le premier montage utilise un pont en H complet (full bridge) ; le deuxième montage utilise un seul transistor. Les auteurs comparent la réponse des deux types de montage ; le second présente des "overtones". (A noter que les auteurs utilisent des électrodes de soudure TIG.)
    • Dans ce papier, on trouvera un intéressant montage pour amplifier les ondes de pression produites par le tweeter à plasma.
    • Ici, un montage qui utilise des transistors bipolaires.
    • Un site dédié aux hauts-parleurs à plasma.
    • Un autre montage à TL494 qui pilote deux MOSFETs.
  • 05/08/2014
    • Je suis tombé sur un montage amusant (et dangereux) : le haut-parleur à plasma. Il s'agit d'un dispositif produisant un son par la modulation d'un arc électrique. L'arc électrique est produit par un transformateur HT "fly -back" (je ne connais malheureusement pas le terme français), c'est-à-dire l'un de ces transformateurs que l'on trouve dans les écran télé ou les moniteurs d'ordinateur (ça tombe plutôt bien, j'en ai deux à la cave...). En furetant sur internet, j'ai trouvé quelques schémas et une multitude de vidéos montrant le résultat (plus ou moins heureux). Parmi les meilleures réalisations, notons celle de timetec qui produit un son agréable, celle de Scott Baker qui est décrite en détail
    • Concernant les schémas :
      • Un premier montage des Instructables utilise un contrôleur PWM TL494. Le schéma est repris ci-dessous :
        PlasmaSpeakerInstructables.jpg
        . La modulation sonore agit sur le rapport cyclique du signal ; d'autres réalisations agissent sur la fréquence du signal. A noter que le montage a tendance à trucider le MOSFET car le primaire du transformateur HT a une TRES faible impédance puisqu'il est constitué de quelques tours de fils. Le MOSFET doit donc être très très bien refroidi au moyen d'un gros radiateur voire en le faisant baigner dans le l'huile. Le montage d'origine utilise un IRF540, mais on peut aussi utiliser un IRF630 (que l'on peut trouver dans les téléviseurs) selon les p'tits-gars du Club électronique de l'INSA de Lyon. D'autres préconisent un IRFP460, un IRP250N ou un IRFP260N.
      • Le même montage est repris par Scott Baker avec quelques petites modifications (qui semblent avoir été proposées par Tobias :
        PlasmaSpeakerSmBaker.jpg
        Par rapport au dispositif des Instructables, on notera la présence d'un vrai driver pour le MOSFET (un MIC4429).
      • Jozef Bogin propose quant à lui un système basé sur un bon vieux NE555 :
        PlasmaSpeakerBogin.jpg
        Un certain "brokenharbour" a réalisé une vidéo dans laquelle il explique le fonctionnement du montage et les modifications qu'il a été amené à réaliser. Dans une autre vidéo, il explique par le menu la réalisation du montage dont, notamment, l'utilisation du fly back transformer. Le schéma est le suivant :
        PlasmaSpeakerbrokenharbour.jpg
      • Un autre montage du site Instructables utilise lui-aussi un NE555. Le pilotage du MOSFET est réalisé par un couple de transistors bipolaires
        PlasmaSpeakerinstructables2.jpg
      • Un troisième montage, toujours sur le site des Instructables, promet quelque chose de plus fiable... (en outre, sur la vidéo, il écoute du Supertramp, ce qui est un peu mieux que la m... que la plupart utilise pour montrer le (plus ou moins) bon fonctionnement de leur montage. Le dispositif utilise un contrôleur PWM du type SG3525 et un transformateur toroïdal pour piloter les 2 MOSFETs (oui, dans ce montage, il y en a deux):
        PlasmaSpeakerinstructables3.jpg
    • ATTENTION : Si on veut récupérer le transfo HT d'un téléviseur ou d'un moniteur, mieux vaut être prudent et décharger le tube en court-circuitant le chassis du téléviseur et la masse du tube (voir par exemple ici) ; ne pas oublier le décharger les capas... dont celle située quelques fois dans le transformateur lui-même.

Juillet 2014

  • 30/07/2014
    • Bon, l'électro-machin-chose fonctionne [dans le sens que je donne au mot "fonctionner", c'est-à-dire qu'il "marchotte", dans le sens que je donne à "marchotter"...] : désormais, il produit un "bip" à chaque battement. Pour ce faire, j'ai rajouté un monostable à transistors (montage très classique) et un NE555 pour faire le "bip". Je vais probablement y ajouter un deuxième comparateur afin de distinguer les deux "pics" du signal : le pic négatif et le pic positif.
    • Comme dans le cas de mon précédent montage, le pseudo analyseur de spectre, je vais rédiger un document complet qui en décrira les principaux composants : ampli-d'instrumentation, filtre, et monostable. Ce sera fait un peu plus tard. Les liens vers le document en version pdf et html se trouveront dans la rubrique ECG.
  • 28/07/2014
    • J'ai commencé à réaliser un "électro-cardiographe" (disons, un modèle très primitif...). Je me suis inspiré de l'exemple d'application donné dans la datasheet de l'ampli d'instrumentation AD620 d'Analog Devices. J'y ai rajouté (i) un filtre "notch" du deuxième ordre pour éliminer le signal à 100Hz (pourquoi 100Hz et pas 50Hz, je n'ai pas compris???), (ii) un ampli, (iii) un intégrateur pour éliminer les fluctuations de très basses fréquences (l'intégrateur permet de "centrer" le signal de l'AD620 sur 0 volts), (iv) un comparateur à 741. Je vais y rajouter un filtre pour supprimer le signal à 50Hz et ajouter un dispositif pour faire un "bip" à chaque battement.
    • L'image suivante montre l'effet du filtre "notch" (mais comment appelle-t-on ce type de filtre en français?) :
      Ecg-notch.jpg
    • Sur la copie d'écran suivante, on voit combien le signal se "ballade" (le pic correspond à un battement), ce qui a justifié l'introduction dont dispositif de correction. La deuxième copie d'écran montre le résultat après stabilisation.
      Ecg-osc.jpg
      Ecg-stabilized.jpg
    • Cette dernière copie d'écran montre le signal en sortie du comparateur (video ici).
    • Les sondes sont réalisées avec du ruban adhésif très épais sur lequel j'ai collé du papier aluminium :
      Ecg-probe.jpg
  • 23/07/2014
    • Pas grand chose, mais j'ai parcouru plus en détail le blog de W2AEW. J'y ai appris le fonctionnement --- et surtout l'usage --- des diodes PINs. Par la même occasion, j'ai enfin compris pourquoi on parlait de "diodes de commutation" (switching diodes) par opposition aux "diodes de redressement" (rectifier)" : l'idée est de polariser une diode par un courant continu et de superposer à ce signal un signal de faible amplitude mais de haute fréquence (et éventuellement de fort courant). Tant que la diode est polarisée, le signal haute fréquence passe (il peut aussi passer un peut lorsque la diode n'est pas polarisée car celle-ci se comporte comme une capacité de faible valeur et créée donc un couplage) ; quand la diode n'est pas polarisée (ou polarisée en inverse), le signal ne passe plus.
    • Les diodes PINs ont un temps de recouvrement très long lié aux charges présentes dans la zone I ("intrinsic" de l'acronyme "PIN"). De ce fait, la diode reste passante même lorsque le signal d'entrée devrait être bloqué du fait de sa polarité ; l'effet est évidemment d'autant plus flagrant que le signal a une fréquence élevée. Pour une fréquence plus faible, il faut un courant de polarisation assez important pour rétablir qu'il y ait assez de charges dans la zone I (de sorte que la diode reste passante). J'écris ça de mémoire, mais il vaut mieux lire l'article de Wikipedia et voir la vidéo de W2AEW.
  • 12/07/2014
    • J'ai plus ou moins terminé mon "analyseur de spectre" basse fréquence. Il s'agit d'un assemblage plus ou moins réussi de (1) un générateur en dents de scie à 555, transistor et ampli-op, (2) un VCO triangulaire à amplis-ops (voir le billet du 29/06), (3) un convertisseur triangle=>sinus à transistors, (4) un mixer à NE602, (5) un filtre de Chebychev du second ordre, (6) un détecteur à diodes idéales. Bon, le résultat n'est pas phénoménal mais ça marchotte : un signal périodique en entrée se traduit bien par un pic sur l'oscilloscope. Il n'y a pas une once d'électronique numérique.
    • Pour mémoire, j'ai réalisé quelques vidéos (dont l'intérêt est très limité...) :
    • Le résultat n'est pas très spectaculaire. Sur cette vidéo on voit le signal en dent de scie qui pilote le VCO et, sur le deuxième canal, le signal issu du mélangeur. On distingue (plus ou moins) bien un pic qui correspond au signal sinusoïdal de 400mv PP en entrée. Pour plus de détail, voir la page "analyseur de spectre" du wiki.
    • Le montage lui-même est réalisé sur 3 "breadboards", ce qui fait un beau fouillis de fils
      Spectrum-breadboard.jpg
    • Voici le pic correspondant à un signal d'entrée d'une vingtaine de KHz:
      Spectrum.jpg

Juin 2014

  • 29/06/2014
    • J'ai réalisé deux générateurs sinusoidaux en fréquence audio : l'un à partir d'une PLL 4046 (le signal triangulaire est obtenu en "raboutant" les deux rampes produites par la PLL), l'autre à partir de 3 boucles d'asservissement à ampli-ops. L'objectif est de produire un signal triangulaire à partir d'un signal carré puis de transformer ce signal triangulaire en sinusoide. Si cela semble facile, ça soulève tout un tas de questions et met en oeuvre pas mal de principes simples et intéressants... Le signal obtenu est pas trop mal. J'en ai fait une brêve vidéo pour mémoire.
    • On trouvera la trace de ces aventures dans un document (et au format pdf) qui contient (pour l'instant) tout un tas de choses... A terme, je ferai un document par sujet. J'abandonne un peu Wikimedia pour Word qui est beaucoup plus pratique lorsqu'il s'agit de faire des diagrammes ou d'insérer des formules mathématiques. (A noter que Word traite désormais fort bien les formules mathématiques. Il dispose d'une pléthore de "raccourcis" qui évite les cliquouillages incessants. Voir le document intitulé "Unicode Nearly Plain-Text Encoding of Mathematics".)

Mai 2014

  • 30/05/2014
    • J'ai fait quelques expérimentations sur les filtres "state variables" (comme s'appellent-ils en français?). Voir l'article sur les filtres.
    • Je vais tenter de me bricoler un petit outil pour caractériser les filtres. L'idée est de faire une forme d'analyseur de spectre : un VCO génère un signal sinusoïdal de fréquence F ; le signal à analyser est mixé avec le signal d'entrée et est filtré avec un filtre passe bande très étroit ; on "affiche" la puissance du signal de sortie. Voir l'article intitulé Analyseur de spectre rudimentaire. Si on met un bruit blanc en entrée du filtre, on arrive ainsi à tracer la courbe de réponse de celui-ci. Voir l'article sur les Générateurs de bruit blanc.
  • 29/05/2014
    • Création d'un article sur les filtres. Je m'intéresse plus particulièrement aux "state variable filters".
  • 26/05/2014
    • Je me suis penché à nouveau sur le filtre actif du second ordre que j'ai mis en place sur mon "détecteur de chauves-souris".
    • J'en ai fait un modèle avec LTSpice histoire d'essayer cet outil. Le schéma est le suivant :
      Bat-ltspice-schema.jpg
      .
    • J'ai utilisé le modèle de LM358 téléchargé sur le site de ON Semi. Il est très facile de l'intégrer à LTSpice : il suffit de placer le composant LTSpice correspondant au modèle générique d'ampli-op (ampliop2), de préciser le nom du fichier texte contenant le modèle SPICE et d'ajouter la clause d'inclusion (outil .OP de LTSpice) :
      Bat-ltspice-lm358.jpg
    • L'analyse temporelle s'effectue en sélectionnant une source de tension en entrée de type .AC et de configurer l'analyse fréquentielle. On obtient la courbe de réponse suivante :
      Bat-ltspice-response.jpg
    • Le filtre que j'utilise est un filtre de type Rauch (il existe d'autres structures de filtres bien connues, comme Sallen-Key).
    • La fonction de transfert est la suivante :
    • On peut aussi appliquer traiter le filtre avec les outils de l'analyse des systèmes. Pour ce faire, j'ai utilisé Matlab qui dispose de nombreux outils très puissant pour réaliser ce type d'analyse (il permet notamment de synthétiser les filtres classiques (Butterworth, Bessel, etc.).
    • Le script est donné ci-dessous :
 close all
 clear all
 
 % ------------------------------------------------------------
 % Les caractéristiques des composants du filtre 
 % ------------------------------------------------------------
 r1 = 23.2e3;
 r2 = 5.23e3;
 r3 = 36.5e3;
 
 c1=6.8e-9;
 c2=12e-9;
 
 % ------------------------------------------------------------
 % La fonction de transfert
 % ------------------------------------------------------------
 n = [c2/r1 0];
 d = [c1*c2 (c1+c2)/r3 (r1+r2)/(r1*r2*r3)];
 h=tf(n,d);
 
 % Les pôles
 roots(d)
 
 % ------------------------------------------------------------
 % Affichages
 % ------------------------------------------------------------
 % Affichage du diagramme de Bode
 figure(1)
 bode(h)
 
 % Affichage de la fonction de transfert dans le plan complexe
 x=[-1.3e4:0.02e4:0];
 y=[-4.0e4:0.02e4:4.0e4];
 p=(x'*ones(size(y)))'+j*(y'*ones(size(x)));
 
 mod = abs(polyval(n,p)./polyval(d,p));
 arg = angle(polyval(n,p)./polyval(d,p));
 
 figure2 = figure('PaperSize',[20.98 29.68]);
 axes2 = axes('Parent',figure2,'YScale','log');
 view([-37.5 30]);
 grid('on');
 hold('all');
 surf(x,y,20*log10(mod), 'Parent', axes2);
 light('Parent',axes2,'Position',[0.2748 -0.9615 0.0012]);
 
 figure3 = figure('PaperSize',[20.98 29.68]);
 axes3 = axes('Parent',figure3,'YScale','log','YMinorTick','on','YMinorGrid','on');
 view([-37.5 30]);
 grid('on');
 hold('all');
 mesh(x,y,arg, 'Parent', axes3)
  
 figure4 = figure('PaperSize',[20.98 29.68]);
 view([-37.5 30]);
 mesh(x,y,20*log10(mod));
 
    • La fonction de transfert est la suivante :
                 5.172e-013 s
 -----------------------------------------
 8.16e-017 s^2 + 5.151e-013 s + 6.419e-009
    • Le diagramme de Bode est calculé par Matlab :
      Bat-filter-bode-matlab.jpg
    • On peut aussi tracer la fonction de transfert dans le domaine complexe. On distingue bien les deux pôles et le zéro. En regardant au "bon endroit" et en choisissant une échelle logarithmique, on retrouve la courbe de gain du diagramme de Bode.
      Bat-filter-transfer-matlab1.jpg
      Bat-filter-transfer-matlab2.jpg
    • On peut voir aussi le zéro et les deux pôles :
      Bat-filter-transfer-poles.jpg
    • Je me suis aussi amusé à simuler le filtre avec Simulink. J'ai placé mon filtre en sortie d'un générateur de bruit blanc et j'en affiche le spectre.
    • Voici le modèle :
      Bat-filter-simulink-model.jpg
    • Voici le spectre du bruit blanc (attention : il s'agit d'un instantané calculé sur 128 échantillons et non du "vrai" spectre) :
      Bat-filter-simulink-white-noise.jpg
      • Et voilà le spectre du signal filtré
        Bat-filter-simulink-spectrum.jpg
    • J'ai poursuivi l'exercice en plaçant plusieurs filtres en série  :
      Bat-filter-simulink-model-multi.jpg
      Bat-filter-simulink-spectrum-multi.jpg
    • A noter que la fonction de transfert doit être discrétisée, ce que l'on obtient facilement avec la fonction "c2d - continuous to discrete" combiné la fonction tf de définition de la fonction de transfert. :
      Bat-filter-simulink-model-xfer.jpg
  • 16/05/2014
    • J'ai commencé à dessiner le bras robot en OpenGL (d'abord en Ocaml puis en Haskell). Voilà ce que ça donne pour un axe (version ocaml) : [1]
    • J'ai ajouté un filtre passe-bande actif (2e ordre, Butterworth, centré sur 1500Hz) à mon détecteur de chauves-souris...
      • Les valeurs des composants ont été calculées avec l'outil FilterLab de Microchip. Il existe d'autres outils, comme FilterPro desktop de TI ou FilterCAd de Linear Technology. (FilterPro m'a donné des valeurs de composants assez "bizarres").
      • Voila le filtre avec les copies d'écran issues de FilterLab :
        Bat-filter.jpg
      • Je me suis amusé à le tester avec mon générateur BF (histoire de constater "de visu" les effets du filtre). Voici la courbe de réponse que j'ai obtenue expérimentalement :
        Bat-filter-test.jpg
      • Voici aussi une copie d'écran de mon oscillo obtenue en faisant varier la fréquence d'entrée du filtre entre 100 et 2500Hz. On voit très nettement l'effet du filtre (avec le pic à 1500Hz) :
        Bat-filter-osc.jpg
  • 11/05/2014
    • Premiers tests du "bras robot" avec Frédéric. Il ne reste "plus" qu'à faire un peu de cinématique inverse pour rendre l'exercice intéressant...
  • 10/05/2014
  • 04/05/2014
    • J'ai repris plusieurs petits montages réalisés sur plaquette d'essais afin de les rendre un peu plus propres et réduire le nombre de plaquette utilisées. Rien de bien passionnant.
    • J'ai aussi utilisé une autre méthode pour réaliser la localisation d'une source sonore : la recherche du décalage DT qui minimise \sum{i=1}^{nb samples} (sample(i) - sample(i+DT))^2. ce qui est ma foi plutôt naturel. Bizarrement, je n'obtiens rien de bien probant... A voir.

Avril 2014

  • 21/04/2014
    • J'ai poursuivi mes investigations concernant la localisation d'une source sonore. J'ai d'abord exploité la bibliothèque FFT de Microchip qui utilise des nombres en virgule fixe sur 16 bits (ou "fractionals"). Bon, je ne parviens à rien de bon du fait du manque de précision. Je suis alors passé par une forme plus classique utilisant des flottants, celle décrite dans les "Numerical Recipies for C, chapitre 12"). La fonction donnée dans cet ouvrage calcule la FFT sur des valeurs complexes ce qui n'est pas "terrible" puisque mes valeurs sont réelles... Or il existe une façon plus efficace de calculer une FFT sur des données réelles, une technique qui permet de calculer la FFT de 2N valeurs réelles en retournant N valeurs complexes. J'ai donc joyeusement récupéré le bout de code ici.
    • Ben... ça fonctionne pas mal, surtout si le signal sonore a une longueur d'onde proche de l'écartement des micros (pour moi : 9cm, soit une période de 9.10-2/343 = 1/3811Hz). On trouvera ici une vidéo d'essai. Le code est donnée dans l'article Localisation sonore par GCC.
    • La figure ci-dessous montre le résultat de la FFT inverse après calcul de la corrélation
      Gcc-corr.jpg
  • 13/04/2014
    • Je suis en train de tenter de localiser une source sonore en utilisant la technique de Generalized Cross Correlation (GCC, voir l'article de Wikipedia). J'utilise un DSPic 30F4011 pour lequel Microchip fournit une bibliothèque FFT.
    • Pour l'instant, je parviens à calculer la FFT des signaux en provenance de deux microphones. Le DSPic utilise une représentation particulière ("fractional") qui code une valeur à virgule fixe comprise en -1 et 1. Les valeurs étant codées sur 16 bits (dont un bit de signe), la dynamique est faible. Pour dire le vrai, je ne suis pas parvenu à calculer une FFT inverse "correcte".
    • Pour augmenter la dynamique, j'ai récupéré la fonction de calcul de FFT donnée dans les "Numerical Recipies" (une version numérique est accessible ici. Elle utilise des "float" (voire des "doubles". Comme je n'ai pas d'exigence de temps de calcul, je peux éventuellement utiliser des doubles...
    • J'ai fait quelques essais en utilisant un signal calculé. Les résultats ne sont corrects (c'est-à-dire que le déphasage calculé est proche du déphasage introduit) que pour une fréquence d'échantillonnage égale à K fois la fréquence du signal, K étant le nombre d'échantillons. Voilà quelques courbes :
      Gcc-1.jpg
      Gcc-2.jpg
      Gcc-3.jpg
    • On trouvera plus de détail dans l'article Localisation sonore par GCC.

Mars 2014

  • 28/03/2014
    • Je me suis amusé avec un capteur de mouvement à effet Doppler : le HB100 (que trouve pour quelques dollars sur ebay).
    • Voici à quoi ressemble le capteur :
      Hb100-sensor.jpg
    • La note d'application d'AgilSense propose un montage très simple à ampli-op pour l'exploiter. Il s'agit d'une série de 2 filtres amplificateurs qui permettent de passer des quelques uVolts produits en sortie du mélangeur à quelque chose d'exploitable. Voici le schéma :
      Doppler-hb100-sch.jpg
    • Voici le montage sur sa plaquette
      Doppler-hb100-mnt.jpg
    • Attention : vu l'importante amplification, les fils doivent être très courts sinon les amplis se mettent à osciller joyeusement...
    • J'ai simplement ajouté un comparateur au schéma initial. Le résultat est tout à fait probant : le détecteur est très sensible (au moins à l'échelle d'un pièce, je n'ai pas expérimenté la chose en extérieur). Voici une vidéo.
    • En parallèle, je suis en train de faire quelques investigations sur la location d'une source sonore. Le principe est de corréler les signaux issus de deux microphones. En passant pas une transformée de Fourier, l'opération est élémentaire. A suivre

Février 2014

  • 28/2/2014
    • Me voici de retour après une longue période de léthargie...
    • J'ai repris une idée de montage que j'avais eue l'année dernière : une horloge non linéaire. Il s'agit simplement de modifier une horloge électronique banale afin que son mouvement ne soit plus régulier mais reste "asymptotiquement" correct. Concrètement, l'horloge avance tout d'abord très vite puis s'arrête un instant et recommence ce cycle ad infinitum. "L'électronique de commande" (un bien grand mot) utilise un Attiny13A, un module RTC à base de DS1307 (acheté sur e-bay pour trois fois rien) et un pont en H (pour la commande du moteur pas-à-pas de l'horloge).
      Crazyclock-1.jpg
      Crazyclock-2.jpg
      Crazyclock-3.jpg
      Crazyclock-4.jpg
      On trouvera aussi une vidéo ici.
    • Par ailleurs, voici un petit montage de contrôle par PID (en fait, un PI pour l'instant) d'un moteur à courant continu (à base d'amplis ops). Le schéma suivra.
      Motorpid-1.jpg
      Motorpid-4.jpg
      Motorpid-3.jpg
    • Enfin, j'ai commencé à réalier une petite carte à Z80. Ca me rappelle le bon vieux temps (aux alentours de 1983) : l'époque du ZX81 (hello Christophe!). Pour trouver un petit intérêt supplémentaire à l'exercice, j'ai décidé de mettre le peu de logique nécessaire à la génération des signaux de contrôle RAM, ROm et PIO dans un GAL (un 16V8D). Bon, ça n'est plus très à la mode mais pour de ptites choses... On trouvera quelques informations pratiques sur la programmation de ces choses dans la rubrique GALs. Voici une photo (sans intérêt) du montage actuel).
      Z80-1.jpg
    • J'en ai profité pour acheter un petit programmateur universel : le "Genius" G540. Pour l'instant, il fonctionne plutôt bien.
      G540-1.jpg

Janvier 2014

Néant.

Personal tools