Posts Tagged ‘Arduino’

DIY – Thermomètre à tube Nixie

Vendredi, mai 17th, 2013

Ce projet, qui m’aura occupé quelques temps, est parti de trois points :

- Je n’avais pas de thermomètre chez moi, et ma femme et moi n’avons pas tout à fait la même sensibilité à la température, cela permet de donner une valeur objective et d’ajuster en conséquence (soit on met le chauffage, soit l’autre enfile un pull ;) )
- J’avais besoin de tester un circuit de commutation pour tubes Nixie (spoiler : dans le but de réaliser une horloge), mais sur un nombre limité de tube, car en cas d’erreur, c’est très pénible de dessouder le tube et de le ressouder
- J’avais envie de réaliser un montage CMS le plus compact possible, et de tester au passage la mise en oeuvre de CMS taille 0402.

Si si, il y a un composant sur C6. La LED est une 5mm, placée là pour donner l'echelle.

Si si, il y a un composant sur C6. La LED est une 5mm, placée là pour donner l’échelle.

Le montage se divise donc en 4 parties : la mesure de la température, effectuée par un vénérable LM35 (mais le montage permet aussi l’utilisation d’un LM73 plus précis) ; l’élévation de tension pour alimenter les tubes, le contrôle des tubes, et le pilotage de tout ça, réalisé par un Atmega328, version cms évidemment.

Le schéma d'ensemble

Le schéma d’ensemble

La partie mesure de température ne nécessite pas d’explications particulières. A noter simplement que le LM73 fonctionne en I2C, et que dans ce cas, il faut impérativement mettre les résistances de pullup R6 et R7. Dans le cas du lm35, elles ne sont plus nécessaires car ce dernier fonctionne en analogique, la sortie de celui-ci étant à connecter à la broche 4 de l’emplacement du lm73 (A5/SCL sur l’atmega).

La partie élévateur de tension est désormais classique sur mon site, il s’agit de la même que pour mes compteurs geiger, à savoir NE555 + Mosfet + bobine. Un petit condensateur 400v sert à lisser la tension obtenue.

La mise en oeuvre de l’AtMega328 n’a rien de spécifique. Il faut en revanche noter deux connecteurs, un connecteur ISP, et un connecteur permettant de brancher un adaptateur série. Le premier devant servir à charger le bootloader Arduino sur l’Atmega, le second à charger le programme/débugger comme s’il s’agissait d’un simple Arduino. Pour une raison que j’ignore, bien que le bootloader soit correctement chargé, il n’a fonctionné que sur une seule de trois cartes que j’ai assemblé. Après tests, la communication série s’effectue correctement et dans les deux sens, mais impossible de flasher l’atmega par ce biais (si quelqu’un a une idée…). Du coups, la programmation se fait via ISP, et le debug par la connexion série.

La partie la plus intéressante de ce montage est la partie pilotage des tubes nixie. Un des objectifs était de réaliser le montage le plus compact possible, exit donc les drivers type 7441, tout sera fait ici à base de transistors.
Afin de ne pas trop consommer, l’affichage des 2 digits ne se fera pas simultanément, mais l’un après l’autre, de manière très rapide, la persistance rétinienne se chargeant de donner l’impression d’un affichage fixe.
Coté cathode, les transistors sont dans une configuration peu courante : la base est commune à tous les transistors, en permanence à +5v, ce qui permet de n’avoir qu’une seule résistance (mais qui impose de n’utiliser qu’un seul digit à la fois). La commutation se fait en ramenant l’émetteur du transistor voulu à  0v. Dans cette configuration, il faut autant d’entrées/sorties sur le microcontrolleur que de digits, mais en l’occurrence, l’Atmega nous en propose nettement plus que nécessaire dans notre cas.

Le driver coté anode

Le driver coté anode

Coté anode, il aurais été possible également de mettre un simple transistor NPN avec une résistance pour faire le travail. Cependant, la consommation « à vide » aurais été supérieure à la consommation lors de l’affichage sur un tube, ce qui n’est clairement pas le but recherché.
Le montage ci-dessus « coupe » le courant, en limitant les pertes à des valeurs infimes. La résistance R12 et le transistor NPN forment un driver de courant constant, réglé de manière à laisser passer juste le courant nécessaire au déblocage du transistor PNP.

Thermomètre Nixie

Le thermomètre Nixie assemblé

Le circuit complet tiens sur un PCB de 5x5cm double face. J’aurais probablement pu faire encore plus petit, mais ça me semblais déjà un bon début !

Le circuit vu du dessus

Le circuit vu du dessus

Concernant l’assemblage du PCB, rien de spécial à mentionner, celui-ci étant étonnamment plus facile à assembler que ce qu’il pourrais sembler au premier abord, et ce, malgré le fait que j’ai soudé des résistances 0805 sur des emplacements 0603 (donc un peu plus petits que les résistances). Ayant fait plusieurs essais, j’ai testé différentes techniques de soudure, je vous ferais un petit topo là-dessus dans un prochain article. Globalement, si on omet les 2 composants 0402 (taille qui n’était pas impérative du tout, mais pour faire des tests), ce n’est pas vraiment plus compliqué qu’avec du traversant, au contraire même.  Le circuit intégré demande un petit coups de main, mais ça se fais très bien, et très rapidement. Les 0402, pour le coups, sont assez délicat à placer, leur petite taille faisant qu’ils se collent à la pane du fer à souder par capillarité, et leur taille nécessite de bons yeux en plus d’une bonne loupe (idéalement, une bino)

Enfin, pour finir, le code source, qui n’a rien de très spécifique, il se contente de récupérer la valeur du lm35, et décomposer le résultat obtenu en deux digits, les unité et les dizaines.

thermometre

DIY – Bobineuse à l’arrach’

Mercredi, février 20th, 2013

Si vous vous intéressez aux bobines Tesla, ou à tout autre montage tournant autour de la haute tension, vous avez dû être confronté à un moment ou un autre à la réalisation d’une bobine, voir, d’une bobine de grande longueur. Assez rapidement dans ce cas, on se rend compte qu’il vaut mieux être deux : un qui gère la rotation de la bobine, et l’autre qui gère l’avance du fil. Seulement voilà, on n’a pas toujours 2 mains supplémentaires de disponibles. On se contente donc souvent d’une vitesse de rotation (très) lente, de manière à pouvoir gérer l’avance du fil avec les mains, et tout arrêter en cas de soucis en cours de bobinage.  L’inconvénient de cette méthode est que lorsque ça se passe bien, on est limité à cette fameuse vitesse lente, alors qu’on pourrais gagner beaucoup de temps en accélérant.
L’idée, pour améliorer tout ça est d’utiliser un contrôle supplémentaire pour la vitesse de rotation, à savoir une pédale, comme pour les machines à coudre. Bon, n’ayant pas trouvé de pédale de machine à coudre, je m’en suis fabriqué une, qui était dès le début prévue pour ce genre d’usages.

Sans assistance, ce genre de bobine tourne vite au cauchemard

Sans assistance, ce genre de bobine tourne vite au cauchemar

Voulant faire des essais de slayer exciter, j’avais donc besoin d’une bobine de bonne longueur, ce qui était l’occasion rêvée pour tester mon concept jusqu’au bout. Bon, comme le titre le laisse penser, j’ai fait ça à l’arrach, avec premiers outils qui me tombaient sous la main. Ca permet de tester le système avant de passer à une réalisation plus pérenne.  La pédale est équipée d’un potentiomètre, dont la valeur est lue par un arduino. L’entraînement de la bobine se fait avec un moteur pas à pas, piloté par un driver pololu. La bobine de fil est montée sur un dévidoir d’étain.

Concernant le fonctionnement, le moteur accélère lorsqu’on appuie sur la pédale, et s’arrête lorsqu’on relâche complètement. L’avantage, c’est que ça permet de se repositionner de temps en temps, et de prendre une pose si besoin. (Le point de colle visible sur la vidéo ci-dessous est justement là pour bloquer le fil lors d’une pose). La vitesse de rotation est gérée en augmentant/diminuant le délai entre chaque pulse envoyée au module pololu.
Au final, j’ai trouvé ça très pratique, la bobine en question aura été réalisée en moins d’un quart d’heure, là où il m’aurais fallu certainement une bonne heure sans assistance, avec en plus une qualité probablement moindre.

DIY – Compteur geiger, dosimètre

Lundi, février 11th, 2013

Ceux qui me suivent depuis un petit moment déjà auront remarqué qu’il ne s’agit pas là de mon premier coups d’essai. Mon précédent compteur geiger fonctionnait bien, mais j’avais envie (besoin) d’avoir une info un peu plus précise que ce que peuvent apporter une série de « bip-bip » plus ou moins rapprochés. C’était également pour moi l’occasion de ne plus seulement survoler l’aspect fonctionnel de la chose, mais faire en sorte d’avoir une mesure cohérente, en rapport avec les specs précises du tube utilisé un SBM-20 (СБМ-20), un grand classique.

Pour ce montage, le but étant la mesure, hors de question donc de me contenter d’une tension « à peu près » comme pour le montage précédent. Et comme j’ai également besoin de remonter des infos plus précises, passage (quasi) obligé par un écran LCD, et donc un microcontrolleur. Cependant, je trouvais que l’information « analogique » gardait un certain intérêt (instantanée), et un petit coté « ambiance » pour le bi-bip.

Dosimètre

La nouvelle version du compteur geiger.

Le montage comporte donc parties distinctes :

  • L’alimentation haute tension, qui délivrera 400V (et pas plus ;) )
  • Le tube geiger qui fera la détection
  • Le microcontrolleur qui comptera le nombre d’impulsions et affichera la mesure sur l’écran LCD
  • Un mini circuit audio, piloté par l’arduino, qui donnera les pulses audio.

La partie alimentation, est un montage élévateur simple, à base de NE555, mosfet et inductance. Il s’alimente entre 9 et 12v et permet d’obtenir une tension supérieure aux 400v requis (dans les 480v). Un condensateur 600v est placé en sortie afin de lisser la tension, et de parer aux pics de consommation induits par le tube lorsqu’il est en présence de matériaux très radioactifs. La tension est ensuite limitée a 400v via deux diodes zener de 200V en série.Lors de mes premiers tests, je n’avais pas mis les zener, et le tube était en état de saturation quasi-permanente, faussant ainsi toute mesure.

A la sortie du tube, le signal est récupéré par un optocoupleur, afin de transmettre l’information au microcontrolleur sans les parasites qui vont avec. Une petite subtilité ici, une LED est placée en parallèle de l’optocoupleur, elle m’a servis lors de la mise au point notamment, afin de m’assurer que les taux mesurés étaient bien identiques des 2 cotés de l’optocoupleur.

La partie microcontrolleur est assurée par un Arduino très fortement dépouillé ;) Je n’ai gardé que l’Atmega328p, le quartz et les condensateurs… La programmation peut se faire ultérieurement en connectant un adaptateur usb2serial à l’emplacement prévu. Je n’ai pas prévu de connecteur ICSP, il est donc impératif d’utiliser des Atmega avec un bootloader préchargé.
Le comptage des impulsions se fait en comptant non pas les fronts montants, mais les fronts descendants. En effet, le comptage des fronts montants était trop soumis aux perturbations de l’alimentation HT à proximité, alors qu’avec les fronts descendants, plus de soucis. Le pullup interne de l’arduino est donc activé, lorsque l’optocoupleur devient passant, la tension à la borne de l’arduino devient nulle. Le comptage se fait en utilisant une interruption matérielle, qui incrémente un compteur, en parallèle de l’incrémentation d’un timer.

Schéma dosimètre

Schéma dosimètre, cliquez pour télécharger le PDF

Comme indiqué précédemment, la pulse audio est envoyée par l’arduino, plutôt qu’en prise directe. Deux intérêts à cela : pas de perturbation de la mesure du fait de problèmes d’impédances, et ça me permet un debug plus facile en comparant cette sortie à l’état de la led placée en parallèle de l’optocoupleur.

Les prochaines étapes : le faire étalonner par un copain qui bosse au CEA, histoire de valider la mesure, et ressortir un joli PCB qui va bien pour une jolie mise en boîtier. Bref, vous l’aurez compris, une version 3 est sur les rails, mais les modifications seront essentiellement cosmétiques.

Pour finir, une petite vidéo du montage en fonctionnement :

Le code source du programme :  Dosimetre.pde

DIY – Shield multiplexeur pour Arduino

Mercredi, décembre 12th, 2012

Et oui, les entrées/sorties, on n’en a jamais assez. En l’occurrence, pour ce projet, j’avais besoin d’avoir une douzaine de capteurs analogiques (des capteurs de force résistifs), et de pouvoir logger les valeurs sur une carte microSD.

MultiplexShield
Je me suis dit que tant qu’à faire, j’allais essayer de faire ça de manière à être le plus polyvalent possible, histoire que ça puisse servir dans d’autres projets.C’est à partir de ce cahier des charges que je suis parvenu à la réalisation de ce shield, qui offre la possibilité de lire (ou d’écrire) sur 32 entrées analogiques, plus 5 E/S numériques (plus les 4 entrées analogiques encore dispo sur l’arduino)

MultiplexShield, le circuit

MultiplexShield, le circuit

Comme vous pouvez le voir sur le circuit ci-dessus, 16 broches (8 sur le premier circuit, 8 sur le second) sont disponibles pour lire des valeurs analogiques à partir de capteurs résistifs (les petites résistances CMS servent à faire un pont diviseur de tension). Les 16 autres broches, permettent de lire/écrire des informations numériques (possible aussi avec les précédentes, sous réserve d’enlever les résistances CMS). L’idée de cet agencement est de n’avoir que les deux fils du capteur à brancher sur la carte.
Concernant les cartes microSD, j’ai préféré maximiser mes chances : j’ai prévu un connecteur pour les adaptateurs type Adafruit (qui embarquent le système de régulation de voltage nécessaire), et pour les BreackOutBoard Sparkfun, qui eux ne comprennent que le slot microSD.

Multiplex Shield le schéma. (cliquez pour agrandir)

Multiplex Shield le schéma. (cliquez pour agrandir)

L’accès aux cartes microSD se fait en utilisant les fonctions SPI matérielles de l’Arduino, histoire de maximiser les performances.
Comme le montrent les photos, il y a eu quelques ratés au niveau du schéma initial (le schéma publié est corrigé), certaines broches avaient été laissées flottantes (toujours vérifier 2 fois sont schéma avant de faire faire un circuit !). Bon, c’est pas dramatique, quelques bouts de fils et c’est réparé, mais bon, c’est pas super esthétique.

Les raccommodages...

Les raccommodages…

Au niveau de l’utilisation de ce shield, c’est plutôt facile : chaque circuit est rattaché à une broche analogique. Lorsqu’on lit la valeur d’une de ces deux broches, on lit en fait la valeur de l’entrée sélectionnée du multiplexeur. Et comment on sélectionne l’entrée ? Bah tout simplement en envoyant au multiplexeur le code binaire correspondant à la broche. Je m’explique : pour se piloter, le CD4067 utilise 4 broche (10, 11, 14 et 13, pour respectivement A, B, C et D). Vous voulez lire la broche 7 ? Et bien, mettez A à 1, B à 1, C à 1 et D à 0 (0111 en binaire, ce qui nous donne 7), tout simplement.
Difficile de faire plus simple non ?

Un petit exemple de code : Lecture multiplexée, enregistrement sur SD

Lancement boutique éléctronique et concours

Mercredi, novembre 21st, 2012

Salut à tous !
Et oui, pas mal de nouveautés d’un coups !
Premièrement, je lance une boutique en ligne de produits électroniques et DIY. Je précise électronique et DIY car même si pour le moment ça reste très concentré autour du prototypage électronique (arduino, capteurs etc…), j’envisage aussi de faire rentrer des produits pour faire d’autres expériences (comme des levures pour faire votre hydromel, etc…)
Concrètement, qu’es-ce que ça changera pour le blog ? Bah tout simplement rien, si ce n’est une nouvelle entrée dans les menus. Ca ne modifiera même pas la fréquence des articles ;)
Pourquoi ? Et bien en fait, c’est une activité que j’avais déjà en « offline », que j’ai décidé de diversifier un peu, ce qui me permet aussi de proposer de nouveaux produits :)
Bref, pour le moment, pas encore des tonnes de produits, mais ça se remplis, je me fixe un objectif de 2 nouveaux articles par jour jusqu’à avoir rentré tout le stock (et y’a du boulot !) Donc si vous trouvez pas votre bonheur, n’hésitez pas à repasser un peu plus tard, ou à m’envoyer un mail que je rentre cet article en priorité.

Pour fêter tout ça, je lance, en partenariat avec le site MadeinFr, un concours où vous avez la possibilité de gagner le nouvel Arduino Due, ainsi que d’autres lots sympa (enfin j’espère). Si vous ne connaissez pas MadeinFr, ce site regroupe des contributions en français de bidouilleurs, bricoleurs, électroniciens, adeptes de bidouillabilités, pour faire court : de passionnés du « fait soi-même ».
Tout le monde peut participer au concours, sans aucune connaissance technique, donc n’hésitez pas !

Enfin, dernière news, j’ai créé un compte twitter sur lequel sera annoncé tous les nouveaux articles, blog et boutique confondu. Vous pouvez me suivre à @nerick_rhaaa