P1 Conception d'une pompe automatique à insuline : Différence entre versions
m (→Quatrième semaine (09/10/17 : 15/10/17)) |
(→Rapport et document suplementaire) |
||
(65 révisions intermédiaires par 2 utilisateurs non affichées) | |||
Ligne 1 : | Ligne 1 : | ||
''Tuteurs : Belkacem Ould Bouamama <br/>'' | ''Tuteurs : Belkacem Ould Bouamama <br/>'' | ||
''Projet de fin d'étude réalisé par Alice COFFIN et Amina FAHEM'' | ''Projet de fin d'étude réalisé par Alice COFFIN et Amina FAHEM'' | ||
+ | |||
+ | ==Suivit du projet== | ||
+ | Pour réaliser notre suivit de projet, nous avons utilisé un Gantt. | ||
+ | Notre projet se repartir de la façon suivante : | ||
+ | [[Fichier:plan_gantt.Png| 400px|thumb|center|]] | ||
+ | Le suivit complet de notre projet se trouve dans le fichier suivant : [[Media:Gantt_pompe_insuline.pdf]] | ||
==Première semaine (18/09/17 : 24/09/17)== | ==Première semaine (18/09/17 : 24/09/17)== | ||
Ligne 25 : | Ligne 31 : | ||
==Deuxième semaine (25/09/17 : 01/10/17)== | ==Deuxième semaine (25/09/17 : 01/10/17)== | ||
− | Lors de cette semaine, nous avons répertorié l’ensemble des taches à réaliser afin de mener à bien le projet. | + | Lors de cette semaine, nous avons répertorié l’ensemble des taches à réaliser afin de mener à bien le projet. De cette manière nous avons pu fractionner les sous-parties du projet et avons maintenant une vue d’ensemble sur les éléments à réaliser. |
+ | Cela nous a permis d’organiser un calendrier provisionnel des taches à effectuer ainsi qu'un ordre de priorité. | ||
+ | |||
+ | |||
+ | [[Fichier:Xmind pompe.Png| 900px|thumb|center|]] | ||
− | [[Fichier: | + | |
+ | Nous avons également commencé la réduction du modèle 3D précédemment réalisée lors du stage. Le fonctionnement étudier lors de ce stage restera le même, un système vis/écrou. Le piston est déplacé en translation par la rotation de la vis, cette vis est entrainée par un moteur. | ||
+ | Le premier prototype réaliser durant le stage était trop grand. En effet, les dimensions d'une pompe à insuline doivent être de l'ordre de 8cm*6cm*4cm, or le modèle précédemment réalisé mesurait 18cm*10cm*15cm. Il était donc important de diminuer le modèle afin de pouvoir réaliser les tests sur ce dernier. | ||
+ | Nous avons donc réalisé les plans de ce modèle 3D sur l'application de conception 3D Onshape. | ||
+ | |||
+ | https://www.onshape.com/ | ||
+ | |||
+ | [[Fichier:ancien_modele_pompe.Png| 900px|thumb|center|]] | ||
==Troisième semaine (02/10/17 : 08/10/17)== | ==Troisième semaine (02/10/17 : 08/10/17)== | ||
− | Nous avons | + | Nous avons terminé la modélisation sur Onshape avant de commencer à imprimer notre pompe en 3D en utilisant les imprimantes se trouvant au fabricarium. |
− | |||
− | |||
+ | [[Fichier:PI_CAD_S3.Png| 400px|thumb|center|]] | ||
+ | |||
+ | Pour faire fonctionner notre pompe nous allons utiliser un moteur à courant continu (DC). | ||
+ | Etant donner que nous allons réaliser une simulation complète du système sous Matlab/Simulink, nous avons commencé à y modéliser un moteur DC. | ||
+ | Le modèle équivalent du moteur DC est représenté de la manière suivante : | ||
+ | |||
+ | |||
+ | [[Fichier:modele_eq_moteur.Png| 400px|thumb|center|]] | ||
+ | |||
+ | On peut donc en retirer les équations suivante : | ||
+ | |||
+ | [[Fichier:equation_modele_eq_moteur.Png| 400px|thumb|center|]] | ||
+ | Ce sont ces équations qui serons ensuite implémentées sous Matlab/Simulink afin de simuler ce moteur et d’étudier l'influence des différents paramètres sur le système. | ||
==Quatrième semaine (09/10/17 : 15/10/17)== | ==Quatrième semaine (09/10/17 : 15/10/17)== | ||
− | En assemblant les différentes pièces il est apparu que certaines dimensions n’étaient pas les bonnes. Nous avons donc réimprimé ces pièces. | + | |
+ | En assemblant les différentes pièces imprimer par les imprimantes 3D, il est apparu que certaines dimensions n’étaient pas les bonnes (trop de jeu autour de l’écrou). Nous avons donc réimprimé ces pièces. | ||
Ci-dessous l’assemblage de notre prototype avec vis-écrou. | Ci-dessous l’assemblage de notre prototype avec vis-écrou. | ||
− | [[Fichier:PI_proto_S4.JPG| 400px|||Dimensions extérieures : 4 x 3.5 x 3.5 cm]] | + | [[Fichier:PI_proto_S4.JPG| 400px|thumb|center|Dimensions extérieures : 4 x 3.5 x 3.5 cm]] |
+ | |||
+ | |||
− | La modélisation du moteur DC sous Simulink a été poursuivi et les premières simulations réalisées avec des valeurs types. Il faut | + | La modélisation du moteur DC sous Simulink a été poursuivi et les premières simulations réalisées avec des valeurs types. |
+ | |||
+ | [[Fichier:PI_simulink_S4.Png| 900px|thumb|center|]] | ||
+ | |||
+ | ==Cinquième semaine et Sixième semaine (16/10/17 : 22/10/17) et 23/10/17 : 29/10/17)== | ||
+ | |||
+ | Le travail de ces semaines à porter sur la modélisation du système sous Simulink. | ||
+ | Nous avons débuté par réaliser un schéma des éléments mis en cause dans notre modèle afin de pouvoir prendre en compte l’ensemble des phénomènes impliqués dans ce dernier. | ||
+ | |||
+ | |||
+ | [[Fichier:schema_systeme_pompe.Png| 400px|thumb|center|]] | ||
+ | |||
+ | Le moteur DC sera relié au système vis/écrou. La rotation de la vis entraînera le mouvement en translation du piston. Le piston exercera une pression sur l'insuline présent dans le cylindre qui s’échappera par le petit orifice de sortie. | ||
+ | |||
+ | Afin de modéliser le système, il est important de bien établir ses équations caractéristiques. | ||
+ | Nous partons du moteur et de ses équations notées la semaine précédente. | ||
+ | |||
+ | '''Bras moteur : Expression de la force électromotrice de l’induit''' | ||
+ | [[Fichier:fem_eq.Png| 500px|thumb|center|]] | ||
+ | |||
+ | On applique ensuite le principe fondamental de la dynamique en rotation sur notre système : | ||
+ | La somme des couples est égale au quotient du moment d’inertie et de l’accélération angulaire du point considéré. On a donc : | ||
+ | |||
+ | [[Fichier:PFD1.Png| 500px|thumb|center|]] | ||
+ | |||
+ | Le frottement existant entre la vis et l’écrou constitue un élément résistif sur le système, or nous avons une relation directe entre le couple de frottement et la vitesse angulaire : | ||
+ | [[Fichier:Resistance1.Png| 500px|thumb|center|]] | ||
+ | |||
+ | Les équations suivantes correspondent au système d’engrenage permettant de réduire la vitesse de rotation appliqué à la vis | ||
+ | [[Fichier:eq2.Png| 500px|thumb|center|]] | ||
+ | |||
+ | On applique ensuite le principe fondamental de la dynamique en translation sur notre système, pour cela on considère la force exercée par le piston, les forces de frottement et la force lie à la pression qu’exerce le liquide sur le piston : | ||
+ | [[Fichier:eq3.Png| 500px|thumb|center|]] | ||
+ | |||
+ | '''Système hydraulique''' | ||
+ | |||
+ | La variation de volume dans le cylindre est équivalente au produit de la vitesse du piston et de la section du cylindre | ||
+ | [[Fichier:eq4.Png| 500px|thumb|center|]] | ||
+ | Nous avons ensuite calculé le débit totale grâce à l’équation suivante : | ||
+ | [[Fichier:eq5.Png| 500px|thumb|center|]] | ||
+ | |||
+ | |||
+ | Référence : https://ocm.univ-lille1.fr/index.php/s/mwaO1ya25mocGRH | ||
+ | |||
+ | ==Semaines du 6/11/17 au 29/11/17== | ||
+ | |||
+ | Le travail de ces semaines à porté sur l'estimation des paramètres à utiliser dans le modèle Simulink, à la recherche des capteurs à utiliser et à l’assemblage du prototype. | ||
+ | '''Estimation des paramètres et réalisation du modèle Simulink :''' | ||
+ | |||
+ | Les paramètres n’étant pas mesurable à partir du prototype, il a fallu réaliser leurs estimations soit en les calculant soit en récupérant leur ordre de grandeur à partir d'autre application. | ||
+ | Cette partie a été principalement constitué de documentation afin de comprendre les phénomènes physiques existant dans chaque élément de notre schéma. | ||
+ | |||
+ | |||
+ | '''L’assemblage du prototype :''' | ||
+ | |||
+ | Afin de pouvoir réaliser des tests sur notre prototype, nous avons récupéré un petit moteur DC ainsi que le réducteur (en kit) qui lui correspond. Étant donné que le moteur est beaucoup plus rapide que ce que nous souhaitons, nous avons utilisé le réducteur pour diviser la vitesse par 225. | ||
+ | |||
+ | Il a fallu fabriquer un socle pour fixer correctement les deux parties du système ensemble (la partie moteur + réducteur et la partie vis/écrou). | ||
+ | |||
+ | [[Fichier:proto_nov.Png| 500px|thumb|center|]] | ||
+ | |||
+ | |||
+ | De cette façon, pour 1 tour de moteur, le piston se déplace de 0.011mm. | ||
+ | |||
+ | La recherche des paramètres de simulation et le choix des capteurs se poursuivra dans les prochaines semaines | ||
+ | |||
+ | ==Semaine 11 - 12 (27/11/17 : 10/12/17)== | ||
+ | |||
+ | *choix des capteur à utiliser pour s'assurer du bon fonctionnement du système | ||
+ | *test de la modélisation en réalisant des simulation et en réajustant les paramètres de manière à valider cette dernière. | ||
+ | |||
+ | ==Semaine 13 - 14 (11/12/17 : 24/12/17)== | ||
+ | *débuggage de la partie simulation | ||
+ | *écart dans un gain implémenté dans la simulation causant une incohérence avec la simulation | ||
+ | *recherche sur la commande du moteur | ||
+ | |||
+ | ==Semaine 15 - 16 (08/01/18 : 21/01/18)== | ||
+ | Nous avons réaliser un second état de l'art afin de connaitre mieux les origines de la maladie mais également les pompes déjà existantes sur le marché. | ||
+ | |||
+ | '''Historique''' | ||
+ | |||
+ | Dans les années 1960, la première pompe à insuline a été réalisée par le Docteur Arnold Kadish en Californie. Elle se portait comme un sac à dos. Quelques années plus tard, les premiers capteurs à insuline sont mis sur le marché par les laboratoires MILES ensuite racheter par Bayer (1969). Parallèlement, la première transplantation de pancréas a eu lieu à l'Université du Minnesota (1966). Les docteurs ont alors essayé de guérir le diabète par transplantation. Aujourd’hui, la greffe de pancréas est une opération réalisée partout dans le monde. En 1978, Baxter lance la première commercialisation de la pompe à insuline alors appelée AutoSyringe (inventée par Dean Kamen). Ce fut la première pompe programmable utilisable à domicile par les patients. | ||
+ | En 2004, la première pompe programmable sans fil, l'OmniPod est commercialisé. | ||
+ | |||
+ | |||
+ | '''Aujourd'hui''' | ||
+ | |||
+ | De nombreuses pompes à insuline existent sur le marché. Seulement, ce dispositif médical reste peu répandu du fait de son prix très élevé (3000 euros minimum). Les principales entreprises réalisant ce genre de dispositif sont Medtronic, Roche, Novalab. Les derniers modèles proposent des moyens de surveillance et d'acquisition de données en temps réel. La pompe à insuline Animas (Novalab) a un système de SGC (Surveillance du Glucose en Continu) intégré. Ce système permet de connaitre la quantité de bolus encore actif dans l'organisme, cela permet de prendre de meilleure décision quant à l'administration de l'insuline. Il existe également des pompes connectées au capteur de glycémie afin de contrôler les taux du patient. | ||
+ | D'autres sociétés ont fait le pari de la discrétion en essayant de minimiser les dimensions de la pompe de manière à ce qu'elle soit discrète pour le patient qui la porte.Ce fut le cas pour OmniPod qui s’est engagé à créer une pompe discrète tout en assurant sa robustesse et ses performances avec des pompes à changer tous les 3 jours. Cette pompe est connectée à un PDM (Personal Diabetes Manager) sans fil qui gère l'administration de l'insuline, récupère les données du glucomètre intégré, calcule l'insuline active dans l'organisme et peut également suggérer au patient une dose de bolus à injecter. | ||
+ | Cellnovo a souhaité réaliser une pompe à insuline discrète mais qui serait en plus rechargeable de manière à avoir un impact le plus minime possible sur 'environnement. | ||
+ | |||
+ | '''Problématique de ces systèmes''' | ||
+ | |||
+ | Ces systèmes sont uniquement commandés en boucle ouverte : il n'y a aucun contrôle de la glycémie par la pompe. C'est pour cela que le médecin est obligé de réaliser un contrôle fréquent de l'utilisation de la pompe et de donner des directives aux patients quant à la prescription et l'administration de l'insuline. Malgré le fait que la pompe est connectée au capteur, il n'influe en rien sur l'administration du médicament mais permet uniquement de réaliser un suivi. Pour que le calcul de la dose soit interactif de manière à réaliser un contrôle en boucle fermée, il faut faire une validation clinique. C'est l’objet de certaines recherches énoncées par la suite. | ||
+ | |||
+ | |||
+ | '''Thématique de recherche''' | ||
+ | |||
+ | Le projet de pancréas artificiel pour lutter contre le diabète a commencé en 2011 avec un groupe de diabétologue. Ce projet est également appelé « Insulinothérapie en boucle fermé », il consiste à faire communiquer le capteur de glycémie et la pompe à insuline grâce à une intelligence artificielle. | ||
+ | Le dispositif est alors composé de 3 parties : une partie acquisition en continu de la glycémie, une seconde partie qui calcule les doses à injecter et qui donne des ordres à la troisième partie, une pompe à insuline connectée. Ce projet a débuté en 2011 et des études cliniques ont été réalisées en 2014 sur une trentaine de patient. Le concept avait été alors validé. La compétition est maintenant rude après le lancement de plusieurs études sur patient dans les conditions de vie habituelle. En Amérique (Université de Virginie), en Angleterre (Cambridge) ou encore en France les premiers tests en temps réel sont lancés. Cependant, aucun des systèmes n'est prêt à être commercialisé. Diabeloop espère commercialiser son premier pancréas artificiel en 2018. | ||
+ | Parallèlement, ce projet intéresse aussi les écoles d'ingénieur telles que Sup'biotech où un groupe d'élèves a imaginé un système de type implant. Ce concept a été présenté au concours Coup2boost (Dassault Système) qu'ils ont gagné. Le groupe a également été nominé pour le Concours des Jeunes Ingénieurs organisé par l'Usine Nouvelle. | ||
+ | |||
+ | ==Semaine 17 (22/01/18 : 28/01/18)== | ||
+ | '''recherche émulation glycémie''' | ||
+ | |||
+ | Afin de pallier au manque de capteur de glycémie et de cobaye (ce qui empêche de réaliser des tests en temps réel) nous avons réalisé un dispositif d’émulation du comportement de la glycémie. Pour ce faire, nous avons étudié la cinétique de ce taux sanguin de manière à se rapprocher le plus possible du comportement réel. | ||
+ | La glycémie est le taux de glucose présent dans le sang, c’est la caractéristique surveillée chez les diabétiques car il ne s’autorégule pas chez eux (c’est l'homéostasie). | ||
+ | Lorsque l’on ingère un aliment, la glycémie augmente en fonction du taux glucidique de ce que l’on a mangé. En règle générale, lorsque l’on consomme des glucides, notre glycémie augmente. L’augmentation dépend de l’indice glycémique de l’aliment ingéré. Si son indice est élevé, la glycémie augmentera très rapidement et pour une personne non diabétique elle diminuera rapidement également. Inversement si l’indice de l’aliment est petit, la glycémie augmentera très lentement et pour une personne non diabétique elle diminuera lentement également. Une personne atteinte de diabète doit calculer la quantité de glucides ingérés pour connaitre la quantité d’insuline à s’injecter. Il utilise un ratio qui évolue en fonction du moment de la journée et permet de donner le nombre de dose à s’injecter en fonction du nombre de glucide ingéré. | ||
+ | |||
+ | Le but de cette partie est de modéliser le comportement de la glycémie selon différents facteurs tels que l’alimentation ou l’injection d’insuline. Le taux de glycémie ainsi calculé sera ensuite transmis au calcul du nombre de dose comme donnée du capteur de glycémie. | ||
+ | |||
+ | |||
+ | '''Vérification de la stabilité du système''' | ||
+ | |||
+ | Pour vérifier la stabilité du système, nous récupérons les équations d’états du système à partir | ||
+ | du fichier Simulink. Nous avons trouvé une fonction Matlab permettant de calculer le critère | ||
+ | de Routh et ainsi la stabilité du système. | ||
+ | Les résultats du script Verifications.m : | ||
+ | [[Fichier:stabilite.Png| 500px|thumb|center|]] | ||
+ | |||
+ | '''Tests en boucle ouverte''' | ||
+ | |||
+ | Nous avons fait quelques tests en boucle ouverte. | ||
+ | Tout d’abord, avec un step de 10V à 1s en entrée on retrouve en sortie le débit suivant : | ||
+ | Le débit est de 17e-10 m3/s avec un temps de réponse de 4s. | ||
+ | [[Fichier:commande_tension_variable.Png| 500px|thumb|center|]] | ||
+ | Nous avons également utilisé une commande de tension variable : | ||
+ | |||
+ | [[Fichier:débit_variable.Png| 500px|thumb|center|]] | ||
+ | Ce qui donne un débit variable : | ||
+ | |||
+ | [[Fichier:quantité_d’insuline_injectée.Png| 500px|thumb|center|]] | ||
+ | A cause du temps de réponse vu plus haut, le débit d’injection ne se stabilise jamais avant que | ||
+ | la tension de commande change. | ||
+ | A partir du débit, on récupère la quantité d’insuline injectée : | ||
+ | [[Fichier:quantité_d’insuline_injectée1.Png| 500px|thumb|center|]] | ||
+ | |||
+ | |||
+ | CAO | ||
+ | |||
+ | Nous avons également réalisé une nouvelle CAO de notre pompe. | ||
+ | |||
+ | ==Semaine 18 (29/01/18 : 11/02/18)== | ||
+ | '''calcule de la commande''' | ||
+ | |||
+ | Pour réaliser la commande en débit nous avons utilisé l’apps Matlab « Control System Tuner » qui permet de donner le PID ou les gains (correcteur) nécessaires au bon fonctionnement du système en boucle fermée. | ||
+ | [[Fichier:commande1.Png| 500px|thumb|center|]] | ||
+ | Pour le correcteur de débit, nous avons donné les équations d’état de la pompe sous forme système à G et nous avons récupéré les gains F et C pour un « Tracking of step commands » sans dépassement. | ||
+ | [[Fichier:commande2.Png| 500px|thumb|center|]] | ||
+ | Avec une commande variable de débit on trouve le graphique suivant : | ||
+ | [[Fichier:commande3.Png| 500px|thumb|center|]] | ||
+ | |||
+ | Bleu : la commande de débit / Jaune : le débit de sortie | ||
+ | On voit que le débit suit bien la commande sans dépassement comme nous le voulions. | ||
+ | |||
+ | '''Commande de la quantité injectée''' | ||
+ | |||
+ | On souhaite commander la pompe en quantité d’insuline à injecter. Pour cela il faut un nouveau contrôleur qui régule l’injection des doses et donc le débit. On limite le débit d’injection à 2e-9 m3/s ce qui permet d’injecter une dose d’insuline (1e-8 m3) en minimum 5s. On ajoute donc une saturation à 2e-9 sur la commande de débit. On utilise la même apps que précédemment pour trouver le PID. | ||
+ | [[Fichier:commande1.Png| 500px|thumb|center|]] | ||
+ | [[Fichier:commande4.Png| 500px|thumb|center|]] | ||
+ | Nous avons cette fois-ci utilisé le système régulé précédent avec l’intégration pour récupérer la quantité injectée comme système G et nous ne recherchons que le C sous forme PI enplaçant F à 1. | ||
+ | |||
+ | Une dose d’insuline est de 1e-8 m3, ici on injecte une dose à 5s puis une seconde à 20s. La commande du nombre de dose doit être l’addition du nombre de dose injectée depuis la mise en marche plus le nombre à injecter. | ||
+ | Courbes : | ||
+ | |||
+ | [[Fichier:commande5.Png| 500px|thumb|center|]] | ||
+ | Bleu : commande de quantité / Jaune : quantité injectée | ||
+ | |||
+ | [[Fichier:commande6.Png| 500px|thumb|center|]] | ||
+ | Bleu : commande de débit en sortie du PI / Jaune : commande de débit après la saturation / | ||
+ | Rouge : débit en sortie de la pompe | ||
+ | |||
+ | On peut voir que comme nous le souhaitons, la quantité injectée atteint bien la consigne. Il faut 10s pour injecter une dose, ce qui correspond à notre demande (temps d’injection supérieur à 5s). On voit également que la saturation fonctionne parfaitement. | ||
+ | |||
+ | Après ces différentes étapes de modélisation et de commandes, nous avons sous Simulink le modèle de la pompe commandable en quantité d’insuline à injecter et qui retourne le débit d’injection ainsi que la quantité réellement injectée. | ||
+ | |||
+ | '''implémentation de l'émulation du patient sur arduino''' | ||
+ | |||
+ | Nous avons également réalisé l'implémentation de l'émulation du patient sur arduino. | ||
+ | |||
+ | Notre dispositif sous Arduino communique par liaisons série, une reliée à l’ordinateur pour indiquer l’absorption des aliments (perturbations de la glycémie) et une seconde qui communiquera avec la pompe lorsqu’elle sera réalisée (envoi des données glycémiques et réception du débit d’insuline). De cette façon, on tape à l’ordinateur les aliments ingérés et le système réagit en conséquence. | ||
+ | Nous avons tout d’abord intégré un tableau de valeur équivalent aux glucides des aliments que l’on peut ingérer lors de la simulation. | ||
+ | |||
+ | Au démarrage de l’application, nous affichons les aliments et un chiffre correspondant via la liaison série de l’Arduino avec l’ordinateur, l’utilisateur n’a plus qu’à taper le numéro de l’aliment ingéré et le système l’assimilera en considérant un ajout du nombre de glucide correspondant dans l’estomac. | ||
+ | Ensuite, chaque seconde (ou minute selon le besoin de simulation) la glycémie s’incrémentera ou se décrémentera. | ||
+ | |||
+ | De manière à pouvoir simuler, nous avons diminué les temps de simulation en considérant les minutes comme étant des secondes. | ||
+ | Sinon il aurait fallu attendre plus d’une heure pour pouvoir voir le système assimiler l’ingestion | ||
+ | d’un repas, ce qui n’est pas pratique à simuler. De manière à passer de seconde à minute, il suffit de modifier cette ligne : | ||
+ | if currentMillis - previousMillis > 1000 ) | ||
+ | et mettre beaucoup plus de temps( 10000000) . | ||
+ | Le système indique également si on est en hyper ou hypoglycemie en émetant des alertes sur le port serie . | ||
+ | ==Semaine 18 (11/02/18 : 24/02/18)== | ||
+ | Lors de ces dernières semaines nous avons réalisé l’émulation de la glycémie sur Simulink, avons réalisé un module de calcule de manière à pouvoir réguler la glycémie et enfin mis en commun la pompe et l’émulation. | ||
+ | |||
+ | '''émulation de la glycémie sur Simulink''' | ||
+ | fin de réaliser la simulation, nous avons décidé de simplifier le modèle tout en essayant de rester proche du comportement de la glycémie. | ||
+ | C’est ainsi que nous avons réalisé un système à plusieurs entrées. Chaque entrée correspond à un aliment, en plaçant un dirac d’une valeur de 1 à un moment donné, on simule l’ingestion de l’aliment. | ||
+ | L’émulation calcule à partir de ces entrées le nombre de glucide qui entre dans l’organisme en incrémentant la glycémie d’une unité chaque minute (seconde pour les simulations de test) jusqu'à ce que tous les glucides ingérés soient distribués à la glycémie. | ||
+ | Pour en arriver là, nous avons émis l’hypothèse que tous les aliments intégrés au système ont le même indice glycémique. | ||
+ | Nous avons modélisé cela de la manière suivante : | ||
+ | |||
+ | [[Fichier:model01.Png| 500px|thumb|center|]] | ||
+ | Nous avons programmé un bloc Matlab de manière à choisir les aliments qui entreront en jeu lors de l’émulation. Ce bloc donne à partir des aliments, du ratio glucidique et de la sensibilité à l’insuline du patient, les glucides qui seront assimilés dans le corps patient. | ||
+ | Le second bloc lui prend en entrée le nombre de glucide ingéré, l’horloge, la sensibilité à l’insuline et le débit d’insuline en sortie de la pompe. Le programme décrémente ainsi le nombre de glucide chaque seconde et incrémente en conséquence le taux de glycémie. De plus il consulte le débit d’insuline pour faire diminuer la glycémie en cas d’injection. | ||
+ | De manière à pouvoir intégrer la cinétique de l’insuline (début de la fonction 15 min après l’injection) nous avons ajouté un retard au niveau du débit de l’insuline de manière à ce que cette dernière se mette à faire effet seulement après ce délai. | ||
+ | |||
+ | |||
+ | '''calcule d'injection sur Simulink''' | ||
+ | |||
+ | De manière à faire le lien entre la pompe et l’émulation il est nécessaire de calculer le débit d’insuline à injecter pour corriger la glycémie en conséquence. | ||
+ | C’est pour cela que nous avons réalisé un module qui donne la quantité d’insuline à injecter selon la glycémie, la sensibilité à l’insuline, le débit basal et le temps. | ||
+ | De manière à ne pas injecter trop d’insuline, l’insuline met beaucoup de temps à faire effet, nous enregistrons dans une mémoire les quantités injectées et nous les prenons en compte dans le calcul des injections. | ||
+ | Si la glycémie est supérieure à 120, il faut injecter de l’insuline pour la faire diminuer. Plus la glycémie est élevée, plus il faut injecter d’insuline. Pour prendre en compte le fait qu’une dose ait pu être injectée précédemment, nous regardons la quantité d’insuline injectée lors des 25 dernières secondes (minutes en temps réel) et nous soustrayions cette quantité à la commande. | ||
+ | Nous gérerons également les injections basales. Définie dans l’initialisation en unité d’insuline /h, cette valeur est donnée par le médecin et est différente pour chaque personne. | ||
+ | |||
+ | Le but étant d’injecter une quantité fixe répartie sur une heure. Pour simplifier l’injection, nous souhaitons l’injecter en plusieurs fois plutôt qu’en continu. C’est pourquoi qu’à chaque mt (temps en minute entre chaque injection) nous injectons une fraction de la quantité basale à injecter en une heure. | ||
+ | |||
+ | [[Fichier:model02.Png| 500px|thumb|center|]] | ||
+ | |||
+ | |||
+ | '''calcule d'injection sur Simulink''' | ||
+ | Nous avons ensuite pris soin de mettre en commun les deux parties afin de valider le | ||
+ | fonctionnement de la pompe et l’algorithme de calcul des doses. Pour cela, nous avons | ||
+ | importé les deux modélisations expliquées précédemment ainsi que la commande de la | ||
+ | glycémie et avons récupérer le schéma Simulink suivant : | ||
+ | |||
+ | |||
+ | [[Fichier:model3.Png| 500px|thumb|center|]] | ||
+ | |||
+ | |||
+ | Nous avons ensuite réalisé des simulations du modèle total afin de valider ce dernier. | ||
+ | Pour cela, nous avons donné à l’émulation de la glycémie la consigne d’ingestion d’aliment | ||
+ | suivante : | ||
+ | A t= 1 s l’individu ingérera un aliment à 25g de glucide pour 100g | ||
+ | A t= 30 s l’individu ingérera un aliment à 3.5 g de glucide pour 100g | ||
+ | A t= 300 s l’individu ingérera un aliment à 10 g de glucide pour 100g | ||
+ | Nous avons ensuite lancé une simulation de 200s et avons observé les courbes de l’injection | ||
+ | et de glycémie. | ||
− | [[Fichier: | + | ==Rapport et document suplementaire== |
+ | [[Fichier:rapport_PFE_COFFIN_FAHEM.pdf]] |
Version actuelle datée du 23 février 2018 à 19:45
Tuteurs : Belkacem Ould Bouamama
Projet de fin d'étude réalisé par Alice COFFIN et Amina FAHEM
Sommaire
- 1 Suivit du projet
- 2 Première semaine (18/09/17 : 24/09/17)
- 3 Deuxième semaine (25/09/17 : 01/10/17)
- 4 Troisième semaine (02/10/17 : 08/10/17)
- 5 Quatrième semaine (09/10/17 : 15/10/17)
- 6 Cinquième semaine et Sixième semaine (16/10/17 : 22/10/17) et 23/10/17 : 29/10/17)
- 7 Semaines du 6/11/17 au 29/11/17
- 8 Semaine 11 - 12 (27/11/17 : 10/12/17)
- 9 Semaine 13 - 14 (11/12/17 : 24/12/17)
- 10 Semaine 15 - 16 (08/01/18 : 21/01/18)
- 11 Semaine 17 (22/01/18 : 28/01/18)
- 12 Semaine 18 (29/01/18 : 11/02/18)
- 13 Semaine 18 (11/02/18 : 24/02/18)
- 14 Rapport et document suplementaire
Suivit du projet
Pour réaliser notre suivit de projet, nous avons utilisé un Gantt. Notre projet se repartir de la façon suivante :
Le suivit complet de notre projet se trouve dans le fichier suivant : Media:Gantt_pompe_insuline.pdf
Première semaine (18/09/17 : 24/09/17)
Objectif du Projet
Concevoir un système mécatronique représentant une pompe automatique d'injection d'insuline. Le produit final doit être une réalisation d'un prototype qui sera conçu au fabricarium de Polytech.
Description
Le remplacement du fonctionnement du pancréas pour l’équilibre de la glycémie est un challenge très important pour le confort des diabétiques insulinodépendant. Depuis peu de temps, des pompes fonctionnant en boucle ouverte sont proposées aux patients. Le profil du débit d'insuline à injecter est introduit manuellement en fonction des prescriptions du médecin. La problématique réside dans l'allure de la trajectoire de débit car il dépend d'un grand nombre de facteurs (activité physique, type d'alimentation, état du patient...). Ce projet est proposé par le laboratoire Cristal de Villeneuve d’Ascq et consiste en la réalisation d’un prototype de cette pompe avec une commande en boucle fermée c.à.d. en contre réaction du taux de glycémie avec des algorithmes de commande avancée.
Le diabète
Le diabète est une maladie caractérisée par un taux de sucre dans le sang anormalement élevé. Cela est due au manque d’une hormone appelée insuline, cette hormone est sécrétée par des îlots de Langerhans se trouvant au niveau du pancréas. Le diabète insulinodépendant est une maladie caractérisée par un déficit de cette hormone. Cette maladie est très dangereuse et peut même engendrer la mort du patient s’il n’est pas pris en charge. Elle peut également causer de grave complication (au niveau des yeux, des reins, du cœur et même des vaisseaux sanguins). Le patient doit réaliser le contrôle de sa glycémie lui-même et s’injecter les doses d’insuline nécessaire de manière à réguler son taux de sucre.
Les pompes à insuline
Le diabète est une maladie très contraignante, c’est pour cela que différents dispositifs ont été réalisés afin de faciliter la vie de ces patients. Les pompes à insuline en font partie. La pompe à insuline est un appareil réalisant des injections d’insuline à un patient atteint de diabète. Le patient programme sa pompe en fonction de valeurs qu’il mesure grâce à un capteur de glycémie. Ces pompes sont généralement constituées d’un réservoir d’insuline, d’un circuit électronique intégrant un moteur et une canule au bout de laquelle on trouvera une petite aiguille servant à injecter le produit (on appelle également cette partie le cathéter). Il existe à présent de nombreux modèle de pompe à insuline. Les principales entreprises qui réalisent ces pompes sont Medtronic, Animas ou encore Omnipod , mais ces dernières années, certain laboratoire se sont penchés sur la réalisation d’un pancréas artificiel.
Deuxième semaine (25/09/17 : 01/10/17)
Lors de cette semaine, nous avons répertorié l’ensemble des taches à réaliser afin de mener à bien le projet. De cette manière nous avons pu fractionner les sous-parties du projet et avons maintenant une vue d’ensemble sur les éléments à réaliser. Cela nous a permis d’organiser un calendrier provisionnel des taches à effectuer ainsi qu'un ordre de priorité.
Nous avons également commencé la réduction du modèle 3D précédemment réalisée lors du stage. Le fonctionnement étudier lors de ce stage restera le même, un système vis/écrou. Le piston est déplacé en translation par la rotation de la vis, cette vis est entrainée par un moteur.
Le premier prototype réaliser durant le stage était trop grand. En effet, les dimensions d'une pompe à insuline doivent être de l'ordre de 8cm*6cm*4cm, or le modèle précédemment réalisé mesurait 18cm*10cm*15cm. Il était donc important de diminuer le modèle afin de pouvoir réaliser les tests sur ce dernier.
Nous avons donc réalisé les plans de ce modèle 3D sur l'application de conception 3D Onshape.
https://www.onshape.com/
Troisième semaine (02/10/17 : 08/10/17)
Nous avons terminé la modélisation sur Onshape avant de commencer à imprimer notre pompe en 3D en utilisant les imprimantes se trouvant au fabricarium.
Pour faire fonctionner notre pompe nous allons utiliser un moteur à courant continu (DC). Etant donner que nous allons réaliser une simulation complète du système sous Matlab/Simulink, nous avons commencé à y modéliser un moteur DC. Le modèle équivalent du moteur DC est représenté de la manière suivante :
On peut donc en retirer les équations suivante :
Ce sont ces équations qui serons ensuite implémentées sous Matlab/Simulink afin de simuler ce moteur et d’étudier l'influence des différents paramètres sur le système.
Quatrième semaine (09/10/17 : 15/10/17)
En assemblant les différentes pièces imprimer par les imprimantes 3D, il est apparu que certaines dimensions n’étaient pas les bonnes (trop de jeu autour de l’écrou). Nous avons donc réimprimé ces pièces.
Ci-dessous l’assemblage de notre prototype avec vis-écrou.
La modélisation du moteur DC sous Simulink a été poursuivi et les premières simulations réalisées avec des valeurs types.
Cinquième semaine et Sixième semaine (16/10/17 : 22/10/17) et 23/10/17 : 29/10/17)
Le travail de ces semaines à porter sur la modélisation du système sous Simulink. Nous avons débuté par réaliser un schéma des éléments mis en cause dans notre modèle afin de pouvoir prendre en compte l’ensemble des phénomènes impliqués dans ce dernier.
Le moteur DC sera relié au système vis/écrou. La rotation de la vis entraînera le mouvement en translation du piston. Le piston exercera une pression sur l'insuline présent dans le cylindre qui s’échappera par le petit orifice de sortie.
Afin de modéliser le système, il est important de bien établir ses équations caractéristiques. Nous partons du moteur et de ses équations notées la semaine précédente.
Bras moteur : Expression de la force électromotrice de l’induit
On applique ensuite le principe fondamental de la dynamique en rotation sur notre système : La somme des couples est égale au quotient du moment d’inertie et de l’accélération angulaire du point considéré. On a donc :
Le frottement existant entre la vis et l’écrou constitue un élément résistif sur le système, or nous avons une relation directe entre le couple de frottement et la vitesse angulaire :
Les équations suivantes correspondent au système d’engrenage permettant de réduire la vitesse de rotation appliqué à la vis
On applique ensuite le principe fondamental de la dynamique en translation sur notre système, pour cela on considère la force exercée par le piston, les forces de frottement et la force lie à la pression qu’exerce le liquide sur le piston :
Système hydraulique
La variation de volume dans le cylindre est équivalente au produit de la vitesse du piston et de la section du cylindre
Nous avons ensuite calculé le débit totale grâce à l’équation suivante :
Référence : https://ocm.univ-lille1.fr/index.php/s/mwaO1ya25mocGRH
Semaines du 6/11/17 au 29/11/17
Le travail de ces semaines à porté sur l'estimation des paramètres à utiliser dans le modèle Simulink, à la recherche des capteurs à utiliser et à l’assemblage du prototype. Estimation des paramètres et réalisation du modèle Simulink :
Les paramètres n’étant pas mesurable à partir du prototype, il a fallu réaliser leurs estimations soit en les calculant soit en récupérant leur ordre de grandeur à partir d'autre application. Cette partie a été principalement constitué de documentation afin de comprendre les phénomènes physiques existant dans chaque élément de notre schéma.
L’assemblage du prototype :
Afin de pouvoir réaliser des tests sur notre prototype, nous avons récupéré un petit moteur DC ainsi que le réducteur (en kit) qui lui correspond. Étant donné que le moteur est beaucoup plus rapide que ce que nous souhaitons, nous avons utilisé le réducteur pour diviser la vitesse par 225.
Il a fallu fabriquer un socle pour fixer correctement les deux parties du système ensemble (la partie moteur + réducteur et la partie vis/écrou).
De cette façon, pour 1 tour de moteur, le piston se déplace de 0.011mm.
La recherche des paramètres de simulation et le choix des capteurs se poursuivra dans les prochaines semaines
Semaine 11 - 12 (27/11/17 : 10/12/17)
- choix des capteur à utiliser pour s'assurer du bon fonctionnement du système
- test de la modélisation en réalisant des simulation et en réajustant les paramètres de manière à valider cette dernière.
Semaine 13 - 14 (11/12/17 : 24/12/17)
- débuggage de la partie simulation
- écart dans un gain implémenté dans la simulation causant une incohérence avec la simulation
- recherche sur la commande du moteur
Semaine 15 - 16 (08/01/18 : 21/01/18)
Nous avons réaliser un second état de l'art afin de connaitre mieux les origines de la maladie mais également les pompes déjà existantes sur le marché.
Historique
Dans les années 1960, la première pompe à insuline a été réalisée par le Docteur Arnold Kadish en Californie. Elle se portait comme un sac à dos. Quelques années plus tard, les premiers capteurs à insuline sont mis sur le marché par les laboratoires MILES ensuite racheter par Bayer (1969). Parallèlement, la première transplantation de pancréas a eu lieu à l'Université du Minnesota (1966). Les docteurs ont alors essayé de guérir le diabète par transplantation. Aujourd’hui, la greffe de pancréas est une opération réalisée partout dans le monde. En 1978, Baxter lance la première commercialisation de la pompe à insuline alors appelée AutoSyringe (inventée par Dean Kamen). Ce fut la première pompe programmable utilisable à domicile par les patients. En 2004, la première pompe programmable sans fil, l'OmniPod est commercialisé.
Aujourd'hui
De nombreuses pompes à insuline existent sur le marché. Seulement, ce dispositif médical reste peu répandu du fait de son prix très élevé (3000 euros minimum). Les principales entreprises réalisant ce genre de dispositif sont Medtronic, Roche, Novalab. Les derniers modèles proposent des moyens de surveillance et d'acquisition de données en temps réel. La pompe à insuline Animas (Novalab) a un système de SGC (Surveillance du Glucose en Continu) intégré. Ce système permet de connaitre la quantité de bolus encore actif dans l'organisme, cela permet de prendre de meilleure décision quant à l'administration de l'insuline. Il existe également des pompes connectées au capteur de glycémie afin de contrôler les taux du patient. D'autres sociétés ont fait le pari de la discrétion en essayant de minimiser les dimensions de la pompe de manière à ce qu'elle soit discrète pour le patient qui la porte.Ce fut le cas pour OmniPod qui s’est engagé à créer une pompe discrète tout en assurant sa robustesse et ses performances avec des pompes à changer tous les 3 jours. Cette pompe est connectée à un PDM (Personal Diabetes Manager) sans fil qui gère l'administration de l'insuline, récupère les données du glucomètre intégré, calcule l'insuline active dans l'organisme et peut également suggérer au patient une dose de bolus à injecter. Cellnovo a souhaité réaliser une pompe à insuline discrète mais qui serait en plus rechargeable de manière à avoir un impact le plus minime possible sur 'environnement.
Problématique de ces systèmes
Ces systèmes sont uniquement commandés en boucle ouverte : il n'y a aucun contrôle de la glycémie par la pompe. C'est pour cela que le médecin est obligé de réaliser un contrôle fréquent de l'utilisation de la pompe et de donner des directives aux patients quant à la prescription et l'administration de l'insuline. Malgré le fait que la pompe est connectée au capteur, il n'influe en rien sur l'administration du médicament mais permet uniquement de réaliser un suivi. Pour que le calcul de la dose soit interactif de manière à réaliser un contrôle en boucle fermée, il faut faire une validation clinique. C'est l’objet de certaines recherches énoncées par la suite.
Thématique de recherche
Le projet de pancréas artificiel pour lutter contre le diabète a commencé en 2011 avec un groupe de diabétologue. Ce projet est également appelé « Insulinothérapie en boucle fermé », il consiste à faire communiquer le capteur de glycémie et la pompe à insuline grâce à une intelligence artificielle. Le dispositif est alors composé de 3 parties : une partie acquisition en continu de la glycémie, une seconde partie qui calcule les doses à injecter et qui donne des ordres à la troisième partie, une pompe à insuline connectée. Ce projet a débuté en 2011 et des études cliniques ont été réalisées en 2014 sur une trentaine de patient. Le concept avait été alors validé. La compétition est maintenant rude après le lancement de plusieurs études sur patient dans les conditions de vie habituelle. En Amérique (Université de Virginie), en Angleterre (Cambridge) ou encore en France les premiers tests en temps réel sont lancés. Cependant, aucun des systèmes n'est prêt à être commercialisé. Diabeloop espère commercialiser son premier pancréas artificiel en 2018. Parallèlement, ce projet intéresse aussi les écoles d'ingénieur telles que Sup'biotech où un groupe d'élèves a imaginé un système de type implant. Ce concept a été présenté au concours Coup2boost (Dassault Système) qu'ils ont gagné. Le groupe a également été nominé pour le Concours des Jeunes Ingénieurs organisé par l'Usine Nouvelle.
Semaine 17 (22/01/18 : 28/01/18)
recherche émulation glycémie
Afin de pallier au manque de capteur de glycémie et de cobaye (ce qui empêche de réaliser des tests en temps réel) nous avons réalisé un dispositif d’émulation du comportement de la glycémie. Pour ce faire, nous avons étudié la cinétique de ce taux sanguin de manière à se rapprocher le plus possible du comportement réel. La glycémie est le taux de glucose présent dans le sang, c’est la caractéristique surveillée chez les diabétiques car il ne s’autorégule pas chez eux (c’est l'homéostasie). Lorsque l’on ingère un aliment, la glycémie augmente en fonction du taux glucidique de ce que l’on a mangé. En règle générale, lorsque l’on consomme des glucides, notre glycémie augmente. L’augmentation dépend de l’indice glycémique de l’aliment ingéré. Si son indice est élevé, la glycémie augmentera très rapidement et pour une personne non diabétique elle diminuera rapidement également. Inversement si l’indice de l’aliment est petit, la glycémie augmentera très lentement et pour une personne non diabétique elle diminuera lentement également. Une personne atteinte de diabète doit calculer la quantité de glucides ingérés pour connaitre la quantité d’insuline à s’injecter. Il utilise un ratio qui évolue en fonction du moment de la journée et permet de donner le nombre de dose à s’injecter en fonction du nombre de glucide ingéré.
Le but de cette partie est de modéliser le comportement de la glycémie selon différents facteurs tels que l’alimentation ou l’injection d’insuline. Le taux de glycémie ainsi calculé sera ensuite transmis au calcul du nombre de dose comme donnée du capteur de glycémie.
Vérification de la stabilité du système
Pour vérifier la stabilité du système, nous récupérons les équations d’états du système à partir du fichier Simulink. Nous avons trouvé une fonction Matlab permettant de calculer le critère de Routh et ainsi la stabilité du système. Les résultats du script Verifications.m :
Tests en boucle ouverte
Nous avons fait quelques tests en boucle ouverte. Tout d’abord, avec un step de 10V à 1s en entrée on retrouve en sortie le débit suivant : Le débit est de 17e-10 m3/s avec un temps de réponse de 4s.
Nous avons également utilisé une commande de tension variable :
Ce qui donne un débit variable :
A cause du temps de réponse vu plus haut, le débit d’injection ne se stabilise jamais avant que la tension de commande change. A partir du débit, on récupère la quantité d’insuline injectée :
CAO
Nous avons également réalisé une nouvelle CAO de notre pompe.
Semaine 18 (29/01/18 : 11/02/18)
calcule de la commande
Pour réaliser la commande en débit nous avons utilisé l’apps Matlab « Control System Tuner » qui permet de donner le PID ou les gains (correcteur) nécessaires au bon fonctionnement du système en boucle fermée.
Pour le correcteur de débit, nous avons donné les équations d’état de la pompe sous forme système à G et nous avons récupéré les gains F et C pour un « Tracking of step commands » sans dépassement.
Avec une commande variable de débit on trouve le graphique suivant :
Bleu : la commande de débit / Jaune : le débit de sortie On voit que le débit suit bien la commande sans dépassement comme nous le voulions.
Commande de la quantité injectée
On souhaite commander la pompe en quantité d’insuline à injecter. Pour cela il faut un nouveau contrôleur qui régule l’injection des doses et donc le débit. On limite le débit d’injection à 2e-9 m3/s ce qui permet d’injecter une dose d’insuline (1e-8 m3) en minimum 5s. On ajoute donc une saturation à 2e-9 sur la commande de débit. On utilise la même apps que précédemment pour trouver le PID.
Nous avons cette fois-ci utilisé le système régulé précédent avec l’intégration pour récupérer la quantité injectée comme système G et nous ne recherchons que le C sous forme PI enplaçant F à 1.
Une dose d’insuline est de 1e-8 m3, ici on injecte une dose à 5s puis une seconde à 20s. La commande du nombre de dose doit être l’addition du nombre de dose injectée depuis la mise en marche plus le nombre à injecter. Courbes :
Bleu : commande de quantité / Jaune : quantité injectée
Bleu : commande de débit en sortie du PI / Jaune : commande de débit après la saturation / Rouge : débit en sortie de la pompe
On peut voir que comme nous le souhaitons, la quantité injectée atteint bien la consigne. Il faut 10s pour injecter une dose, ce qui correspond à notre demande (temps d’injection supérieur à 5s). On voit également que la saturation fonctionne parfaitement.
Après ces différentes étapes de modélisation et de commandes, nous avons sous Simulink le modèle de la pompe commandable en quantité d’insuline à injecter et qui retourne le débit d’injection ainsi que la quantité réellement injectée.
implémentation de l'émulation du patient sur arduino
Nous avons également réalisé l'implémentation de l'émulation du patient sur arduino.
Notre dispositif sous Arduino communique par liaisons série, une reliée à l’ordinateur pour indiquer l’absorption des aliments (perturbations de la glycémie) et une seconde qui communiquera avec la pompe lorsqu’elle sera réalisée (envoi des données glycémiques et réception du débit d’insuline). De cette façon, on tape à l’ordinateur les aliments ingérés et le système réagit en conséquence. Nous avons tout d’abord intégré un tableau de valeur équivalent aux glucides des aliments que l’on peut ingérer lors de la simulation.
Au démarrage de l’application, nous affichons les aliments et un chiffre correspondant via la liaison série de l’Arduino avec l’ordinateur, l’utilisateur n’a plus qu’à taper le numéro de l’aliment ingéré et le système l’assimilera en considérant un ajout du nombre de glucide correspondant dans l’estomac. Ensuite, chaque seconde (ou minute selon le besoin de simulation) la glycémie s’incrémentera ou se décrémentera.
De manière à pouvoir simuler, nous avons diminué les temps de simulation en considérant les minutes comme étant des secondes. Sinon il aurait fallu attendre plus d’une heure pour pouvoir voir le système assimiler l’ingestion d’un repas, ce qui n’est pas pratique à simuler. De manière à passer de seconde à minute, il suffit de modifier cette ligne :
if currentMillis - previousMillis > 1000 )
et mettre beaucoup plus de temps( 10000000) . Le système indique également si on est en hyper ou hypoglycemie en émetant des alertes sur le port serie .
Semaine 18 (11/02/18 : 24/02/18)
Lors de ces dernières semaines nous avons réalisé l’émulation de la glycémie sur Simulink, avons réalisé un module de calcule de manière à pouvoir réguler la glycémie et enfin mis en commun la pompe et l’émulation.
émulation de la glycémie sur Simulink
fin de réaliser la simulation, nous avons décidé de simplifier le modèle tout en essayant de rester proche du comportement de la glycémie. C’est ainsi que nous avons réalisé un système à plusieurs entrées. Chaque entrée correspond à un aliment, en plaçant un dirac d’une valeur de 1 à un moment donné, on simule l’ingestion de l’aliment. L’émulation calcule à partir de ces entrées le nombre de glucide qui entre dans l’organisme en incrémentant la glycémie d’une unité chaque minute (seconde pour les simulations de test) jusqu'à ce que tous les glucides ingérés soient distribués à la glycémie. Pour en arriver là, nous avons émis l’hypothèse que tous les aliments intégrés au système ont le même indice glycémique. Nous avons modélisé cela de la manière suivante :
Nous avons programmé un bloc Matlab de manière à choisir les aliments qui entreront en jeu lors de l’émulation. Ce bloc donne à partir des aliments, du ratio glucidique et de la sensibilité à l’insuline du patient, les glucides qui seront assimilés dans le corps patient. Le second bloc lui prend en entrée le nombre de glucide ingéré, l’horloge, la sensibilité à l’insuline et le débit d’insuline en sortie de la pompe. Le programme décrémente ainsi le nombre de glucide chaque seconde et incrémente en conséquence le taux de glycémie. De plus il consulte le débit d’insuline pour faire diminuer la glycémie en cas d’injection. De manière à pouvoir intégrer la cinétique de l’insuline (début de la fonction 15 min après l’injection) nous avons ajouté un retard au niveau du débit de l’insuline de manière à ce que cette dernière se mette à faire effet seulement après ce délai.
calcule d'injection sur Simulink
De manière à faire le lien entre la pompe et l’émulation il est nécessaire de calculer le débit d’insuline à injecter pour corriger la glycémie en conséquence. C’est pour cela que nous avons réalisé un module qui donne la quantité d’insuline à injecter selon la glycémie, la sensibilité à l’insuline, le débit basal et le temps. De manière à ne pas injecter trop d’insuline, l’insuline met beaucoup de temps à faire effet, nous enregistrons dans une mémoire les quantités injectées et nous les prenons en compte dans le calcul des injections. Si la glycémie est supérieure à 120, il faut injecter de l’insuline pour la faire diminuer. Plus la glycémie est élevée, plus il faut injecter d’insuline. Pour prendre en compte le fait qu’une dose ait pu être injectée précédemment, nous regardons la quantité d’insuline injectée lors des 25 dernières secondes (minutes en temps réel) et nous soustrayions cette quantité à la commande. Nous gérerons également les injections basales. Définie dans l’initialisation en unité d’insuline /h, cette valeur est donnée par le médecin et est différente pour chaque personne.
Le but étant d’injecter une quantité fixe répartie sur une heure. Pour simplifier l’injection, nous souhaitons l’injecter en plusieurs fois plutôt qu’en continu. C’est pourquoi qu’à chaque mt (temps en minute entre chaque injection) nous injectons une fraction de la quantité basale à injecter en une heure.
calcule d'injection sur Simulink
Nous avons ensuite pris soin de mettre en commun les deux parties afin de valider le fonctionnement de la pompe et l’algorithme de calcul des doses. Pour cela, nous avons importé les deux modélisations expliquées précédemment ainsi que la commande de la glycémie et avons récupérer le schéma Simulink suivant :
Nous avons ensuite réalisé des simulations du modèle total afin de valider ce dernier.
Pour cela, nous avons donné à l’émulation de la glycémie la consigne d’ingestion d’aliment
suivante :
A t= 1 s l’individu ingérera un aliment à 25g de glucide pour 100g
A t= 30 s l’individu ingérera un aliment à 3.5 g de glucide pour 100g
A t= 300 s l’individu ingérera un aliment à 10 g de glucide pour 100g
Nous avons ensuite lancé une simulation de 200s et avons observé les courbes de l’injection
et de glycémie.
Rapport et document suplementaire
Fichier:Rapport PFE COFFIN FAHEM.pdf