Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Manufacturing Technology >> Processus de fabrication

Avenger assemblé :casque Iron Man et réacteur à arc

Composants et fournitures

Arduino UNO
× 1
Anneau Adafruit NeoPixel :WS2812 5050 LED RVB
× 1
Déploiement du capteur tactile capacitif Adafruit - MPR121
× 1
Servos (Tower Pro MG996R)
× 1
Support de 4 piles AA
× 1
Clip de batterie 9V
× 1
Câbles de raccordement (générique)
× 1

Outils et machines nécessaires

Imprimante 3D (générique)
Nous avons utilisé un Lulzbot Mini qui a parfaitement fonctionné pendant plus d'un an (sauf pour notre tête flexystruder qui a n'a jamais fonctionné :( )

Applications et services en ligne

Arduino IDE
Autodesk Netfabb
fritzing

À propos de ce projet

Avenger assemblé :casque Iron Man et réacteur à arc imprimés en 3D et contrôlés par Arduino.

Présentation et motivation :

Ma motivation derrière la fabrication de ce casque a commencé avec mon tout premier casque, que j'ai jamais fabriqué. C'était un casque Antman en carton issu de quelques vidéos que j'ai trouvées en ligne. C'était vraiment cool (étant un grand fan de Marvel), alors j'ai décidé que je voulais vraiment faire un casque Iron Man. Je venais d'assister à la National Maker Faire à Washington D.C. et tout le monde adorait le casque Antman. Cela m'a encore plus motivé à faire celui d'Iron Man. Je suis passé par plusieurs prototypes, en commençant par un autre casque en carton. Ce casque était trop petit, alors j'ai conçu mon propre casque, cette fois-ci, quand je l'ai assemblé, il ressemblait plus à une boule sur ma tête qu'à celui du film. Enfin, je suis passé à un modèle en papier. Ce modèle en papier s'est avéré fantastique, mais j'ai rencontré un autre problème. Le modèle en papier était trop fragile. J'ai essayé de le réparer mais cela ne fonctionnait tout simplement pas, alors j'ai pris la décision d'imprimer le casque en 3D. J'en ai finalement fait un qui était assez stable et aussi assez grand pour contenir ma tête et un moteur.

  • Fabrication du casque et du réacteur à arc :

L'impression 3D :

1) Le diviser en morceaux - logiciel

La première étape pour créer ce casque a été de trouver le fichier en ligne, puis de l'imprimer. Le fichier que j'ai trouvé était un casque Iron Man motorisé. Le fichier que j'ai téléchargé à partir de thingverse est composé de trois parties :la partie principale, le menton et la plaque frontale. Étant donné que les trois pièces étaient trop grandes pour la plaque de construction de mon imprimante, j'ai dû trouver un logiciel capable de découper mon casque en plusieurs parties. En cherchant en ligne, j'ai trouvé un logiciel gratuit en ligne appelé netfabb basic. J'ai téléchargé l'outil et téléchargé mon fichier dessus. Netfabb basic était très simple d'utilisation et j'ai pu découper les parties du casque. Ensuite, j'ai imprimé la pièce sur le casque principal, la mentonnière et la plaque frontale. Tout en parcourant les impressions, je scotchais les pièces ensemble et vérifiais si la taille était bonne. Lorsque toutes les pièces ont été imprimées et que 1 ½ rouleau de filament a été utilisé, j'ai eu le casque de 24 pièces.

2) Sélection de l'adhésif approprié

Le défi suivant était de trouver le bon adhésif pour coller les pièces ensemble. Pour que la colle fonctionne, elle devrait répondre à trois exigences :

  • Il devait maintenir les pièces ensemble avec un lien fort,
  • avoir un temps de durcissement rapide
  • facile à poncer.

Nous avons testé 4 types de colle différents, E6000, JB Weld KwikWeld, JB Weld Plastic Bonder et Loctite Plastic Bonder époxy. En fin de compte, nous avons fini par utiliser KwikWeld car il répondait aux trois exigences. Pour fixer les pièces, les premières étapes seraient de rendre plus rugueux les côtés qui allaient être collés. J'ai utilisé une lime pour rendre les côtés lisses rugueux jusqu'à ce que la pièce ait des côtés rugueux avec de petites rainures et des poches. Cela aiderait la pièce à coller ensemble. Nous avons ensuite mélangé le JB KwikWeld avec des parties égales de durcisseur et d'acier et l'avons réparti uniformément sur les deux côtés limés et les avons pressés ensemble. Si vous avez une pince, glissez-la dans la pince et essuyez l'excès de colle. Il faut environ 10 minutes pour sécher, mais il est utile de le laisser plus longtemps que cela.

  • 3) Conception du mécanisme d'asservissement

Le prochain défi dans la fabrication du casque Iron Man était de concevoir le mécanisme d'asservissement. Étant donné que j'avais du mal à comprendre comment attacher le servo au casque avec les images sur la page de l'autre, J'ai décidé de faire le mien. Tout d'abord, j'ai planifié l'emplacement du servo et j'ai mesuré une ligne droite entre le servo et le point de fixation. Ensuite, j'ai deviné l'angle que le servo allait être. Le premier design était un peu décalé avec un angle trop prononcé. Le suivant, j'ai corrigé et c'était à peu près correct. Ensuite, j'ai vissé le bras dans le servo et l'endroit de fixation pour voir s'il s'adapte. Ça faisait! Enfin, j'ai conçu une pince pour s'adapter autour du servo et l'ai imprimée. J'ai tout assemblé et nous avons fait le tout premier test. C'était instable et la plaque frontale ne montait pas complètement de manière lisse et égale. Pour résoudre ce problème, j'ai plié un cintre en métal dans une forme rectangulaire et je l'ai mis dans les fentes où la pièce imprimée en 3D était censée aller. Ensuite, j'ai conçu des clips pour passer sous le cintre pour l'empêcher de tomber. J'ai découpé des fentes dans le haut du casque avec une scie à métaux, puis j'ai tout remonté. Nous l'avons essayé pour la deuxième fois et cela a très bien fonctionné !

4) Assemblage et peinture

Enfin, il était prêt à peindre. J'ai tout démonté et j'ai fait la première couche d'apprêt de blanc. Une fois l'apprêt terminé, j'ai masqué une partie de la mentonnière avec du ruban adhésif pour peintres et j'ai peint le casque en rouge. Pour la plaque frontale, je l'ai peint tout en or. Comme l'or sèche vite, c'est vite fait mais la peinture rouge sèche très lentement donc je l'ai laissée sécher. Une fois que toutes les pièces étaient sèches, j'ai retiré le ruban adhésif de la mentonnière et j'ai masqué tout ce qui se trouvait près de la pièce qui était encore blanche. Ensuite, j'ai utilisé du papier d'aluminium et je l'ai mis autour du reste du casque. Ensuite, j'ai peint la partie blanche en or et j'ai attendu que cela sèche. Puis j'ai remonté le casque à nouveau et assembler le tout. Ensuite, j'ai fait le test final et ça a marché !

5) Le réacteur à arc :

La fabrication du réacteur à arc était la suivante. J'ai d'abord mesuré la taille de l'anneau néo-pixel et conçu un étui pour le contenir. Ensuite, pour le couvercle, j'ai utilisé un design de quelqu'un sur thingiverse et je l'ai modifié pour l'adapter à mes besoins. Vous pouvez trouver le modèle original ici :http://www.thingverse.com/thing:33021 Le nouveau design avait presque exactement les mêmes caractéristiques bien que certaines parties soient un peu disproportionnées. J'ai imprimé l'étui et le haut et ils s'adaptent plutôt bien. Le seul problème était que le Neopixel était trop petit pour le boîtier. il s'avère que j'avais mal fait mes calculs, alors je suis revenu en arrière et j'ai changé cela. Cette fois, ça convenait. Ensuite, j'ai ajouté deux trous pour le passage des fils et une barre sur le dessus pour le passage de la ficelle afin que je puisse la porter autour de mon cou. Enfin, j'ai ajouté un désamorceur en filament abs translucide qui s'adapte parfaitement à l'étui. La partie impression était enfin terminée !

L'électronique :

Une fois l'impression 3D terminée, nous savions que nous disposions d'une excellente plate-forme pour intégrer de l'électronique. Pour ce projet, nous aimerions contrôler 1 servomoteur qui est fixé à la plaque frontale du casque. Nous aimerions également contrôler un anneau Neopixel dans le réacteur Arc. Nous avons utilisé un Arduino Uno comme base du système de contrôle pour ce projet. Cependant, il existe de nombreux autres types de cartes qui pourraient également être utilisées et nous avons conservé le logiciel et le matériel génériques pour cette raison. En fait, nous avons utilisé à la fois un Uno et un Arduino101 de manière interchangeable dans ce projet. Cela permettra également une expansion future et la possibilité de fabriquer un casque connecté avec le BLE intégré du 101 !

Iron Man devra actionner le servomoteur du casque et la bague néopixel du réacteur à arc. Nous avons utilisé le MPR121 ADAFRUIT 12-KEY CAPACITIVE TOUCH SENSOR BREAKOUT pour fournir une interface tactile. Cette carte de dérivation permet 12 entrées différentes et communique avec l'Uno en utilisant I2C. Les 12 contacts laissent beaucoup de place pour une extension future et I2C fait partie des packages IDE standard de la famille Arduino, ce qui nous permet d'échanger des cartes sans reprogrammation. Il est bien documenté et les exemples de logiciels fournis permettent de comprendre facilement comment l'utiliser dans notre croquis.

Nous avons attaché des fils aux extrémités nues pour agir sur nos interrupteurs tactiles capacitifs. Bien que nous ne voyions pas de « rebond de commutateur » traditionnel comme celui observé avec les commutateurs mécaniques, une seule touche générera plusieurs coups comme la boucle() dans le sketch arduino interroge le conseil d'administration. Pour éviter le « broutage » du servo en réponse à ces coups, nous avons mis en place un mécanisme de retard logiciel de 1/4 de seconde lors de la lecture des touches. Après avoir testé l'Uno et le MPR121, nous avons ajouté le servomoteur et les alimentations.

Compte tenu de l'utilisation d'un servomoteur en charge et du désir de « déployer sur le terrain » ce projet à la NYC Maker Faire 2016, l'une des considérations les plus importantes de ce projet est l'alimentation électrique. On nous a dit que la conception de l'alimentation électrique est l'un des domaines les plus importants, mais les moins prestigieux, de l'ingénierie électrique. Aucun de nous n'est ingénieur électricien, donc la solution que nous avons trouvée est une combinaison de ce que nous lisons qui fonctionnerait, de ce que nous avons compris, de ce dont nous disposions et de ce que nous avons pu travailler. Nous ne prétendons donc pas qu'il s'agit de la meilleure solution et attendons avec impatience toute suggestion d'amélioration.

En raison de la charge exercée sur le servo, du potentiel de retour de force et des recommandations de https://www.arduino.cc/en/Reference/Servo, nous avons choisi d'alimenter le servo séparément de l'Uno. L'alimentation et la masse du servomoteur étaient connectées à l'alimentation et à la masse d'un bloc-piles 4XAA. Très important, la masse de l'Uno, le servo et la batterie doivent tous être connectés pour compléter le circuit. Nous faisons cela en connectant le rail de masse de la carte Perma-Proto, la batterie 4XAA et un fil de la broche de masse de l'Uno, comme on peut le voir dans le schéma de Fritzing ci-dessous.

À l'origine, la bague Neopixel était également alimentée par la batterie 4XAA. Nous avons changé cela car il semblait y avoir des « brouillages » du servo lorsque la bague Neopixel était allumée et éteinte. Cependant, cela peut être dû à des piles faibles au moment où nous testions. Malheureusement nous l'avons remarqué la veille de la Maker Faire et nous étions déjà sur le Perma-Proto. Nous avons décidé de câbler directement le Neopixel Ring à l'Uno et de changer en même temps de piles neuves. Cela a résolu le problème, mais n'a pas répondu à la question. Peut-être que pendant que nous travaillons pour améliorer le projet à l'avenir, nous poursuivrons cela.

L'ensemble du circuit a été prototypé sur une maquette, puis simplement déplacé vers une carte Adafruit ¼ Perma-Proto. Avec un boîtier sécurisé, c'est l'un des moyens les plus simples de créer rapidement un package déployable pour votre projet. Nous avons conçu et imprimé un boîtier personnalisé en filament HIPS bleu, vu ci-dessous. L'ensemble avec les piles a été emballé dans un étui pour appareil photo pour la Maker Faire !

Le logiciel :

Il existe actuellement 2 versions du sketch, IronMan02.ino et IronMan04.ino . Les deux fonctionneront avec la configuration matérielle décrite dans cet article.

Le premier, IronMan02.ino est la version « get-it-done » qui suit dans l'esprit de, « La perfection est l'ennemi de l'achèvement ». Nous avions un délai à respecter et cette version, bien que peu élégante, a fait le travail. Dans cette version, vous verrez que nous avons créé des objets pour représenter le casque et le réacteur à arc. Cela a été fait en prévision de la mise en œuvre du multitâche sur l'arduino dans les futures versions, ce n'était donc pas un travail urgent. Nous pouvons fortement recommander la lecture de la série de trois articles sur le multitâche arduino par Bill Earl d'Adafruit. Notre code est basé, en particulier sur IronMan04.ino, est basé sur les exemples, idées et recommandations de cet ensemble de 3 tutoriels. Ces articles vous emmèneront au-delà des bases de la programmation arduino et permettront à vos projets de vraiment décoller !

Un problème auquel nous avons été confrontés était que la façade s'ouvrait et se fermait trop rapidement. Nous avons résolu ce problème en utilisant le delay() fonction pour ralentir et lisser le mouvement de la plaque frontale. Oui, si le Dr Reallyevilbadguy est sur le point de faire exploser Iron Man au visage avec son super laser mortel, vous voulez que le casque se ferme rapidement, mais à des fins de démonstration, le mouvement plus lent et plus fluide est bien meilleur.

// déplacez le casque vers le haut, 1/4 de seconde de bloc de temps pour éviter les bavardages/rebonds sur le capuchon tactile. switch void up() { if((millis() - lastSwitched)> 250 ) { lastSwitched =millis(); if (!helmetUp int currPos =0; while( currPos  

Le problème avec l'utilisation du delay() fonction est que le microcontrôleur ne peut rien faire d'autre pendant le delay() . Nous avons résolu ce problème en utilisant les conseils des didacticiels adafruit ci-dessus dans la deuxième version, IronMan04.ino .

La deuxième version, IronMan04.ino , comprend 2 éléments principaux que nous voulions mettre en œuvre, mais que nous avons manqué de temps avant la Maker Faire :

  • Commande à un bouton/plaque tactile
  • Multi-tâches

Lorsque nous avons parlé aux gens de notre projet initial, la réaction de tout le monde était que vous ne devriez avoir qu'un seul bouton/capteur tactile pour déplacer le casque de haut en bas. Nous n'aurions pas pu être plus d'accord et avons décidé de le mettre en œuvre quand nous en avons eu le temps. Notre solution consiste à utiliser plusieurs variables d'état :

  • retourner - pour maintenir l'état de la têtière
  • retourner - pour indiquer si la plaque frontale est actuellement en position de transition
  • directionnalité - pour indiquer le déplacement de la façade vers le haut ou vers le bas

Dans setup() , nous démarrons toujours le casque en configuration ouverte ou relevée. Ce n'est pas absolument indispensable. Quel que soit l'état initial, le basculement de l'interrupteur de la plaque frontale vous amènera à l'état correct dès la deuxième pression. Cependant, nous avons écrit le code pour tenir compte du fait que l'état initial de la plaque avant est en place, et donc il n'y a pas de pression de bouton gaspillée au début. Est-ce le meilleur moyen ? Nous ne sommes pas sûrs, mais comme certains des plus grands esprits scientifiques ont passé de nombreuses années à travailler sur la théorie du contrôle, je pense que nous avons été d'accord avec ce projet !

Étant donné que nous interrogeons les contacts du MPR121 dans la boucle, un toucher perçu par l'utilisateur générera de nombreux signaux tactiles. Ceci est similaire au rebond de commutateur traditionnel et nous le gérons au moyen d'un logiciel. Nous voulons une réponse rapide au capteur tactile et nous voulons implémenter le multitâche, donc au lieu de bloquer plusieurs contacts dans le commutateur/cas de la boucle() fonction, nous plaçons un bloc de synchronisation en utilisant le millis() fonction dans le Casque et ArcReactor objets, comme on le voit dans ce fragment de code du Casque objet :

void flipFaceplate() { // bloc de synchronisation pour se protéger contre les bavardages/rebonds if ((millis()-lastFlipped)> 500 ) { . . . 

Encore une fois, en n'utilisant pas le delay() fonction, nous préservons le multitâche dans notre projet. Il serait peut-être plus sage d'utiliser une variable pour l'intervalle de retard de 500 millisecondes afin de permettre les modifications et les tests, mais nous avons bien fait avec notre deuxième estimation de 500 et nous avons été un peu bâclés ici.

Afin de balayer en douceur le servo sur son angle de rotation, nous devions incrémenter lentement la rotation des servos. En plaçant un bloc de temps sur le pas d'angle du servomoteur en vérifiant l'heure actuelle avec le millis() fonction :

void Update() { if ( flipping &(millis()-lastMoved)>=15 ) { lastMoved =millis(); if ( directionnalité ==UP ) { currentPos =currentPos + 3; } else {Posactuelle =Posactuelle - 3; } Serial.print("position actuelle:");Serial.print(currentPos); casqueServo.write(currentPos); } if ((currentPos>=upAngle) || (currentPos <=downAngle)) { flipping=false; } }} ; 

Encore une fois, nous avons implémenté cela sans le delay() une fonction. Si vous construisez ce projet et regardez attentivement, vous remarquerez qu'avec IronMan04.ino fonctionnant sur Uno, vous pouvez retourner la façade et allumer et éteindre le Neopixel en même temps. Avec l'IronMan02.ino, le delay() provoque le blocage jusqu'à ce que le servo ait fini de bouger. Merci Bill Earl !

Cette dernière ligne de la fonction de mise à jour vérifie que nous ne dépassons pas la position supérieure ou inférieure de la façade, comme la boucle() la fonction appelle Update() il le vérifiera continuellement après le dernier mouvement du casque, puis définira le retournement variable à faux pour indiquer que la plaque frontale est en train de se déplacer vers le haut ou vers le bas. Au cycle suivant, avec retourner false, la fonction entière est essentiellement ignorée.

 if ((currentPos>=upAngle) || (currentPos <=downAngle)) { flipping=false; } 

Orientations futures :

Il y a tellement de choses que nous pourrions faire avec ce projet, je ne sais pas exactement par où commencer ! Les yeux brillants en sont un. Peut-être ajouter une connectivité BLE avec l'arduino101 ? Une interface vocale ? Jarvis réclame définitivement celui-ci !

Code

Casque Iron Man et projet de réacteur à arc !
https://github.com/lachendeKatze/Iron-Man

Schémas


Processus de fabrication

  1. Couvercle de trou d'homme
  2. Fer à repasser
  3. Poêle en fonte
  4. Casque de football
  5. Fer à repasser
  6. Batterie
  7. UnifiedWater v1
  8. Iron Man
  9. Comprendre le fer forgé