Mot-clé - Arduino

Fil des billets - Fil des commentaires

Vendredi, mai 17 2013

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

Lundi, mars 25 2013

Des nouvelles de Bleuette

Point presse

Tout d'abord, un point people, l'information du développement de Bleuette à plutôt bien circulée et Bleuette s'est retrouvée sur plusieurs sites importants :

La vidéo sur Vimeo à été vue plus de 6000 fois.

Plutôt plaisant de voir que ça intéresse du monde mais j'attends avec grande impatience le moment ou un autre Bleuette pointera le bout de son nez en PLA... ;)

Évolutions

Nouvelle carte fille

La shield Bleuette permet le pilotage des servos et le contrôle de la tension / courant consommé par les servos, pour pouvoir ajouter des capteurs multiples, il est tout à fait possible d'utiliser les broches libres des ports de l'Arduino mais il n'y en a pas assez pour tous les capteurs voulus sur Bleuette, du coup, le besoin d'une nouvelle carte d'extension s'est fait sentir et voici ce qu'elle permet :

  • 8 entrées supplémentaires multiplexées utilisant que 4 entrées / sorties (3 d'adressage et une sortie)
  • Connection pour une carte GY-27 contenant un accéléromètre et un compas
  • Un module Bluetooth JY-MCU
  • Une connection pour une guirlande de led RGB à base de LPD8806
  • Un mosfet pour pouvoir piloter un élément de puissance (je ne sais pas vraiment quoi pour le moment...)

Voici le schéma de principe et le PCB associé (cliquez dessus pour agrandir) :
Schéma de principe de la carte d'extension de Bleuette PCB de la carte d'extension de Bleuette

Le schéma de principe au format est Eagle se trouve par ici : sensor.sch et le PCB : sensor.brd

Comme vous pouvez le voir, le PCB n'est pas dense du tout, du coup, il est simple à réaliser avec des moyens modestes.

Mécanique

Pas de grande nouveauté pour la partie mécanique sauf pour les pieds, ces derniers ont été imprimés en PLA Flex permettant d'avoir un peu de souplesse et trempé dans du PlastiDip afin d'avoir un meilleur grip en plus d'un super rendu !

Avant trempage dans le PlastiDip et après :
Les pieds de Bleuette

Tous les éléments d'un pied de Bleuette, on aperçoit l'interrupteur poussoir, le piston et le cylindre et le pied recouvert de PlastiDip :
L'ensemble des pièces constituant un pied de Bleuette

Le tout assemblé :
Vue d'un pied

Le fichier source au format OpenSCAD des pieds de Bleuette est disponible, comme tout le reste de Bleuette sur GitHub / Bleuette.

Le cerveau

J'ai subi beaucoup de soucis avec la carte Arduino, notamment des problèmes de programmation, m'obligeant à recommencer la phase 3-4 fois de suite des fois...
Tous ces ennuis m'ont conduit à radicalement changer ma manière de développer avec Arduino, notamment en utilisant Ino, un outils en ligne de commande pour compiler, programmer, etc, bref, un remplaçant du mal aimé environnement par défaut d'Arduino.

Les problèmes de liaison avec la carte Leonardo m'ont également conduit à une solution radicale, j'ai embarqué un Raspberry Pi dans Bleuette auquel est relié la carte Leonardo, ainsi, c'est le Raspberry Pi qui programme la carte Arduino, ça complique un peu mais au moins, je suis moins gêné...

À force d'utiliser ce système, ce qui devait arriver arriva et j'ai donc décidé de créer une carte fille pour le Raspberry Pi qui permettra de piloter Bleuette directement avec cette dernière.
Bien entendu, je ne laisse pas tomber pour autant le dèveloppement sur Arduino, disons que celui ci sera la version simplifiée.

Bleuette embarquant un Raspberry Pi :
Bleuette embarquant un Raspberry Pi

D'ici peu, je publierai un article expliquant toutes les caractéristiques de la carte d'extension pour Raspberry Pi.

Mercredi, février 20 2013

DIY – Bobineuse à l’arrach’

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.


media

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.


media

Lundi, février 11 2013

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

Nouvelles avancées de Bleuette !

Bleuette marche

Pour commencer, voici une vidéo de Bleuette effectuant ses premiers mouvements :

Bleuette first step from hugo on Vimeo.

L'électronique

Le contrôle des servos de Bleuette (12 pour les pattes + 2 optionnels) se fait au travers d'une carte fille (shield) pour Arduino conçue pour ne pas être totalement dépendante de Bleuette, ainsi, vous pouvez parfaitement l'utiliser pour un tout autre projet.

Ses caractéristiques sont les suivantes :

  • Gestion parfaitement synchrones (voir en dessous) de 14 servos
  • Contrôle de la tension des servos
  • Contrôle du courant consommé par les servos
  • Port d'extension intégré (avec disponibilité de l'alimentation +5V et 4 entrées / sorties RA2 à RA5)

Parfaitement synchrone signifie que les impulsions à destination des servos commencent toutes au même moment avec un décalage très très faible, vous pouvez lire la documentation originale sur la carte.

Le pilotage des servos se fait en envoyant des trames de 17 octets contenant une entête, une commande et la position des servos + un checksum.

J'ai fait faire les PCB par Seeedstudio, qui fait de la très bonne qualité pour un prix très intéressant. La carte est simple à réaliser, la soudure du PIC18F452 nécessite tout de même un peu de doigté et un minium de matériel mais ça reste jouable avec du matériel amateur.

Voici une vue de la carte :
La carte électronique de Bleuette

Si vous souhaitez faire vous même la carte, rendez-vous sur cette page pour avoir la dernière version des fichiers Eagle : Pcb de Bleuette

Pour ceux qui souhaiteraient se procurer une carte (version 1.0.2), frais de port inclu pour la France métropolitaine :

  • La carte seul (sans composant) pour 6€, livraison en France
  • Le PIC18F452 programmé : 10€
  • Pour le kit complet, carte + composants soudé ou non, me contacter

Notez également que j'ai effectué des modifications récentes sur le schéma de principe et le PCB, elle est dorénavant en 1.2.1 (ajout d'un condensateur de découplage C9, des diodes zener D2 et D3 de protection sur les entrées analogiques, modification de l'interrupteur, ajout d'un pont SJ1 pour le reset).

Logiciel

La méca et l'électronique étant finies, j'ai pu attaquer le logiciel embarqué qui est de 2 sortes :

L'assembleur PIC

Rien de spécial à dire, il se trouve ici et comporte tout ce dont on a besoin pour piloter Bleuette et donc ne devrait plus vraiment évoluer...

Le code pour Arduino

Voici la structure :

Et nous avons 4 librairies :

  • Bleuette : C'est par ici que tout passe
  • Sequencer : C'est lui qui gère les sequences définies dans le fichiers sequences
  • ServoController : Pilote de la carte de contrôle de servos
  • SerialCommand : Librairie externe très pratique pour la gestion de commande via la liaison série.

Déplacer Bleuette

Pour faire bouger les pattes de Bleuette, c'est assez simple, commençons par un exemple :

bleuette.servo.set(0, 128);

Cela aura pour effet de positionner le servo 0 à sa position intermédiaire 128.

Si maintenant, on souhaite faire faire des pompes à Bleuette, on ne va pas répéter 24 fois la commande précédente pour positionner chaque patte, sinon, on ne va jamais s'en sortir ! Utilisons plutôt, une séquence :

Tout d'abord, déclarons une structure de type motion_t nommée motion_pushup :

// Push up
motion_t motion_pushup[] = {
    {
        DELAY_MIN, // Durée du déplacement courant
        {
            __, __, __, __, __, __, // Position des pattes horizontales
            UP, UP, UP, UP, UP, UP // Position des pattes verticales
        },
        NULL // Une callback qui sera appelée à chaque fin d'exéction de la position
    },
    {
        DELAY_MIN,
        {
            __, __, __, __, __, __,
            DOWN, DOWN, DOWN, DOWN, DOWN, DOWN
        },
        NULL
    }
};

Puis créons la séquence en elle même :

sequence_t seq_pushup = {
    "Push up",  // Le nom de la séquence
    2, // Le nombre de mouvement dans la séquence
    motion_pushup // La structure de déplacement que nous avons créé plus haut
};

Maintenant, nous n'avons plus qu'à appelé la séquence ainsi :

// Pour la jouer en avant
bleuette.sequencer.forward(sequences[seq]);

// Pour la jouer à l'envers
bleuette.sequencer.backward(sequences[seq]);

Voilà pour cette introduction rapide, je vous invite à regarder le code, il est vraiment simple...

Évolution en cours

La prochaine évolution de Bleuette lui donnera de vrais pieds qui lui permettront de moins glisser mais surtout, lui donnera le toucher au travers d'un petit interrupteur, ainsi, en posant une patte, il pourra s'assurer que le sol est bien en dessous...

Voici une vue de ses bouts de pattes :
Le bout de patte faisant office de capteur

La partie inférieure (la demi sphere et le cylindre extérieur) est mobile et glisse dans le cylindre plus petit dans lequel se trouve un interrupteur poussoir, c'est ce dernier qui fait office de rappel mécanique.

La partie en contact avec le sol (la demi-sphere sur l'image) sera en PLA Flex afin d'obtenir un maximum d'adhérence.

Ses 6 pattes devraient en être équipées, pour cela, un circuit intégré (4512) branché sur le port OPTION permettra de sélectionner la patte à lire via une adresse sur 3 bits, on occupera ainsi seulement 3 bits de sorties pour l'adressage + 1 bit de sortie pour connaitre l'état (patte posée ou non).

Évolutions futures

Bleuette devrait être équipé d'une liaison Bluetooth, d'un capteur magnétique afin de garder un cap lorsqu'il marche et enfin, d'une tourelle mobile avec un capteur ultrason pour détecter les obstacles devant lui et tout cela intégré dans une seconde carte fille.
Bleuette se sentant un peu à l'étroit avec Arduino, il n'est pas totalement exclu que je porte le code pour tourner sur un Raspberry Pi...

Et bien entendu, Bleuette attend impatiemment des frères et soeurs : toute contribution est la bienvenue !

Mercredi, décembre 12 2012

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

Lundi, octobre 15 2012

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

Lundi, août 6 2012

Le retour de l'hexapode Bleuette

...et cette fois ci, il n'est pas content !

Ce projet à pour but de fabriquer une bestiole à 6 pattes et de la faire marcher sans l'aide de quiconque. Pour certain d'entres vous, le nom “Bleuette” vous est peut être familier, en fait, c'est une féminisation de Bleuet, le robot de la série FX, Effet spéciaux, nous n'avons aucun rapport avec cette série mais on s'est dit que le pauvre Bleuet devait se sentir seul et qu'il faudrait lui fabriquer un congénère et puis tant qu'à faire femelle… :) extrait de la page du wiki sur Bleuette

Le projet s'est arrêté il y a quelques années faute d'avoir trouvé une solution robuste pour le pivot de chaque patte, sur notre prototype, il était réalisé en bois mais nous voulions une autre matière plus robuste. Le projet est bien sûr OpenSource / OpenHardware.

Une des première version de Bleuette

Plus d'informations sur la première version :

Le logiciel

De grosses modifications vont être faite sur la partie logiciel par rapport au plan initial, sur la première version de Bleuette, c'est une carte à base de PIC qui devait être développé from scratch et exécuter le noyau temps réel PICOS18 mais afin de simplifier la prise en main, une carte Arduino sera le cerveau de l'engin et une carte fille développée par mes soins en 2006 pour Bleuette sera utilisée pour piloter les 12 servos de manière parfaitement synchrone.

La nouvelle structure

Dans ses premières versions, Bleuette était réalisé en Plexiglas, découpé à la scie sauteuse et à la scie à chantourner, un vrai boulot, long et pénible avant de nous rendre compte des limites de cette matière : elle est cassante et se raye facilement.

Puis, nous avons pu faire découper gracieusement toutes les pièces (patte et corp) en Lexan par http://jegrave.fr/, merci Jean-Louis pour le boulot, cette matière est beaucoup plus solide, ne se casse pas et résiste incroyablement bien à la torsion mais nous n'avions toujours pas de réelle solution pour les supports de pattes autre que le bois...

Et depuis, plus rien, quelques années se sont écoulées et, depuis, l'impression 3D s'est considérablement développée, au point d'être devenue attractive pour les particuliers et intéressante pour un projet comme Bleuette, l'achat d'une l'Ultimaker à été guidé par l'arrière pensée de pouvoir enfin finir ce projet et là, plus aucun souci concernant le pivot : il sera comme toute le reste : en PLA.

Tous les plans de Bleuette ont été refait à l'aide de OpenSCAD, un dépôt GitHub à été créé à l'occasion pour partager tous les documents inérant à la fabrication du robot.

Le corps de Bleuette modélisé avec OpenSCAD
Le corps de Bleuette

Son corps étant trop grand pour être imprimé en une seule fois sur la surface de mon imprimante 3D, j'ai développé une librairie OpenSCAD qui permet de découper des pièces avec un motif en queue d'arronde (dovetail), ainsi, le corps sera réalisé en 3 tronçons qui seront emboités les uns aux autres et enfin définitivement bloqués à l'aide de tiges filetées.

Découpe en queue d'arronde du corps de Bleuette

La suite

Pour le moment, la dernière section (partie haute et basse) est imprimé, ça à pris environ 13h d'impression, j'imprime à 50mm/s pour avoir la meilleure qualité possible, 1 patte est fonctionnelle pour le moment, le design n'est pas figé encore, j'y apporte quelques corrections...

Avancement du moment avec le test de la cinématique du mouvement de la patte :
Test de la cinématique de la patte

Todo liste mécanique :

  • Correction des entretoises des pattes
  • Ajout d'un support pour une tête
  • Bout des pattes avec capteurs d'appuis

Restez connecté à Bleuette !

Il est possible de suivre l'avancée de Bleuette via différent moyen :

- page 1 de 3