Quoi de neuf 2014

From Eric

(Difference between revisions)
Jump to: navigation, search
m
 
(175 intermediate revisions not shown)
Line 1: Line 1:
-
==Décembre 2012==
+
Experiments carried out in the past (from 2011) are described hereafter:
-
*1/12/2012
+
* [[Quoi de neuf 2013 | 2013]]
-
** J'ai rajouté une rubrique sur les différents [[Modules à microcontroleurs ou FPGAs|modules à microcontroleurs ou FPGAs]] que j'utilise.
+
* [[Quoi de neuf 2012 | 2012]]
-
*1/12/2012
+
* [[Quoi de neuf 2011 | 2011]]
-
** Je suis parvenu à utiliser la fonction "Capsense" du PSCO CY8C20234-12SXI. C'est assez impressionnant : avec un chip à $1, on dispose d'un petit microcontroleur capable de piloter un clavier sensitif. On trouvera dans la rubrique [[Capsense sur PSOC CYC20234]] quelques informations sur cette expérimentation. Voila la photo de la carte principale et du "clavier" : [[File:psoc_capsense_board.jpg|300px|thumb|none]]
+
"Quoi de neuf" means "What's new"...
-
** J'ai fait l'acquision d'un clone de "bus pirate" pas cher. Ca permet de programmer divers chip (des Atmega), de sniffer l'I2C, de programmer diverses mémoire, etc.  
+
-
==Novembre 2012==
+
For 2014, everything is described in the current page...
-
* J'ai réalisé quelques investigations sur le langage synchrone "signal". J'ai aussi découvert une forme assez curieuse de langage de programmation : le [http://www.jsoftware.com/help/learning/contents.htm langage J], issu plus ou moins d'APL. Très très compact et tout aussi bizarre.
+
-
* J'ai réalisé un petit montage idiot utilisant un MAX7219. Ce chip permet de piloter un affichage 7 segments ou une matrice de leds à très peu de frais (1 liaison série). Pour ce qui concerne le logiciel, je suis reparti de mon "réveil à affichage à led".
+
-
* Quelques nouvelles acquisitions :
+
-
** Quelques cartes ([https://estore.ti.com/MSP-EXP430G2-MSP430-LaunchPad-Value-Line-Development-kit-P2031.aspx MSP430]) à base de MSP430 de TI achetées pour pas cher directement sur leur site et livrés 3 jours après par DHL! ($4.3 pièce avec 2 chips et la carte USB  et son cable permettant de les programmer!)
+
-
** Une carte à Piccolo (C2000) de TI (achetée par le même moyen, [https://estore.ti.com/LAUNCHXL-F28027-C2000-Piccolo-LaunchPad-P3088.aspx C2000]).
+
-
** Quelques PSOC de Cypress. Si TI ne vend que des kits d'évaluation sur son site, Cypress y vend directement ses puces en très petites quantités, sans frais de port et, là aussi, livrées très rapidement par FEDEX. J'ai acheté 11 CY8C20234 qui permettent de faire des interfaces "capsense" et 4 CY8C27443. Ces PSOCs embarquent un microcontroleur et une partie analogique configurable. La configuration se fait à l'aide d'un environnement graphique très bien fait (PsocDesigner). J'ai fait une petite carte avec un CY8C20234 à titre d'essai (et pour voir si je parvenais à utiliser le programmateur Miniprog). Ca marche.
+
-
** J'ai rajouté une rubrique sur les [[programmers|programmateurs]] de chips que j'utilise : TI, Altera, Miniprog de Cypress, Atmel, Microchip (pickit 2 et 3), JTAG pour ARM,...
+
-
+
-
==Octobre 2012==
+
-
Rien. Trop de travail.
+
== 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: [[File:tcd1201D.jpg|400px|thumb|none]] [[File:tcd1201D_p1.jpg|400px|thumb|none]][[File:tcd1201D_p2.jpg|400px|thumb|none]] (The last two pictures are taken from [http://zeptobars.ru/en/read/Toshiba-TCD1201D-linear-CCD here].)
 +
** This kind of sensor is used in [http://jaanus.tech-thing.org/teardowns-and-reviews/barcode-reader/ bar code readers]. I drive it with an Atmega8. The setup is as simple as possible: [[File:ccdsensor_setup.jpg|400px|thumb|none]][[File:ccdsensor_setup_tdc.jpg|400px|thumb|none]] 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 [http://www.alldatasheet.fr/datasheet-pdf/pdf/32191/TOSHIBA/TCD1201D.html datasheet] and (ii) you take into account its extreme sensitivity (so it easily saturates). Have a look at this [http://www.eevblog.com/forum/projects/linear-ccd/ discussion on eevblog]. RS and BT shall be carefully managed, according to the following chart: [[File:ccdsensor_timing.jpg|400px|thumb|none]]
 +
** Here is a capture of the [http://youtu.be/h8QvZYDUmRg 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 [http://youtu.be/ILva_vUVUC0 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 ([http://scanlime.org/2008/07/hard-disk-laser-scanner-at-ilda-4k/ 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:
 +
*** [http://www.mycockpit.org/forums/content.php?r=172-Mikes-Tips-%28Rotary%29-Hall-Position-Sensors Mike Powell]
 +
*** [http://simhq.com/forum/ubbthreads.php/topics/3225807/all/DIY_hall_sensor.html f15sim]
 +
*** [http://hackaday.com/2012/02/14/improving-your-flight-sim-experience-with-hall-effect-sensors/?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3A+hackaday%2FLgoM+%28Hack+a+Day%29 hackaday]
 +
** 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 [https://www.tindie.com/products/TAUTIC/em3242-angle-sensor/ 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 [http://forum.arduino.cc/index.php?topic=111566.0 here] or [http://interface.khm.de/index.php/lab/interfaces-advanced/rotary-positionsensor-mlx90316/ 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) :
 +
*** [http://spt06.chez-alice.fr/00/scan1.htm here]
 +
*** [https://www.youtube.com/watch?v=uvvUjuNPwvI using a solenoid] and a rubber band.
 +
*** a few solutions based on scrapped hard disks ([https://www.youtube.com/watch?v=5zwjoRBYadE here], [https://www.youtube.com/watch?v=FqjqEY8Zupk here],[https://www.youtube.com/watch?v=9pxsvP7lJJ0 here], and [https://www.youtube.com/watch?v=EMO7hACYNn0 there]
 +
*** a very nice setup using a [https://www.youtube.com/watch?v=HGBZ9PvHIxY gimbal]
 +
*** another scanning technique, based on [http://portablelaserprojector.blogspot.fr/ rotating mirrors]
 +
* 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:[[File:galvo_carbon_triangular_solenoid.jpg|400px|thumb|none]]
 +
** 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: [[File:galvo_carbon_triangular_1.jpg|400px|thumb|none]][[File:galvo_carbon_triangular_2.jpg|400px|thumb|none]]
 +
** 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:[[File:galvo_carbon_triangular_3.jpg|400px|thumb|none]]
 +
** 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 [http://youtu.be/E4JKMRbQh9g here] and [http://youtu.be/_jyLHN4E-qY 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 [[Galvanomètre pour affichage laser|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: [[File:mirror-magnets.jpg|400px|thumb|none]].
 +
** Another stupid idea: using relay coils to rotate an axis mounted on two ball-bearings :[[File:mirror-and-coils.jpg|400px|thumb|none]]
 +
** 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 [http://www.valvers.com/open-software/raspberry-pi/step01-bare-metal-programming-in-cpt1/ Valver's site] but also [http://www.pieter-jan.com/node/15 here] and [http://www.cl.cam.ac.uk/projects/raspberrypi/tutorials/os/index.html here] for those who like assembly programming. Some information about the Videocore can be fund [https://github.com/hermanhermitage/videocoreiv here]. The guy retro-engineered the video core... hopefully, Broadcom eventually provided some information about the chip. For the moment, I have simply followed [https://github.com/jameswalmsley/RaspberryPi-FreeRTOS James Walmsley]'s indication: FreeRtos bactually boots and my the OK led on my RPi blinks... (Don't forget to use MSYS, not Cygwin.)
-
==Septembre 2012==
+
==Novembre 2014==
 +
* Rien ou presque.
-
*30/09/2012
+
==Octobre 2014==
-
** J'ai installé un serveur musical sur le Raspberry Pi. L'installation est décrite dans la rubrique [[MPD sur Raspberry]].
+
* 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 [http://youtu.be/qVoNy_G6NjU 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:
 +
[[File:breakout_fpga_board.jpg|400px|thumb|none]]
 +
[[File:breakout_fpga_display.jpg|400px|thumb|none]]
 +
* 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é "[http://www.irisa.fr/triskell/publis/2010/Muller2010.pdf 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 "[http://www.ie.inf.uc3m.es/ggenova/Warsaw/Part1.pdf 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 [https://www.youtube.com/user/bkraz333/featured  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 [http://www.microtechfactoryservice.com/doubler.html 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 [http://people.ku.edu/~matt915/projects/spotwelder.html ici] et une vidéo très claire [https://www.youtube.com/watch?v=hTaGa93lOGU ici] et aussi [https://www.youtube.com/watch?v=hr-SQwcQj7E là].).
 +
** Il s'agit d'un montage très "populaire" sur Internet : il suffit de chercher [https://www.youtube.com/results?search_query=mot+spot+welding "mot spot welding"] sur youtube, par exemple. Voir aussi, par exemple, [http://mad-science.wonderhowto.com/how-to/turn-microwave-oven-transformer-into-high-amperage-metal-melter-0140772/ 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 [http://ww2.ac-poitiers.fr/electronique/IMG/pdf/Micro-onde.pdf 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 [http://dl.owneriq.net/3/305ab2b6-4b8c-4ac6-b5de-e96fc52861c2.pdf 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é [[File:ecg-with-display.jpg|400px|thumb|none]]
 +
*16/06/2014
 +
** Je poursuis mes investigations concernant les transformateurs THT (flyback transformer). Le site [http://www.repairfaq.org/REPAIR/F_flytest.html 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 [http://www.ti.com/lit/ml/slup127/slup127.pdf 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 : [[File:flybackpinout.jpg|400px|thumb|none]]
-
*23/09/2012
+
* 06/08/2014
-
** J'ai achevé la "baguette magique" du petit dernier. Bon, ça n'est guère satisfaisant : quant à faire des jouets, autant essayer de faire preuve d'originalité. En réfléchissant un peu, on doit pouvoir imaginer des montages amusants pour lui et pour moi : RFID?, capteur d'accélération?... Un peu plus de réflexion d'impose... Ceci dit, voila la dite baguette : [[File:baguette_magique.jpg|300px|thumb|none]][[File:baguette_magique_elec.jpg|300px|thumb|none]]
+
** 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 [http://jnaudin.free.fr/lifters/labhvps/thtfr.htm J.-L Naudin] (repris sur le site des [http://www.instructables.com/id/How-to-find-the-primary-and-the-secondary-coils-of/ Instructables]).
-
** J'ai aussi terminé le [[dip-metre]] : [[File:dipmetre_a_mpf102.jpg|300px|thumb|none]]
+
** Plutôt que d'utiliser un transformateur de moniteur, certains réalisent leur propre transformateur. Ainsi, "Makerj101" a réalisé une [https://www.youtube.com/watch?v=qS3RhefBP08 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.
-
** J'ai passé un gros bout de temps à migrer 3 de mes machines vers Linux Ubuntu (pas sûr que ça soit une bonne idée,...) [edit: non, en effet... je suis repassé "sous" Windows]
+
** "Conamusa" ([https://www.youtube.com/watch?v=FVa0HuT4vnY ici]) utilise un oscillateur à 2N3055 pour générer le signal au primaire du flyback. Le montage est le suivant [[File:flybackoscillator2N3055.jpg|400px|thumb|none]]
-
** J'ai fait l'acquisition d'un analyseur de spectre : un truc fabriqué en Chine pour environ $460 port compris (via Fedex!)... A ce prix là, la (grosse) méfiance est de rigueur. Enfin, "méfiance" n'est pas vraiment le mot car on ne saurait demander à un objet à $460 ce qui coûte généralement au minimum $1000 voire beaucoup (beaucoup plus). En outre, je n'ai pas de gros besoins en la matière.
+
** On trouvera [http://mujweb.cz/jmartis/flybacks.htm ici] le schéma de plusieurs drivers, dont un qui utilise de "vrais" drivers de MOSFETs :[[File:halfbridge-mains.jpg|400px|thumb|none]] 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 [http://boginjr.com/electronics/hv/flybacks-guide/ 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é [http://www.rmcybernetics.com/projects/DIY_Devices/homemade_pulse_controller.htm ici]) évite la destruction prématurée du MOSFET : [[File:ignition_coil_driver_circuit_diagram_4x.jpg|400px|thumb|none]]
 +
** D'autres dispositifs de protection sont proposés [http://4hv.org/e107_plugins/forum/forum_viewtopic.php?131895 ici] :[[File:protection.jpg|400px|thumb|none]]
 +
** Le [https://courses.physics.illinois.edu/phys406/Student_Projects/Spring12/Thomas_Houlihan_Michael_Hopkins_P406_Project_Report_Sp12.pdf 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 [http://www.iaeng.org/publication/WCE2013/WCE2013_pp1111-1116.pdf ce papier], on trouvera un intéressant montage pour amplifier les ondes de pression produites par le tweeter à plasma.
 +
** [http://www.mh-audio.nl/Articles/SparkSpeaker.pdf Ici], un montage qui utilise des transistors bipolaires.
 +
** Un [http://www.plasmatweeter.de/eng_plasma.htm site dédié] aux hauts-parleurs à plasma.
 +
** Un [http://jordancolburn.com/wp-content/uploads/2011/05/driver-single-channel-bw1.png 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 [https://www.youtube.com/watch?v=cEeWtBAE5LY&feature=youtu.be timetec] qui produit un son agréable, celle de [https://www.youtube.com/watch?v=1FhwrJGPBO4&feature=youtu.be Scott Baker] qui est décrite en détail 
 +
** Concernant les schémas :
 +
*** Un premier [http://www.instructables.com/id/Build-A-Plasma-Speaker/?ALLSTEPS montage des Instructables] utilise un contrôleur PWM  [http://www.ti.com/lit/ds/symlink/tl494.pdf TL494]. Le schéma est repris ci-dessous :[[File:plasmaSpeakerInstructables.jpg|400px|thumb|none]]. 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 [http://clubelek.insa-lyon.fr/joomla/fr/base_de_connaissances/electronique/guide_de_realisation_dun_plasma_spe_6.php les p'tits-gars du Club électronique de l'INSA de Lyon]. [http://www.instructables.com/id/Audio-modulated-flyback-transformer-driver/ D'autres] préconisent un IRFP460, un IRP250N ou un IRFP260N.
 +
*** Le même montage est repris par [http://www.smbaker.com/?s=plasma Scott Baker] avec quelques petites modifications (qui semblent avoir été proposées par [http://tobiasmugge.wordpress.com/projetos/plasma-speaker/ Tobias] : [[File:plasmaSpeakerSmBaker.jpg|400px|thumb|none]] Par rapport au dispositif des Instructables, on notera la présence d'un vrai driver pour le MOSFET (un [http://www.alldatasheet.com/datasheet-pdf/pdf/239002/MICREL/MIC4429.html MIC4429]).  
 +
*** [http://boginjr.com/electronics/hv/flyback-driver-2/ Jozef Bogin] propose quant à lui un système basé sur un bon vieux NE555 : [[File:plasmaSpeakerBogin.jpg|400px|thumb|none]] Un certain "brokenharbour" a réalisé une [https://www.youtube.com/watch?v=n7HqjiF7zyc&feature=youtu.be vidéo] dans laquelle il explique le fonctionnement du montage et les modifications qu'il a été amené à réaliser. Dans une autre [https://www.youtube.com/watch?v=1DW4IEujmpg 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 : [[File:plasmaSpeakerbrokenharbour.jpg|400px|thumb|none]]
 +
*** Un [http://www.instructables.com/id/Audio-modulated-flyback-transformer-driver/?ALLSTEPS autre montage du site Instructables] utilise lui-aussi un NE555. Le pilotage du MOSFET est réalisé par un couple de transistors bipolaires [[File:plasmaSpeakerinstructables2.jpg|400px|thumb|none]]
 +
*** Un [http://www.instructables.com/id/A-reliable-plasma-speaker/ 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): [[File:plasmaSpeakerinstructables3.jpg|400px|thumb|none]]
 +
** 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 [https://www.youtube.com/watch?v=B3bRy1FO_fA ici]) ; ne pas oublier le décharger les capas... dont celle située quelques fois dans le transformateur lui-même.
-
*16/09/2012
+
==Juillet 2014==
-
** Après une semaine à bricoler avec ma clef TNT, j'en arrive à la conclusion que rien ne sert de courir, il faut une bonne antenne. La compréhension de la théorie des antennes et sa mise en pratique est une étape indispensable.
+
* 30/07/2014
-
** Tiens, au passage, je suis en train de faire mon premier montage utile : une baguette magique qui clignote et qui fait de la musique pour mon fiston. Enfin l'occasion d'utiliser intelligemment un UM66, une zener et un multivibrateur à transistors...   
+
** 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 [[Analyseur de spectre|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?) : [[File:ecg-notch.jpg|400px|thumb|none]]
 +
** 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.  [[File:ecg-osc.jpg|400px|thumb|none]][[File:ecg-stabilized.jpg|800px|thumb|none]]
 +
** Cette dernière copie d'écran montre le signal en sortie du comparateur (video [http://youtu.be/AfM7H6VWObg ici]). [[File:ecg-ticks.jpg|400px|thumb|none]]
 +
** Les sondes sont réalisées avec du ruban adhésif très épais sur lequel j'ai collé du papier aluminium : [[File:ecg-probe.jpg|400px|thumb|none]]
 +
* 23/07/2014
 +
** Pas grand chose, mais j'ai parcouru plus en détail le blog de [https://www.youtube.com/user/w2aew 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 [https://www.youtube.com/watch?v=XpYsCM_Wf50 la vidéo de  W2AEW].
 +
* 12/07/2014
 +
** J'ai plus ou moins terminé mon "[[Analyseur de spectre|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 générateur en dents de scie dont la sortie pilote un VCO à CD4046 (le générateur en dents de scie provient d'une vidéo de l'excellent "[https://www.youtube.com/channel/UCiqd3GLTluk2s_IBt7p_LjA W2AEW]") ;
 +
*** le [http://youtu.be/WCfv1QDvCXA convertisseur de signal rectangulaire en signal triangulaire] ;
 +
*** le [http://youtu.be/wIOpm-i2cVI convertisseur de signal triangulaire en signal sinusoïdal] ;
 +
*** le [http://youtu.be/GvTter6dNkM mélangeur à NE602] ;
 +
** Le résultat n'est pas très spectaculaire. Sur cette [http://youtu.be/2HMjEf9hPY8 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|analyseur de spectre]]" du wiki.
 +
** Le montage lui-même est réalisé sur 3 "breadboards", ce qui fait un beau fouillis de fils [[File:spectrum-breadboard.jpg|400px|thumb|none]]
 +
** Voici le pic correspondant à un signal d'entrée d'une vingtaine de KHz: [[File:spectrum.jpg|400px|thumb|none]]
 +
==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 [https://www.youtube.com/watch?v=WCfv1QDvCXA vidéo] pour mémoire.
 +
** On trouvera la trace de ces aventures dans un [http://ejenn.free.fr/MySite/Guides/spectrum.htm document] (et [http://ejenn.free.fr/MySite/Guides/spectrum.pdf 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|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|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 : [[File:bat-ltspice-schema.jpg|400px|thumb|none]].
 +
** J'ai utilisé le modèle de LM358 téléchargé sur le site de [http://www.onsemi.com/PowerSolutions/supportDoc.do?type=models&rpn=LM358 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) : [[File:bat-ltspice-lm358.jpg|400px|thumb|none]] 
 +
** 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 : [[File:bat-ltspice-response.jpg|400px|thumb|none]]
 +
** 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 : [[File:filter-rauch-transfer.jpg|400px|thumb|none]]
 +
** 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
 +
  % ------------------------------------------------------------
-
*11/09/2012
+
  % Affichage du diagramme de Bode
-
** J'ai reçu la clef TNT (à $20) utilisable comme récepteur SDR large bande : ça fonctionne assez bien avec GnuRadio sous Linux. Le véritable problème concerne l'antenne : avec une antenne télescopique récupérée sur un poste FM, je ne parviens qu'à capter les chaînes de la bande FM (fort bien) et quelques émetteurs de la bande radio aéronautique(l'ATIS de Toulouse notamment). Mais, en vérité, la réception n'est pas beaucoup plus mauvaise qu'avec un "scanner" dédié (maniabilité et portabiliténe sont évidemment pas du même ordre...). On trouvera quelques détails sur mes expérimentation sur la page dédiée aux [[récepteurs radio]].
+
  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 : [[File:bat-filter-bode-matlab.jpg|400px|thumb|none]]
 +
** 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. [[File:bat-filter-transfer-matlab1.jpg|400px|thumb|none]]  [[File:bat-filter-transfer-matlab2.jpg|400px|thumb|none]]
 +
** On peut voir aussi le zéro et les deux pôles : [[File:bat-filter-transfer-poles.jpg|400px|thumb|none]]
 +
** 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 : [[File:bat-filter-simulink-model.jpg|400px|thumb|none]]
 +
** Voici le spectre du bruit blanc (attention : il s'agit d'un instantané calculé sur 128 échantillons et non du "vrai" spectre) : [[File:bat-filter-simulink-white-noise.jpg|400px|thumb|none]]
 +
*** Et voilà le spectre du signal filtré [[File:bat-filter-simulink-spectrum.jpg|400px|thumb|none]]
 +
** J'ai poursuivi l'exercice en plaçant plusieurs filtres en série  : [[File:bat-filter-simulink-model-multi.jpg|400px|thumb|none]][[File:bat-filter-simulink-spectrum-multi.jpg|400px|thumb|none]]
 +
** 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. : [[File:bat-filter-simulink-model-xfer.jpg|400px|thumb|none]]
 +
* 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) : [https://www.youtube.com/watch?v=77W6bL5WszY]
 +
** 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 [http://www.microchip.com/pagehandler/en_us/devtools/filterlab-filter-design-software.html 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 :[[File:bat-filter.jpg|400px|thumb|none]]
 +
*** 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 : [[File:bat-filter-test.jpg|400px|thumb|none]]
 +
*** 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) : [[File:bat-filter-osc.jpg|400px|thumb|none]]
 +
* 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
 +
** J'ai réalisé un [[Scanner de chauves-souris|détecteur de chauves-souris]].  J'ai repris le montage décrit [http://bertrik.sikken.nl/bat/ne612het.htm ici] qui utilise un NE612. J'ai remplacé l'oscillateur par un [[générateur de fréquence à base de DDS AD9850]] que j'avais construit jadis. Voici une photo du montage sur la plaque d'expérimentation :[[File:bat-detector.jpg|400px|thumb|none]]
 +
** J'ai testé le détecteur avec mon [[Télémètre à ultrasons | télémètre à ultrasons ]]. Voici une petite [http://youtu.be/Aw6G_gLVsaM vidéo] du premier essai. Les "bips" que l'on entend proviennent du télémètre à ultrasons.
 +
* 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.
-
*10/09/2012
+
==Avril 2014==
-
** J'ai vaguement amélioré mon DIP-mètre : le signal est désormais pris sur la source via un condensateur de couplage, redressé par deux diodes et amplifié par un bipolaire.  
+
* 21/04/2014
-
** J'ai commencé à regarder de plus près le [[Raspberry PI]]. En vérité, je me demande ce que je vais en faire ? serveur Web? Serveur de fichiers ? Serveur audio?... à voir.  
+
** J'ai poursuivi mes investigations concernant la [[Localisation d'une source sonore|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 "[http://apps.nrbook.com 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 [https://ccrma.stanford.edu/~jieun5/256/hw3/chuck_fft.c 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 [http://youtu.be/F-SXtOVotM8 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 [[File:gcc-corr.jpg|400px|thumb|none]]
 +
* 13/04/2014
 +
** Je suis en train de tenter de localiser une source sonore en utilisant la technique de Generalized Cross Correlation (GCC, voir [http://en.wikipedia.org/wiki/Cross-correlation 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 [http://www.nr.com/ 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 :[[File:gcc-1.jpg|400px|thumb|none]][[File:gcc-2.jpg|400px|thumb|none]][[File:gcc-3.jpg|400px|thumb|none]]
 +
** On trouvera plus de détail dans l'article [[Localisation sonore par GCC]].
-
*03/09/2012
+
==Mars 2014==
-
** De passage chez mon fournisseur préféré, j'ai fait l'acquisition de deux gros cartons de composants qu'il a fallu trier. J'en ai profité pour organiser un peu mon stock de composants et, surtout, me rendre capable d'y retrouver quelque chose. (Voir menu "Stocks" ci-contre.)
+
* 28/03/2014
-
** J'ai créé une rubrique [[Caractéristique des transistors]] pour pouvoir rapidement accéder aux bases de données de transistors disponibles sur le Web, ainsi que sur les différents moyens permettant de trouver une équivalence.
+
** 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 : [[File:hb100-sensor.jpg|400px|thumb|none]]
 +
** 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 :[[File:doppler-hb100-sch.jpg|400px|thumb|none]]
 +
** Voici le montage sur sa plaquette [[File:doppler-hb100-mnt.jpg|400px|thumb|none]]
 +
** 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 [http://youtu.be/XblQwDpq-Eo 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
-
==Aout 2012==
+
==Février 2014==
-
*28/08/2012
+
* 28/2/2014
-
** Je suis enfin parvenu à faire un Dip-mètre qui "dippe" (voir la rubrique [[dip-metre|dip-mètres]], modèle à MPF102). Si je rencontre tant de difficultés à réaliser un circuit qui fonctionne conformément aux descriptions dont je m'inspire, c'est que justement, plutôt que "'''m'inspirer'''" il me faudrait '''respecter''' à la lettre les indications et '''surtout''' la nomenclature : remplacer un FET XXX par un FET YYY sans s'être assuré de l'équivalence des deux est risqué...  
+
** Me voici de retour après une longue période de léthargie...
-
** Par ailleurs, j'ai reproduit le schéma du circuit sous LTSpice... Par simulation, j'obtiens des valeurs de tension qui sont bien plus élevées de ce que je mesure ''in vivo''... Y'a queq'chose qui cloche la'd'dans j'y retourne immédiatement...
+
** J'ai repris une idée de montage que j'avais eue l'année dernière : une [[Horloge non linéaire|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).[[File:crazyclock-1.jpg|300px|thumb|none]][[File:crazyclock-2.jpg|300px|thumb|none]][[File:crazyclock-3.jpg|300px|thumb|none]][[File:crazyclock-4.jpg|300px|thumb|none]] On trouvera aussi une vidéo [http://youtu.be/VvUTmVzNHjM 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. [[File:motorpid-1.jpg|300px|thumb|none]] [[File:motorpid-4.jpg|300px|thumb|none]][[File:motorpid-3.jpg|300px|thumb|none]]
 +
** 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).[[File:z80-1.jpg|300px|thumb|none]]
 +
** J'en ai profité pour acheter un petit programmateur universel : le "Genius" G540. Pour l'instant, il fonctionne plutôt bien. [[File:g540-1.jpg|300px|thumb|none]]
-
*22/08/2012
+
== Janvier 2014==
-
** J'ai rajouté une rubrique sur les [[techniques de prototypage]], c'est-à-dire les techniques permettant de réaliser des circuits rapidement et à peu de frais.
+
Néant.
-
 
+
-
*18/08/2012
+
-
** J'ai rajouté une rubrique sur les [[dip-metre|dip-mètres]]. A notre que l'on peut aussi utiliser un SWR (un TOS-mètre en français me semble-t-il) pour mesure la fréquence d'accord d'un circuit. Le SWR effectue la mesure du taux d'ondes stationnaires qui dépend de la qualité de l'adaptation d'impédance (notamment, la bonne adaptation d'impédance d'une antenne et d'un émetteur). Si je me souviens bien, il y a adaptation d'impédance si l'impédance de l'émetteur est le conjugué complexe de l'impédance de l'antenne. Le fabriquant MFJ propose à la fois un dip-mètre (c'est d'ailleurs le seul constructeur de ce type d'équipement) et des SWR (le [http://www.mfjenterprises.com/Product.php?productid=MFJ-249B MFJ-249B] et le [http://www.mfjenterprises.com/Product.php?productid=MFJ-259B MFJ-259B] )sur lesquels on peut fixer des [http://www.mfjenterprises.com/Product.php?productid=MFJ-66 bobines] pour le transformer en dip-mètre. Le [http://www.mfjenterprises.com/Product.php?productid=MFJ-259B MFJ-259B] affiche directement l'impédance complexe. (Edition 28/08/2012 : j'ai rajouté une rubrique sur les [[Analyseurs d'antenne]].)
+
-
** J'ai fait un petit montage à SAA1057 (une PLL) piloté par un PIC. J'ai recyclé le VCO à 2N4416. Bon, ça ne fonctionne pas : je n'arrive même pas à piloter la sortie de test du SAA. Un coup d'oscilloscope sur le signal d'horloge me montre qu'il n'oscille pas... à voir. 
+
-
 
+
-
*17/08/2012
+
-
** Je poursuis mes investigations sur les VCO. J'ai tenté de réaliser celui décrit ici, qui utilise 3 transitors : un FET pour l'oscillateur, un bipolaire pour le réglage du gain et un autre FET pour le driver de sortie. J'en ai profité pour tester une nouvelle technique de prototypage propre au circuits RF : une espèce de "gravure anglaise" faite à la Dremel. C'est très laid mais ça fonctionne. Il existe bien d'autres techniques dont on trouvera une description dans la rubrique [[Techniques de prototypage]]. Voila une photo du circuit. On trouvera plus d'informations dans la rubrique [[VCO]]. [[File:vco_bf961_montage.jpg|600px|thumb|none]]
+
-
 
+
-
*15/08/2012
+
-
** Une semaine totalement consacrée à la HF.
+
-
** J'ai réalisé un autre récepteur radio, passif (il ne comporte pas d'oscillateur), sur la base d'un ampli LM358. Comme d'habitude, ça "marchotte" : je ne capte qu'une et une seule radio, FM qui plus est... (alors que c'est un récepteur AM à détecteur à diode!). La réception d'une émission FM sur un récepteur AM est chose courante : il suffit de que la fréquence de l'émetteur FM se situe sur le bord du filtre AM : toute modification de fréquence se traduira par une modification de gain et donc une modification d'amplitude. On trouvera la description de ce récepteur dans la rubrique "[[récepteurs radio]]". En voici une photo : [[File:recepteur_lm358.jpg|300px|thumb|none]]
+
-
** J'ai aussi réalisé un VCO à base de 2N4416. Ca fonctionne plutôt bien. On trouvera la description du montage dans la rubrique "[[VCO]]". En voici une photo : [[File:vco_2N4416.jpg|400px|thumb|none]]
+
-
** Enfin, j'ai commencé à "m'amuser" avec le fameux mixer NE602. Bon, j'arrive à utiliser sa fonction d'oscillateur mais pour ce qui est de sa fonction de mélangeur, je patauge encore.
+
-
 
+
-
==Juillet 2012==
+
-
*22/07/2012
+
-
** Je viens de terminer mon premier récepteur VHF à un transistor (fréq. 120MHz, le schéma est [http://col2000.free.fr/vhf/vhf_indx.htm ici]). En voici la photo. [[File:fm_recepteur_vhf_un_trans.jpg|300px|thumb|none]] Bon, le résultat n'est pas terrible, notamment du fait d'une bobine réalisée à la hache et d'une antenne en dessous de tout. Je suis cependant parvenu à capter le centre ATC en-route(me semble-t-il) ; je capte aussi les réponses des pilotes.
+
-
*15/07/2012
+
-
** Gros travaux de recherche concernant les récepteurs HF sur internet. Les résultats se trouvent dans la rubrique "[[récepteurs radio]]".
+
-
*13/07/2012
+
-
** J'ai passé un peu de temps à me renseigner sur le sujet des hautes fréquences. Je sais enfin ce qu'est un récepteur superhétérodyne... mot que j'avais lu étant enfant et qui restait bien mystérieux jusqu'ici. En gros, un récepteur superhétérodyne utilise un signal généré dans le récepteur pour ramener la fréquence de la porteuse à une valeur fixe et connue (appelée Intermediate Frequency). Pour ce faire, il suffit de multiplier le signal local de fréquence F1 par le signal reçu via l'antenne de fréquence F2. Cela génère un signal comportant une composante de fréquence IF=F1-F2 et une autre composant de fréquence F1+F2. On supprime la deuxième composante par filtrage. Cela est d'autant plus facile que la fréquence IF est connue et fixe (par ex. 455KHz) : on peut utiliser des filtres très raides du type "résonnateurs céramiques", ou filtres à ondes de surface (c'est d'ailleurs peut-être la même chose, je l'ignore encore...). Voici le schéma de principe emprunté à WIkipédia (article [http://fr.wikipedia.org/wiki/R%C3%A9cepteur_superh%C3%A9t%C3%A9rodyne récepteur superhétérodyne]) : [[File:fm_recepteur_superheterodyne.jpg|300px|thumb|none]]
+
-
** Les fréquences intermédiaires dépendent de la fréquence initiale : 455KHz pour l'AM, 10.7MHz pour la FM, etc. Un récepteur peut y utiliser plusieurs fréquences intermédiaires. Pour plus de détails, voir la rubrique [[récepteurs radio]].
+
-
*12/07/2012
+
-
** Ca y est, mon premier émetteur FM à un transistor (voir plus loin) m'a donné le virus : je me lance dans les hautes fréquences...
+
-
** J'ai créé deux rubriques destinées à recevoir tous les montages concernant la réception et l'émission RF (AM, FM, VHF,...) : [[Récepteurs radio]] et [[Emetteurs radio]]. Pour l'instant, on y trouvera que le premier récepteur que j'ai réalisé, à base de TDA7000. Ca n'est pas très intéressant, mais il faut bien commencer quelque part. En voici une photo : [[File:fm_recepteur_tda7000_photo.jpg|300px|thumb|none]]
+
-
*09/07/2012
+
-
** Un petit émetteur radio. En voici le schéma: [[File:emetteur_fm_1_schema.jpg|400px|thumb|none]] (original [http://www.electronics-project-design.com/FMTransmitter.html ici]) et le résultat [[File:emetteur_fm_1_photo.jpg|400px|thumb|none]].
+
-
** Je dois avouer que le résultat n'est franchement pas convainquant : la porteuse n'est pas stable ; je vais essayer quelque chose à base de PLL.
+
-
*04/07/2012
+
-
** Le [https://drive.google.com/?authuser=0#folders/0B7h4a-YDAZEjLS1ET3VnZGNHMWM code assembleur TI] et le [https://drive.google.com/?authuser=0#folders/0B7h4a-YDAZEjWkdWSXFXYVBHVlE code PIC] se trouvent désormais sous Google Drive (accès restreint).
+
-
*01/07/2012
+
-
** Les choses avancent très lentement... Je viens juste de terminer le petit bout de soft en assembleur Z80 sur la TI82/83. Désormais, je peux communiquer dans les deux sens. L'inversion des rôles (émetteur / récepteur) est sous le contrôle de l'adaptateur : l'envoi de la valeur 1 demande à la calculatrice de retourner un caractère. Il n'y a pas de timeout (pour l'instant). Cette fonction permet au moins d'attendre la saisie d'un caractère de la part de l'utilisateur.
+
-
** J'ai rajouté le traitement de quelques caractères de contrôle : backspace, CR, CR-LF,... ainsi que quelques commandes un peu plus "complexes", comme l'effacement de l'écran, la fonction HOME, le positionnement du curseur. Ces commandes sont préfixées par le caractère ESCape.
+
-
** Le code assembleur est très simple et pourtant très laid. Comme quoi tout est possible. On en saura plus sur la page dédiée ([[Utilisation d'une TI 84 en terminal]]).
+
-
==Juin 2012==
+
-
*24/06/2012
+
-
** Peu de progrès : je n'ai eu que le temps de faire fonctionner la liaison entre ma TI82-stats et mon PIC16F628. Cela a pris plus de temps que prévu car la fiche jack 2.5mm de Texas est suffisamment différente d'une fiche 2.5mm stéréo standard pour que cette dernière ne fonctionne pas : la bague centrale semble légèrement plus courte sur le câble de TI.
+
-
** Bilan : un peu de temps perdu et l'obligation de couper un câble TI original en deux (ce qui est fâcheux car ce dernier est une denrée rare et chère...).
+
-
** Il ne reste désormais plus qu'à écrire les petits bouts de code qui transformeront la TI en terminal, à savoir :
+
-
*** convertir les scancodes TI en code ASCII ;
+
-
*** interpréter quelques commandes du type "effacement écran", "home", etc. (un peu à la façon des codes ANSI "<ESC>[2J" de quand-j'étais-jeune) ;
+
-
*** gérer les communications dans les deux sens : de la carte à micro-contrôleur vers la TI (rapide) et de la TI vers la carte (lent).
+
-
** Au passage, j'ai déniché une TI83-plus pour 10€ sur un vide-grenier. Cela fait un terminal pas cher. Sachant d'un simple écran comportant le nombre de lignes de la TI coûte bien 10 euros à lui tout seul et que sur e-bay une TI83 plus est au moins à 30 euros, je pense avoir fait une bonne affaire...   
+
-
** Frédéric et moi avons essayé de faire fonctionner un petit récepteur radio à diode germanium (le fameux "poste à galène" composé d'une diode, d'une capa variable, d'un écouteur piezo et d'une résistance)... sans succès : il faut en effet une trentaine de mètre d'antenne, ce que nous avions oublié...
+
-
*17/06/2012
+
-
** J'ai pas mal progressé sur le sujet de la programmation de la TI-82 stats en assembleur. (Se référer à la rubrique [[Programmation assembleur de la TI84 Stats]]). La programmation assembleur Z80 me rappelle le "bon vieux temps" où je bidouillais sur ce processeur (Christophe, si jamais tu lis ces lignes...).
+
-
** J'ai réalisé l'adaptateur à PIC16F628. Rien de bien sorcier : un PIC, un buzzer piezo, un transistor et une résistance pour piloter le piezo, deux résistances de pull-up et deux diodes pour les entrées/sorties TI-link, deux LED avec leurs résistances de limitation. Voilà. Ceci étant, j'ai quand même réussi à patauger un bon moment sur la commande du piezo... car j'avais oublié que la sortie RA4 sur laquelle j'ai branché le piezo est en collecteur ouvert (c'est la seule). Cette triste expérience confirme la règle de bon sens qui veut que l'on ne change pas trop souvent de microcontroleur...  J'ai aussi réussi à trucider un PIC en faisant une mesure à l'oscillo. : je me suis planté et ai branché la masse de l'oscillo sur le +5V... résultat : le PIC a eu une ultime bouffée de chaleur avant de rendre l'âme.
+
-
** J'ai écrit les quelques lignes C qui réalisent l'émission et la réception d'un octet vers et en provenance de la calculatrice.
+
-
*14/06/2012
+
-
** Je me suis penché de plus prêt sur l'utilisation de la TI84 en terminal... Le problème est multiple :
+
-
*** Réaliser l'interface matérielle permettant d'interconnecter la TI à un montage disposant d'une ligne série TTL (PIC, AVR, etc).
+
-
*** Réaliser les deux composants logiciels côté TI et côté interface.
+
-
** L'interface hardware côté calculatrice est simple : la calculatrice dispose de deux ports bidirectionnels en collecteur ouvert (fil rouge et fil blanc). La transmission d'un bit se fait en positionnant l'un des fils au niveau haut et en récupérant l'accusé de réception sur l'autre fil. Il semble que les niveaux soient TTL.
+
-
** L'interface hardware côté microcontrôleur est chargée de transformer le flux en provenance de la calculatrice en un flux série standard. Je pense utiliser un port d'entrée et un port de sortie et un transistor par fil en provenance de la TI. L'idée est de reproduire peu ou prou ce que l'on trouve côté calculatrice.
+
-
** Le logiciel côté TI doit permettre l'émission/réception et l'affichage des données en provenance de l'interface. On peut soit utiliser les fonctions standard (basic) de la calculatrice, mais il faut alors respecter le protocole, décoder les trames, etc. On trouve de l'information sur le format de trames sans avoir à faire trop de rétro-ingénierie. On peut aussi piloter "à la main" l'interface matérielle de la calculatrice, mais il faut alors faire un peu d'assembleur Z80. On trouvera dans la rubrique [[Programmation assembleur de la TI84 Stats]] quelques explications sur les outils à utiliser et la façon de les utiliser... Le pilotage est assez simple car il se résume à des quelques "in" et "out" sur le port adéquat.
+
-
** Le logiciel côté interface est trivial. 
+
-
** On trouvera plus de détails dans la rubrique intitulée [[Utilisation d'une TI 84 en terminal]].
+
-
*10/06/2012
+
-
** Ai continué la réalisation du logiciel de mon interface GPIB : interpréteur de commande (hum..., un bien grand mot) et les fonctions de base d'accès au bus (send command, read data,...).
+
-
** Au passage, j'aime beaucoup comment les spécifieurs de la norme jongle avec la logique négative combinée à l'expression négative des signaux... Devinette : quelle est la valeur physique du signal NDAC (qui signifie qu'une donnée n'a pas encore été acceptée) lorsqu'une donnée a été acceptée... A cela vous y rajouter le fait que le driver SN75161 est en logique positive (TE = 1 signifie que le contrôleur "parle" sur le bus), on se marre bien.
+
-
** Ai commencé à jeter un oeil sur la réalisation d'un émetteur FM (simple). Voir la page "A faire...".
+
-
** Ai commencé à réaliser une interface TI84 <=> Série TTL, de façon à pouvoir utiliser une calculette comme terminal plutôt que mon vieux portable IBM... (Ai déniché une TI84 à 30€).
+
-
*02/06/2012
+
-
** J'ai commencé à réaliser la gestion de la communication entre le PC et l'adaptateur. J'ai aussi jeté un oeil sur la gestion du GPIB proprement dite. On trouvera les informations que j'ai pu glaner sur la page [[GPIB]].
+
-
** Je suis parti du code proposé par l'université de Lubjiana mais, finalement, je suis en train de tout réécrire (non pas parce que ça me convenait pas, mais je souhaite apprendre quelque chose de l'opération...).
+
-
 
+
-
== Mai 2012==
+
-
*30/05/2012
+
-
** J'ai repris mon montage de [[galvanomètre pour affichage laser]]. J'y ai intégré le capteur capacitif et la boucle de commande. Celle-ci est très simple : la valeur de la position (obtenue via le capteur capacitif et un amplificateur à ampli-op) est soustraite de la valeur de la consigne (via un ampli-op) et cette valeur est directement utilisée en entrée de l'amplificateur de puissance.
+
-
** Actuellement, je me contente d'un asservissement proportionnel (le coefficient de proportionnalité est appliqué lors de la soustraction). En effet, la partie mécanique n'est pas assez bien réalisée pour que l'on puisse obtenir quelque chose d'utilisable : les frottements au niveau des roulements et du capteur de position, ainsi que les tensions des différents fils rendent difficile le mouvement du galvanomètre. Ces effets se traduisent par un mouvement saccadé. En l'état, il est inutile de vouloir introduire une composante D ou I dans l'asservissement.
+
-
** Le résultat est une belle usine à gaz assez décevante: [[File:galvo_overview.jpg|400px|thumb|none]] On trouvera d'autres photos de la réalisation dans la rubrique dédiée au [[galvanomètre pour affichage laser]].
+
-
** J'ai rajouté une rubrique sur les techniques d'[[interconnexion 5V / 3.3V]].
+
-
*29/05/2012
+
-
** J'ai réalisé la carte [[adaptateur GPIB/USB]]. Contrairement à la plupart des montages que l'on trouve sur Internet, je me suis permis d'utiliser les buffers GPIB "standard", à savoir le couple SN75160 et SN75161. Il reste à écrire le logiciel en récupérant ce qui est déjà disponible ici et là... (On trouvera les liens vers les "projets de référence"  dans l'article).
+
-
*28/05/2012
+
-
** J'ai eu quelques soucis avec la gestion de la carte SD de mon [[boitier de signalisation de points d'intérêt]] : j'ai réussi à détruire mon Atmega328 avant d'être parvenu à faire fonctionner la chose... Le problème provient de l'adaptation des signaux entre l'Atmega en 5V et la carte SD en 3.3V.
+
-
** J'ai tout d'abord adopté la technique utilisant une diode et une résistance vers le +3.3 (technique d'écrêtage): le résultat fut de grosses perturbations du 3.3V assez mal régulé par un pauvre 78LZ33. C'est un problème connu de cette technique. J'ai ensuite adopté la technique utilisant à nouveau une diode et une résistance de pull-up vers VCC. Et c'est là qu'une fâcheuse manipulation mis fin à l'expérience... On trouvera dans la rubrique intitulée [[Interconnexion 5V / 3.3V]] diverses techniques pour interconnecter des dispositifs alimentés en 5V et 3.3V en mono et bidirectionnel.
+
-
** Aussi, je me suis rabattu vers un Atmega8 et ai limité mes velléités à l'affiche de la latitude, de la longitude et du nombre de satellites en vue. Voilà une photo du résultat :
+
-
[[File:affichage_poi_simple.jpg|400px|thumb|none]]
+
-
*20/05/2012
+
-
** J'ai fini le décodage des trames GPGGA de mon [[boitier de signalisation de points d'intérêt]].
+
-
** J'ai rajouté le calcul de la distance entre deux points en (lat,long). L'introduction de calculs en virgule flottante a bien rempli la mémoire! Pour continuer sans trop me faire de noeuds au cerveau, il va me falloir passer sur un ATmega328 (32K de flash et 2K de RAM). Avec cet espace supplémentaire, il sera non seulement possible d'implémenter la fonction de signalisation de POIs mais probablement d'ajouter d'autres fonctions (lesquelles?...). A méditer.
+
-
** La prochaine étape va consister à faire fonctionner la carte SD. Avec un 328, je pourrais facilement utiliser la bibliothèque [http://elm-chan.org/fsw/ff/00index_e.html FATFS]. Ceci dit, je vais peut être faire les choses "moi-même", à plus bas niveau, afin de profiter de l'occasion pour comprendre le fonctionnement d'une carte SD. Une troisième possibilité est d'utiliser une bibliothèque d'accès SDRAM sans système de fichier, comme celle proposée [http://www.seanet.com/~karllunt/sdcardlib.html là]. A méditer aussi...
+
-
** Je pense ajouter une fonction de signalisation audio par radio, à l'aide d'un BA1404 de Rohm. 
+
-
*19/05/2012
+
-
** Je suis parvenu à faire fonctionner le récepteur GPS destinée à mon [[boitier de signalisation de points d'intérêt]]. Je croyais que le modèle dont je dispose délivrait ses sorties au format TTL ; il n'en est rien : quoique alimenté en 5V, il produit bien des signaux RS232.
+
-
** Une fois cette découverte faite, je n'ai eu qu'à rajouter MAX233 pour convertir les niveaux. J'ai écrit les quelques lignes de code permettant de décoder la trame NMEA GPGGA. Cette trame qui contient l'heure UTC, la latitude, la longitude ainsi que le nombre de satellites en vue.
+
-
*18/05/2012
+
-
** J'ai connecté le récepteur GPS (RoyalTek RGM-3600 /LP SiRFIII) sur ma carte Atmega... Rien.
+
-
** J'ai réalisé vite fait bien fait un [[convertisseur TTL/RS232]] pour vérifier le bon fonctionnement de la ligne série de l'Atmega et du GPS.
+
-
** Après avoir passé un bon bout de temps à me demander pourquoi je ne recevais pas les bons caractères sur mon PC, je me suis rendu compte que j'avais oublié de connecter le GND de la ligne série à celle du MAX233.
+
-
** Les effets étaient assez drôles puisque certains caractères étaient reçus correctement et pas d'autres. J'ai longtemps pensé à une erreur de configuration de l'Atmega, mais après avoir jeté un coup d'oeil à l'oscilloscope (côté TTL), je me suis rendu compte que l'ATmega affichait bien ce qui était transmis. En branchant l'oscilloscope côté RS232, je me suis rendu compte que les créneaux ressemblaient à des portions d'exponentielles. Les sorties du MAX233 changeant d'état en fonction d'un seuil, cela se traduisait par le fait que certains bits étaient correctement échantillonnés et pas d'autres en fonction de la séquence de bits à transmettre... Une fois le problème corrigé, la communication est OK.
+
-
** Il reste à tester le récepteur GPS.
+
-
*17/05/2012
+
-
** Première investigations pour réaliser un [[adaptateur GPIB/USB]].
+
-
** Mon [[boitier de signalisation de points d'intérêt]] progresse. La prochaine étape va consister à tester le récepteur GPS...
+
-
*16/05/2012
+
-
** J'ai reçu mon oscilloscope HP 54201 ainsi que mon fréquencemètre ENERTEC Schlumberger 2711. [[Mon atelier]] ressemble de plus à un musée... Je pense avoir désormais ce qu'il faut (voire plus) en matière de matériel de mesure...
+
-
*15/05/2012
+
-
** Je suis en train de réaliser un petit [[boitier de signalisation de points d'intérêt]] (POI, pour éviter d'appeler un chat un chat). Il s'agit essentiellement de corréler une position obtenue par un GPS au contenue d'une base de données de POI et de prévenir l'utilisateur de la proximité de ce POI. A la date du 15, la petite carte à Atemega8 est réalisée.
+
-
*8/05/2012
+
-
** J'ai complètement terminé le [[traceur de courbes caractéristiques]] :
+
-
[[File:traceur_courbe_face_avant.jpg|400px|thumb|none]]
+
-
[[File:traceur_courbe_face_interieur.jpg|400px|thumb|none]]
+
-
Voici un exemple de courbe caractéristique pour un BD241C :
+
-
[[File:traceur_courbe_bd241c.jpg|400px|thumb|none]]
+
-
*2/05/2012
+
-
** J'ai terminé la première partie du [[traceur de courbes caractéristiques]], à savoir : la partie "alimentation électrique". Elle comporte trois sources continues (-12V, +12V et 5V) et une source alternative avec un limiteur de courant. Elle produit en outre un signal d'horloge à 100Hz qui va servir à générer les différentes tensions de gate (FET) ou courants de base (BJT).
+
-
** Même si le montage est excessivement simple, j'ai rencontré quelques difficultés avec les régulateurs 12V que j'ai du changer 2 fois... Je suspecte (à nouveau) un problème de composant "clone" analogue à celui que j'ai déjà eu avec des L297. La morale est la suivante : il faut impérativement tester les régulateurs avant de les souder : ça évite de devoir les dessouder et ça évite aussi de griller ce qui est alimenté par le régulateur...
+
-
==Avril 2012==
+
-
*30/04/2012
+
-
** Le testeur de transistors ayant été réalisé, je suis passé à autre chose : un [[traceur de courbes caractéristiques]], c'est-à-dire un instrument qui permet de visualiser les courbes de réponse de divers composants. L'utilisation essentielle est l'affichage des courbes i=f(Vce) des transistors, pour diverses valeurs du courant de base. On trouvera sur la page dédié à ce montage des liens vers les différentes réalisations. Pour une première approche, je vais faire un montage simple qui utilise un oscilloscope pour visualiser la courbe. Dans mon cas, les tensions / courants nécessaires sont issus du secteur via plusieurs transformateurs et les valeurs de tension (FET) ou de courant de base (BJT) sont obtenus au moyen d'un compteur et d'un CNA en R-2R. On trouvera par ailleurs des montages plus sophistiqués utilisant des microcontroleurs ; ce sera pour une autre fois...
+
-
** Dans le cadre de la réalisation de ce traceur, la tension Vce est directement issue d'un transformateur. Afin d'éviter de griller le transistor, il est nécessaire de limiter le courant. Le montage de référence (voir page dédiée) utilise un TL431 monté en limiteur de courant. Je trouve cependant que le potentiomètre de réglage, qui est situé sur la ligne de charge voit passer pas mal de courant (pour un potentiomètre) : 50mA. J'ai donc dans l'idée d'employer un autre montage à transistors qui est moins précis mais pour lequel le courant qui traverse le potentiomètre est beaucoup plus faible. Le voici :[[File:traceur_courbe_limiteur_courant.jpg|400px|thumb|none]]
+
-
** J'ai réalisé ce (tout petit) montage pour m'assurer qu'il fonctionne. C'est bien le cas.
+
-
+
-
*27/04/2012
+
-
** J'ai réalisé le [[testeur de transistors]]. Ca n'était pas bien difficile vue le nombre très réduit de composants. L'objet fonctionne assez bien, mais je n'ai pas de garantie quant à sa précision. A noter que plusieurs versions du logiciel ont été développées dont certaines apportant de nouvelles fonctions, une précision accrue et... son lot de bugs. Par contre, j'ai du modifier (et donc recompiler) le logiciel car les délais utilisés dans la gestion de l'écran LCD étaient apparemment trop courts pour mon LCD. Je vais essayer de me familiariser un peu avec le soft pour voir comment l'auteur s'est pris pour faire tant de chose avec si peu de composants... Pour plus de détails, aller sur la page dédiée au [[testeur de transistors]], mais en voici une photo :[[File:transistor_tester_boitier.jpg|400px|thumb|none]]
+
-
** J'ai gravé et découpé la version définitive du capteur capacitif. Je n'ai plus qu'à souder les fils et l'installer sur l'axe du galvanomètre... puis réaliser l'asservissement.
+
-
*22/04/2012
+
-
** Premier tour des élections présidentielles. Charybde et Scylla, peste et choléra... [Edit : François hollande a été élu... mais ça, ça n'est désormais plus un scoop, mais de l'Histoire]
+
-
** J'ai réalisé une maquette de capteur capacitif pour le [[galvanomètre pour affichage laser]] : [[File:galva_capteur_proto.jpg|200px|thumb|none]] [[File:galva_capteur_proto_monte.jpg|200px|thumb|none]] Je l'ai testé et ça marche plutôt bien. Il n'est pas utile de faire plus de segments. Par contre, les frottements sont importants et couper de l'époxy en forme de disque est assez difficile (à la Dremel). Le plus simple est de graver (au perchlo) un disque sur une plaquette de forme carrée. Aussi ai-je réalisé le typon du capteur (sous Inkscape) : [[File:galva_capteur_typon.jpg|200px|thumb|none]]
+
-
** Je vais réaliser un [[testeur de transistors]]. J'ai aussi en projet un [[traceur de courbes caractéristiques]] (curve tracer).
+
-
*19/04/2012
+
-
** J'ai réalisé un capteur de proximité à infrarouge à base de PLL NE567. C'est basique mais ça permet d'éviter les problèmes d'interférence avec la lumière artificielle ou solaire. En voila la photo une fois réalisé : [[File:capteur_proximite_schema.jpg|400px|thumb|none]]
+
-
*18/04/2012
+
-
** Quelques expérimentations autour de l'amplificateur différentiel. On trouvera mes expérimentations (des "travaux pratiques") sur le transistor bipolaire dans la page intitulée "[[travaux pratiques autour du transistor bipolaire]]".
+
-
*16/04/2012
+
-
** J'ai encore passé pas mal de temps à me remettre à niveau du côté des transistors bipolaires. J'ai aussi commencé à utiliser LTSpice pour expérimenter mes circuits.
+
-
** J'ai achevé l'électronique du système de mesure de position capacitif. C'est un peu compliqué, et certainement beaucoup trop, mais j'ai fait avec ce que je sais. On trouvera les détails (circuits, résultats de simulation, courbe mesurée) sur la page du [[Galvanomètre_pour_affichage_laser]].
+
-
** En voici le schéma et la maquette correspondante [[File:galva_mesure_capa_schema.jpg|400px|thumb|none]][[File:galva_mesure_capa_circuit.jpg|400px|thumb|none]][[File:galva_mesure_capa_circuit-2.jpg|400px|thumb|none]]
+
-
*9/04/2012
+
-
** Peu bavard ces derniers temps... J'ai passé (et passe encore) le plus clair de mon temps à me remettre à niveau côté "électronique du transistor". J'ai cependant poursuivi mes expérimentations concernant la mesure de position par capacité.
+
-
** Suite à mes précédentes tentatives, j'ai fait un générateur 2MHz carré en utilisant 4 transistors (2 amplis tension et deux amplis courant). Puis j'ai poussé mes investigations du côté des oscillateurs à transistors. J'ai fait un petit oscillateur Colpitts à 2.4MHz. Mais l'amplitude est faible (quelques dizaines de mv). Je suis donc allé voir du côté des amplificateurs de puissance... et c'est alors que je me suis dit que je devais vraiment me pencher sur le cas du transistor en régime linéaire.
+
-
** J'ai analyse un bon paquet d'amplificateurs audio : les montages sont quasiment toujours les mêmes : un ampli différentiel en entrée sur lequel se fait la contre-réaction suivi d'un transistor qui commande les bases d'un push-pull de puissance. Les bases des deux transistors du push-pull sont "séparés" par deux diodes qui permettent d'éviter la distorsion de croisement.
+
-
 
+
-
==Mars 2012==
+
-
*21/03/2012
+
-
** Mon montage à push-pull n'est pas terrible car la tension en sortie du PP est de [-2.5+0.6,+2.5-0.6]. En effet, la base des transistors est à un potentiel compris entre -2.5V et 2.5V (du fait du condensateur de couplage) et VBE=0.6 volts... Avec une si petite amplitude, le signal en sortie du capteur est de quelques dizaines de millivolts, et le rapport signal / bruit est mauvais. Il faut que j'augmente l'amplitude, mais je ne vois pas comment faire avec des transistors bipolaires...
+
-
*19/03/2012
+
-
** La mesure de capacité reste le sujet du jour. J'ai expérimenté le schéma de mesure différentielle utilisant deux diodes. Pour une fréquence d'entrée sinusoïdale de 2.4MHz et 12V P.P., je parviens à une amplitude du signal de sortie de plusieurs volts!
+
-
** J'ai fait mes premières mesures en utilisant mon géné BF, mais l'objectif est de disposer d'un générateur autonome. Le signal n'a pas besoin d'être sinusoïdal ; un signal carré (rapport cyclique de 50%) est suffisant.
+
-
** J'ai fait une première expérience en utilisant un 555 et une capacité (pour supprimer la composante continue et rendre le signal symétrique) directement connectée au capteur. Ca ne fonctionne pas pour deux raisons :
+
-
*** L'impédance d'entrée du système de mesure est trop faible ;
+
-
*** Le 555 ne monte pas à 2.5 MHz.
+
-
** Concernant le première point, j'ai réalisé un push-pull à transistors alimenté en [-12V, +12V]. Le push-pull est (comme précédemment) connecté au générateur par une capacité (pour en éliminer la composante continue).
+
-
** Concernant le second point, j'ai refait un générateur montage avec un 4060 et un quartz de 16MHz, ce qui est un peu luxueux... Une porte logique ou un inverseur devrait être suffisant (ceci dit, le coût est pratiquement le même) : [[File:galva_push_pull_4060.jpg|400px|thumb|none]]
+
-
** A noter que dans tous les cas, la capacité du capteur va être très faible...
+
-
*13/03/2012 (de Flevoland, en Hollande)
+
-
** La journée du 12 a consisté à faire de premières investigations sur la mesure d'une capacité, dans l'objectif de réaliser un capteur de position capacitif pour mon galvanomètre.
+
-
** J'ai tout d'abord réalisé le condensateur "différentiel" qui m'a servi à effectuer mes mesures : [[File:galva_dif_capa.jpg|200px|thumb|none]]
+
-
** La première technique consiste simplement à mesurer la tension aux bornes de la capacité alimentée par une tension alternative (100KHz, sinusoïdale) : [[File:galva_direct.jpg|200px|thumb|none]] Ca marche plutôt bien : on observe une variation de plusieurs dizaines de millivolts : [[File:galva_direct_capa_1.jpg|200px|thumb|none]] [[File:galva_direct_measure_1.jpg|200px|thumb|none]] [[File:galva_direct_capa_2.jpg|200px|thumb|none]] [[File:galva_direct_measure_2.jpg|200px|thumb|none]] Par contre, je ne mesure la tension qu'aux bornes de l'un des deux condensateurs.
+
-
** La deuxième technique consiste à placer le condensateur différentiel dans un pont (du type pont de Wheatstone) et de mesurer la tension entre les deux branches du pont : cette tension doit être nulle à l'équilibre. L'équilibrage est réalisé en utilisant un potentiomètre (qui implémente les deux résistances du pont). Ca marche pas mal non plus, et ça permet de règler le zéro (ce qui sera nécessaire vu les capacités parasites...) : [[File:galva_bridge_measure_all.jpg|400px|thumb|none]] [[File:galva_bridge_capa_1.jpg|200px|thumb|none]] [[File:galva_bridge_measure_1.jpg|200px|thumb|none]][[File:galva_bridge_capa_2.jpg|200px|thumb|none]] [[File:galva_bridge_measure_2.jpg|200px|thumb|none]]
+
-
** Ceci étant, ces deux solutions présentent l'inconvénient suivant : les tensions mesurées sont alternatives et d'une valeur qui ne permet pas l'usage de diodes (la tension de polarisation de la diode est pratiquement égale à l'amplitude du signal). En outre, une mesure de phase est nécessaire si on veut pouvoir distinguer les positions symétriques du condensateur différentiel.
+
-
** Deux solutions :
+
-
*** La première consiste à utiliser un pont de diode idéal (sans tension de polarisation) à l'aide d'ampli-opérationnels : <dessin à insérer> Je vais investiguer...
+
-
*** La deuxième solution semble avoir été adoptée par Chan. Elle consiste à utiliser un structure en double T. On trouvera [http://openbookproject.net/electricCircuits/AC/AC_12.html#xtocid71394 ici] tous les détails (sur cette structure ainsi que sur les structures en pont). L'auteur est intarissable : "As a measurement circuit for differential capacitive sensors, the twin-T configuration enjoys many advantages over the standard bridge configuration. First and foremost, transducer displacement is indicated by a simple DC voltage, not an AC voltage whose magnitude and phase must be interpreted to tell which capacitance is greater. Furthermore, given the proper component values and power supply output, this DC output signal may be strong enough to directly drive an electromechanical meter movement, eliminating the need for an amplifier circuit. Another important advantage is that all important circuit elements have one terminal directly connected to ground: the source, the load resistor, and both capacitors are all ground-referenced. This helps minimize the ill effects of stray capacitance commonly plaguing bridge measurement circuits, likewise eliminating the need for compensatory measures such as the Wagner earth. " Voici un dessin issu du document : [[File:galva_tbridge.jpg|400px|thumb|none]]
+
-
** Dans les deux cas, il faut alimenter le circuit avec une tension sinusoïdale. On l'obtient facilement à partir d'un oscillateur à 555 suivi d'un filtre passe-bas. A noter qu'un multivibrateur à transistors ne fonctionne pas (ou ne devrait pas fonctionner) du fait de la nécessité d'alimenter le circuit de mesure avec une tension assez élevée (12V), ce qui conduit à une tension Vbe hors spécification.
+
-
*12/03/2012
+
-
** Je viens de terminer la première version ("maquette") d'un [[galvanomètre pour affichage laser]]. Le voici : [[File:galva mockup.jpg|400px|thumb|none]]. J'ai fait une [http://youtu.be/yHWOThJy13o vidéo sans intérêt qui montre que ça fonctionne]... 
+
-
** Je commande la bobine avec un TDA2030A : [[File:galva_command.jpg|400px|thumb|none]] C'est un ampli généralement utilisé comme ampli audio (18W). En supprimant les capas sur l'entrée et sur le feedback, je l'utilise comme un bête ampli op de puissance pas cher (un vrai ampli op de puissance comme le LM675 coûte beaucoup [beaucoup] plus cher. A noter qu'il faut être très vigilant avec le découplage des alims. En effet, si le découplage est mal fait, on obtient çà en sortie : [[File:tda2030a_oscillates.jpg|400px|thumb|none]] L'ampli oscille ; ça se traduit par un circuit intégré brûlant... J'ai mis les deux capas de découplage de 100uF (qui étaient marquées optionnelles sur la datasheet) et ça fonctionne plutôt bien.
+
-
** Ceci dit, en l'état, il n'est pas possible de placer la bobine dans une position donnée.
+
-
*** En effet, la bobine n'a que deux positions d'équilibre. Elle passe d'une position à l'autre en fonction du sens de l'alimentation, une position d'équilibre étant caractérisée par l'alignement des champs des aimants permanents et de la bobine.
+
-
*** Pour pouvoir placer le rotor (donc le miroir) dans une position précise, il y a deux solutions :
+
-
**** Ajouter une force d'intensité variable en fonction de la position de la bobine. Dans ce cas, la position d'équilibre dépendra du champ du rotor. On peut faire cela en ajoutant un ressort de rappel (comme dans un galvanomètre classique), en plaçant un balourd (c'est ce que j'ai fait en fixant une pince croco sur l'axe : le moment de rappel dirigé vers le sol dépend de l'angle de rotation, mais d'une façon non linéaire), en fixant un objet métallique sur l'axe qui, attiré par l'aimant permanent, exercera une force de rappel (c'est ce que fait AUSSI ma pince croco).
+
-
**** Ajouter un capteur de position et piloter la bobine en fonction de l'écart entre la position de consigne et la position mesurée.
+
-
*** La première solution est simple et fonctionne en "boucle ouverte". Par contre, elle ajoute une force de rappel que la bobine devra contrer. Elle est imprécise (disons qu'il faut bien connaître la relation entre la position et l'intensité de la force de rappel, mais cela peut s'obtenir par calibration a posteriori). Enfin, et c'est là le principal problème : le miroir va osciller pendant un certain temps avant d'arriver à sa position d'équilibre, ce qui dégradera très fortement la qualité de l'affichage.
+
-
*** La deuxième solution est plus compliquée mais beaucoup plus intéressante. Comme Chan, la mesure de position va s'effectuer au moyen d'un capteur capacitif. J'ai fait quelques mesure avec un bout de papier d'aluminium et mon inductance mètre maison, et j'observe des variations de capacité de l'ordre du picofarad (ça se calcule, évidemment). Je vais réaliser un motif que je transférerai sur une plaque d'époxy. La difficulté va consister à découper l'époxy en forme de disque... L'idée est de partir d'un motif en deux demi-disques : ce schéma permet une variation de 0 à Cmax sur un demi-tour. Puisque je ne demande pas au miroir de faire un demi-tour, mais plutôt un quart de tour, un motif en 4 secteurs permet de faire varier la capacité de 0 à Cmax sur un quart de tour (on pourrait continuer le raisonnement pour augmenter le dC/dangle). Voici ce que ça donnerait :  [[File:motif_capteur_capacitif.jpg|400px|thumb|none]]
+
-
*06/03/2012
+
-
** Je poursuis mes investigations côté laser.
+
-
*** J'ai commencé à réalisé un galvanomètre sur l'axe duquel je compte placer un miroir. J'ai réalisé deux bobines que j'ai fixées sur un axe en aluminium monté sur roulements à billes. Le gros problème de cette approche (le rotor est une bobine) est d'alimenter la bobine sans trop affecter le mouvement de l'axe or, actuellement, les deux fils d'alimentation (0.2 mm de diamètre) jouent le rôle de ressorts... Ceci dit, et ''a priori'', si je pilote la position du miroir en boucle fermée, le problème du fil ne devrait pas être insurmontable...
+
-
*** La mesure de la position de l'axe s'effectuera par un capteur capacitif (solution adoptée par [http://elm-chan.org/works/vlp/report_e.html Chan]). Plusieurs approches sont possibles : utiliser la variation de la fréquence d'un oscillateur (par ex. un 555) ; utiliser un montage en pont (à la façon d'un point de Wheatstone). Je crois que je vais investiguer cette dernière solution. (A noter que Chan utilise une autre technique.).
+
-
*** Pour ce qui est de l'alimentation des bobines, je vais utiliser un ampli op de puissance type LM675. C'est une solution simple mais assez onéreuse. Une autre solution consisterait à réaliser un ampli en push-pull avec de bons vieux transistors. A voir.
+
-
*** En vérité, mon plus gros problème actuel est de parvenir à découper proprement les différentes pièces "mécaniques" en plexiglas ou profilé d'aluminium. Pour ce qui est du plexiglas, on obtient le meilleur résultat en marquant la coupe avec un cutter (plusieurs fois) à l'endroit et à l'envers puis en cassant la pièce. 
+
-
** J'ai commencé à monter une nouvelle carte à base de Pic32 et d'[http://www.microchip.com/wwwproducts/Devices.aspx?dDocName=en022889 ENC28J60] de Microchip. L'idée est de tester la communication Ethernet avec un montage à microcontrôleur. L'ENC28J60 fournit les couches physique et MAC ; Microchip fournit le reste de la pile TCP/IP gratuitement. A suivre...
+
-
==Février 2012==
+
-
*26/02/2012
+
-
** Mes dernières tentatives de faire fonctionner cette $@# caméra NB avec un DsPic ont échoué... 
+
-
*** J'ai modifié le soft pour ne conserver que les pixels format les plages connexes les plus grandes (je compte le nombre de voisins de la même couleur).
+
-
*** J'ai aussi rajouté une phase de calibration : au démarrage, caméra couverte, je cherche le plus bas niveau de détection qui conduit à la luminosité minimale. J'arrive bien à acquérir quelques pixels (32*32) mais c'est pratiquement inexploitable. 
+
-
** En parallèle, je commence à regarder du côté de l'affichage laser.
+
-
*** L'idée est simplement de piloter un miroir pour déplacer un faisceau laser selon un chemin donné. C'est un sujet qui a déjà intéressé nombre de personnes. On trouve sur le net diverses solutions : utilisation de haut-parleurs, de moteur de pilotage de têtes de disque durs, de moteurs pas-à-pas, de moteurs à courant continu, ou réalisation de véritables galvanomètres. La difficulté consiste à pouvoir piloter les miroirs avec une vitesse suffisante, ce qui implique un rotor avec un minimum d'inertie.
+
-
*** La solution à haut-parleurs et la plus simple et la moins coûteuse, mais les déplacements sont très limités (ce qui pose un problème si on veut afficher quelque chose sur un mur proche). La réalisation de vrais galvanomètres ("galvos" dans le jargon) donne de bien meilleurs résultats, surtout s'ils sont pilotés en boucle fermée. (En boucle ouverte, on a recours à un ressort pour ramener le galvo dans une position donnée.) 
+
-
*** Quelques liens :
+
-
**** Scanner à moteur pas-à-pas : [http://www.youtube.com/watch?v=IrbkSsesiVI&feature=related]
+
-
**** Scanner à haut-parleurs : [http://spt06.chez-alice.fr/00/scan3.htm], [https://picasaweb.google.com/DrZoof/HowItStarted#], [http://www.instructables.com/id/Arduino-Laser-Show-with-Full-XY-Control/], [http://spt06.chez-alice.fr/00/lasers.htm modèle à 4 haut-parleurs]
+
-
**** Scanner utilisant la régulation de focalisation d'un lecteur / graveur de CDROMs : [http://spt06.chez-alice.fr/00/scan1.htm]
+
-
**** Scanner à galvanomètre fait-maison : [https://picasaweb.google.com/DrZoof/HowItStarted# en boucle ouverte], [http://elm-chan.org/works/vlp/report_e.html en boucle fermée]
+
-
*21/02/2012
+
-
** Ayant enterré l'horloge, je m'en retourne vers la caméra NB pilotée par un DsPic (cf. [[acquisition directe du signal vidéo issu d'une caméra analogique N&B]]).
+
-
** J'avais laissé la chose dans un état semi-comateux : j'arrive à afficher une image (très) grossière sur un écran VGA, mais cette image n'a rien à voir avec ce que la caméra "voit".
+
-
** Après quelques heures d'investigations (que j'aurais pu ramener à quelques minutes si j'avais lu la doc attentivement), il s'avère que ma vitesse d'échantillonnage était trop grande (et de loin).
+
-
** La datasheet précise qu'une conversion dure 12 TAD avec TAD = TCY(0.5 (ADCS+1)) et que cette valeur ne doit pas être inférieure à 83.33 ns.
+
-
** A 30Mips (vitesse max du DsPIC), mon temps de cycle est TCyc=33ns.
+
-
** Pour ADCS=6, alors TAD=33ns(0.5x(6+1))= 115.5ns (>83.33ns). Si on utilise le sampling automatique, la durée d'une acquisition complète est de (12+SAMC)xTAD. Pour SAMC=1 on a un temps d'acquisition d'environ 1.5us. (Auquel il faut ajouter les quelques instructions nécessaires au lancement de la conversion et à l'attente de sa terminaison. Je vais faire la mesure pour voir...)
+
-
** On rappelle que la durée d'une ligne est de 25.17us (partie contenant l'image, hors synchro et porch). Avec une telle vitesse d'acquisition, La résolution ne va pas être terrible !
+
-
** La solution va consister à ne faire que 10 mesures par ligne sur une image mais à utiliser 3 images successives, en décalant le t0 d'échantillonnage.
+
-
*17/02/2012
+
-
** Ai rajouté quelques lignes sur l'installation de "git". Voir [[Technologies du logiciel]].
+
-
*16/02/2012
+
-
** Ca y est! Ca marche : j'arrive désormais à afficher un texte sur mon "horloge" (qui n'est donc pas vraiment une horloge...). Il est tard : je décrirai par le menu la chose demain...
+
-
** Voici une photo de l'horloge en fonctionnement. On trouvera [http://youtu.be/9k5F13imeic ici], [http://www.youtube.com/watch?v=Toz6TWfZbh0 là] et encore [http://www.youtube.com/watch?v=VuE8TPtAIzQ là] de courtes vidéos qui montrent la chose.  [[File:propeller_text.jpg|400px|thumb|none]]
+
-
** Voir la page [[Propeller Clock]] pour plus de détails...
+
-
*13/02/2012
+
-
** J'ai réalisé un petit support pour mon horloge. J'ai fixé l'hélice à grands renforts de colle chaude, ce qui est laid mais rapide et -- enfin je l'espère -- solide.
+
-
** J'ai refait la carte de commande du transformateur primaire en remplaçant le 7400 (qui me servait à inverser le rapport cyclique du signal généré par le 555) par un FET (2N7000), ce qui est plus économique...
+
-
** En utilisant des condensateurs neufs, j'arrive à une tension suffisante pour réguler en 5 volts.
+
-
** Il me reste à faire une petite carte de commande du moteur brushless de la tête (c'est-à-dire un potentiomètre et un bornier). Après, j'attaque le logiciel. Je vais faire simple : une routine d'IT pilotée par le capteur Hall, une routine d'IT sur temporisateur. A chque déclenchement Hall, je regarde combien j'ai reçu d'ITs timer : si c'est inférieur à --- disons --- 180, je réduis la valeur du timer et inversement.
+
-
** A chaque tic du timer, je récupère la valeur à afficher dans un tableau, je pilote les leds et j'incémente le compteur. Ca doit être faisable...
+
-
*06/02/2012
+
-
** Ma [[Propeller Clock]] progresse, doucement. Lors de mon dernier compte-rendu, je faisais part de mon désarroi quant à la capacité d'alimenter le microcontrôleur et les 10 LEDs situées sur l'hélice. Je concluais par "Y'a kek'chose qui cloche la d'dans... j'y retourne immédiatement...".
+
-
** J'y suis retourné et ai fait les modification suivantes :
+
-
*** Pour obtenir un meilleur transfert d'énergie, j'ai augmenté très sensiblement la tension de la bobine au primaire. Afin d'éviter de brûler la dite bobine, j'ai limité la puissance en modifiant le rapport cyclique de mon oscillateur à 555. Il est désormais de l'ordre de 10%. Actuellement, la bobine primaire est alimentée en 16 volts, mais pendant un temps très court. Ainsi, je récupère suffisamment d'énergie au secondaire pour réguler en 3.3V. Mon MOSFET de commande est un peu chaud, mais rien de bien grave. Le PIC fonctionne et mes 10 LEDs brillent à peu près convenablement (surtout les rouges).
+
-
*** Par ailleurs, j'ai trouvé la documentation du chip qui pilote le brushless de la tête de lecture de magnétoscope. J'ai réussi à comprendre le circuit imprimé (c'était pas trop difficile) et suis parvenu à faire tourner la chose.
+
-
** Aujourd'hui, je suis donc capable de faire tourner l'hélice et de transmettre suffisamment d'énergie pour l'alimenter. Il ne me reste donc plus qu'à assembler le tout et écrire les quelques lignes de logiciel pour afficher quelque chose. Comme dirait l'autre, ça n'est plus que du logiciel...
+
-
** Voici quelques photos.
+
-
*** Le montage complet [[File:propeller_full.jpg|400px|thumb|none]]
+
-
*** L'alimentation (à gauche le 555 et le MOSFET plus un inverseur pour inverser le rapport cyclique) [[File:propeller_alim_complet.jpg|400px|thumb|none]]
+
-
*** L'hélice, alimentée par le transformateur tournant. [[File:propeller_prop_light.jpg|400px|thumb|none]]
+
-
==Janvier 2012==
+
-
*29/01/2012
+
-
** J'ai poursuivi mes investigations concernant ma [[Propeller Clock]], notamment pour ce qui concerne le transfert d'énergie vers l'aiguille. L'idée d'utiliser un frotteur me rebutant, j'ai pensé (et apparemment je ne suis pas le premier...) utiliser une tête de lecture de magnétoscope qui comporte un "transformateur tournant" (rotary transformer) pour transmettre le signal des têtes de lecture / écriture. Aussitôt dit aussitôt fait...
+
-
** J'ai donc réalisé un petit oscillateur à NE555 à 20Khz qui alimente, via un MOSFET, les bobines du stator d'une tête de magnétoscope (VCR head, VCR drum). Voici à quoi ça ressemble :[[File:propeller_alim.jpg|400px|thumb|none]] Il y a quatre bobines correspondant aux quatre têtes. En voila une photo : [[File:propeller_transformateur_tournant.jpg|400px|thumb|none]]
+
-
** J'ai récupéré et mesuré le signal de l'autre côté en branchant en séries quatre bobines. Le signal ne dépasse pas 2 volts crête-à-crête alors que le primaire est alimenté sous 5v et que mon MOSFET chauffe bien : rendement pas terrible. J'avoue cependant ne pas avoir bien compris la façon dont les bobines du primaire sont branchées ; la mesure des résistances sur les broches du connecteur me donne des valeurs un peu étranges... Dans tous les cas, la tension est insuffisante pour alimenter quoi que ce soit et certainement pas mon "aiguille" à PIC16F628 et ses 10 LEDs à 20mA : [[File:propeller_aiguille.jpg|400px|thumb|none]].
+
-
** J'ai donc réalisé un multiplicateur de tension à diodes : [[File:propeller_multiplicateur.jpg|400px|thumb|none]] Voici la tension en entrée du multiplicateur [[File:propeller_multiplicateur_in.jpg|400px|thumb|none]] et en sortie [[File:propeller_multiplicateur_out.jpg|400px|thumb|none]].
+
-
** Ceci dit, même si la tension dépasse maintenant les 7 volts et est capable de faire briller deux LEDs en parallèle, elle ne permet pas à un régulateur de réguler (même en 3.3V) ...
+
-
** "Y a kek'chose qui cloche la d'dans j'y retourne immédiatement..."
+
-
*25/01/2012
+
-
** Ca y est, le Rubicon est franchi : il ne sera pas dit que je n'aurai pas réalisé ma propre version de la sempiternelle "[[Propeller Clock]]". Hier, profitant d'un "congé" inespéré, j'ai réalisé "l'aiguille" qui comporte 10 leds de diverses couleurs, le PIC et le capteur à effet Hall.
+
-
** Au passage, j'ai étudié diverses pistes pour alimenter la Chose :
+
-
*** Une bobine sur l'aiguille et une bobine sur le chassis : tension trop faible (voire inexistante) avec la bobine que j'ai eu la patience de réaliser.
+
-
*** Une bobine sur l'aiguille et un de ces méchants petits aimants au néodyme : j'ai même pas essayé, car il me faudrait, là aussi, bobiner plus que de raison.
+
-
*** Un moteur "monté à l'envers", c'est-à-dire avec le rotor rendu solidaire du chassis et le stator (qui comporte les fils d'alimentation) monté sur l'aiguille. Ah ah! Là ça peut marcher.
+
-
**** J'ai ainsi essayé un petit moteur à balais, mais la tension ne dépasse pas 2 volts. Je pourrais faire un survolteur avec un (deux?) oscillateur à transistors (un multivibrateur) et un petit multiplicateur de tension à diodes (une pompe à charges). Je vais voir mais je doute de parvenir ainsi à fournir les 200mA demandés par mes diodes! (Au passage, je pourrais peut-être directement utiliser un de ces convertisseurs step-up si pratiques...)
+
-
**** J'ai aussi essayé un autre moteur brushless : j'arrive à une tension de 4 volts qui devrait suffire, mais je n'ai pas trouvé un moyen simple de rendre solidaire l'axe du rotor du deuxième brushless avec le socle. En outre, je m'interroge encore sur le comportement des capas de lissage électrochimique soumise à un forte force centrifuge... A priori, ça ne devrait pas avoir d'effet notable dans la mesure où : (i)si l'électrolyte joue un rôle lors de la réalisation du condo je crois qu'il n'en joue plus après (??), (ii) l'électrolyte est confiné au condo et ne va pas s'en échapper...
+
-
** En définitive, je pense que je vais bêtement utiliser des frotteurs réalisés avec de la tresse à dessouder. C'est moche et je crains que ça ne fonctionne pas (discontinuités d'alimentation), mais ça a le mérite d'être excessivement simple.
+
-
*21/01/2012
+
-
** Sur la base de mon contrôleur de moteur brushless, j'aimerais bien faire une de ces fameuses "propeller clocks", c'est-à-dire une horloge dont l'affichage est constitué d'une rangée de leds en rotation. La difficulté réside dans l'alimentation électrique de la partie tournante. Plusieurs solutions : utiliser des balais (laid!), utiliser l'alimentation du rotor si le moteur est à balais, fixer une bobine sur la partie mobile et une autre bobine - alimentée - sur la partie fixe (ou un aimant), etc.
+
-
** J'ai fait un petit montage avec deux bobines grossières (quelques tours de fil émaillé), un NE555 et un transistor de puissance. Je mets les deux bobines face-à-face et j'alimente l'une d'entre-elles : je n'observe rien... Il faudrait bien plus de tours de fil ou une bien plus grande intensité... A suivre.
+
-
*16/01/2012
+
-
** Une demi-journée de RTT et hop, voila mon moteur qui fonctionne en boucle fermée sur ma [[petite carte de contrôle du moteur brushless]]!! J'ai remplacé le moteur un peu bizarre issu d'un lecteur IOMEGA par un moteur de disque dur. Voila la carte de "puissance" (hum...;-) [[File:ctrl_brushless_dd.jpg|400px|thumb|none]] et voici la partie qui réalise le contrôle en boucle fermée :[[File:ctrl_brushless_ctrl.jpg|400px|thumb|none]]
+
-
** J'ai du modifier la rampe de démarrage qui n'était pas adaptée à la plus grande inertie du moteur. Le démarrage est encore laborieux (plusieurs secondes...) mais je peux en vérité faire démarrer le moteur quasi instantanément : la rampe de démarrage me permet limiter l'intensité max à peu de chose et éviter (aussi) une trop grande accélération à ce qui sera placé sur l'axe du moteur...
+
-
** Le résultat est impressionnant : le moteur tourne aussi vite qu'il est possible vu mon PIC16F628 à 4MHz (il va falloir que je fasse le calcul ou la mesure, mais c'est au moins 1000 tr/min).
+
-
** Je peux modifier le couple (jusqu'à pratiquement l'arrêter) et il continue à tourner sans problème... C'est-y-pas merveilleux?
+
-
** Inutile de cacher que je me suis inspiré de diverses sources (qui s'entre-inspirent d'ailleurs). Le contrôle de rotation s'effectue via 3 comparateurs (j'aurais pu, utiliser les comparateurs intégrés au PIC, comme prévu initialement...) LM311 qui détectent la FEM induite dans le bobinage non piloté.
+
-
** Bon, il me reste à compléter l'article du wiki pour expliquer en détail comment fonctionne un brushless (ce qui est déjà décrit sur mille autres sites...) et comment fonctionne la boucle fermée (c'est franchement trivial, notamment du point de vue soft)!
+
-
** Je vais tout de même réfléchir à la réalisation de l'une ces fameuse horloges à LEDs tournantes. Mon principal problème est de transmettre l'énergie de la base vers le dispositif tournant et ce sans utiliser de contact glissants... Je vais donc mettre une bobine sur le disque et un aimant sur la platine : vu la vitesse de rotation, je devrais pouvoir obtenir une bonne tension, surtout si j'utilise un des aimants au néodyme que j'ai récupéré en démontant mes disques durs...
+
-
*08/01/2012
+
-
** Le moteur brushless de ma [[petite carte de contrôle du moteur brushless]] démarre et tourne dans problème en boucle ouverte. Bon, c'est pas un exploit (20 lignes de code, y compris celle pour configurer le PWM). Il faut dire que le moteur est très léger aussi n'ai-je pas de problème lié à l'inertie. L'exploit, ce sera lorsque je parviendrai à le faire tourner en boucle fermée sans capteur... Au vu de ce que j'observe sur l'oscilloscope, ça n'est pas gagné (notamment à cause du PWM qui créé de facheuses perturbations). A suivre...
+
-
*01/01/2012
+
-
** J'ai déplacé le journal 2011 sous la rubrique [[Quoi de neuf 2011]].
+
-
** Je viens de terminer une [[petite carte de contrôle du moteur brushless]]. Mon objectif est d'en faire le contrôle sans capteur (optique ou hall). "Sensorless" comme disent nos zamis. [[File:ctrl_brushless.jpg|200px|thumb|none]]
+
-
** J'ai utilisé deux L298, histoire de ne pas avoir à refaire des ponts en H et de ne pas avoir à me soucier des états incohérents.
+
-
** A ce propos, noter qu'on trouve sur le marché des L298 qui ne fonctionnent pas. J'en suis arrivé à cette conclusion en comparant l'aspect des L298 qui fonctionnent avec ceux qui gisent désormais dans mon "cimetière" de composants : ils appartiennent à deux catégories bien distinctes ; voir photo. [[File:L298OK_KO.jpg|400px|thumb|none]]
+
-
** Ca ne serait pas bien ennuyeux (encore que...) si ces chips pouvaient être mis sur support. Or ils sont dans un boîtier qui imposent de les souder. Grrrrr...
+
-
 
+
-
La suite (journal 2011) est sous la rubrique [[Quoi de neuf 2011]].
+

Latest revision as of 18:03, 10 January 2015

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