Et voilà un nouveau projet open source arduino de Diagnosteo et pas des moindres puisque nous allons nous attaquer à la fabrication d’un algomètre digital à feedback.

Alors l’algomètre quezako ? C’est une sorte de balance qui mesure la force que l’on exerce sur un endroit (donc une pression) afin de recréer une douleur chez un patient. Cela permet de quantifier la sensibilité de l’endroit testé. Ainsi on peut répondre de manière plus objective à la question simple mais insoluble que certains patients  nous posent : « Vous trouvez que c’est mieux que la dernière fois ?  » Car cette réponse n’est pas forcément évidente… Ainsi avec l’algomètre une augmentation de la pression pour recréer la douleur vous permettra de répondre par l’affirmative !

Vous pourrez ainsi tester des vertèbres (le fameux principe de Korr), des massifs articulaires cervicaux, des points gâchettes, des tendinites et ainsi vérifier l’efficacité d’un thrust, d’une technique fonctionnelle…

Cet outil est d’autant plus intéressant à se fabriquer qu’il peut coûter à l’achat très cher (jusqu’à plus de 1000€) alors qu’ici vous en aurez pour environ 40-50€ de matériel…

L’algomètre que l’on fera n’a rien à envier aux modèles professionnels car il possède un bouton pression que le patient déclenchera lui même pour gagner en rapidité de réponse et il possède aussi une limitation de la vitesse de pression afin que l’utilisateur ne puisse pas presser trop rapidement et ainsi biaiser la mesure.

Si des étudiants ou professionnels sont intéressés par cet outils notamment pour de la recherche ou des mémoires n’hésitez pas à me tenir informé.

Disclaimer : En fabriquant cet objet et en l’utilisant vous comprenez que le code est susceptible d’être amélioré et vous prenez la responsabilité de son utilisation.

Il est attendu à ce que vous ne soyez pas complètement novice en utilisation d’arduino, électronique, impression 3d et bricolage en général.

La doc technique de l’algomètre Diagnosteo :

(Amélioration notable suite à une révision du code et basée maintenant sur l’excellent exemple de Olav Kallhovd pour l’HX711.)

vitesse de rafraichissement : 66 Hz (voire jusqu’à 80Hz, à modifier dans le code si besoin)
Pression maximale  : 8300hPa soit +/- équivalent 10kg/1,2cm2 (à modifier en fonction de l’impression du diamètre de votre tige)
Surface de contact : 1.2cm2 (à modifier en fonction de l’impression du diamètre de votre tige)
Précision : +/-5 hPa
Précision dynamique (à cause de la vitesse de pression maximale) < 20hPa ( en fonction du code)
Limitation de vitesse de pression limitée à 16N/s ( en fonction du code)

Les outils nécessaires :

un arduino nano : 6€
une breadboard
un oled 128×64 (en I2C): +/-8€
une load cell de 10kg et son amplificateur HX711 : 12€
2 boutons pressoirs : un grand et un petit
Un bouton switch de type bateau on/off
2 résistances : 330ohms et 4,7kohms
une seringue de 5ml
un plat d’acier de 1mx20mmx4mm
vis de 3×16 et 3x12mm
des boulons de 3, 4, 5mm et de 30mm de long
du fil genre de prise téléphone au top !
un double fil d’environ 1m
fer à souder
pistolet à colle, araldite
une fiche pour pile de 9v et une pile 9v
une imprimante 3D
une perceuse
scie à métaux
une Led rouge
une masse de 100g

Arduino IDE installé sur votre ordinateur

Le schéma du branchement électronique sur la breadboard (réalisé avec Fritzing):

Donc l’arduino est au centre. J’aime bien l’arduino nano il y a des copies peu chères, c’est bien reconnu, c’est pas bien grand, bref…
-L’Oled se branche en I2C donc le SCL sur A5 et SDA en A4, préférez l’alimenter en 3.3v.
-le HX711 se branche lui sur du 5V et j’ai relié DT sur D4 et le SCK sur D5 par question de facilité de soudure lors de mon montage mais bon à vous de voir. Il y aura cependant une petite manipulation sioux à faire sur le HX711… en effet il fonctionne de base en 10Hz mais peut-être débridé pour du 80Hz. L’autre partie du HX711 sera relié vers votre loadcell en respectant le code couleur des fils (rouge, noir, vert, blanc)
-les boutons interrupteurs sont branchés en « pulldown » pour éviter des bruits parasites d’où la résistance 4,7kohms et reliez les en D7.
-De D10 vous irez vers une résistance 330ohms et une led rouge et vous reliez ensuite cette led au GND.

Installez votre load cell sur la plaque d’acier plat

En y ajoutant une double épaisseur à sa base afin qu’elle puisse avoir sa contrainte « verticale ». Sur le côté droit la flèche pointera vers le bas.
à moins d’imprimer d’abord l’algomètre à l’aide de votre imprimante 3D vous ne saurez pas où percer exactement la plaque d’acier (et je n’ai pas pris les côtes oups…) la grande plaque fait cependant 10cm et la petite 2cm.

 

Vérifiez que l’oled et le loadcell fonctionnent

Sur l’arduino IDE installez les bibliothèques :
« HX711_ADC.h » & « U8glib.h ».
Alors U8glib est une vieille bibliothèque mais elle semble être plus légère que la version plus récente, et au vu de la mémoire limitée du nano je préfère l’utiliser. Il y a certainement des manières d’alléger les bibliothèques mais mes compétences s’arrêtent pour le moment là…

Voilà donc pour cette partie, je vous suggère de tester ensuite le code pour vérifier que tout fonctionne en utilisant les exemples fournis des différentes bibliothèques pour le HX711 et l’oled 128×64. Pour l’Oled utilisez l’une des 2 définitions suivantes en fonction du fait que votre écran soit un 1.3″ SH1106 ou SSD1306. J’ai mis un peu de temps à trouver l’écran qu’il me fallait… :

U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NONE); // I2C / TWI

ou

U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE|U8G_I2C_OPT_DEV_0); // I2C / TWI

Débrider le HX711 de 10Hz à 80Hz

Alors là aussi j’ai cherché un peu de temps… donc de base le HX711 a une fréquence de 10Hz. Mais il peut être rafraîchit jusqu’à 80Hz par contre on perd légèrement en précision.
Donc :
-soit vous perdez en précision par un échantillonnage pas assez élevé : du coup si vous restez sur du 10Hz lorsque le patient va appuyer sur son bouton au moment de la douleur il y aura un delta (t) pendant lequel il y aura une grosse variation de force qui pourrait théoriquement aller jusqu’à 1,9N alors qu’il descend à max 0,2N à 66Hz.

-soit vous augmentez l’échantillonnage et dans ce cas le HX711 semble souffrir de plus de bruits de l’ordre de 0,05N

Pour le passer en mode 80Hz (ou >10hz) il y a une soudure un peu « touchy » à faire… au niveau de la 2ème patte à droite de la puce. Donc repérez le point de repérage sur la puce et de là déssoudez la deuxième patte à droite et soudez la avec la première. J’avoue c’est pas terrible mais le truc est tellement petit que difficile de faire beaucoup mieux. Prévoyez un HX711 de rechange quand même…

Et ça y est un HX711 80Hz ! ça rappelle un peu les processeurs qu’on overclockait en faisant des ponts au crayon à papier…

Et on reteste le module HX711 pour être certain qu’il fonctionne.

A présent le Code

Vous comprenez bien ce n’est pas du code de haut vol, d’ailleurs il va falloir que je rajoute une partie pour « automatiser » la calibration mais pour le moment on devra le faire en le modifiant par l’Arduino IDE et en monitorant les mesures.

Vous pouvez le télécharger Algo V1.2 . C’est un update du code que j’avais mis en ligne au moment de la publication de l’article. Cet update permet de tarer l’outil au démarrage. Et Améliore sensiblement les performances , on passe ainsi facilement à 66Hz ! et cela avec moins de bruits …

Et copier/coller le dans arduino IDE après avoir installé les librairies nécessaires.

1. Vérifiez bien le branchement de en fonction des Pin que vous déclarez et vérifiez que vous avez bien les bonnes librairies installées.

2. Ici vous pouvez allonger la durée de la calibration au démarrage en millisecondes (3000). Cette valeur semble correcte.
On remarque la « Calibration value » : Alors celle-ci il faut la calculer et je pense qu’elle est à modifier entre différentes cellules poids. Ici pour ma cellule 10kg j’ai trouvé 215,45. Pour ce faire :
1. remplacer d’abord cette valeur par « 1 ». Ainsi vous aurez la valeur brute obtenu par votre cellule.
2. Modifiez la valeur conditionnelle d’accélération plus bas sur le sketch qui est de 25g (à la ligne i- pression_mesure1 < 25 ) et remplacez la par une valeur genre 500000 temporairement sinon la condition n’arrêtera pas d’être fausse et la mesure s’arrêtera constamment.
3. lancez le sketch ainsi que le moniteur et vérifiez que la moyenne des valeurs tournent autour de 0 en sélectionnant 500 mesures et en faisant la moyenne sur excel.
4. A présent placez sur votre capteur une masse connue de 100-200g par exemple.
5. Revérifiez la moyenne des mesures sur excel et divisez cette moyenne par la masse de votre masse connue en g.
6 Reportez à présent ce résultat dans CalibratonValue et remettez la valeur de 25 ou autre en fonction de la limitation de la force que vous voulez obtenir.

Enfin vous pouvez modifier la fréquence en changeant la durée de SerialPrintInterval. Ici à 15 ms on a une fréquence de 1000/15 = 66Hz. Vous pouvez aller jusqu’à 12 a priori soit 83Hz. Si vous modifiez cette valeur pensez à modifier aussi la vitesse d’application maximale de la force  » i- pression_mesure1 < 25″

Bon c’est fini avec le code maintenant l’impression 3D !

Impression 3D de l’algometer

Bon alors il y a quelques morceaux, 5 au total + 2 pour la commande du patient.
En effet j’étais initialement parti sur 3 morceaux, et j’ai péquouillé avec le cable management du coup j’ai tout refait et ainsi 5 morceaux mais rétrospectivement en 3 morceaux cela devrait être jouable. Cependant quelque chose qui pourrait-être sympa ce serait de pouvoir modifier la couleur de la crosse… Donc on reviendra dessus dans un prochain modèle.

Cliquez sur les différentes images pour télécharger les fichiers 3D.

On a donc la tige de l’algomètre :

L’embout de l’algomètre :

Côté écran de l’algomètre. A imprimer avec support pour avoir la face convexe en haut. Allez-y léger (10% zigzag) sur les supports car c’est un calvaire à décoller j’y ai même laissé un morceau de doigt :/

Côté droit de l’algomètre à imprimer avec support face interne vers le bas avec support idem à précédemment:

La Partie centrale, pas de support:

Et enfin la manette interrupteur pas de support (à ne pas utiliser à des fins destructrices svp…)

Et voilà ! fini pour la partie impression 3d…

J’essaierai de le refaire dans un futur plus ou moins proche et retravaillerai le prototype.

Le #cablemanagementnightmare

Pour cette partie je vous laisse gérer car c’est un vrai casse tête et certainement la partie la plus délicate et je ne sais pas dans quelle mesure la manière dont je l’ai fait été la meilleure manière de faire …
Sur le côté droit de l’algo, dans la gouttière j’y ai mis un cable téléphone plat qui contient 6 fils ! donc au top pour relier la LED et l’écran (5 fils suffisent). J’ai utilisé pas mal de connection en « Y » pour faire rejoindre les boutons interrupteurs , les 5v, et les masses/GND.
Euh… Bon… courage !!!
En bas l’espace est fait pour pouvoir insérer des fiches Dupont

Pour la touche finale découpez l’embout en caoutchouc de la seringue qui fait exactement la superficie de la tige de l’algomètre. J’ai collé la mienne au pistolet à colle mais je pense qu’à l’araldite ce serait peut-être mieux.

 

En Conclusion

J’ai vraiment hâte d’utiliser cet outil en cabinet et personnellement je pense qu’avoir recours à ce type d’outils devrait être beaucoup plus fréquent. J’encourage les étudiants à utiliser ce type d’outils pour leur mémoire pour étudier Korr, les segments de facilité les effets des techniques et bien plus encore !
Vous êtes une école, un étudiant ou un ostéopathe et vous êtes intéressé par ce projet ? n’hésitez pas à me contacter.