CNC : dernières améliorations

Dans le précédent article j’ai décrit comment j’avais remplacé tout l’électronique de ma petite CNC pour régler des problèmes de fiabilité/stabilité.

Cette fois-ci, on va s’attacher à régler 4 autres problèmes :

  • La machine vibre quand même beaucoup (elle est posée directement sur mon plan de travail en chêne). Ca peut avoir un impact sur la précision, mais c’est surtout le bruit qui me gène.
  • Le plan de travail de la machine en aluminium n’est pas tout à fait plan, j’ai constaté 1 mm d’écart entre le bord gauche et le bord droit. Lors de gravure déco sur bois, ce n’est pas très gênant, mais pour graver des PCB, où la couche de cuivre à retirer est très fine, ce n’est pas acceptable.
  • La machine ne peux pas percer ou fraiser complètement la matière sous risque d’endommager la fraise et le plan de travail en aluminium.
  • Le système de fixation vendu avec la machine est simplement une horreur à utiliser.

(suite…)

Ma petite CNC est arrivée !

J’y pensais depuis quelques temps, j’ai franchis le pas et j’ai commandé une petite CNC !

CNC signifie Computer Numerical Control, ce qui, en français, donnerait machine-outil à commande numérique, ou plus littéralement « commande numérique par calculateur ».

Alors qu’une imprimante 3D dépose de la matière en partant du bas de l’objet, la fraiseuse CNC va retirer de la matière en partant du haut de l’objet. Mais si souvent on y fixe une fraise pour faire de l’usinage, on peut aussi y attacher un foret pour réaliser des perçages très précis, ou encore un laser pour « dessiner » sur du bois ou du liège, voir découper certains matériaux.

On peut aussi l’utiliser comme graveuse (sur bois, plexi, alu…). Et l’un des usages qui m’intéresse le plus : la gravure de PCB ! Je ne réalise pas souvent des PCB, mais à chaque fois, avec la gravure chimique, c’est tout un chantier dans la salle de bains, les produits perdent leur efficacité avec le temps, on ne peux pas s’en débarrasser simplement, bref, la gravure m’ira très bien pour mes besoins 🙂

(suite…)

On y coupera pas : le hand spinner imprimé en 3D

Allé, on n’échappera pas à la tendance du moment : le hand spinner (ou fidget spinner)

Bon, et c’est aussi l’occasion de redémarrer l’imprimante 3D qui commençait sérieusement à prendre la poussière après plus d’un an de repos. J’espère retrouver un peu de temps pour avancer sur des projets plus sympa rapidement (notamment le projet R.I.P.E.R.).

En attendant, voici 2 hand spinners, sortis tout droit du Thingiverse ! Le premier à 3 branches (le modèle par ici) :

Et maintenant voici le Cat Spinner 😉 (modèle par ici) :

On finit avec une petite vidéo de tout ça en action 🙂

 

En bonus, une petite astuce : les roulements à billes sont gavés d’huile ou autres graisses qui génèrent beaucoup de frottements et qui empêchent de longues rotations. Si les roulements sont vieux, ils peuvent être encrassés. Pour obtenir des roulements efficaces, il suffit de les laisser tremper quelques minutes dans un dissolvant (alcool, acétone…) qui virera le gras et les saletés, puis les rincer et bien les sécher. Ils devraient maintenant beaucoup mieux tourner ! Attention tout de même, ils s’useront plus rapidement s’ils tournent à sec, donc ne pas hésiter à ajouter une goutte d’huile (ce que je n’ai pas fait…).

BB-8 DIY (contrôlé par la Force ;)

Après quelques mois passés à bosser sur un gros projet, je m’offre une petite pause de fun pour un petit BB-8 fait maison, parce qu’il est vraiment trop mignon 😉 (vidéo disponible à la fin de l’article).

A la base, je voulais juste faire une une figurine et puis je me suis dit que ça serait sympa de l’animer un peu. Alors il ne se déplace pas, mais il tourne la tête, émet des sons et détecte les obstacles devant lui : un simple passage de la main devant lui déclenchera différentes animations.

Ci-dessous, l’ensemble des éléments utilisés (électronique, pièces imprimées, capteur ultrasons, servomoteur…). Le modèle 3D n’est pas de moi, il vient d’ici. J’ai fait des trous dans le corps pour pouvoir passer l’axe de la tête et imprimé des joints pour assembler le tout (+ le support).

Après ponçage, enduit, peinture et vernis, il ne reste plus qu’à assembler le tout.

L’image suivante représente le « cerveau » de BB-8 : un simple Arduino Nano, un buzzer et 3 borniers à visser (alimentation et capteur ultrasons).

Le code est disponible ici. C’est pas super propre mais bon, ça fait l’affaire. J’ai eu de petits soucis d’incompatibilité entre différentes librairies car elles utilisaient les mêmes interrupts : Servo, NewPing, Tone (ou même NewTone pour éviter le conflit avec NewPing). Au final, je n’utilise aucune librairie pour piloter le buzzer).

Vue du boitier une fois tous les composants en place :

Le servomoteur est fixé au centre du boitier :

Pour prolonger l’axe du servomoteur, j’ai utilisé un tube (qui remontera jusqu’à la tête) et imprimé 2 joints qui s’emboîtent dans le tube de PVC : le premier a un emplacement prévu pour intégrer le connecteur à la tête du servomoteur (en noir, que j’ai découpé d’un support vendu avec le servo) et le second qui permet de faire la jonction avec la tête).

Au passage, le socle au dessus du servo est constitué de 2 pièces : la première permet de surélever le support au dessus des vis du servo et le second est un cône qui donnera l’illusion d’une dune (le sable a été saupoudré sur une couche de colle à bois) parce qu’on rencontre BB-8 dans le désert ;).

Aperçu du système de rotation de la tête :

A l’arrière : un interrupteur et un connecteur USB (le robot peut fonctionner sur USB ou sur pile, au choix) :

Et voilà !

Pour finir, une démonstration de notre petit BB-8 en vidéo 🙂

 

Tous les fichiers sont disponibles ici (modèles Sketchup, fichiers STL et code pour le Arduino Nano). Les fichiers STL du robot en lui-même sont à récupérer sur Thingiverse comme indiqué plus haut.

Tourelle Pan Tilt (SPT200) et contrôleur de servos Adafruit i2c

Aujourd’hui, on va regarder ce qui permettra de faire le « cou » de mon robot : une tourelle articulée qui permettra au robot de bouger sa tête de droite à gauche et de haut en bas.

L’ensemble est constitué :

  • d’une tourelle SPT200 de chez Servocity dans sa déclinaison pour servomoteurs Hitec (commandée chez Robotshop pour 53€, ce qui est très cher pour ce que c’est)
  • de 2 servomoteurs Hitec HS-645MG

Le tout sera piloté par un contrôleur de servomoteurs de chez Adafruit (i2c), capable de gérer 16 servomoteurs. Pour le moment on en utilisera que 2, mais j’en utiliserai davantage pour les bras.

J’ai réfléchis à différents systèmes que j’aurais pu fabriquer moi-même (j’avais pensé à des systèmes d’axes entraînés par des poulies/courroies etc.). Finalement, je n’aurai pas mieux fait que le SPT200, nous verrons pourquoi.

Il arrive en pièces détachées (le montage était déjà commencé sur cette photo) :

Alors honnêtement, la notice n’est pas des plus claire concernant les vis à utiliser. Toutes les dénominations de vis sont en anglais et en pouces, ça n’aide pas à s’y retrouver. Au final, en faisant preuve de logique et en lisant la notice entièrement avant de commencer, on s’en sort. Les vis noires (à part la très longue) servent à visser dans le plastique de la structure (celles à tête plate servent pour le plateau).

Attention également lors du montage des servomoteurs à s’assurer du bon positionnement de leurs axes avant de les fixer ! J’ai identifié la position correspondant au milieu de course de chaque axe pour l’orienter de la bonne façon.

Malgré son prix, que je trouve très élevé quand on voit la liste éléments qui compose ce kit, il est très bien pensé. La plupart des systèmes de tourelles que l’on trouve sur le marché à des prix raisonnables sont faits pour supporter des charges très faibles car ce sont les axes des moteurs qui supportent tous les efforts. Avec le SPT200, l’effort est porté sur les des roulements à billes intégrés à la structure et les moteurs ne font qu’entraîner les axes, sans subir de contraintes susceptibles d’abîmer les moteurs. Sur les photos précédentes, et les 2 suivantes, on voit où et comment sont placés ces roulements à billes.

Côté électronique, je ne souhaitais pas piloter directement les servos avec l’Arduino (qui aura déjà beaucoup d’autres choses à gérer), j’ai donc opté pour une carte contrôleur de chez Adafruit qui se connecte sur le bus i2c. Un tutorial est disponible ici et la librairie pour Arduino ici.

J’ai écris un programme de test, il est disponible ici et s’inspire des exemples livrés avec la librairie.

Une fois encore, attention ! Les positions MAX et MIN des servos correspondent à mon montage. Exécuter un programme dont les limites des servos n’ont pas été vérifiées avant peut provoquer de la casse : le servo utilisera tout son couple (et donc beaucoup de courant) pour atteindre la position qui lui a été assignée. Si celle-ci dépasse les limites physiques de déplacement (parce que le plateau est en butée sur la structure de la tourelle par exemple), alors les engrenages dans le servos pourraient casser, si ce n’est pas la structure ou même l’alimentation qui ne tient pas la forte demande en courant. Pour ce faire, il faut y aller pas à pas, en assignant une valeur fixe au servo pour déterminer son MAX et son MIN (350 correspond à peu près au milieu chez moi, c’est une valeur sûre je pense : pwm.setPWM(0, 0, 376)).

Cela étant dit, voici une démo :


Bon, là c’est facile, la charge ne pèse rien. Mais mon robot aura une tête bien remplie, probablement autour de 400g d’après mes estimations. On va donc lui coller une charge de 450g et voir ce que ça donne.

Nouvelle démo, plus chargée. Et ça marche très bien ! 🙂

Montage du chassis Iron Man-4 de Keenlon

Je viens de recevoir ma première commande passée chez Robotshop, et en particulier le châssis tank Iron Man 4 de Keenlon (ou Keenon, je ne sais toujours pas).

La fiche technique du châssis est disponible sur le site de Robotshop, ici.

  • Roues en aluminium et chenilles en nylon
  • 2 puissants moteurs à engrenages métalliques, avec de l’espace pour 2 encodeurs
  • Deux roulements dans chaque roue
  • Capacité de transport jusqu’à 4,5 kg (10 livres)
  • Moteurs de 3 à 9V (courant de bloquage : 4 A par moteur, courant hors charge : 300 mA par moteur)
  • Dimensions : 168 × 226 × 90 mm
  • Poids : 1,1 kg

Revue du montage et premières impressions.

Contenu du colis : on retrouve tout le nécessaire, 3 clés pour le vissage et une documentation.

Montage des roulements (chaque bloc de roulement est déjà pré-assemblé).

Le montage des moteurs est aussi très facile.

Ajout des engrenages et de l’étage supérieur. A noter que contrairement à ce que décrit la notice, les 2 blocs d’engrenages sont déjà pré-assemblés. J’ai dû limer légèrement les barres des moteurs pour réussir à fixer les engrenages. Pour la fixation de la partie supérieure, il n’y a pas d’écrou, le pas-de-vis est directement intégré au châssis.

Une tige fine en acier permet de refermer les chenilles. Pour le moment je ne les ai pas enfoncées à 100% (j’aurai sans doute besoin de re-démonter le châssis).

Montage terminé avec l’ajout de la façade avant (à noter : des écrous différents de ceux de la notice).

Le châssis semble de bonne qualité et solide. Quelques imperfections sont présentes mais faciles à corriger. J’ai un doute sur le matériau utilisés pour les 2 engrenages, je ne sais pas dire si c’est de l’alu ou du plastic, on verra à l’usage. Concernant les chenilles, la fixation avec la tige de fer est efficace, mais une fois les chenilles installées, je ne suis pas sur qu’on puisse les démonter de nouveau (l’extrémité de la tige est rugueuse, une fois insérée à fond, ces aspérités se bloquent dans les chenilles).

Pour finir, une courte vidéo d’un moteur en action :

Robot à base d’Arduino, Bluetooth et pilotable avec un téléphone (WP8)

Pas d’articles depuis un moment, mais je n’ai pas chômé pour autant !

Après avoir imprimé un peu tout et n’importe quoi, il était temps d’utiliser la bête pour imprimer un châssis de robot. C’était quand même le but initial 🙂

J’ai fait joujou avec des microcontrôleurs Picaxe, je voulais passer sur du Arduino (hardware Open Source), techno beaucoup plus répandue et avec une très grosse communauté.

Pour découvrir l’Arduino, un objectif simple : fabriquer un petit robot roulant, capable de se déplacer de façon autonome mais également d’être contrôlé à distance via un périphérique mobile (téléphone Lumia 920 sous Windows Phone 8 dans mon cas). Il utilise un télémètre à ultra-sons pour détecter les obstacles et une photorésistance pour détecter les variations de lumières.

Finalement, la prise en main de l’Arduino est un jeu d’enfant. On n’est pas dépaysé après avoir utilisé du Picaxe (qui au passage restent des petits microcontrôleurs super, je n’ai pas vraiment de reproche à leur faire !).

Le prototypage de la partie électronique a été très rapide.

OLYMPUS DIGITAL CAMERA
Voici à quoi le robot devrait ressembler (modélisation Sketchup).

00a_rendu3d

Ci-dessous, la vue « explosée » du robot où l’on voit bien les différentes pièces imprimées qui le composent.

00b_exploded_view

Quelques heures plus tard, tout est imprimé 🙂

OLYMPUS DIGITAL CAMERA

J’en profite pour préciser quelques astuces. J’ai remarqué que les pièces imprimées, bien que très solides, présentent une faiblesse entre les couches. Quand une pièce « casse », ce n’est jamais une vraie cassure, mais un décollage de 2 couches superposées. Par exemple, quand les parois d’une boîte sont fines, elles se décollent du socle assez facilement.

Pour pallier ce problème, j’ai pris l’habitude de systématiquement consolider les jonctions de plans avec une petite « pente ».OLYMPUS DIGITAL CAMERA

Quelques bandes en relief  (3 mm d’épaisseur) sur le fond renforcent aussi la structure. Des emplacements sont prévus pour glisser des écrous. Cela permettra d’assembler les différentes parties avec des vis. Nophead utilise cette astuce pour les pièces de la Mendel90. C’est parfait pour avoir un beau rendu, une bonne solidité  et un assemblage facilité.

OLYMPUS DIGITAL CAMERA

Même principe de renforcement pour le pare-chocs. Ici, on voit bien que les contraintes appliquées sur les zones où la paroi est la plus fine, sont fortement absorbées par la « pente ».

03_parechocs

Un traitement d’enduit en bombe, suivi d’un léger ponçage et d’une couche de peinture en bombe permet de lisser convenablement les pièces et d’avoir un rendu plus « pro ».

OLYMPUS DIGITAL CAMERA

Avant/Après lissage, ponçage et peinture.

05_avant_apres_enduit

Fixation de la roulette sur son support imprimé, toujours avec le système des écrous glissés dans la pièce.

06_roulette_centrale

Pour que l’électronique soit bien fixée à l’intérieur, j’ai réalisé un petit socle aux dimensions intérieures du robot. 3 écrous viennent assurer que le tout sera bien bloqué grâce à des vis sur la paroi extérieure du robot.

07_support_arduino

L’ensemble de l’électronique sur son support.

  • 1er étage : la carte Arduino
  • 2ème étage : carte de contrôle des moteurs
  • 3ème étage : carte custom pour connecter avec un minimum de fils  l’électronique au reste du robot (piles, LEDs, module Bluetooth, moteurs, etc.)

OLYMPUS DIGITAL CAMERA

Toutes les pièces sont peintes, une couche de vernis en bombe a été appliquée pour protéger la peinture.

OLYMPUS DIGITAL CAMERA

On peut passer à l’assemblage !

OLYMPUS DIGITAL CAMERA

Supports des moteurs et des piles.

OLYMPUS DIGITAL CAMERA

Tout est maintenant raccordé ! Les écrous sont en place dans les 4 coins… on peut refermer le petit gars 🙂

OLYMPUS DIGITAL CAMERA

Tadaaaammm !

OLYMPUS DIGITAL CAMERA

Des ouvertures ont été prévues pour le port USB et l’extrémité du module Bluetooth, histoire de ne pas affaiblir le signal. Des aérations permettent d’évacuer la chaleur (en particulier celle venant de la carte des moteurs).

OLYMPUS DIGITAL CAMERA

Sous tous les angles :

15_sous_tous_les_angles

A côté de ça j’ai développé une appli Windows Phone 8 pour contrôler le robot. Depuis cette version, Microsoft a laissé un peu plus de liberté aux développeurs pour manipuler le Bluetooth du téléphone. Voici donc la réplique d’une magnifique manette de Nintendo 😀 Le pavé directionnel dérive d’une librairie Open Source.

Fonction de chaque bouton :

  • Start : connexion au robot
  • Select : bascule du mode autonome au mode piloté via Bluetooth
  • A : Allume/éteint les feux
  • B : Klaxon

OLYMPUS DIGITAL CAMERA

Pour finir, voici la bête en action !

Boitier et support de bobine

Pour terminer l’imprimante, il manquait encore 2 choses : un (vrai) support pour les bobines de filament et le boitier.

OLYMPUS DIGITAL CAMERA

Jusque là, j’utilisais un manche d’aspirateur pour tenir les bobines de plastic. La rotation de la bobine n’était pas vraiment fluide, le filament frottait contre le haut de l’imprimante, et il n’y avait pas de filtre à poussière. J’ai donc conçu un support mieux adapté.

Tout d’abord, 2 pièces qui se fixeront des 2 côtés de la bobine et qui contiennent un roulement à billes.

OLYMPUS DIGITAL CAMERA

Le reste du support est constitué de plaques de MDF 12 mm, de pièces imprimées et quelques roulements à billes.

OLYMPUS DIGITAL CAMERA

De l’espace est prévu pour insérer un filtre (morceau d’éponge) autour du filament.

OLYMPUS DIGITAL CAMERA

Le tuyau de sortie pour le filament sera serré grâce à ce système de vis/écrou.

OLYMPUS DIGITAL CAMERA

Voici le support une fois en place à cheval sur les 2 montants arrière. On voit également le filtre (2 morceaux d’éponge qui prennent le filament en sandwich).

OLYMPUS DIGITAL CAMERA

J’ai prévu aussi un petit système pour maintenir l’entrée du filament au centre et empêcher le filtre de sortir quand ça rembobine.

OLYMPUS DIGITAL CAMERA

Une fois la pièce en place…

OLYMPUS DIGITAL CAMERA OLYMPUS DIGITAL CAMERA

Une vidéo est dispo à la fin de ce billet.

La 2ème étape concerne le boitier. Ca me paraissait assez utile pour plusieurs raisons :

  • Protection contre la poussière
  • Légère réduction du bruit
  • Effet « chambre chaude »
  • Esthétiquement, c’est plus clean

Le boitier peut-être retiré sans problème, il n’est pas du tout fixé, simplement posé au-dessus de l’imprimante et ne couvre pas l’arrière de l’imprimante, pour éviter une surchauffe de l’électronique.

OLYMPUS DIGITAL CAMERA

Des vitres en plexiglas permettent de surveiller l’impression.

OLYMPUS DIGITAL CAMERA

Et de nuit, c’est joli 😉

OLYMPUS DIGITAL CAMERA

Pour terminer, voici une vidéo de la machine en action,  en particulier sur le support de bobine.

Les joies de l’étalonnage

Deux semaines plus tard, me revoilà. J’avais réussi a obtenir des impressions très belles. Mais j’ai très vite déchanté quand il s’est agit d’imprimer des pièces de précision : les objets imprimés n’étaient pas aux bonnes dimensions ! Par exemple, pour une boite de 20 mm x 20 mm x 10 mm, j’obtenais une boite de 21.4 mm x 20.6 mm x 10 mm.

J’ai fait pas mal de tests…

OLYMPUS DIGITAL CAMERA

Plusieurs choses à retenir :

  • lors du calibrage, j’avais beaucoup trop resserré mes courroies
  • Mes courroies étaient HS. Je ne sais pas s’il s’agissait de courroies de mauvaise qualité, ou si je les ai abîmées en les tendant trop. En tout cas, j’avais un peu de colle a bois qui avaient coulé sur celle de l’axe X et génait un peu les déplacements, et celle de l’axe Y présentait des marques de pliures douteuses. Bref, j’ai remplacé les 2, je ne les ai pas trop tendues et les résultats ont été beaucoup plus précis !
  • Un pied à coulisse digital est indispensable pour bien étalonner l’imprimante

OLYMPUS DIGITAL CAMERA

Une fois la mécanique fiabilisée, il restait quelques écarts, les dimensions n’étaient pas encore tout à fait parfaites. L’étape suivante consiste donc à étalonner l’imprimante en mettant à jour son firmware pour lui dire, pour chaque axe, combien de pas moteur sont nécessaires pour un déplacement réel de 1 mm. J’ai perdu beaucoup de temps à trouver comment se faisait l’étalonnage. J’ai tatônné et obtenu de très bons conseils via le forum francophone RepRap. Aussi je ne détaillerai pas tout le processus ici et me contenterai d’un lien vers un excellent article qui explique tout cela très bien :

Le blog de Jean-Philippe Abraham, que je remercie chaleureusement 🙂

Au final, ce qui reste peut-être le plus simple est d’imprimer quelques grandes pièces pour faire des mesures précises et calculer les nouvelles valeurs à entrer dans le firmware de l’imprimante. Voici quelques pièces qui m’ont aidé à étalonner et calibrer ma RepRap.

OLYMPUS DIGITAL CAMERA

Pour finir, le soulagement, enfin des dimensions correctes ! Contrairement à la photo, le meilleur endroit pour prendre des bonnes mesures est de se positionner sur les dernières couches imprimées.

OLYMPUS DIGITAL CAMERA

Calibrage de l’axe Z

Le but est que l’imprimante sache exactement à quelle hauteur est le plateau.

Pour ce faire, on utilisera un objet en forme de tube, solide et dont on pourra connaître le diamètre. Une barre d’acier aurait été parfaite, mais je me suis arrangé d’une pile LR6.

Une fois encore, nous utiliserons Pronterface. Il faut d’abord remettre l’imprimante à sa position de départ grâce au bouton « Home » ( => contre les interrupteurs de fin de course).

OLYMPUS DIGITAL CAMERA

La commande M114 dans Pronterface permet de connaître la position de chaque axe. Il nous faut suivre celle de l’axe Z. On descend, petit à petit, l’axe jusqu’à ce que la buse touche juste la pile (la faire rouler sous la buse entre chaque cran jusqu’à ce qu’elle soit juste bloquée).

OLYMPUS DIGITAL CAMERA

 

On relève la position de l’axe Z via la commande M114. A cette valeur, on soustraie la hauteur (diamètre) de la pile et on obtient un résultat. Ce résultat, on va le soustraire de la valeur de Z_HOME_POS dans le fichier « Configuration.h » du firmware. On soustraie encore 0.2 mm (expansion de la taille de la buse quand elle chauffe). Nous avons la nouvelle valeur de Z_HOME_POS. On reflash le Firmware dans la foulée.