Différences entre versions de « Projets talk:Appui-tete motorisé »

De wikiup
Sauter à la navigation Sauter à la recherche
 
(95 versions intermédiaires par 5 utilisateurs non affichées)
Ligne 4 : Ligne 4 :
 
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).
 
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.
 
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.
 +
 +
Ce projet, a abouti à deux solutions viables.
 +
 +
==Lien utiles==
 +
[https://rennes.humanlab.me/projet/appui-tete-electrique/ Page du Geslab]
 +
 +
[https://wikilab.myhumankit.org/index.php?title=Projets:Appui-tete_motorise Page vers la documentation finale]
  
 
== Cahier des charges ==
 
== Cahier des charges ==
Ligne 13 : Ligne 20 :
 
* être suffisamment hermétique pour ne pas que les cheveux se prennent dans le mécanisme
 
* être suffisamment hermétique pour ne pas que les cheveux se prennent dans le mécanisme
 
* être résistant aux intempéries
 
* être résistant aux intempéries
* prendre en compte que Mathilde va être équipé d'un nouveau fauteuil
+
* 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 n'existe pas dans le commerce, il en existe seulement un non électrique.
+
Cette solution existe seulement en non électrifiée dans le commerce.
  
La solution suivante a été testée et convient à Mathilde sauf le manque d'aide électrique.
+
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
  
Ligne 25 : Ligne 32 :
 
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étail sur le mécanisme de roulements http://ot-sieber.ch/wp-content/uploads/2016/03/DSC_0052_3-180x180.jpg
+
Détails sur le mécanisme de roulements http://ot-sieber.ch/wp-content/uploads/2016/03/DSC_0052_3-180x180.jpg
  
 
== Equipe ==
 
== Equipe ==
Ligne 33 : Ligne 40 :
 
* Danke, conception
 
* Danke, conception
 
* Stéphane, électronique, moteur
 
* Stéphane, électronique, moteur
 +
* Christian, électronique, bouton
 
* Delphine, coordination
 
* Delphine, coordination
  
Ligne 43 : Ligne 51 :
  
 
''' Utilisation d'une commande type interrupteur :'''
 
''' Utilisation d'une commande type interrupteur :'''
     ++ simple à mettre en oeuvre,
+
     ++ simple à mettre en oeuvre
 
     -  ajoute une commande manuelle sur un dispositif déjà bien rempli
 
     -  ajoute une commande manuelle sur un dispositif déjà bien rempli
  
Ligne 60 : Ligne 68 :
  
 
---> 1er choix exploré, refaire un peu comme celui du commerce mais en l'électrifiant (avec donc arceau de rotation) (quid du brevet de celui du commerce)
 
---> 1er choix exploré, refaire un peu comme celui du commerce mais en l'électrifiant (avec donc arceau de rotation) (quid du brevet de celui du commerce)
---> 2e choix exploré, mettre une crémaillère à l arrière de l'appui tête actuel (difficulté à garder la rotule de réglage et aussi la solidité... déporter la rotule...) modélisation de Danke et Yves
+
 
 +
---> 2ème choix exploré, mettre une crémaillère à l'arrière de l'appui tête actuel (difficulté à garder la rotule de réglage et aussi la solidité... déporter la rotule...) modélisation de Danke et Yves
  
 
       '''Crémaillère + vis sans fin'''
 
       '''Crémaillère + vis sans fin'''
Ligne 72 : Ligne 81 :
 
         -- mouvement moins naturel (risque de traumatisme sur la durée ?)
 
         -- mouvement moins naturel (risque de traumatisme sur la durée ?)
  
Choix exploré, mettre l'axe de rotation dans l appui tete avec double gros roulements et la rotation s'effectuerait avec un bras relié au moteur déporté légèrement en arrière (cela nécessite de refaire l'appui tete et mathilde émet des craintes sur cela) modélisation philippe et ?
+
Choix exploré, mettre l'axe de rotation dans l'appui tête avec double gros roulements et la rotation s'effectuerait avec un bras relié au moteur déporté légèrement en arrière (cela nécessiterait de refaire l'appui tête et Mathilde émet des craintes sur ce point) modélisation Philippe et ?
  
 
== Test capteur musculaire avec le "Finger starter" ==
 
== Test capteur musculaire avec le "Finger starter" ==
  
Objectif : contrôler la rotation grâce à deux capteurs placés de part et d'autre du cou et déclenchés par contraction musculaire (seul endroit pour Mathilde où elle a un tendon qui permet de détecter une contraction par un capteur)
+
'''Objectif''' : contrôler la rotation grâce à deux capteurs placés de part et d'autre du cou et déclenchés par contraction musculaire (seul endroit pour Mathilde où elle a un tendon qui permet de détecter une contraction par un capteur)
  
[https://www.facebook.com/plugins/video.php?href=https%3A%2F%2Fwww.facebook.com%2FMyHumanKit%2Fvideos%2F1857871601151296%2F&show_text=0&width=400 Lien vers video facebook du capteur Ottobock en action]
+
'''Lien vers vidéo facebook du capteur Ottobock en action'''
  
'''Limites :'''
+
{{#ev:facebook|https://www.facebook.com/1633246713613787/videos/1857871601151296}}
  
- Il faut deux capteurs constamment sur le cou.
 
  
- Les capteurs doivent adhérer parfaitement à la peau et avec le mouvement de contraction, il a tendance à se décoller.
+
'''Limites :'''
 +
* Il faut deux capteurs constamment sur le cou.
 +
* Les capteurs doivent adhérer parfaitement à la peau et avec le mouvement de contraction, il a tendance à se décoller.
  
 
'''Conclusion:''' Il faudrait envisager une autre solution. Peut-être un micro switch (comme les "end-stop" que l'on trouve sur des imprimantes 3D).
 
'''Conclusion:''' Il faudrait envisager une autre solution. Peut-être un micro switch (comme les "end-stop" que l'on trouve sur des imprimantes 3D).
  
 
'''Code Arduino mappé sur la contraction du cou de Mathilde'''
 
'''Code Arduino mappé sur la contraction du cou de Mathilde'''
<code>
+
 
 
<pre>
 
<pre>
 
int muscle;
 
int muscle;
Ligne 127 : Ligne 137 :
  
 
</pre>
 
</pre>
</code>
 
  
 
== Premières conceptions de l'appui tête en 3D ==
 
== Premières conceptions de l'appui tête en 3D ==
Ligne 184 : Ligne 193 :
  
 
'' Je suis passé voir John pour lui demander ce qu'on pouvait fraiser avec la CNC au LabFab afin de faire le rail de guidage. ''
 
'' Je suis passé voir John pour lui demander ce qu'on pouvait fraiser avec la CNC au LabFab afin de faire le rail de guidage. ''
'' On ne peut fraiser que orthogonalement et dans les 3 directions mais sans incliner la fraise. Par contre on peut fraiser une dépouille en biais avec une fraise a 45° par ex. (mais à acheter) ''
+
'' On ne peut fraiser que orthogonalement et dans les 3 directions mais sans incliner la fraise. Par contre on peut fraiser une dépouille en biais avec une fraise a 45° par ex. (mais à acheter) ou cela peut être fait ailleurs s'il le faut (Airbus, lycée technique,...?) ''
'' Par contre cela peut être fait ailleurs s'il le faut (Airbus, lycée technique,...?) ''
 
 
'' Le conseil de John c'est de concevoir un rail droit dans une matière semi-souple (nylon ?) qui pourra être cintré selon l'arc en métal. ''
 
'' Le conseil de John c'est de concevoir un rail droit dans une matière semi-souple (nylon ?) qui pourra être cintré selon l'arc en métal. ''
  
Ligne 214 : Ligne 222 :
 
=== Questions pour rencontre le 10/04/2017 avec Francis Esnault (ingénieur mécanique/résistance de matériaux)===
 
=== Questions pour rencontre le 10/04/2017 avec Francis Esnault (ingénieur mécanique/résistance de matériaux)===
 
'''Choix judicieux du moteur''' : (si trop puissant  = consomme trop)
 
'''Choix judicieux du moteur''' : (si trop puissant  = consomme trop)
Le couple du moteur (en N/m) doit permettre de supporter l'ensemble : poids de la tête, poids ensemble mécanismes, frein rotation cou).Cela va conditionner la taille du mécanisme.
+
Le couple du moteur (en N/m) doit permettre de supporter l'ensemble : poids de la tête, poids de l'ensemble des mécanismes, frein rotation cou). Cela va conditionner la taille du mécanisme.
  
'''si crémaillère nylon : ''' quel type de vis sans fin ? (métal, imprimée, nylon,....?):usure dûe à la friction à prendre en compte
+
'''Si crémaillère nylon : ''' quel type de vis sans fin ? (métale, imprimée, nylon...?) : usure dûe à la friction à prendre en compte.
  
''' profil du rail de guidage pour usinage facile au LabFab (CNC 3 axes) et choix matière ''' : nylon, téflon,.... sachant que rail courbe
+
''' Profil du rail de guidage pour usinage facile au LabFab (CNC 3 axes) et choix matière ''' : nylon, téflon... sachant que rail courbe.
 
   
 
   
''' question à Mathilde ''':
+
''' Question à Mathilde ''':
De combien on peut baisser la tige de l'appui tête dans le dossier du fauteuil (conditionne hauteur disponible pour le systeme motorisé) sans considérer que Mathilde doit être dessus, c'est juste pour un calcul . Réponse 15 cm mais ça dépendra du futur dossier de mon futur fauteuil, ce devrait être sensiblement pareil
+
De combien peut-on baisser la tige de l'appui tête dans le dossier du fauteuil (cela conditionne la hauteur disponible pour le systeme motorisé) sans considérer que Mathilde doit être dessus ? (c'est juste pour un calcul) ''Réponse'' : de 15 cm mais cela dépendra du dossier de son futur fauteuil, même si cela devrait être sensiblement pareil.
  
 
=== Retour de Francis sur la dernière proposition de Yves ===
 
=== Retour de Francis sur la dernière proposition de Yves ===
  
Le système avec la vis sans fin est un peu complexe et prend beaucoup de place. Il faut peut-être envisager une simplification du système sur le modèle qu'avait envisagé Danke comme le modèle ci-dessous.
+
Le système avec la vis sans fin est un peu complexe et prend beaucoup de place. Il faut peut-être envisager une simplification du système sur le modèle qu'avait envisagé Danke comme ci-dessous.
  
  
Ligne 246 : Ligne 254 :
 
'''Nota bene : Avec un diamètre de tête de 220 mm :'''
 
'''Nota bene : Avec un diamètre de tête de 220 mm :'''
  
- les effets d'inertie demeurent négligeables(très faible accélération angulaire) devant le couple résistant dû aux forces de contact
+
*Les effets d'inertie demeurent négligeables (très faible accélération angulaire) devant le couple résistant dû aux forces de contact.
 
+
*Le couple résistant, à contrario, se trouve significativement augmenté
- le couple résistant, à contrario, se trouve significativement augmenté
 
  
 
''' Au final, on arrive à un couple moteur théorique devant être délivré par le moteur :'''
 
''' Au final, on arrive à un couple moteur théorique devant être délivré par le moteur :'''
Ligne 357 : Ligne 364 :
 
[[File:ATM-V3_modele_rails_alu.stl]]
 
[[File:ATM-V3_modele_rails_alu.stl]]
  
== Schema fritzing carte de commande 27/04/2017, Stéphane ==
+
== Schéma fritzing carte de commande 27/04/2017, Stéphane ==
<gallery>
+
 
File:Moteur appuitete bb.png
+
[[File:Moteur appuitete bb.png|800px]]
</gallery>
 
  
 
== Firmware Arduino, Stéphane ==
 
== Firmware Arduino, Stéphane ==
 
'''Le fichier .zip avec le projet complet'''
 
'''Le fichier .zip avec le projet complet'''
[[:File:Appuitete v1.zip|Appuitete-arduino.v1]]
+
[[:File:Appuitete_v3_code.zip|Appuitete-arduino.v3]]
  
===V1.0 27/04/2017===
+
===V3 finale===
  
 
'''Fichier principal'''
 
'''Fichier principal'''
 
<code>
 
<code>
 
<pre>
 
<pre>
#include <SoftTimer.h>
+
#include "cli.h"
#include <Task.h>
+
#include "config.h"
#include <AccelStepper.h>
+
 
#include <MultiStepper.h>
 
  
#include "config.h"
+
#include "command.h"
  
  
 
// task definition for periodic scheduling 1ms
 
// task definition for periodic scheduling 1ms
void motorControl(Task* me);
+
//void motorControl(Task* me);
Task schedule (1, motorControl);
+
//Task schedule (1, motorControl);
 +
 
  
// stepper configuration
 
AccelStepper stepper1(AccelStepper::DRIVER, MOTOR_STEP, MOTOR_DIR);
 
  
 
void setup() {
 
void setup() {
 +
 +
  // intialize command
 +
  cli_open ();
 +
 
 
   // initialize motor
 
   // initialize motor
   stepper1.setMaxSpeed (MAX_SPEED);
+
   load_config ();
   stepper1.setAcceleration (MAX_ACCEL);
+
  get_stepper()->setMaxSpeed (get_speed());
 +
   get_stepper()->setAcceleration (get_accel());
 
   // initialize led
 
   // initialize led
 
   pinMode(LED, OUTPUT);
 
   pinMode(LED, OUTPUT);
Ligne 410 : Ligne 419 :
 
    
 
    
 
   // run scheduler
 
   // run scheduler
   SoftTimer.add(&schedule);
+
   //SoftTimer.add(&schedule);
  
 
}
 
}
Ligne 423 : Ligne 432 :
 
boolean SensorLeft ()
 
boolean SensorLeft ()
 
{
 
{
 +
  if (get_force_left () > 0)
 +
    return (true);
 
   return (digitalRead (BTN_LEFT)== BTN_LEFT_ACTIVE_STATE ? true : false);
 
   return (digitalRead (BTN_LEFT)== BTN_LEFT_ACTIVE_STATE ? true : false);
 
}
 
}
Ligne 435 : Ligne 446 :
 
boolean SensorRight()
 
boolean SensorRight()
 
{
 
{
 +
  if (get_force_right () > 0)
 +
    return (true);
 
   return (digitalRead (BTN_RIGHT) == BTN_RIGHT_ACTIVE_STATE ? true : false);
 
   return (digitalRead (BTN_RIGHT) == BTN_RIGHT_ACTIVE_STATE ? true : false);
 
}
 
}
Ligne 466 : Ligne 479 :
 
int STOP_MOVE = 0;
 
int STOP_MOVE = 0;
  
void turnOn(Task* me)
+
//void turnOn(Task* me)
{
+
//{
  
}
+
//}
  
  
Ligne 478 : Ligne 491 :
 
//
 
//
 
//  
 
//  
void motorControl(Task* me)
+
//void motorControl(Task* me)
 +
void loop ()
 
{
 
{
 +
  AccelStepper *pstepper = get_stepper ();
 +
 
 
   // put your main code here, to run repeatedly:
 
   // put your main code here, to run repeatedly:
  
Ligne 491 : Ligne 507 :
 
   boolean endl = EndStopLeft ();
 
   boolean endl = EndStopLeft ();
 
   boolean endr = EndStopRight ();
 
   boolean endr = EndStopRight ();
 +
 +
 +
 
 
  if (endr || endl)
 
  if (endr || endl)
 
   digitalWrite (LED, HIGH);
 
   digitalWrite (LED, HIGH);
Ligne 513 : Ligne 532 :
 
     {
 
     {
 
       move = RIGHT_MOVE;
 
       move = RIGHT_MOVE;
       stepper1.move (1000);
+
       pstepper->move (20000);
 
       //digitalWrite(LED, HIGH);
 
       //digitalWrite(LED, HIGH);
 
     }
 
     }
Ligne 526 : Ligne 545 :
 
     {
 
     {
 
       move = LEFT_MOVE;
 
       move = LEFT_MOVE;
       stepper1.move(-1000);
+
       pstepper->move(-20000);
 
       //digitalWrite(LED, HIGH);
 
       //digitalWrite(LED, HIGH);
 
     }
 
     }
Ligne 534 : Ligne 553 :
 
   if (move != STOP_MOVE)
 
   if (move != STOP_MOVE)
 
   {
 
   {
     stepper1.run();
+
     pstepper->run();
 
   }
 
   }
 
   else
 
   else
 
   {
 
   {
 
     //stepper1.disableOutputs();
 
     //stepper1.disableOutputs();
     stepper1.setSpeed(0);
+
     pstepper->setSpeed(0);
     stepper1.setCurrentPosition (0);
+
     pstepper->setCurrentPosition (0);
 
   }
 
   }
  
 +
  // process command
 +
  CLI.process();
 
}
 
}
 
</pre>
 
</pre>
Ligne 550 : Ligne 571 :
 
<code>
 
<code>
 
<pre>
 
<pre>
 +
#ifndef __CONFIG_H
 +
#define __CONFIG_H
  
 +
#include <AccelStepper.h>
 +
#include <MultiStepper.h>
 +
 +
///
 +
///
 +
/// Default values
 +
///
 +
///
 
#define MOTOR_MS1 11 // EASY DRIVER MS1 IO FROM ARDUINO
 
#define MOTOR_MS1 11 // EASY DRIVER MS1 IO FROM ARDUINO
 
#define  MOTOR_MS2  10 // Easy Driver MS2 IO From Arduino
 
#define  MOTOR_MS2  10 // Easy Driver MS2 IO From Arduino
Ligne 566 : Ligne 597 :
  
  
#define MAX_SPEED 10000 // max speed in step/s
+
#define MAX_SPEED 50 // max speed in step/s
#define MAX_ACCEL 1000 // max acceleration in step / s / s
+
#define MAX_ACCEL 2500 // max acceleration in step / s / s
  
 
#define ENDSTOP_LEFT 7
 
#define ENDSTOP_LEFT 7
Ligne 573 : Ligne 604 :
 
#define ENDSTOP_LEFT_STATE LOW
 
#define ENDSTOP_LEFT_STATE LOW
 
#define ENDSTOP_RIGHT_STATE LOW
 
#define ENDSTOP_RIGHT_STATE LOW
 +
 +
 +
// global accessor
 +
void set_speed (int s);
 +
int get_speed (void);
 +
void set_accel (int a);
 +
int get_accel (void);
 +
int get_force_left (void);
 +
void set_force_left (int f);
 +
int get_force_right (void);
 +
void set_force_right (int r);
 +
long get_eeprom_magic (void);
 +
 +
AccelStepper* get_stepper ();
 +
 +
void save_config ();
 +
int load_config ();
 
</pre>
 
</pre>
 
</code>
 
</code>
Ligne 584 : Ligne 632 :
  
 
== Fixation appui-tête actuel sur interface rotative, 07/05/2017, Mathilde ==
 
== Fixation appui-tête actuel sur interface rotative, 07/05/2017, Mathilde ==
Bague de serrage avec trois visses
+
Bague de serrage avec trois vis.
  
 
[[:File: Bague_rotule.stl| Bague rotule stl]]
 
[[:File: Bague_rotule.stl| Bague rotule stl]]
Ligne 608 : Ligne 656 :
 
== Changement par rapport au modèle final de Yves ==
 
== Changement par rapport au modèle final de Yves ==
 
* Remplacer les boulons Allen de la plaque de support tétière par des boulons 6 pans (hexagonal) pour permettre de les visser facilement.
 
* Remplacer les boulons Allen de la plaque de support tétière par des boulons 6 pans (hexagonal) pour permettre de les visser facilement.
* Remodéliser la rotule + la plaque (Yves s'en charge) en fonction du diamètre du trou du support de la rotule. Les mesures ont été basées sur la plaque que Mathilde a modélisé ci-dessus (Bague rotule). Vérifier que le diamètre est bon (20 mm)
+
* Remodéliser la rotule + la plaque (Yves s'en charge) en fonction du diamètre du trou du support de la rotule. Les mesures ont été basées sur la plaque que Mathilde a modélisé ci-dessus (Bague rotule). Vérifier que le diamètre est bon (20 mm).
* L'idée est de réutiliser l'ancien support (tube de 13mm) de Mathilde mais il faudra peut-être refaire cette pièce. Attention car Yves a modéliser un tube carré de 20mm pour la platine support acier qui est en-dessous.
+
* L'idée est de réutiliser l'ancien support (tube de 13mm) de Mathilde mais il faudra peut-être refaire cette pièce. Attention car Yves a modélisé un tube carré de 20mm pour la platine support acier qui est en-dessous.
  
 
== A modéliser ==
 
== A modéliser ==
Ligne 615 : Ligne 663 :
  
 
== A implémenter pour la commande moteur ==
 
== A implémenter pour la commande moteur ==
* Prévoir un détecteur au point zéro (un switch qui le déclenche, ou une cellule (end-stop)
+
* Prévoir un détecteur au point zéro (un switch qui le déclenche, ou une cellule (end-stop))
* Prévoir un potentiomètre pour redéfinir le point zéro (le personaliser en fonction de l'usager)
+
* Prévoir un potentiomètre pour redéfinir le point zéro (le personnaliser en fonction de l'usager)
* Vitesse de rotation (à affiner) : 60 degré en 4 secondes
+
* Vitesse de rotation (à affiner) : 60° en 4 secondes
  
== Débat sur moteur : pas à pas ou courant continu ? ==
+
== Débat sur le moteur : pas à pas ou courant continu ? ==
  
 
Le moteur doit tourner dans les deux sens, il faut deux capteurs de fin de course, et il faut que la rotation puisse s'arrêter entre les extrémités.
 
Le moteur doit tourner dans les deux sens, il faut deux capteurs de fin de course, et il faut que la rotation puisse s'arrêter entre les extrémités.
Ligne 633 : Ligne 681 :
 
== Fichiers Pignon + Bague_rotule (Obsolète :  Ne pas imprimer) ==
 
== Fichiers Pignon + Bague_rotule (Obsolète :  Ne pas imprimer) ==
 
Attention le fichier du pignon dans le zip version Finale n'est pas centré. Le remplacer par la version du fichier suivant.
 
Attention le fichier du pignon dans le zip version Finale n'est pas centré. Le remplacer par la version du fichier suivant.
La bague rotule ici présente est par contre obsolète. Cette version qui permet de venir glisser la rotule n'est pas assez solide.Il faut utiliser la version du chapitre suivant: Modif_ATM_V3_bille25_boulonnee.zip.  
+
La bague rotule ici présente est par contre obsolète. Cette version qui permet de venir glisser la rotule n'est pas assez solide. Il faut utiliser la version du chapitre suivant : Modif_ATM_V3_bille25_boulonnee.zip.  
  
 
[[:File:Pignon-Bague_rotule.zip|Fichiers Pignon-Bague_rotule.zip]]
 
[[:File:Pignon-Bague_rotule.zip|Fichiers Pignon-Bague_rotule.zip]]
Ligne 646 : Ligne 694 :
 
Suite à une première impression, les bras de commande sont trop longs, Yves a donc raccourci la partie médiane de ceux ci.
 
Suite à une première impression, les bras de commande sont trop longs, Yves a donc raccourci la partie médiane de ceux ci.
  
La palette fixé au contacteur en bout de ces bras de commande était trop petite, ici elles sont agrandies.
+
La palette fixée au contacteur en bout de ces bras de commande était trop petite, ici elles sont agrandies.
  
 
[[File:ATM V3 commande courte 01.jpeg]]
 
[[File:ATM V3 commande courte 01.jpeg]]
Ligne 661 : Ligne 709 :
 
== Mise à jour du 28.06.2017 (Danke) ==
 
== Mise à jour du 28.06.2017 (Danke) ==
  
En se basant sur le principe de la vis sans fin tel que proposé sur la Version2 du 04.04.2017, l'ajout d'un système de came à donné naissance au projet suivant.
+
En se basant sur le principe de la vis sans fin tel que proposé sur la Version2 du 04.04.2017, l'ajout d'un système de came a donné naissance au projet suivant.
  
 
[[File:Came_vis_sans_fin.gif|center]]
 
[[File:Came_vis_sans_fin.gif|center]]
Ligne 676 : Ligne 724 :
  
 
Conception : FreeCAD,  technique : découpe laser sur contreplaqué 5mm
 
Conception : FreeCAD,  technique : découpe laser sur contreplaqué 5mm
 
  
 
== Prototype version courroie (plus simple que la version crémaillère) sur la base de la proposition du Lab cesson le 13/07/2017==
 
== Prototype version courroie (plus simple que la version crémaillère) sur la base de la proposition du Lab cesson le 13/07/2017==
Ligne 687 : Ligne 734 :
 
Voici le schéma et le pcb proposé par Bris au lab de Cesson  
 
Voici le schéma et le pcb proposé par Bris au lab de Cesson  
  
[[File:Pcb v1.2.png|200px|PCB]]
+
[[File:Pcb v1.2.png|700px|PCB]]
  
[[File:Sup tete sch v1.2.pdf|Schéma]]
+
[[File:Sup tete sch v1.2.pdf|Schéma|900px]]
  
 
===Code Arduino===
 
===Code Arduino===
Ligne 697 : Ligne 744 :
 
===Schéma du circuit===
 
===Schéma du circuit===
 
===Première vidéo de démonstration du prototype "Low tech===
 
===Première vidéo de démonstration du prototype "Low tech===
https://youtu.be/XQPITVDHdcU
+
{{#ev:youtube|https://youtu.be/XQPITVDHdcU}}
  
 
==Réunion du 07/09/2017==
 
==Réunion du 07/09/2017==
Ligne 707 : Ligne 754 :
 
===Vidéo du nouveau prototype Courroie réalisé cet été par Philippe, Danke et Stéphane===
 
===Vidéo du nouveau prototype Courroie réalisé cet été par Philippe, Danke et Stéphane===
  
Test avec un poids de 3,2kg : https://youtu.be/Exe82_4w_C4
+
Test avec un poids de 3,2kg :  
 +
{{#ev:youtube|https://youtu.be/Exe82_4w_C4}}
 +
 
  
Test avec un poids de 6kg : https://youtu.be/o_f7csljxNY
+
Test avec un poids de 6kg :  
 +
{{#ev:youtube|https://youtu.be/o_f7csljxNY}}
  
 
===Résumé des avancés sur le proto courroie===
 
===Résumé des avancés sur le proto courroie===
Test du proto à courroie avec poids de 6 kilos et le pb c'est que les arrivé aux extrémités car le moteur etait fixe et rail se deplacait avec la rotule dessus et donc cela donnait trop de frottement un porte a faux en bout de course.Il fallait donc pousser le rail pour qu'il reparte dans l'autre sens.  
+
Test du prototype à courroie avec poids de 6 kilos. Problème : à l'arrivée aux extrémités de la rotation, le moteur peinait du fait qu'il était fixe et que le rail se déplaçait avec la rotule dessus. Il fallait donc pousser le rail pour qu'il reparte dans l'autre sens.  
  
 
Donc rail unique facile à imprimer mais il fallait ajouter un antibasculement.
 
Donc rail unique facile à imprimer mais il fallait ajouter un antibasculement.
  
Donc autre proto imprimé en deux fois (deux ensembles boulonnés avec boulons traversants) et là le rail est fixe et le moteur est mobile. Le support rotule et moteur devraient etre faits en aluminium ainsi que la rotule. Le support du tube du fauteuil doit etre en acier. A voir si on peut utiliser le support d' appui-tête du nouveau fauteuil de Mathilde Mathilde dont elle ne se sert pas.
+
Donc autre prototype imprimé en deux fois (deux ensembles boulonnés avec boulons traversants) et là le rail est fixe et le moteur mobile. Les support rotule et moteur devraient être faits en aluminium, tout comme la rotule. Le support du tube du fauteuil doit être en acier. A voir si on peut utiliser le support d'appui-tête du nouveau fauteuil de Mathilde dont elle ne se sert pas.
  
Truc à voir: où on fixe les capteurs: il faut les fixer sur l'appui tête lui-même ou sur la tige de la rotule
+
Truc à voir : où fixer les capteurs ? → sur l'appui tête lui-même ou sur la tige de la rotule.
  
Ajouter peut-être des tiges alu pour les commandes ou support alu (ou PMMA) fixé au support de la rotule qui épouse la partie mobile pour fixer les bras articulés (imprimés ou alu)
+
Ajouter peut-être des tiges alu pour les commandes ou support alu (ou PMMA) fixé au support de la rotule qui épouse la partie mobile pour fixer les bras articulés (imprimés ou alu).
  
A implémenter: pouvoir ranger les bras de commandes quand pas utilisés.Pourquoi pas prévoir un système de ressort sur le rail de manière à ranger et sortir facilement les bras.
+
A implémenter : pouvoir ranger les bras de commandes quand ils ne sont pas utilisés. Pourquoi pas prévoir un système de ressort sur le rail de manière à ranger et sortir facilement les bras.
  
 
===Résumé des avancés sur le prototype de Jean-Pierre===
 
===Résumé des avancés sur le prototype de Jean-Pierre===
Ligne 757 : Ligne 807 :
 
</gallery>
 
</gallery>
  
==montages et premiers tests==
+
==Montages et premiers tests==
 
<gallery mode="slideshow">
 
<gallery mode="slideshow">
 
File:Uaux8B.gif
 
File:Uaux8B.gif
 
</gallery>
 
</gallery>
  
[[Category:Projets]]
 
[[Category:En cours]]
 
[[Category:Mobilité]]
 
  
Réunion du 30 novembre suite aux premiers essais concluants
+
Réunion du 30 novembre suite aux premiers essais concluants : la rotation fonctionne, l'électronique aussi, il faut prévoir un ergo à la rotule pour qu'elle ne tourne pas sur elle-même.
la rotation fonctionne, l'électronique aussi, il faut prévoir un ergo a la rotule pour qu'elle ne tourne pas sur elle même
+
 
Suite :  
+
'''Suite''' :  
dans un premier temps, 2 boutons seront positionnés proches de la manette à gauche, au plus près l'un de l'autre, le boitier qui doit être créé pour contenir ces deux boutons serait fixé par un serre clips (je sais pas comment ça s'écrit) à l'autre bouton déjà présent sur la manette
+
dans un premier temps, 2 boutons seront positionnés proches de la manette à gauche, au plus près l'un de l'autre. Le boîtier qui doit être créé pour contenir ces deux boutons sera fixé par un serre clips à l'autre bouton déjà présent sur la manette.
le boitier sera imprimé en impression 3D, le bas en plastique dur, un trou en dessous permettra la sortie des fils, le dessus en plastique souple afin de permettre l'étanchéité et garder la facilité de pression des boutons; les deux parties du boitier peuvent peut être être collés par colle néoprene pour assurer encore plus d'étanchéité.
+
Il sera imprimé en 3D, le bas en plastique dur (un trou en dessous permettra la sortie des fils) et le dessus en plastique souple afin de permettre l'étanchéité et garder la facilité de pression des boutons. Les deux parties du boîtier peuvent éventuellement être collées avec de la colle néoprene pour assurer encore plus d'étanchéité.
  
Ce boitier devra pouvoir être déconnecté du reste de l'électronique et donc aussi du support rotatif, il est ainsi imaginé de mettre sur la longueur du fil, environ sous l'accoudoir, un système de connexion/déconnexion étanche et à visse (systeme vu à Caen par Christian et trouvé par Stéphane sur le net)
+
Ce boîtier devra pouvoir être déconnecté du reste de l'électronique et donc aussi du support rotatif. Il est ainsi envisagé de mettre sur la longueur du fil, environ sous l'accoudoir, un système de connexion/déconnexion étanche et à vis (système vu à Caen par Christian et trouvé par Stéphane sur le net).
  
==photos et point d'étape 12/04/18==
+
==Photos et point d'étape 12/04/18==
 
<gallery>
 
<gallery>
 
File:photo12041.jpg
 
File:photo12041.jpg
Ligne 792 : Ligne 839 :
 
File:photo12046.jpg
 
File:photo12046.jpg
 
</gallery>
 
</gallery>
 +
 +
==Fichiers STL du contacteur du projet de Jean-Pierre==
 +
 +
[[:File:Stl_bouton_jp.zip|Stl_bouton_jp.zip]]
 +
 +
==Photos des éléments de la version finale==
 +
Le support du moteur ayant cassé lors d'un essai, le support moteur sera renforcé d'une réglette en aluminium
 +
 +
<gallery>
 +
File:Supportmoteurcarbone.jpg
 +
</gallery>
 +
 +
<gallery mode="slideshow">
 +
File:Supportmoteurcarbone.jpg
 +
</gallery>
 +
 +
 +
==Rectifications pour le montage==
 +
Il faut deux vis M3 tête fraisée de 16mm de long  au lieu des BTR initialement prévues, pour le support moteur suite à la nouvelle modélisation.
 +
 +
==Branchement sur la batterie du fauteuil==
 +
Il y a deux batteries sur le fauteuil de Mathilde produisant chacune 12v, elles sont branchés en série pour produire 24V.
 +
Pour avoir le 24V, on branche sur le + d'une des batteries et le moins sur l'autre.
 +
Ici nous voulons du 24v pour le moteur de l'appui-tête et du 5V pour la carte arduino  (prise sur la carte easy driver elle-même alimentée en 24V en vIN)
 +
 +
[[File:Schema batterieOK.jpg]]
 +
 +
==Fichiers stl version finale==
 +
Télécharger les fichiers stl et les imprimer en 3D.
 +
[[File:Pièces imprimées 3D.zip]]
 +
 +
==Circuit avec arduino nano et easy driver (driver de moteur)==
 +
 +
[[File:Appui tete.png|900px]]
 +
 +
==Montage appui-tête 12.07.2018==
 +
{{#ev:youtube|https://youtu.be/GmRbWw839R0}}
 +
 +
==Video de l'appui-tête en action==
 +
{{#ev:youtube|https://youtu.be/J9JQrLJC_1k}}
 +
 +
{{#ev:youtube|https://youtu.be/uTQurch47Lc}}
 +
 +
 +
 +
[[Category:Projets]]
 +
[[Category:Réalisés]]
 +
[[Category:Motricité]]

Version actuelle datée du 7 septembre 2022 à 11:13

Le projet de l'appui tête électrique est proposé par Mathilde.

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.

Ce projet, a abouti à deux solutions viables.

Lien utiles

Page du Geslab

Page vers la documentation finale

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

Support tete rotatif commerce.gif

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

  • Mathilde Fuchs, responsable du projet
  • Yves Le Chevalier, conception 3D
  • Philippe Pacotte, conception 3D
  • Danke, conception
  • Stéphane, électronique, moteur
  • Christian, électronique, bouton
  • Delphine, coordination

Pistes de recherche

Electronique

Utilisation de capteurs musculaires :

   +++ instinctif
   - prix (qualité du capteur)
   - mise en oeuvre (choix de l'emplacement au quotidien)

Utilisation d'une commande type interrupteur :

   ++ simple à mettre en oeuvre
   -  ajoute une commande manuelle sur un dispositif déjà bien rempli

Mécanique

L'axe de rotation naturel de la tête se situe au niveau des vertèbres cervicales placées sous le crâne.

[images anatomiques face/profil d'un squelette]

Deux possibilités :
1: on respecte cet axe :
     ++ Mouvement naturel de la tête
      - Plus complexe à concevoir (effort mécanique plus important)
      - Dispositif potentiellement plus encombrant

---> 1er choix exploré, refaire un peu comme celui du commerce mais en l'électrifiant (avec donc arceau de rotation) (quid du brevet de celui du commerce)

---> 2ème choix exploré, mettre une crémaillère à l'arrière de l'appui tête actuel (difficulté à garder la rotule de réglage et aussi la solidité... déporter la rotule...) modélisation de Danke et Yves

      Crémaillère + vis sans fin
      ++ la crémaillère est bloquée en position si le moteur ne tourne pas
      - force sur l'axe moteur faible
      - frottement de la vis sur la crémaillère
2: on déplace l'axe sous la têtière, au plus proche de la colonne vertébrale :
       ++ mécanisme grandement simplifié
       + effort mécanique diminué (moins de bras de levier)
       -- mouvement moins naturel (risque de traumatisme sur la durée ?)

Choix exploré, mettre l'axe de rotation dans l'appui tête avec double gros roulements et la rotation s'effectuerait avec un bras relié au moteur déporté légèrement en arrière (cela nécessiterait de refaire l'appui tête et Mathilde émet des craintes sur ce point) modélisation Philippe et ?

Test capteur musculaire avec le "Finger starter"

Objectif : contrôler la rotation grâce à deux capteurs placés de part et d'autre du cou et déclenchés par contraction musculaire (seul endroit pour Mathilde où elle a un tendon qui permet de détecter une contraction par un capteur)

Lien vers vidéo facebook du capteur Ottobock en action


Limites :

  • Il faut deux capteurs constamment sur le cou.
  • Les capteurs doivent adhérer parfaitement à la peau et avec le mouvement de contraction, il a tendance à se décoller.

Conclusion: Il faudrait envisager une autre solution. Peut-être un micro switch (comme les "end-stop" que l'on trouve sur des imprimantes 3D).

Code Arduino mappé sur la contraction du cou de Mathilde

int muscle;
//servo library
#include <Servo.h>
Servo myservo;  // create servo object to control a servo
int val;    // variable to read the value from the analog pin

void setup()
{
  myservo.attach(7);  // attaches the servo on pin 9 to the servo object
  Serial.begin(57600);
  pinMode(A0,INPUT);
    myservo.write(0);
}
void loop()
{
//muscle
muscle=analogRead(A0);
Serial.println(muscle);

 //action of the finger
 if(muscle>20){
  kikoo();
  }
  else{
  myservo.write(50);
  delay(100);
  }
 }

//action of the finger : the last point is without tension (90 degrees).
void kikoo(){
  myservo.write(100);
  delay(100);   
}

Premières conceptions de l'appui tête en 3D

Ebauche 29.03.2017, Version 1 Yves Le Chevalier :

Ebauche 03.04.2017, version Philippe Pacotte :

Limites  : L'axe de rotation n'est pas dans l'axe du cou et risque de poser problème. Cette version est donc abandonnée.

Version2 04.04.2017, Yves Le Chevalier :

Notes  : J'ai travaillé sur une seconde maquette avec une rotation par vis sans fin et réglage motorisé de l'inclinaison. Ce n'est ici aussi qu'une ébauche pour matérialiser mes idées, mais cela ne peut pas être fonctionnel en l'état.

Addon v2 07.04.2017, Yves Le chevalier :

Notes : En vue de ta réunion de lundi, voici un petit travail qui pourra servir de support à votre discussion. J'ai, en effet, un peu retravaillé ce matin le projet suite à nos échanges d'hier. (cf photos ci dessous) J'ai donc dessiné une lame cintrée en métal (acier ?) avec une bille (soudée) pour permettre le raccordement sur la rotule du collier anatomique. Le moteur (Nema 17) entraîne l'ensemble par une vis sans fin. Le tout est monté sur supports articulés.

Le rail de guidage doit être vissé en le cintrant sur la lame de métal en dessous du point de fixation de l'entraînement.

Je suis passé voir John pour lui demander ce qu'on pouvait fraiser avec la CNC au LabFab afin de faire le rail de guidage. On ne peut fraiser que orthogonalement et dans les 3 directions mais sans incliner la fraise. Par contre on peut fraiser une dépouille en biais avec une fraise a 45° par ex. (mais à acheter) ou cela peut être fait ailleurs s'il le faut (Airbus, lycée technique,...?) Le conseil de John c'est de concevoir un rail droit dans une matière semi-souple (nylon ?) qui pourra être cintré selon l'arc en métal.

v2 10.04.2017, Yves Le chevalier :

Notes : Je pense que le rail courbe est faisable à la CNC dans un bloc de téflon ou nylon.... sinon le rail droit a le même profil mais me semble difficile à courber une fois fait.


Fichiers sources Freecad + photos

http://dl.free.fr/vizWvvTT0

Choix des matériaux

Questions pour rencontre le 10/04/2017 avec Francis Esnault (ingénieur mécanique/résistance de matériaux)

Choix judicieux du moteur : (si trop puissant = consomme trop) Le couple du moteur (en N/m) doit permettre de supporter l'ensemble : poids de la tête, poids de l'ensemble des mécanismes, frein rotation cou). Cela va conditionner la taille du mécanisme.

Si crémaillère nylon : quel type de vis sans fin ? (métale, imprimée, nylon...?) : usure dûe à la friction à prendre en compte.

Profil du rail de guidage pour usinage facile au LabFab (CNC 3 axes) et choix matière  : nylon, téflon... sachant que rail courbe.

Question à Mathilde : De combien peut-on baisser la tige de l'appui tête dans le dossier du fauteuil (cela conditionne la hauteur disponible pour le systeme motorisé) sans considérer que Mathilde doit être dessus ? (c'est juste pour un calcul) Réponse : de 15 cm mais cela dépendra du dossier de son futur fauteuil, même si cela devrait être sensiblement pareil.

Retour de Francis sur la dernière proposition de Yves

Le système avec la vis sans fin est un peu complexe et prend beaucoup de place. Il faut peut-être envisager une simplification du système sur le modèle qu'avait envisagé Danke comme ci-dessous.


Calcul de Francis pour le choix du moteur 13.04.2017

Télécharger le détail des calculs.

Nota bene : Avec un diamètre de tête de 220 mm :

  • Les effets d'inertie demeurent négligeables (très faible accélération angulaire) devant le couple résistant dû aux forces de contact.
  • Le couple résistant, à contrario, se trouve significativement augmenté

Au final, on arrive à un couple moteur théorique devant être délivré par le moteur :

C moteur = 0,15 Nm (le double de mon précédent résultat)

Vue arrière de la fixation de l'appui-tête 06.04.2017

Mesures 13.04.2017

[MAJ 07.09.17] La mesure entre l'axe de la colonne vertébrale et le centre de la rotule est estimée à 100mm

Modélisation du prototype final 19.04.2017, Yves Le Chevalier

Toutes les instructions sur ce pdf : http://wikilab.myhumankit.org/images/a/a1/ATM_V3_Notes_de_fabrication_et_de_montage.pdf

Tous les fichiers stl+FCStd+images : Fichiers


Fichier:ATM-V3 modele rails alu.stl

Schéma fritzing carte de commande 27/04/2017, Stéphane

Moteur appuitete bb.png

Firmware Arduino, Stéphane

Le fichier .zip avec le projet complet Appuitete-arduino.v3

V3 finale

Fichier principal

#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();
}

Fichier de configuration config.h

#ifndef __CONFIG_H
#define __CONFIG_H

#include <AccelStepper.h>
#include <MultiStepper.h>

///
///
/// Default values
///
///
#define MOTOR_MS1 11 // EASY DRIVER MS1 IO FROM ARDUINO
#define  MOTOR_MS2  10 // Easy Driver MS2 IO From Arduino

#define MOTOR_STEP 9 // EasyDriver STEP IO from Arduino (single step command)
#define MOTOR_DIR 8  // EasyDriver DIR IO from arduino (move direction)

#define LED 13 // Onboard arduino led for signaling

#define BTN_RIGHT 4 // Input for right movement
#define BTN_LEFT 5 // Input for left movement

#define BTN_RIGHT_ACTIVE_STATE LOW // Input state to consider BTN active
#define BTN_LEFT_ACTIVE_STATE LOW // Input state to consider BTN active


#define MAX_SPEED 50 // max speed in step/s
#define MAX_ACCEL 2500 // max acceleration in step / s / s

#define ENDSTOP_LEFT 7
#define ENDSTOP_RIGHT 6
#define ENDSTOP_LEFT_STATE LOW
#define ENDSTOP_RIGHT_STATE LOW


// global accessor
void set_speed (int s);
int get_speed (void);
void set_accel (int a);
int get_accel (void);
int get_force_left (void);
void set_force_left (int f);
int get_force_right (void);
void set_force_right (int r);
long get_eeprom_magic (void);

AccelStepper* get_stepper ();

void save_config ();
int load_config ();

Fichiers pour impressions, 27/04/2017, Mathilde

Voici les fichiers stl et x3g

fichiers impression stl

fichiers impression 3xg

Fixation appui-tête actuel sur interface rotative, 07/05/2017, Mathilde

Bague de serrage avec trois vis.

Bague rotule stl

Fichiers gcode pour impressions sur Bicéphale, 18/05/2017, Delphine

Fichiers gcode

Tous les fichiers sont regroupés dans ce zip sauf ceux déjà imprimés:

  • ATM_V3_modele_patins_PTFE
  • ATM_V3_pignon (le trou n'est pas centré, modèle en cours de remodélisation)
  • ATM_V3_support_patins

Distance appui-tête/support appui-tête, 18/05/2017; Delphine

Changement par rapport au modèle final de Yves

  • Remplacer les boulons Allen de la plaque de support tétière par des boulons 6 pans (hexagonal) pour permettre de les visser facilement.
  • Remodéliser la rotule + la plaque (Yves s'en charge) en fonction du diamètre du trou du support de la rotule. Les mesures ont été basées sur la plaque que Mathilde a modélisé ci-dessus (Bague rotule). Vérifier que le diamètre est bon (20 mm).
  • L'idée est de réutiliser l'ancien support (tube de 13mm) de Mathilde mais il faudra peut-être refaire cette pièce. Attention car Yves a modélisé un tube carré de 20mm pour la platine support acier qui est en-dessous.

A modéliser

  • Rotule + plaque : Yves

A implémenter pour la commande moteur

  • Prévoir un détecteur au point zéro (un switch qui le déclenche, ou une cellule (end-stop))
  • Prévoir un potentiomètre pour redéfinir le point zéro (le personnaliser en fonction de l'usager)
  • Vitesse de rotation (à affiner) : 60° en 4 secondes

Débat sur le moteur : pas à pas ou courant continu ?

Le moteur doit tourner dans les deux sens, il faut deux capteurs de fin de course, et il faut que la rotation puisse s'arrêter entre les extrémités.

++ moteur pas à pas :

  • Facilement pilotable avec Arduino
  • Arduino permet d'ajouter et de faire évoluer le circuit facilement

++ moteur à courant continu :

  • La vitesse peut varier avec un potentiomètre de variation
  • Le circuit est plus léger en conception car pas besoin d'une Arduino

Fichiers Pignon + Bague_rotule (Obsolète : Ne pas imprimer)

Attention le fichier du pignon dans le zip version Finale n'est pas centré. Le remplacer par la version du fichier suivant. La bague rotule ici présente est par contre obsolète. Cette version qui permet de venir glisser la rotule n'est pas assez solide. Il faut utiliser la version du chapitre suivant : Modif_ATM_V3_bille25_boulonnee.zip.

Fichiers Pignon-Bague_rotule.zip

Plaque support rotule + tête rotule qui remplacent la rotule et la plaque de la version finale

Modif_ATM_V3_bille25_boulonnee.zip

Les fichiers step suivants seront utilisés pour usiner ces pièces en métal: ATM_V3_fichiers_STEP.zip

Ajustement des bras de commande et de la palette du contacteur, 10/06/2017, Yves

Suite à une première impression, les bras de commande sont trop longs, Yves a donc raccourci la partie médiane de ceux ci.

La palette fixée au contacteur en bout de ces bras de commande était trop petite, ici elles sont agrandies.

ATM V3 commande courte 01.jpeg

Fichiers du bras de commande raccourci : Fichier:Modif ATM V3 commande raccourcie.zip

STL de la palette agrandie : Fichier:Modif ATM V3 Commande palette agrandie.stl

Version finale des fichiers après toutes les modifications, 10/06/2017

Récapitulatif des fichiers finaux

Fichiers STL : Fichier:ATM V3 derniers fichiers STL.zip

Mise à jour du 28.06.2017 (Danke)

En se basant sur le principe de la vis sans fin tel que proposé sur la Version2 du 04.04.2017, l'ajout d'un système de came a donné naissance au projet suivant.

Came vis sans fin.gif

[IMPORTANT] C'est une maquette de principe qui n'a pas pour but d'être utilisée telle quelle et qui ne répond pas aux contraintes d'une version finale.

Le principe qui guide la conception mécanique de ce modèle est de favoriser un équilibre fiabilité/réplicabilité (low-tech) :

  • une mécanique fiable dans le temps,
  • éviter les techniques de fabrication trop hi-tech,
  • privilégier des pièces et matériaux relativement faciles à se procurer (disponibilité en neuf ou récupération)
Detail vis sans fin.gif

Conception : FreeCAD, technique : découpe laser sur contreplaqué 5mm

Prototype version courroie (plus simple que la version crémaillère) sur la base de la proposition du Lab cesson le 13/07/2017

Les fichiers 3D réalisés par Philippe Pacotte

Vidéo de démonstration du prototype "Courroie" en action sur l'appui-tête

https://www.youtube.com/watch?v=nSzuiB68iBQ

Le schéma arduino+shield moteur

Voici le schéma et le pcb proposé par Bris au lab de Cesson

PCB

Schéma

Code Arduino

Prototype version low-tech réalisé par jean-pierre le 13/07/2017

Les fichiers sources dxf

Schéma du circuit

Première vidéo de démonstration du prototype "Low tech

Réunion du 07/09/2017

  • Philippe, Yves, Stéphane, Jean-Pierre, Mathilde, Delphine, Danke

Images et stl du nouveau proto courroie

A ajouter (Mathilde)

Vidéo du nouveau prototype Courroie réalisé cet été par Philippe, Danke et Stéphane

Test avec un poids de 3,2kg :


Test avec un poids de 6kg :

Résumé des avancés sur le proto courroie

Test du prototype à courroie avec poids de 6 kilos. Problème : à l'arrivée aux extrémités de la rotation, le moteur peinait du fait qu'il était fixe et que le rail se déplaçait avec la rotule dessus. Il fallait donc pousser le rail pour qu'il reparte dans l'autre sens.

Donc rail unique facile à imprimer mais il fallait ajouter un antibasculement.

Donc autre prototype imprimé en deux fois (deux ensembles boulonnés avec boulons traversants) et là le rail est fixe et le moteur mobile. Les support rotule et moteur devraient être faits en aluminium, tout comme la rotule. Le support du tube du fauteuil doit être en acier. A voir si on peut utiliser le support d'appui-tête du nouveau fauteuil de Mathilde dont elle ne se sert pas.

Truc à voir : où fixer les capteurs ? → sur l'appui tête lui-même ou sur la tige de la rotule.

Ajouter peut-être des tiges alu pour les commandes ou support alu (ou PMMA) fixé au support de la rotule qui épouse la partie mobile pour fixer les bras articulés (imprimés ou alu).

A implémenter : pouvoir ranger les bras de commandes quand ils ne sont pas utilisés. Pourquoi pas prévoir un système de ressort sur le rail de manière à ranger et sortir facilement les bras.

Résumé des avancés sur le prototype de Jean-Pierre

Schéma de la carte moteur et Arduino

Version courroie avec lame alu

Images logiciel 3D proto courroie avec lame alu (dessins de philippe)

Montages et premiers tests


Réunion du 30 novembre suite aux premiers essais concluants : la rotation fonctionne, l'électronique aussi, il faut prévoir un ergo à la rotule pour qu'elle ne tourne pas sur elle-même.

Suite : dans un premier temps, 2 boutons seront positionnés proches de la manette à gauche, au plus près l'un de l'autre. Le boîtier qui doit être créé pour contenir ces deux boutons sera fixé par un serre clips à l'autre bouton déjà présent sur la manette. Il sera imprimé en 3D, le bas en plastique dur (un trou en dessous permettra la sortie des fils) et le dessus en plastique souple afin de permettre l'étanchéité et garder la facilité de pression des boutons. Les deux parties du boîtier peuvent éventuellement être collées avec de la colle néoprene pour assurer encore plus d'étanchéité.

Ce boîtier devra pouvoir être déconnecté du reste de l'électronique et donc aussi du support rotatif. Il est ainsi envisagé de mettre sur la longueur du fil, environ sous l'accoudoir, un système de connexion/déconnexion étanche et à vis (système vu à Caen par Christian et trouvé par Stéphane sur le net).

Photos et point d'étape 12/04/18

Fichiers STL du contacteur du projet de Jean-Pierre

Stl_bouton_jp.zip

Photos des éléments de la version finale

Le support du moteur ayant cassé lors d'un essai, le support moteur sera renforcé d'une réglette en aluminium


Rectifications pour le montage

Il faut deux vis M3 tête fraisée de 16mm de long au lieu des BTR initialement prévues, pour le support moteur suite à la nouvelle modélisation.

Branchement sur la batterie du fauteuil

Il y a deux batteries sur le fauteuil de Mathilde produisant chacune 12v, elles sont branchés en série pour produire 24V. Pour avoir le 24V, on branche sur le + d'une des batteries et le moins sur l'autre. Ici nous voulons du 24v pour le moteur de l'appui-tête et du 5V pour la carte arduino (prise sur la carte easy driver elle-même alimentée en 24V en vIN)

Schema batterieOK.jpg

Fichiers stl version finale

Télécharger les fichiers stl et les imprimer en 3D. Fichier:Pièces imprimées 3D.zip

Circuit avec arduino nano et easy driver (driver de moteur)

Appui tete.png

Montage appui-tête 12.07.2018

Video de l'appui-tête en action