Posts | Comments

Planet Arduino

Archive for the ‘Électronique’ Category

L’autre jour en surfant, je suis tombé sur ce petit projet sympa : BoB. Un petit robot bipède, avec une bouille tellement mimi que j’étais sûr que mon fiston l’adorerais. Comme en plus j’avais tout ce qu’il fallait sous la main pour en construire un, je me suis lancé :)

Tout d’abord, une petite liste de ce qu’il vous faudra :

  • Les pièces plastiques, imprimées
  • 4 servo-moteurs 9g
  • Un arduino micro, ou équivalent
  • un connecteur de pile 9v, ou mieux, une lipo 7.4v (2s)
  • Un lm7805
  • un capteur de distance à ultrason, de préférence avec 2 modules (pour faire les yeux)
  • quelques vis à plastique (récupérées sur de vieux portables par exemple).

Les pièces plastiques sont téléchargeables ici : http://www.thingiverse.com/thing:43708

Le montage ne pose pas de soucis particulier. Il faut fixer un servo sur chaque pied, et deux autres servos sur la base.

Le montage de la base

Le montage de la base

Pour ceux à qui l’assemblage ne paraîtrait pas logique, vous trouverez un guide d’assemblage détaillé ici : http://www.instructables.com/id/BoB-the-BiPed/

Contrairement à ce qui est indiqué dans cet instructable, en utilisant un arduino micro et une pile 9v (ou une petite lipo), tout rentre dans le boitier, à l’exception d’un interrupteur que j’ai fait ressortir pour pouvoir allumer/éteindre la bête.

Voici une petite présentation de la tête de notre nouvel ami, juste avant de passer à l’alésoir,  afin de faciliter le passage des yeux capteurs ultra-son.

P1020169

Lors de l’assemblage, je vous recommande vivement de noter la correspondance entre les servos et les pins de l’arduino, vous serez amené à les configurer dans le programme, et une erreur empêchera notre ami de se déplacer.

Une fois tout assemblé, il faut centrer les servos, à l’aide d’un petit programme arduino les positionnant à 90°. lorsque les servos sont à 90°, les pieds doivent être à plat, et les jambes bien centrées. Si ce n’est pas le cas, modifiez l’angle du servo jusqu’à tomber au plus juste, et notez la valeur correspondante (vous devrez la modifier dans le programme). Faîtes bien cette manip pour chaque servo.

Exemple de programme de centrage :

#include <Servo.h>
Servo servo;
void setup()
{
servo.attach(9);  //changez cette valeur pour chacun des servos à centrer
}

void loop()
{
servo.write(90);
}

Une fois ceci fait, téléchargez le code source ici : http://letsmakerobots.com/node/35877

Il vous faudra modifier au moins deux partie du code :
- La première partie se situe en en-tête du fichier, et correspond aux pins rattachées à vos servos. Notez que Hip sont les cuisses et Ankle les pieds.
- La seconde se situe en fin de fichier, dans les fonctions NormalWalk et ShortWalk. C’est ici que vous pourrez modifier le centrage de vos servos (selon les relevés que vous aviez fait précédemment), ainsi que les angles max (souvent limités par le plastique qui arrive en butée)

Une fois ceci fait, il ne vous reste plus qu’à compiler/uploader, et à admirer votre petit robot se dandiner sous vos yeux (et moi admirer mon fiston s’émerveiller :))

BoB le bipède

BoB le bipède

Set
14

DIY – BOB le bipède

arduino, diy, Électronique, General, idées à la con, jeux, planet Commenti disabilitati su DIY – BOB le bipède 

L’autre jour en surfant, je suis tombé sur ce petit projet sympa : BoB. Un petit robot bipède, avec une bouille tellement mimi que j’étais sûr que mon fiston l’adorerais. Comme en plus j’avais tout ce qu’il fallait sous la main pour en construire un, je me suis lancé :)

Tout d’abord, une petite liste de ce qu’il vous faudra :

  • Les pièces plastiques, imprimées
  • 4 servo-moteurs 9g
  • Un arduino micro, ou équivalent
  • un connecteur de pile 9v, ou mieux, une lipo 7.4v (2s)
  • Un lm7805
  • un capteur de distance à ultrason, de préférence avec 2 modules (pour faire les yeux)
  • quelques vis à plastique (récupérées sur de vieux portables par exemple).

Les pièces plastiques sont téléchargeables ici : http://www.thingiverse.com/thing:43708

Le montage ne pose pas de soucis particulier. Il faut fixer un servo sur chaque pied, et deux autres servos sur la base.

Le montage de la base

Le montage de la base

Pour ceux à qui l’assemblage ne paraîtrait pas logique, vous trouverez un guide d’assemblage détaillé ici : http://www.instructables.com/id/BoB-the-BiPed/

Contrairement à ce qui est indiqué dans cet instructable, en utilisant un arduino micro et une pile 9v (ou une petite lipo), tout rentre dans le boitier, à l’exception d’un interrupteur que j’ai fait ressortir pour pouvoir allumer/éteindre la bête.

Voici une petite présentation de la tête de notre nouvel ami, juste avant de passer à l’alésoir,  afin de faciliter le passage des yeux capteurs ultra-son.

P1020169

Lors de l’assemblage, je vous recommande vivement de noter la correspondance entre les servos et les pins de l’arduino, vous serez amené à les configurer dans le programme, et une erreur empêchera notre ami de se déplacer.

Une fois tout assemblé, il faut centrer les servos, à l’aide d’un petit programme arduino les positionnant à 90°. lorsque les servos sont à 90°, les pieds doivent être à plat, et les jambes bien centrées. Si ce n’est pas le cas, modifiez l’angle du servo jusqu’à tomber au plus juste, et notez la valeur correspondante (vous devrez la modifier dans le programme). Faîtes bien cette manip pour chaque servo.

Exemple de programme de centrage :

#include <Servo.h>
Servo servo;
void setup()
{
servo.attach(9);  //changez cette valeur pour chacun des servos à centrer
}

void loop()
{
servo.write(90);
}

Une fois ceci fait, téléchargez le code source ici : http://letsmakerobots.com/node/35877

Il vous faudra modifier au moins deux partie du code :
- La première partie se situe en en-tête du fichier, et correspond aux pins rattachées à vos servos. Notez que Hip sont les cuisses et Ankle les pieds.
- La seconde se situe en fin de fichier, dans les fonctions NormalWalk et ShortWalk. C’est ici que vous pourrez modifier le centrage de vos servos (selon les relevés que vous aviez fait précédemment), ainsi que les angles max (souvent limités par le plastique qui arrive en butée)

Une fois ceci fait, il ne vous reste plus qu’à compiler/uploader, et à admirer votre petit robot se dandiner sous vos yeux (et moi admirer mon fiston s’émerveiller :))

BoB le bipède

BoB le bipède

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

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

Mag
18

DIY – Thermomètre à tube Nixie

arduino, AVR, diy, Électronique, General, haut voltage, planet, Programmation Commenti disabilitati su DIY – Thermomètre à tube Nixie 

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

Feb
11

DIY – Compteur geiger, dosimètre

arduino, diy, Électronique, haut voltage, idées à la con, Non classé, planet, radioactivité Commenti disabilitati su DIY – Compteur geiger, dosimètre 

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 :


media

Le code source du programme :  Dosimetre.pde

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 :


media

Le code source du programme :  Dosimetre.pde

Dic
13

DIY – Shield multiplexeur pour Arduino

arduino, diy, Électronique, Non classé, planet, Programmation Commenti disabilitati su DIY – Shield multiplexeur pour Arduino 

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

Ott
15

DIY – Mini Fraiseuse de bureau pour PCB

arduino, CNC, diy, Électronique, Non classé, planet Commenti disabilitati su DIY – Mini Fraiseuse de bureau pour PCB 

C’est un projet au long cours que je vous présente ici. Fabien avais besoin d’une petite fraiseuse pour usiner des PCB maison, de mon coté, je me demandais à quel point il était possible de miniaturiser ce type d’outils, et d’en réduire les coûts.
Le declic : Le déclic lui à eu lieu suite à une formation à l’utilisation d’une découpeuse laser. En effet, cette machine permettait d’atteindre une précision remarquable lors de la découpe, ainsi que de faire des angles droits sans les problèmes d’arrondis habituels lors des découpes à la fraiseuse. Là, en voyant ça, ça a fait tilt : c’est comme ça qu’il fallais fabriquer cette fraiseuse ! Pour tout dire, je n’en ai pas dormis de la nuit, commençant déjà à imaginer les plans. D’ailleur, au bout d’un moment, j’ai finit par me relever, histoire d’aller dessiner tout ça et pouvoir enfin me libérer l’esprit (3h du matin quand même ^^)
Le lendemain, je soumet mes plans à Fabien, qui est tout de suite séduit par l’idée :
Construire une micro fraiseuse, entièrement en contreplaqué emboîté, d’une surface inférieure à une feuille A4 de manière à pouvoir tenir facilement sur un bureau, et étant capable d’usiner des circuits au format europe (10x16cm).

Commence alors un gros travail de dessin industriel, à base de logiciel libre (librecad). Le procédé de découpe laser nous autorise à ne dessiner que les découpes, donc simplement en 2d. Après une première version sortie, on se rend rapidement compte que tout ne peut pas être anticipé facilement, et que si l’on continue simplement en 2D, on risque de devoir sortir beaucoup de prototypes avant d’arriver à une version correcte. Nous avons donc utilisé SolidWorks, uniquement pour faire l’assemblage de nos pièces, et ainsi valider les différentes jointures.

L'assemblage virtuel

L’assemblage virtuel

Le premier prototype sorti nous avais enchanté par la qualité de la découpe : C’était beau, c’était pro ! Malheureusement pour nous, le second résultat était déjà nettement moins réjouissant. En fait, sous la dénomination « contreplaqué » une grosse quantité de variantes, dans les plaquages, les colles, et les remplissages. Et en achetant le meme bois, chez le même fournisseur, nous avons eu la malchance de tomber sur deux séries différentes, avec un rendu complètement différent. Là où la première se découpait bien, avec des bords nets, la secondes brûlait, et nos assemblages se transformaient en petits tas de charbons. A force de recherches, on a fini par comprendre qu’il fallait du contreplaqué « tout okoumé », c’est à dire dont l’âme est également en okoumé, et non pas en peuplier comme c’est souvent le cas.

Le deuxième prototype

Le deuxième prototype, on vois les traces de brûlé.

Concernant la partie mécanique, étant donné qu’elle est destinée au fraisage de pcb, peu d’efforts seront nécessaires, inutile donc de partir sur de gros moteurs. Nous avons donc utilisé des moteurs Nema11, qui offrent un couple largement suffisant pour une taille ridicule.

Le moteur nema11

Le moteur nema11

Les guidages linéaires se font via des douilles à bille glissant sur des stubs acier, l’entraînement est lui réalisé via une vis trapézoïdale.

La vis trapezoidale

La vis trapézoïdale et son écrou

Maintenant qu’on a les différentes pièces découpées, et qu’on a les différentes parties mécaniques, on peut commencer l’assemblage.

L'axe des X

L’axe des X

L'axe des X

L’axe des X

Axe des X vue d'ensemble

Une vue d’ensemble

Reste maintenant à voir ce que ça donne, une fois motorisé.

media

On remet ça pour l’axe de Y, toujours selon le même procédé, ainsi que l’axe des Z. Comme on est du genre un peu impatient, on a fait un premier essai, avec uniquement l’axe X + Y, et en remplaçant la fraise par un stylo. Autant dire qu’on est plutôt satisfait de ce premier résultat :)

Premier tracé sans l'axe des Z

Premier tracé sans l’axe des Z

Concernant le pilotage de la CNC à proprement parler, on utilise une carte Arduino Uno, sur lequel est installé Grbl (pour l’interprétation du gcode). La partie puissance est confiée à 3 modules pololu A4988, le tout refroidit par un ventilateur de PC (on n’a pas mis de radiateur sur les pololu, et on va en avoir besoin).

La fraiseuse assemblée

Vue d'ensemble avec l'électronique

Vue d’ensemble avec l’électronique

Le fraisage à proprement parler sera confié à un moteur de mini-perceuse pour lequel je disposais des bons accouplements d’arbre, avec un mandrin de serrage. Malheureusement, il était assez ancien, et on sentait au fur et à mesure de nos tests que la fin approchais. Il a finalement finit par rendre l’âme, et nous avons du trouver une autre solution. Nous l’avons remplacé par un moteur du même type, un peu plus petit, malheureusement l’arbre n’était pas au même diamètre. Heureusement, Fabien a réussi à nous bricoler un couplage à partir du système Dremel.

Premier essai de fraisage

Premiers essais de fraisage

Malheureusement pour nous, tout n’est pas allé comme sur des roulettes. Premier problème rencontré, l’Arduino se plante en plein milieu d’usinage (cf la photo du dessus). Quelques recherches plus tard, on trouve la cause (et donc la solution), sur certain déplacements (les 3 axes en même temps), notre alim ne suit plus. On met une alim plus puissance, et ça roule :)
En revanche, un autre problème plus bloquant se profile : les vibrations. En effet, le moteur utilisé n’est pas vraiment prévu pour cet usage, et vibre énormément. Pas sur son support, mais l’axe à l’intérieur de sa cage. Résultat, les premiers traits se passent bien, mais le temps aidant, on se retrouve à usiner un trait de 3mm d’épaisseur avec une fraise de 0.1mm :(
En revanche la structure en bois nous a convaincu : elle est suffisamment rigide pour que l’usinage se passe bien, et en cas de fausse manip (plantage de fraise à cause d’un mauvais zéro par exemple), l’ensemble plie, mais ne casse pas !

Où en est-on aujourd’hui ?
Le problème des vibrations n’est malheureusement toujours pas résolu. On cherche une solution permettant de coupler un axe moteur qui soit fiable, peu coûteuse, et qui limite au maximum les vibrations. De la meme manière, on recherche un type de moteur (un spindle), dont la taille soit adapté à notre fraiseuse, et surtout à un prix raisonnable. On en a en effet trouvé, mais à 500€, ce qui correspond au prix de la fraiseuse complète. Si des fois vous avez des idées, vous êtes les bienvenus ! :)

Edit : toutes les photos et vidéos du projet sont disponible ici

Ott
08

DIY – Horloge binaire, shield arduino

arduino, diy, Électronique, Non classé, planet Commenti disabilitati su DIY – Horloge binaire, shield arduino 

Et beh, s’il y a bien un montage qui m’a fait c…. a mis du temps à être au point, c’est bien celui-là ! Souvenez-vous, la première version date de là : Horloge binaire partie 1

C’est à ce genre d’occasion qu’on se rend compte qu’entre un prototype qui fonctionne, et une version finalisée reprenant les différentes contraintes (espace disponible, coût, concommation, etc…) il y a beaucoup de travail.

L’idée est donc d’avoir un shield arduino permettant de piloter un panneau de LED de manière à afficher l’heure en binaire : La colonne de droite affiche les unités des secondes sur 4 led, la suivante les dizaines sur 3 leds, la suivante les unités des minutes, etc…
Les contraintes techniques étaient « simples » : toute l’électronique doit tenir sur la taille d’un shield pour Arduino Uno, l’affichage étant quand à lui déporté sur un autre circuit. Le montage ne doit pas consommer de manière excessive car il peut être amené à fonctionner sur pile, et l’heure ne doit pas connaitre une trop grande dérive.

Il a finalement fallu que je reparte à zero par rapport à la version précédente, le circuit étant très difficilement routable sur les dimentions d’un shield, et la dérive temps un poil trop importante au final (mais raisonnable tout de même, c’est surtout l’encombrement du circuit qui a joué).

Schema horloge binaire

Cliquer pour télécharger le schéma en PDF

La base temps à 1Hz faite par un quartz et un diviseur de fréquence a été remplacé par un MAX1302 de chez maxim, avec son quartz, ce qui fait déjà un sérieux gain de place.
L’affichage des LEDs est géré comme s’il s’agissait d’une matrice de LED, par multiplexage : un 74HC595 envoi les 8bits de chaque ligne (seuls 6 sont utilisés en réalité), le choix des lignes se fait via les 4 transistors. Les valeurs des résistances est de 220 ohms pour chaque.
Les transistors et le HC595 arrivent sur des barrettes sécables, permettant de relier le shield au panneau de LED via un cable souple de 10 fils  (14 si vous déportez les boutons de réglage en façade)

Typon horloge binaire RTC

Cliquer pour télécharger le typon en PDF

Placemen des composants

Placement des composants horloge binaire

Pour la façade, comme je l’ai dit, les LEDs seront en matrice, le schéma n’est donc pas très compliqué, et le typon non plus :

schema facade horloge binaire RTC

schema façade horloge binaire RTC

Typon facade horloge binaire RTC

Cliquer pour télécharger le typon en PDF

Pour la réalisation de la façade, seules les cathodes sont soudés au circuit, les anodes sont pliées en surface et reliées entre elles (les pistes rouges sur l’image ci-dessus)

La gestion de l’horloge et de l’affichage se fait ensuite par un petit programme arduino. Si vous regardez le code de près, vous constaterez quelques « bidouilles » logicielles pour remédier aux contraintes techniques : les colonnes ne sont pas dans l’ordre logique du 74HC595, mais inversées 2 par 2, pour des facilités de routage.

Horloge_binaire_code_source

Et voilà le résultat :

Horloge binaire : le résultat

Horloge binaire : le résultat

(La feuille est là simplement pour pouvoir prendre les LEDs en photo sans effets de halo dans l’objectif…)
Et pour ceux qui veulent un petit apperçu du fonctionnement, voici la vidéo !

Vidéo Horloge binaire



  • Newsletter

    Sign up for the PlanetArduino Newsletter, which delivers the most popular articles via e-mail to your inbox every week. Just fill in the information below and submit.

  • Like Us on Facebook