Différences entre versions de « Projets:Appui-tete electrique »
(241 versions intermédiaires par 9 utilisateurs non affichées) | |||
Ligne 1 : | Ligne 1 : | ||
− | + | {{Infobox projet | |
− | + | |Image principale=Appui tete motorise vue arriere trois quart.jpg | |
− | = Description du projet = | + | |Description=Appui-tête motorisé, permettant de soutenir et faire pivoter la tête d’une personne qui a une insuffisance musculaire au niveau du cou. |
− | Créer un support à bas-coût permettant de soutenir et faire pivoter la tête | + | |Porteur de projet=Mathilde |
− | Mathilde ne souhaite pas un énième bouton de télécommande pour le contrôle de cette fonctionnalité car elle en a déjà beaucoup et ne peut pas toujours y accéder selon les circonstances. | + | |Contributeurs=Ylc, Philippe Pacotte, Stéphane Godin, Elektron, André, Danke |
− | + | |Fabmanager=Delphine | |
− | + | |Référent documentation=Delphine | |
+ | |Catégorie de handicap=Motricité | ||
+ | |Etat d'avancement=Réalisés | ||
+ | |Statut de la documentation=Complète | ||
+ | |Relecture de la documentation=Vérifiée | ||
+ | |Durée de fabrication=de 16 à 32 h | ||
+ | |Coût matériel=De 100 à 200 euros | ||
+ | |Niveau=Difficile | ||
+ | |Licence=by-sa | ||
+ | |Projet date=2017-04-25 | ||
+ | |Nom humanlab=Humanlab_MHK | ||
+ | }} | ||
+ | == Description du projet == | ||
+ | Créer un support à bas-coût permettant de soutenir et faire pivoter la tête d’une personne dont l’insuffisance musculaire au niveau du cou ne lui permet ni un soutien ni une rotation naturelle de gauche à droite (la rotation n’étant pas impossible articulairement mais uniquement musculairement). Mathilde ne souhaite pas un énième bouton de télécommande pour le contrôle de cette fonctionnalité car elle en a déjà beaucoup et ne peut pas toujours y accéder selon les circonstances. | ||
+ | == Cahier des charges == | ||
Le dispositif doit : | Le dispositif doit : | ||
− | + | * supporter le poids de la tête, | |
− | + | * permettre une rotation de 30° à gauche, 30° à droite, | |
− | + | * être piloté électroniquement à la demande, | |
− | + | * supporter un usage quotidien en toutes conditions (vibrations, humidité, chaleur,...) | |
− | + | * être suffisamment hermétique pour ne pas que les cheveux se prennent dans le mécanisme | |
− | + | * être résistant aux intempéries | |
− | + | * prendre en compte le fait que Mathilde va être équipée d'un nouveau fauteuil | |
− | = Analyse de l'existant = | + | == Analyse de l'existant == |
− | Cette solution | + | Cette solution existe seulement en non électrifiée dans le commerce. |
− | La solution suivante a été testée et convient à Mathilde | + | La solution suivante a été testée et convient à Mathilde, excepté le manque d'aide électrique. |
http://www.medifab.co.nz/products/wheelchair-seating/axion-rotary-interface-wheelchair-headrests | http://www.medifab.co.nz/products/wheelchair-seating/axion-rotary-interface-wheelchair-headrests | ||
+ | |||
+ | [[File:support_tete_rotatif_commerce.gif]] | ||
Exemple d'interface rotative du commerce : https://media.wix.com/ugd/3c5a2b_070f4373519443e69189391e8c695b87.pdf | Exemple d'interface rotative du commerce : https://media.wix.com/ugd/3c5a2b_070f4373519443e69189391e8c695b87.pdf | ||
− | + | Détails sur le mécanisme de roulements http://ot-sieber.ch/wp-content/uploads/2016/03/DSC_0052_3-180x180.jpg | |
+ | |||
+ | == Equipe (Porteur de projet et contributeurs) == | ||
+ | |||
+ | * Porteurs du projet : | ||
+ | Mathilde Fuchs | ||
+ | * Concepteurs/contributeurs : | ||
+ | |||
+ | Philippe Pacotte, | ||
+ | Stéphane Godin, | ||
+ | André Bécot, | ||
+ | Jean-Pierre Legrand, | ||
+ | Yves Le Chevalier, | ||
+ | Christian Fromentin, | ||
+ | Danke, | ||
+ | Francis Esnault, | ||
+ | Jean-François Duguest, | ||
+ | Brice Besançon, | ||
+ | Yohann Véron, | ||
+ | |||
+ | * Animateur (coordinateur du projet) | ||
+ | Delphine Bézier | ||
+ | * Fabmanager référent | ||
+ | Delphine Bézier | ||
+ | * Responsable de documentation | ||
+ | |||
+ | == Matériel nécessaire == | ||
+ | {| class="wikitable" border="1" | ||
+ | |- | ||
+ | ! # | ||
+ | ! Composant | ||
+ | ! Quantité | ||
+ | |- | ||
+ | | '''1''' | ||
+ | | Arduino-NANO | ||
+ | | 1 | ||
+ | |- | ||
+ | | '''2''' | ||
+ | | resistance-1K | ||
+ | | 4 | ||
+ | |- | ||
+ | | '''3''' | ||
+ | | micro-switch | ||
+ | | 4 | ||
+ | |- | ||
+ | | '''4''' | ||
+ | | nema17-42SHD0228 | ||
+ | | 1 | ||
+ | |- | ||
+ | | '''5''' | ||
+ | | veroboard | ||
+ | | 1 | ||
+ | |- | ||
+ | | '''6''' | ||
+ | | batterie-12V | ||
+ | | 2 | ||
+ | |- | ||
+ | | '''7''' | ||
+ | | carte-big-easy-driver | ||
+ | | 1 | ||
+ | |- | ||
+ | | '''8''' | ||
+ | | boitier-derivation-electrique | ||
+ | | 1 | ||
+ | |- | ||
+ | | '''9''' | ||
+ | | poulie-GT2-bore5-20dents | ||
+ | | 1 | ||
+ | |- | ||
+ | | '''10''' | ||
+ | | nema17 | ||
+ | | 1 | ||
+ | |- | ||
+ | | '''11''' | ||
+ | | vis-M3-12 | ||
+ | | 2 | ||
+ | |- | ||
+ | | '''12''' | ||
+ | | roulement-F624ZZ | ||
+ | | 4 | ||
+ | |- | ||
+ | | '''13''' | ||
+ | | rondelles | ||
+ | | 4 | ||
+ | |- | ||
+ | | '''14''' | ||
+ | | fil-de-cablage-monobrin-0.2 | ||
+ | | 1 | ||
+ | |- | ||
+ | | '''15''' | ||
+ | | vis CHc-M2X16 | ||
+ | | 2 | ||
+ | |- | ||
+ | | '''16''' | ||
+ | | ecrous-M2 | ||
+ | | 2 | ||
+ | |- | ||
+ | | '''17''' | ||
+ | | vis CHc-M3x14 | ||
+ | | 2 | ||
+ | |- | ||
+ | | '''18''' | ||
+ | | ecrous-nylstop-M3 | ||
+ | | 4 | ||
+ | |- | ||
+ | | '''19''' | ||
+ | | vis-CHc-M5X35 | ||
+ | | 1 | ||
+ | |- | ||
+ | | '''20''' | ||
+ | | ecrou-nylstop | ||
+ | | 1 | ||
+ | |- | ||
+ | | '''21''' | ||
+ | | vis-CHc-M5X15 | ||
+ | | 1 | ||
+ | |- | ||
+ | | '''22''' | ||
+ | | rondelle | ||
+ | | 1 | ||
+ | |- | ||
+ | | '''23''' | ||
+ | | vis-M3 | ||
+ | | 2 | ||
+ | |} | ||
+ | |||
+ | ==Outils nécessaires== | ||
+ | |||
+ | ==Coût== | ||
+ | |||
+ | ==Fichiers source== | ||
+ | [[Media:code DUPLICATE.zip|Télécharger le code]] | ||
+ | |||
+ | [[Media:documents.zip|Télécharger les documents]] | ||
+ | |||
+ | [[Media:images sources.zip|Télécharger les images]] | ||
+ | |||
+ | [[Media:models.zip|Télécharger les modèles 3D (STL)]] | ||
+ | |||
+ | ==Etapes de fabrication pas à pas== | ||
+ | |||
+ | ===Étape 1 - Vue légendée du prototype final=== | ||
+ | |||
+ | [[File:Vue_legendee.png|600px]] [[File:Vue_legendee2.png|600px]] | ||
+ | |||
+ | ===Étape 2 - Fabrication de la pièce de liaison entre rail et support réglable de l'appui-tête du fauteuil=== | ||
+ | |||
+ | La pièce de liaison entre le rail et le support réglable de l'appui-tête fixé sur le fauteuil a été réalisé à partir de trois fers plats soudés entre eux. | ||
+ | Se référer au fichier "piece entre rail et fauteuil.stl" | ||
+ | |||
+ | [[Media:support entre rail et fauteuil.stl|Télécharger le fichier stl support entre rail et fauteuil ]] | ||
+ | |||
+ | [[File:piece_entre_rail_et_fauteuil.png|400px]][[File:cotes_piece_liaison_rail_support_appui-tete.png|900px]] | ||
+ | |||
+ | ===Étape 3 - Fabrication du rail=== | ||
+ | |||
+ | Pour fabriquer le rail , prendre la plaque d'aluminium 4G (voir image pour les côtes) et ajuster la courbe à la ceintreuse comme sur le fichier STL. IL est éventuellement possible de faire un gabarit en carton ou imprimé en 3D pour vérifier et ajuster la courbe. | ||
+ | |||
+ | Voir la manipulation en vidéo ici : | ||
+ | |||
+ | https://youtu.be/oLzzKH7SkhM | ||
+ | |||
+ | https://youtu.be/36KCF7G6KE4 | ||
+ | |||
+ | https://youtu.be/mCTa5f2ztH4 | ||
+ | |||
+ | Percer ensuite des trous et les filter pour les butées de fin de course dont la position est à ajuster selon le degré de mouvement voulu ou l'angle de rotation de la tête qui doit rester confortable pour l'usager | ||
+ | |||
+ | [[Media:rail.stl|Télécharger le fichier stl rail]] | ||
+ | |||
+ | [[File:dimensions rail.png|600px]] [[File:rail_ceintreuse.png|600px]] | ||
+ | |||
+ | ===Étape 4 - Fabrication de la rotule=== | ||
+ | |||
+ | En fonction de l’appui-tête de la personne, il faudra ajuster la taille de la rotule. | ||
+ | Si le modèle correspond à celui-ci rapprochez-vous d’un tourneur pour la réaliser en aluminium 4G suivant le | ||
+ | modèle STL (rotule.stl) . Il faudra ensuite la percer et filter (pour une vis CHc-M5X15)pour permettre sa fixation. | ||
+ | Attention ajout d’un ergo en acier sur l’embase de la rotule parallèle à la vis et qui va également sur le | ||
+ | sur le support de la rotule pour éviter que la rotule tourne sur elle-même. | ||
+ | |||
+ | [[Media:rotule model.stl|Télécharger le fichier stl rotule model]] | ||
+ | |||
+ | [[File:rotule 1.png|400px]] | ||
+ | |||
+ | [[File:rotule_usinee.jpg|400px]][[File:usinage_rotule.jpg|600px]] | ||
+ | |||
+ | ===Étape 5 - Fabrication de la plaque de fixation de la rotule et des galets=== | ||
+ | |||
+ | Fabriquer la plaque de fixation de la rotule avec une plieuse en se basant sur le fichier plaquerotule.stl. | ||
− | + | Fabriquer les 4 galets (galets à réa de 5mm -le creux intérieur en largeur, et l’épaulement du réa de 2.5mm) | |
− | + | Tourner en pom C (pom C=matériau plastique) les 4 galets de diamètre extérieur 15mm et 10mm en diamètre intérieur et les aléser pour les roulements qui viennent se loger aux deux extrémités. | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | [[Media:galet_perce.stl|Télécharger le fichier stl galet_perce]] | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | [[Media:plaquerotule.stl|Télécharger le fichier stl plaquerotule]] | |
− | |||
− | |||
− | + | [[File:galets.png|400px]] [[File:plaque_rotule.png|400px]] | |
− | |||
− | + | Les galets ont été tournés un peu dissymétriquement, il faut les mettre tous dans le même sens pour le montage. La plaque a les trous du haut taraudés, ainsi il faut commencer le montage par les vis du haut, puis ajuster avec celles du bas, sans taraudage elles permettent un certain jeu. | |
− | + | Afin de permettre le bon fonctionnement des roulements, il ne faut pas trop serrer les vis (une entretoise peut être nécessaire si besoin). | |
− | |||
− | |||
− | |||
− | |||
− | + | ===Étape 6 - Impression des pièces en 3D (faire simulation temps d'impression dans Cura)=== | |
− | + | Imprimer l’ensemble des pièces situées dans le dossier « STL/A imprimer » | |
+ | * Matériau du filament : de préférence ABS ou PLA | ||
+ | * Paramétrage sur Cura : Densité : 90 % de remplissage, qualité 0.2. | ||
− | + | Il s'agit d'imprimer les butées, le support moteur, le support à capteur de fin de course et le capot protecteur | |
− | + | [[Media:butees.stl|Télécharger le fichier butees.stl]] | |
− | |||
− | |||
+ | [[Media:capot.stl|Télécharger le fichier capot.stl]] | ||
+ | [[Media:support_capteurs_fin_course.stl|Télécharger le fichier capteurs_fin_course.stl]] | ||
− | + | [[Media:support_moteur.stl|Télécharger le fichier support_moteur.stl]] | |
− | |||
− | |||
− | |||
− | + | [[File:support_moteur.png|400px]] [[File:butees.png|400px]] [[File:capot_brosse.jpg|400px]] [[File:support_capteurs_fin_course.png|400px]] | |
− | = | + | ===Étape 7 - Réalisation du circuit électronique=== |
+ | Composants nécessaires: | ||
− | |||
− | + | *Arduino-NANO | |
+ | *resistance-1K | ||
+ | *micro-switch | ||
+ | *nema17-42SHD0228 | ||
+ | *veroboard | ||
+ | *batterie-12V | ||
+ | *carte-big-easy-driver | ||
+ | ___________________________________ | ||
+ | *PCB (auquel il faut ajouter le circuit on/off ) | ||
+ | *Fichier arduino (code) | ||
− | + | [[Media:code.zip|Télécharger le code]] | |
− | - | + | Réaliser ou faire fabriquer le circuit imprimé en vous référant au schema et PCB (Appuiteteschemav1.2.jpg, appui-tete-PCBv1.2.png) ci-dessous. |
− | - | + | [[File:Appui_tete_schema_v1.2.jpg|850px]] [[File:appui-tete-PCB_v1.2.png|800px]] |
− | + | Téléverser le code sur la carte Arduino. | |
− | |||
− | |||
<pre> | <pre> | ||
− | + | #include "cli.h" | |
− | // | + | #include "config.h" |
− | + | ||
− | + | ||
− | + | #include "command.h" | |
+ | |||
+ | |||
+ | // task definition for periodic scheduling 1ms | ||
+ | //void motorControl(Task* me); | ||
+ | //Task schedule (1, motorControl); | ||
+ | |||
+ | |||
+ | |||
+ | void setup() { | ||
+ | |||
+ | // intialize command | ||
+ | cli_open (); | ||
+ | |||
+ | // initialize motor | ||
+ | load_config (); | ||
+ | get_stepper()->setMaxSpeed (get_speed()); | ||
+ | get_stepper()->setAcceleration (get_accel()); | ||
+ | // initialize led | ||
+ | pinMode(LED, OUTPUT); | ||
+ | digitalWrite (LED, LOW); | ||
+ | |||
+ | // initialize buttons | ||
+ | pinMode(BTN_RIGHT, INPUT); | ||
+ | pinMode(BTN_LEFT, INPUT); | ||
+ | |||
+ | // stepper microstep | ||
+ | pinMode (MOTOR_MS1, OUTPUT), | ||
+ | pinMode (MOTOR_MS2, OUTPUT); | ||
+ | digitalWrite (MOTOR_MS1, LOW); // todo place config in config.h | ||
+ | digitalWrite (MOTOR_MS2, LOW); | ||
+ | |||
+ | //endstop | ||
+ | pinMode (ENDSTOP_LEFT, INPUT), | ||
+ | pinMode (ENDSTOP_RIGHT, INPUT); | ||
+ | |||
+ | |||
+ | // run scheduler | ||
+ | //SoftTimer.add(&schedule); | ||
+ | |||
+ | } | ||
+ | |||
+ | // function :SensorLeft | ||
+ | // | ||
+ | // Description : | ||
+ | // return te logic state of the left sensor | ||
+ | // | ||
+ | // Return : | ||
+ | // true if the left sensor is active. Otherwise false | ||
+ | boolean SensorLeft () | ||
+ | { | ||
+ | if (get_force_left () > 0) | ||
+ | return (true); | ||
+ | return (digitalRead (BTN_LEFT)== BTN_LEFT_ACTIVE_STATE ? true : false); | ||
+ | } | ||
+ | |||
+ | // function :SensorRight | ||
+ | // | ||
+ | // Description : | ||
+ | // return te logic state of the right sensor | ||
+ | // | ||
+ | // Return : | ||
+ | // true if the right sensor is active. Otherwise false | ||
+ | boolean SensorRight() | ||
+ | { | ||
+ | if (get_force_right () > 0) | ||
+ | return (true); | ||
+ | return (digitalRead (BTN_RIGHT) == BTN_RIGHT_ACTIVE_STATE ? true : false); | ||
+ | } | ||
+ | |||
+ | // function :EndStopLeft | ||
+ | // | ||
+ | // Description : | ||
+ | // return the logic state of the left endstop sensor | ||
+ | // | ||
+ | // Return : | ||
+ | // true if the left endstop is active. Otherwise false | ||
+ | boolean EndStopLeft () | ||
+ | { | ||
+ | return (digitalRead (ENDSTOP_LEFT) == ENDSTOP_LEFT_STATE ? true : false); | ||
+ | } | ||
− | + | // function :EndStopRight | |
+ | // | ||
+ | // Description : | ||
+ | // return the logic state of the right endstop sensor | ||
+ | // | ||
+ | // Return : | ||
+ | // true if the right endstop is active. Otherwise false | ||
+ | boolean EndStopRight () | ||
{ | { | ||
− | + | return (digitalRead (ENDSTOP_RIGHT) == ENDSTOP_RIGHT_STATE ? true : false); | |
− | |||
− | |||
− | |||
} | } | ||
− | void loop() | + | |
+ | int RIGHT_MOVE = 1; | ||
+ | int LEFT_MOVE = -1; | ||
+ | int STOP_MOVE = 0; | ||
+ | |||
+ | //void turnOn(Task* me) | ||
+ | //{ | ||
+ | |||
+ | //} | ||
+ | |||
+ | |||
+ | // Function: motorControl | ||
+ | // | ||
+ | // Description : | ||
+ | // The function is called every 1 ms. check command sensor and enstop and control the motor | ||
+ | // | ||
+ | // | ||
+ | //void motorControl(Task* me) | ||
+ | void loop () | ||
{ | { | ||
− | // | + | AccelStepper *pstepper = get_stepper (); |
− | + | ||
− | + | // put your main code here, to run repeatedly: | |
+ | |||
+ | int step = 0; | ||
+ | // decide move | ||
+ | int move = STOP_MOVE; | ||
+ | |||
+ | boolean right = SensorRight (); | ||
+ | boolean left = SensorLeft (); | ||
+ | |||
+ | boolean endl = EndStopLeft (); | ||
+ | boolean endr = EndStopRight (); | ||
+ | |||
+ | |||
+ | |||
+ | if (endr || endl) | ||
+ | digitalWrite (LED, HIGH); | ||
+ | else | ||
+ | digitalWrite (LED,LOW); | ||
+ | |||
+ | //endr = false; | ||
+ | //endl=false; | ||
+ | if (right == left) | ||
+ | { | ||
+ | move = STOP_MOVE; | ||
+ | |||
+ | //digitalWrite(LED, LOW); | ||
+ | } | ||
+ | else if (right==true) | ||
+ | { | ||
+ | if (endr) | ||
+ | { | ||
+ | move=STOP_MOVE; | ||
+ | } | ||
+ | else | ||
+ | { | ||
+ | move = RIGHT_MOVE; | ||
+ | pstepper->move (20000); | ||
+ | //digitalWrite(LED, HIGH); | ||
+ | } | ||
+ | } | ||
+ | else if (left == true) | ||
+ | { | ||
+ | if (endl) | ||
+ | { | ||
+ | move=STOP_MOVE; | ||
+ | } | ||
+ | else | ||
+ | { | ||
+ | move = LEFT_MOVE; | ||
+ | pstepper->move(-20000); | ||
+ | //digitalWrite(LED, HIGH); | ||
+ | } | ||
+ | } | ||
− | + | // motor control | |
− | + | if (move != STOP_MOVE) | |
− | + | { | |
+ | pstepper->run(); | ||
} | } | ||
− | else{ | + | else |
− | + | { | |
− | + | //stepper1.disableOutputs(); | |
+ | pstepper->setSpeed(0); | ||
+ | pstepper->setCurrentPosition (0); | ||
} | } | ||
− | |||
− | // | + | // process command |
− | + | CLI.process(); | |
− | |||
− | |||
} | } | ||
+ | </pre> | ||
+ | |||
+ | La carte arduino est alimentée en 5V depuis la sortie 5V de la carte easy driver. Raccorder le 24V du PCB aux batteries du fauteuil (voir Schema_batterie.jpg). | ||
+ | |||
+ | Ajouter le circuit interrupteur ON/OFF led en image ci-contre afin de pouvoir éteindre le dispositif et ne pas consommer de batterie pour rien :) | ||
+ | |||
+ | [[File:interrupteur_on_off_led.png|400px]] | ||
+ | |||
+ | [[File:Schema_batterie 1.jpg|400px]] | ||
+ | |||
+ | ===Étape 8 - Mise en place du circuit dans le boîtier du circuit électronique=== | ||
+ | |||
+ | Composant nécessaire: | ||
+ | |||
+ | *boitier-derivation-electrique | ||
+ | |||
+ | Positionner le circuit dans le boitier de dérivation électrique étanche dont voici la référence : | ||
+ | https://www.leroymerlin.fr/v3/p/produits/boite-de-derivation-etanche-en-saillie-debflex-8-entrees-e29160 | ||
+ | |||
+ | Ce boitier sera fixé à l'arrière du fauteuil. | ||
+ | |||
+ | ===Étape 9 - Assemblage du bouton ou système choisi pour commander l'appui-tête rotatif=== | ||
+ | |||
+ | Assembler le bouton en se référant au schéma. | ||
+ | Prévoir une longueur de câble suffisamment longue pour le relier au PCB situé dans le boîtier qui a été fixé à l’arrière du fauteuil. | ||
+ | |||
+ | ===Étape 10 - Fixation de la poulie GT2 bore 5 sur moteur NEMA17 (ajouter ref vis)=== | ||
+ | |||
+ | Composants nécessaires: | ||
+ | |||
+ | *poulie-GT2-bore5-20dents | ||
+ | *nema17 | ||
+ | |||
+ | Enfiler la poulie la poulie GT2 bore (trou) 5 20 dents sur l'axe du moteur Nema17. Puis la fixer avec les deux vis sans tête de blocage de la poulie. | ||
+ | |||
+ | Se référer à l'image du schéma global. | ||
+ | |||
+ | ===Étape 11 - Fixation du moteur+poulie sur support moteur=== | ||
+ | |||
+ | Composant nécessaire: | ||
+ | |||
+ | *vis-M3-12 | ||
+ | |||
+ | Fixer l'ensemble moteur+poulie sur le support moteur avec 2 vis M3x12. | ||
+ | |||
+ | ===Étape 12 - Fixation roulements pour coulissage de la courroie=== | ||
− | + | Composants nécessaires: | |
− | |||
− | + | *roulement-F624ZZ | |
+ | *rondelles | ||
− | + | Fixer les 4 roulements à bille F624ZZ mis 2 par 2 en mirroir avec l'épaulement vers l'extérieur, avec des rondelles entre la vis et le roulement, pour éviter de comprimer la partie extérieure du roulement. Et de l'autre coté de la plaque du support moteur, on vient fixer la vis de M4x20 (ou 25) avec un écrou nylstop. | |
− | + | ===Étape 13 - Câblage des capteurs de fin de course (end-stop)=== | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | Composants nécessaires: | |
− | + | *micro-switch | |
− | + | *fil-de-cablage-monobrin-0.2 | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | Souder les fils sur les capteurs de fin de course (autrement dit end stop ou microswitchs). Prévoir une longueur de fil suffisante pour aller jusqu'au boitier où se situe le circuit électronique. | |
− | == | + | ===Étape 14 - Montage des capteurs de fin de course sur leur support=== |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | Composants nécessaires: | |
− | |||
− | + | *vis CHc-M2X16 | |
− | + | *ecrous-M2 | |
− | |||
− | |||
− | |||
− | + | Assembler les capteurs de fin de courses (microswitchs) à leurs supports avec 2 vis CHc-M2X16 chacun et l'écrou | |
− | + | associé | |
− | |||
− | |||
− | |||
− | + | ===Étape 15 - Assemblage support des capteurs de fin de course sur support moteur (add photo)=== | |
− | + | Composants nécessaires: | |
− | |||
− | |||
− | |||
− | + | *vis CHc-M3x14 | |
− | + | *ecrous-nylstop-M3 | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | Fixer les support des capteurs de fin de course sur le support moteur avec 2 vis CHc-M3x14 qui sont fixées sur le Nema 17. | |
− | |||
+ | [[File:Fixation_support_fin_de_course_sur_support_moteur.jpg|400px]] | ||
− | === | + | ===Étape 16 - Préparation des galets=== |
− | |||
− | + | Introduire de part et d'autre de chaque galet un roulement MR84ZZ. Insérer par la force les roulements (2 par galet) dans les galets. | |
− | |||
− | ' | ||
− | |||
− | + | ===Étape 17 - Assemblage des galets sur la plaque de fixation de la rotule (add photo+précision nb vis)=== | |
− | + | Composants nécessaires: | |
− | + | *vis-CHc-M5X35 | |
− | + | *ecrou-nylstop | |
− | |||
− | |||
− | + | Assembler les galets sur la plaque de fixation de la rotule avec les vis CHc-M4X35 et écrous nylstop M4. Ne pas visser à fond et laisser du jeu pour l'assemblage sur le rail. | |
− | + | [[File:assemblage_galet_sur_plaque_fixation.jpg|400px]] | |
+ | ===Étape 18 - Assemblage de la rotule sur la plaque support rotule=== | ||
− | + | Composants nécessaires: | |
− | + | *vis-CHc-M5X15 | |
− | + | *rondelle | |
− | |||
− | |||
− | + | Assembler la rotule et son ergo sur la plaque avec la vis CHc-M5X15 et sa rondelle (il faut penser à mettre du frein filet si ça se déserre trop souvent). | |
− | |||
− | |||
− | |||
− | |||
− | + | https://youtu.be/SlecIxJOSQ0 | |
− | + | ===Étape 19 - Assemblage de plaque rotule sur le rail de guidage (add photo+vis ref)=== | |
− | + | Enfiler la plaque rotule sur le rail de guidage. | |
− | + | Serrer les écrous de fixation des galets en ne les serrant pas trop fort pour que le coulissement soit correct. | |
− | - | + | ===Étape 20 - Fixation de la cornière aluminium sur la plaque de support rotule=== |
− | + | Composants nécessaires: | |
+ | *vis-M3 | ||
+ | *ecrous-nylstop-M3 | ||
− | + | Fixer la cornière aluminium sur la plaque de support rotule. | |
+ | La corniere de 20x20 sur 31 mm de longueur + 2 vis M3 avec écrous nylstop + 2 vis (ref+longueur???) | ||
− | = | + | ===Étape 21 - Pose, tension et fixation de la courroie=== |
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | Pose, tension et fixation de la courroie GT2 de largeur 6 mm, pas de 2 mm et longueur environ 35mm ou ajuster la longueur selon la course du rail. La fixer à chaque extrémité en la faisant passer par le trou prévu sur la butée de fin de course, et la fixer avec un cerflex sur le côté extérieur. Les crans de la courroie doivent être orientés vers le rail. | |
− | |||
− | |||
− | |||
− | |||
− | + | Fixation de l'appui-tête : https://urlz.fr/bjPY | |
− | + | Fixation courroie : https://youtu.be/NXCGfeGCh6I | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | ===Étape 22 - Vidéo du montage=== | |
− | + | https://urlz.fr/bjPs | |
− | |||
− | |||
− | |||
− | |||
− | = | + | ===Étape 23 - Photos du prototype final=== |
+ | [[File:appui_tete_motorise_en_action.jpg|400px]][[File:appui_tete_motorise_vue_arriere.jpg|400px]] [[File:appui_tete_motorise_vue_arriere_trois_quart.jpg|400px]] | ||
− | |||
− | |||
− | |||
− | |||
− | + | [[Category:Projets]] | |
+ | [[Category:Motricité]] |
Version actuelle datée du 5 avril 2023 à 16:43
Appui-tete electrique | |
---|---|
Informations | |
Description | Appui-tête motorisé, permettant de soutenir et faire pivoter la tête d’une personne qui a une insuffisance musculaire au niveau du cou. |
Catégorie | Motricité |
Etat d'avancement | Réalisés |
Techniques | |
Durée de fabrication | de 16 à 32 h |
Coût matériel | De 100 à 200 euros |
Niveau | Difficile |
Licence | by-sa |
Date de création | 2017-04-25 |
Équipe | |
Porteur de projet | Mathilde |
Contributeurs | Ylc, Philippe Pacotte, Stéphane Godin, Elektron, André, Danke |
Fabmanager | Delphine |
Référent documentation | Delphine |
Nom humanlab | Humanlab_MHK |
Documentation | |
Statut de la documentation | Complète |
Relecture de la documentation | Vérifiée |
Description du projet
Créer un support à bas-coût permettant de soutenir et faire pivoter la tête d’une personne dont l’insuffisance musculaire au niveau du cou ne lui permet ni un soutien ni une rotation naturelle de gauche à droite (la rotation n’étant pas impossible articulairement mais uniquement musculairement). Mathilde ne souhaite pas un énième bouton de télécommande pour le contrôle de cette fonctionnalité car elle en a déjà beaucoup et ne peut pas toujours y accéder selon les circonstances.
Cahier des charges
Le dispositif doit :
- supporter le poids de la tête,
- permettre une rotation de 30° à gauche, 30° à droite,
- être piloté électroniquement à la demande,
- supporter un usage quotidien en toutes conditions (vibrations, humidité, chaleur,...)
- être suffisamment hermétique pour ne pas que les cheveux se prennent dans le mécanisme
- être résistant aux intempéries
- prendre en compte le fait que Mathilde va être équipée d'un nouveau fauteuil
Analyse de l'existant
Cette solution existe seulement en non électrifiée dans le commerce.
La solution suivante a été testée et convient à Mathilde, excepté le manque d'aide électrique. http://www.medifab.co.nz/products/wheelchair-seating/axion-rotary-interface-wheelchair-headrests
Exemple d'interface rotative du commerce : https://media.wix.com/ugd/3c5a2b_070f4373519443e69189391e8c695b87.pdf
Détails sur le mécanisme de roulements http://ot-sieber.ch/wp-content/uploads/2016/03/DSC_0052_3-180x180.jpg
Equipe (Porteur de projet et contributeurs)
- Porteurs du projet :
Mathilde Fuchs
- Concepteurs/contributeurs :
Philippe Pacotte, Stéphane Godin, André Bécot, Jean-Pierre Legrand, Yves Le Chevalier, Christian Fromentin, Danke, Francis Esnault, Jean-François Duguest, Brice Besançon, Yohann Véron,
- Animateur (coordinateur du projet)
Delphine Bézier
- Fabmanager référent
Delphine Bézier
- Responsable de documentation
Matériel nécessaire
# | Composant | Quantité |
---|---|---|
1 | Arduino-NANO | 1 |
2 | resistance-1K | 4 |
3 | micro-switch | 4 |
4 | nema17-42SHD0228 | 1 |
5 | veroboard | 1 |
6 | batterie-12V | 2 |
7 | carte-big-easy-driver | 1 |
8 | boitier-derivation-electrique | 1 |
9 | poulie-GT2-bore5-20dents | 1 |
10 | nema17 | 1 |
11 | vis-M3-12 | 2 |
12 | roulement-F624ZZ | 4 |
13 | rondelles | 4 |
14 | fil-de-cablage-monobrin-0.2 | 1 |
15 | vis CHc-M2X16 | 2 |
16 | ecrous-M2 | 2 |
17 | vis CHc-M3x14 | 2 |
18 | ecrous-nylstop-M3 | 4 |
19 | vis-CHc-M5X35 | 1 |
20 | ecrou-nylstop | 1 |
21 | vis-CHc-M5X15 | 1 |
22 | rondelle | 1 |
23 | vis-M3 | 2 |
Outils nécessaires
Coût
Fichiers source
Télécharger les modèles 3D (STL)
Etapes de fabrication pas à pas
Étape 1 - Vue légendée du prototype final
Étape 2 - Fabrication de la pièce de liaison entre rail et support réglable de l'appui-tête du fauteuil
La pièce de liaison entre le rail et le support réglable de l'appui-tête fixé sur le fauteuil a été réalisé à partir de trois fers plats soudés entre eux. Se référer au fichier "piece entre rail et fauteuil.stl"
Télécharger le fichier stl support entre rail et fauteuil
Étape 3 - Fabrication du rail
Pour fabriquer le rail , prendre la plaque d'aluminium 4G (voir image pour les côtes) et ajuster la courbe à la ceintreuse comme sur le fichier STL. IL est éventuellement possible de faire un gabarit en carton ou imprimé en 3D pour vérifier et ajuster la courbe.
Voir la manipulation en vidéo ici :
Percer ensuite des trous et les filter pour les butées de fin de course dont la position est à ajuster selon le degré de mouvement voulu ou l'angle de rotation de la tête qui doit rester confortable pour l'usager
Télécharger le fichier stl rail
Étape 4 - Fabrication de la rotule
En fonction de l’appui-tête de la personne, il faudra ajuster la taille de la rotule. Si le modèle correspond à celui-ci rapprochez-vous d’un tourneur pour la réaliser en aluminium 4G suivant le modèle STL (rotule.stl) . Il faudra ensuite la percer et filter (pour une vis CHc-M5X15)pour permettre sa fixation. Attention ajout d’un ergo en acier sur l’embase de la rotule parallèle à la vis et qui va également sur le sur le support de la rotule pour éviter que la rotule tourne sur elle-même.
Télécharger le fichier stl rotule model
Étape 5 - Fabrication de la plaque de fixation de la rotule et des galets
Fabriquer la plaque de fixation de la rotule avec une plieuse en se basant sur le fichier plaquerotule.stl.
Fabriquer les 4 galets (galets à réa de 5mm -le creux intérieur en largeur, et l’épaulement du réa de 2.5mm) Tourner en pom C (pom C=matériau plastique) les 4 galets de diamètre extérieur 15mm et 10mm en diamètre intérieur et les aléser pour les roulements qui viennent se loger aux deux extrémités.
Télécharger le fichier stl galet_perce
Télécharger le fichier stl plaquerotule
Les galets ont été tournés un peu dissymétriquement, il faut les mettre tous dans le même sens pour le montage. La plaque a les trous du haut taraudés, ainsi il faut commencer le montage par les vis du haut, puis ajuster avec celles du bas, sans taraudage elles permettent un certain jeu.
Afin de permettre le bon fonctionnement des roulements, il ne faut pas trop serrer les vis (une entretoise peut être nécessaire si besoin).
Étape 6 - Impression des pièces en 3D (faire simulation temps d'impression dans Cura)
Imprimer l’ensemble des pièces situées dans le dossier « STL/A imprimer »
- Matériau du filament : de préférence ABS ou PLA
- Paramétrage sur Cura : Densité : 90 % de remplissage, qualité 0.2.
Il s'agit d'imprimer les butées, le support moteur, le support à capteur de fin de course et le capot protecteur
Télécharger le fichier butees.stl
Télécharger le fichier capot.stl
Télécharger le fichier capteurs_fin_course.stl
Télécharger le fichier support_moteur.stl
Étape 7 - Réalisation du circuit électronique
Composants nécessaires:
- Arduino-NANO
- resistance-1K
- micro-switch
- nema17-42SHD0228
- veroboard
- batterie-12V
- carte-big-easy-driver
___________________________________
- PCB (auquel il faut ajouter le circuit on/off )
- Fichier arduino (code)
Réaliser ou faire fabriquer le circuit imprimé en vous référant au schema et PCB (Appuiteteschemav1.2.jpg, appui-tete-PCBv1.2.png) ci-dessous.
Téléverser le code sur la carte Arduino.
#include "cli.h" #include "config.h" #include "command.h" // task definition for periodic scheduling 1ms //void motorControl(Task* me); //Task schedule (1, motorControl); void setup() { // intialize command cli_open (); // initialize motor load_config (); get_stepper()->setMaxSpeed (get_speed()); get_stepper()->setAcceleration (get_accel()); // initialize led pinMode(LED, OUTPUT); digitalWrite (LED, LOW); // initialize buttons pinMode(BTN_RIGHT, INPUT); pinMode(BTN_LEFT, INPUT); // stepper microstep pinMode (MOTOR_MS1, OUTPUT), pinMode (MOTOR_MS2, OUTPUT); digitalWrite (MOTOR_MS1, LOW); // todo place config in config.h digitalWrite (MOTOR_MS2, LOW); //endstop pinMode (ENDSTOP_LEFT, INPUT), pinMode (ENDSTOP_RIGHT, INPUT); // run scheduler //SoftTimer.add(&schedule); } // function :SensorLeft // // Description : // return te logic state of the left sensor // // Return : // true if the left sensor is active. Otherwise false boolean SensorLeft () { if (get_force_left () > 0) return (true); return (digitalRead (BTN_LEFT)== BTN_LEFT_ACTIVE_STATE ? true : false); } // function :SensorRight // // Description : // return te logic state of the right sensor // // Return : // true if the right sensor is active. Otherwise false boolean SensorRight() { if (get_force_right () > 0) return (true); return (digitalRead (BTN_RIGHT) == BTN_RIGHT_ACTIVE_STATE ? true : false); } // function :EndStopLeft // // Description : // return the logic state of the left endstop sensor // // Return : // true if the left endstop is active. Otherwise false boolean EndStopLeft () { return (digitalRead (ENDSTOP_LEFT) == ENDSTOP_LEFT_STATE ? true : false); } // function :EndStopRight // // Description : // return the logic state of the right endstop sensor // // Return : // true if the right endstop is active. Otherwise false boolean EndStopRight () { return (digitalRead (ENDSTOP_RIGHT) == ENDSTOP_RIGHT_STATE ? true : false); } int RIGHT_MOVE = 1; int LEFT_MOVE = -1; int STOP_MOVE = 0; //void turnOn(Task* me) //{ //} // Function: motorControl // // Description : // The function is called every 1 ms. check command sensor and enstop and control the motor // // //void motorControl(Task* me) void loop () { AccelStepper *pstepper = get_stepper (); // put your main code here, to run repeatedly: int step = 0; // decide move int move = STOP_MOVE; boolean right = SensorRight (); boolean left = SensorLeft (); boolean endl = EndStopLeft (); boolean endr = EndStopRight (); if (endr || endl) digitalWrite (LED, HIGH); else digitalWrite (LED,LOW); //endr = false; //endl=false; if (right == left) { move = STOP_MOVE; //digitalWrite(LED, LOW); } else if (right==true) { if (endr) { move=STOP_MOVE; } else { move = RIGHT_MOVE; pstepper->move (20000); //digitalWrite(LED, HIGH); } } else if (left == true) { if (endl) { move=STOP_MOVE; } else { move = LEFT_MOVE; pstepper->move(-20000); //digitalWrite(LED, HIGH); } } // motor control if (move != STOP_MOVE) { pstepper->run(); } else { //stepper1.disableOutputs(); pstepper->setSpeed(0); pstepper->setCurrentPosition (0); } // process command CLI.process(); }
La carte arduino est alimentée en 5V depuis la sortie 5V de la carte easy driver. Raccorder le 24V du PCB aux batteries du fauteuil (voir Schema_batterie.jpg).
Ajouter le circuit interrupteur ON/OFF led en image ci-contre afin de pouvoir éteindre le dispositif et ne pas consommer de batterie pour rien :)
Étape 8 - Mise en place du circuit dans le boîtier du circuit électronique
Composant nécessaire:
- boitier-derivation-electrique
Positionner le circuit dans le boitier de dérivation électrique étanche dont voici la référence : https://www.leroymerlin.fr/v3/p/produits/boite-de-derivation-etanche-en-saillie-debflex-8-entrees-e29160
Ce boitier sera fixé à l'arrière du fauteuil.
Étape 9 - Assemblage du bouton ou système choisi pour commander l'appui-tête rotatif
Assembler le bouton en se référant au schéma. Prévoir une longueur de câble suffisamment longue pour le relier au PCB situé dans le boîtier qui a été fixé à l’arrière du fauteuil.
Étape 10 - Fixation de la poulie GT2 bore 5 sur moteur NEMA17 (ajouter ref vis)
Composants nécessaires:
- poulie-GT2-bore5-20dents
- nema17
Enfiler la poulie la poulie GT2 bore (trou) 5 20 dents sur l'axe du moteur Nema17. Puis la fixer avec les deux vis sans tête de blocage de la poulie.
Se référer à l'image du schéma global.
Étape 11 - Fixation du moteur+poulie sur support moteur
Composant nécessaire:
- vis-M3-12
Fixer l'ensemble moteur+poulie sur le support moteur avec 2 vis M3x12.
Étape 12 - Fixation roulements pour coulissage de la courroie
Composants nécessaires:
- roulement-F624ZZ
- rondelles
Fixer les 4 roulements à bille F624ZZ mis 2 par 2 en mirroir avec l'épaulement vers l'extérieur, avec des rondelles entre la vis et le roulement, pour éviter de comprimer la partie extérieure du roulement. Et de l'autre coté de la plaque du support moteur, on vient fixer la vis de M4x20 (ou 25) avec un écrou nylstop.
Étape 13 - Câblage des capteurs de fin de course (end-stop)
Composants nécessaires:
- micro-switch
- fil-de-cablage-monobrin-0.2
Souder les fils sur les capteurs de fin de course (autrement dit end stop ou microswitchs). Prévoir une longueur de fil suffisante pour aller jusqu'au boitier où se situe le circuit électronique.
Étape 14 - Montage des capteurs de fin de course sur leur support
Composants nécessaires:
- vis CHc-M2X16
- ecrous-M2
Assembler les capteurs de fin de courses (microswitchs) à leurs supports avec 2 vis CHc-M2X16 chacun et l'écrou associé
Étape 15 - Assemblage support des capteurs de fin de course sur support moteur (add photo)
Composants nécessaires:
- vis CHc-M3x14
- ecrous-nylstop-M3
Fixer les support des capteurs de fin de course sur le support moteur avec 2 vis CHc-M3x14 qui sont fixées sur le Nema 17.
Étape 16 - Préparation des galets
Introduire de part et d'autre de chaque galet un roulement MR84ZZ. Insérer par la force les roulements (2 par galet) dans les galets.
Étape 17 - Assemblage des galets sur la plaque de fixation de la rotule (add photo+précision nb vis)
Composants nécessaires:
- vis-CHc-M5X35
- ecrou-nylstop
Assembler les galets sur la plaque de fixation de la rotule avec les vis CHc-M4X35 et écrous nylstop M4. Ne pas visser à fond et laisser du jeu pour l'assemblage sur le rail.
Étape 18 - Assemblage de la rotule sur la plaque support rotule
Composants nécessaires:
- vis-CHc-M5X15
- rondelle
Assembler la rotule et son ergo sur la plaque avec la vis CHc-M5X15 et sa rondelle (il faut penser à mettre du frein filet si ça se déserre trop souvent).
Étape 19 - Assemblage de plaque rotule sur le rail de guidage (add photo+vis ref)
Enfiler la plaque rotule sur le rail de guidage.
Serrer les écrous de fixation des galets en ne les serrant pas trop fort pour que le coulissement soit correct.
Étape 20 - Fixation de la cornière aluminium sur la plaque de support rotule
Composants nécessaires:
- vis-M3
- ecrous-nylstop-M3
Fixer la cornière aluminium sur la plaque de support rotule. La corniere de 20x20 sur 31 mm de longueur + 2 vis M3 avec écrous nylstop + 2 vis (ref+longueur???)
Étape 21 - Pose, tension et fixation de la courroie
Pose, tension et fixation de la courroie GT2 de largeur 6 mm, pas de 2 mm et longueur environ 35mm ou ajuster la longueur selon la course du rail. La fixer à chaque extrémité en la faisant passer par le trou prévu sur la butée de fin de course, et la fixer avec un cerflex sur le côté extérieur. Les crans de la courroie doivent être orientés vers le rail.
Fixation de l'appui-tête : https://urlz.fr/bjPY
Fixation courroie : https://youtu.be/NXCGfeGCh6I