[Programmation] Projet ECG
Répondre à la discussion
Affichage des résultats 1 à 14 sur 14

Projet ECG



  1. #1
    niala72bis

    Projet ECG


    ------

    Bonjour,

    je vais essayer de prendre au moins une bonne résolution pour 2024, à savoir reprendre la conception d'un instrument de mesure médicale mise en pause pour diverses raisons.

    Ce sujet concerne du hardware et de la programmation en C, donc mixte, je ne sais pas si c'est la bonne catégorie.

    En effet, avec stimulateur cardiaque et après une longue période de tachycardie, mon tensiomètre et mon saturomètre ne donnaient pas une indication fiable du pouls, autour de 130 à 150 bpm. J'ai subi une ablation atriale qui a tout remis dans l'ordre de ce côté, voilà pour le décor.

    J'avais donc commencé une maquette, comme j'en ai parlé ici :

    https://forums.futura-sciences.com/e...re-un-pic.html

    Avec un afficheur FSTN mono 320x240 et un PIC 16F1827 à 32 MHz, donc au max, résultats non satisfaisants. Je me suis donc tourné vers d'autres afficheurs de ce genre :

    https://www.ebay.fr/itm/255999594208...3ABFBMrrfziJhj

    Il y en a de différentes tailles, en gros de 1"8 à 10", tactiles ou pas, et à accès série ou parallèle, avec surtout différents contrôleurs.

    J'ai choisi un accès // pour la rapidité. Voilà ce que j'obtiens :

    Je suis maintenant sur la fonction de scroll partiel de l'écran

    -----
    Images attachées Images attachées
    Tombé à 12 ans dans la marmite électronique , multimètre CENTRAD 819 acheté à 14 ans !!

  2. #2
    niala72bis

    Re : Projet ECG

    J'ai des zones fixes pour afficher des valeurs calculées, et je dois faire évoluer le graphe temporel, les mesures provenant d'un AD8232 parfait à priori pour ça.

    Je n'utilise pas de bibliothèque Arduino, tout en C hyper optimisé en vérifiant le source généré, et il y a un gros travail pour afficher les textes. Il y a plusieurs puces incompatibles entre elles (ILI9486 de préférence). Je verrai selon la taille du code si je peux ajouter le 9482 mais ce n'est pas simple.

    Qui aurait fait "joujou" avec ces contrôleurs graphiques ?
    Images attachées Images attachées  
    Tombé à 12 ans dans la marmite électronique , multimètre CENTRAD 819 acheté à 14 ans !!

  3. #3
    niala72bis

    Re : Projet ECG

    J'aurais besoin de générer un pattern de test en constantes provisoires dans le programme (directive IF ...)
    Ce serait à partir d'une image comme ceci :

    Un fichier XLS serait le bienvenu. Merci
    Images attachées Images attachées  
    Tombé à 12 ans dans la marmite électronique , multimètre CENTRAD 819 acheté à 14 ans !!

  4. #4
    Murayama

    Re : Projet ECG

    Bonjour!

    Qui aurait fait "joujou" avec ces contrôleurs graphiques ?
    Si fait! J'ai même fait un peu plus, un EEG enregistreur qui a d'ailleurs été envoyé dans a station spatiale.

    J'aurais besoin de générer un pattern de test en constantes provisoires dans le programme (directive IF ...)
    Je ne suis pas sûr de tout comprendre la phrase. Je comprends jusqu'au mot "test". À tout hasard, voici
    un site qui donne divers types de signaux.

    NB: je n'ai pas vérifié celui-ci en particulier, mais des données ECG, il y en a plein sur le net.

    Par contre, je ne comprends pas ce que sont des constantes provisoires, et je ne sais pas comment ça se
    connecte avec la "directive IF". C'est quoi la directive IF? Préprocesseur #IF? instruction if?
    Ce que je conseilerais, c'est de faire comme suit:

    - Isoler un signal particulier téléchargé du site ci-dessus.
    - En faire un fichier, par exemple test_signal.c / test_signal.h
    - Compiler le tout.

    Dans le test_signal.c, vous aurez (par exemple) un tableau comme suit:

    uint16 ECGData[] = {
    // Mettre toutes les valeurs ici...
    };

    NB: si ce sont des entiers signés, il faut changer le type, c'est à vous d'adapter.
    Vu la taille de l'écran, vous n'avez pas besoin d'un tableau énorme, il faut juste vérifier
    que ça affiche. Vous dessinez un carré de (disons) 200 x 200, et vous stockez 200 valeurs
    dans le fichier.
    Et ensuite vous écrivez une fonction qui prend comme paramètre un uint16* et éventellement une
    longueur, un nombre d'éléements, et vous travaillez sur cette fonction jusqu'à ce qu'elle affiche
    correctement.

    Une autre chose que je ne comprends pas:
    Il y a plusieurs puces incompatibles entre elles (ILI9486 de préférence).
    ILI quelque chose, c'est un driver de LCD. Avec quoi est-il incompatible?
    La connaissance que j'ai de ces LCD, c'est qu'il y a un port d'entrée, on peut choisir parallèle ou SPI,
    et une fois qu'il est configuré, il suffit de balancer des données, c'est tout. C'est donc compatible
    avec n'importe quel µC qui a un SPI. Et même sans SPI hardware (ce qui de nos jours m'étonnerait un
    peu), il est possible de l'émuler en "bit banging", ce qui peut être fastidieux, mais reste faisable
    surtout si on a un oscilloscope pour vérifier.

    En attendant d'en savoir un peu plus...

    Pascal

  5. A voir en vidéo sur Futura
  6. #5
    Flyingbike
    Modérateur*

    Re : Projet ECG

    Citation Envoyé par Murayama Voir le message
    Bonjour!



    Si fait! J'ai même fait un peu plus, un EEG enregistreur qui a d'ailleurs été envoyé dans a station spatiale.



    Je ne suis pas sûr de tout comprendre la phrase. Je comprends jusqu'au mot "test". À tout hasard, voici
    un site qui donne divers types de signaux.
    Hello

    Ce dataset est en matlab, mais effectivement on peut trouver relativement facilement des tableaux de valeurs en msec/mv en csv faciles à exploiter.
    La vie trouve toujours un chemin

  7. #6
    Gyrocompas

    Re : Projet ECG

    Bonjour,
    Réflexion matinale, des chiffres inquiètent.
    Cas personnel, en phase repos, le rythme est remonté à 50 alors qu'il tournait à 45 quelques semaines plus tôt, conséquence d'une météo moins favorable.
    Par curiosité, j'ai récupéré un tensiomètre du commerce.
    tensiomètre.jpg

    Le fonctionnement est simple, une pompe met le brassard en pression, un capteur analyse la variation pour déduire systole et diastole.
    On voit le µP, la pompe, le capteur de pression, la mise à l'air.

    Le spécialiste, détecte au stéthoscope le retour du passage sanguin min et max.
    Référence du cours de médecine niveau externe 700 pages (disponible en librairie).
    L'analyse des différents enregistrements permet des conclusions qui concernent le muscle cardiaque ainsi que la réponse à l'électrolyte sanguin.
    Reference-Cardio.jpg
    Contenu-Cardio.jpg
    Comment s'appelait le capitaine Crochet avant de perdre sa main?

  8. #7
    niala72bis

    Re : Projet ECG

    Bonjour,

    je vais apporter quelques précisions sur ce projet :

    tout d'abord un tensiomètre, qu'il soit au poignet ou au bras, ou un oxymètre, ne donnent pas une mesure fiable en cas d'arythmie ou tachycardie, le pouls fluctue énormément. Seule une mesure ECG permet de voir chaque période. Je me suis inspiré de ces articles :

    https://how2electronics.com/ecg-moni...oogle_vignette

    https://how2electronics.com/iot-ecg-...-sensor-esp32/

    Pour réussir à écrire des valeurs, et surtout tracer une courbe en temps réel, impossible d'émuler un port série en bit banging, et même l'USART d'un PIC famille 16 high range ne le permet pas, c'est pourquoi j'ai choisi un LCD en accès parallèle. Je me suis inspiré d'un package pour Arduino trouvé sur GitHubn que j'ai décortiqué et commenté à ma sauce.

    Quand je dis qu'il y a diverses puces sur ces écrans, j'ai trouvé un modèle où 3 cases "check" en sérigraphie permettent d'indiquer la ref du chip. Bien sûr ils ne sont pas compatibles entre eux question registres. Au besoin je ferai une photo de celui ci. Et sur Ebay les vendeurs ne précisent pas toujours la ref et ne veulent pas s'engager.

    Sur ma maquette j'ai des afficheurs qui fonctionnent et d'autres non. J'avais évoqué ceci ici :

    https://www.edaboard.com/threads/3-5...rduino.405718/

    Donc dans un premier temps je souhaite n'utiliser qu'une version, quitte à faire ensuite une compilation conditionnelle pour m'adapter à d'autres afficheurs. J'avais trouvé une librairie énorme qui interrogeait le chip selon diverses lectures pour choisir les paramètres, mais ça ne rentrait pas dans mon PIC.

    Concernant la courbe ECG de test, le AD8232 fournit des valeurs en 8 bits, à conditionner pour la résolution d'écran. Je pourrais mesurer sur un tracé papier pour un tableau de disons 200 bytes, mais j'ai cherché à le faire avec Excel et avec TheDotFactory qui est un outil assez génial, sans succès, c'était le but de ma question, et le IF permettait d'inclure ou non ce bloc dans le binaire, j'espère avoir été assez clair.
    Tombé à 12 ans dans la marmite électronique , multimètre CENTRAD 819 acheté à 14 ans !!

  9. #8
    Seb.26

    Re : Projet ECG

    << My 2 cents >>

    Pour utiliser un écran y'a des choses toutes faites (et bien faites) ... cela te permettra de te concentrer sur le principal.

    https://github.com/olikraus/u8g2/wiki
    << L'histoire nous apprend que l'on apprend rien de l'histoire. >>

  10. #9
    niala72bis

    Re : Projet ECG

    Bien sûr on peut trouver toutes sortes de librairies sur GiitHub ou ailleurs.

    Mais je veux tout d'abord faire un appareil compact, avec un PIC 16F1827, ou 28 ou 47 ou 48.

    Or tout ce qu'on trouve, souvent orienté Arduino, est quasiment du code "académique", en cpp et surtout bourré de structures.

    Pour s'adapter à divers écrans soit on fait un seul code qui interroge (registres et valeurs diverses) et on met un tas de fonctions, un code énorme d'ailleurs j'en avais trouvé un pour STM32, soit on compile pour une puce particulière. C'est la solution que j'ai retenue, en ne prenant que les fonctions qui m'intéressent et en les simplifiant au max. Rien que les tables de pixels pour les caractères je n'ai mis que le minimum sinon ça ne rentre pas.

    Une autre chose à ne pas négliger :

    16-Level Deep Hardware Stack with Optional Overflow/Underflow Reset
    Tombé à 12 ans dans la marmite électronique , multimètre CENTRAD 819 acheté à 14 ans !!

  11. #10
    paulfjujo

    Dernière modification par paulfjujo ; 08/01/2024 à 10h20.

  12. #11
    Seb.26

    Re : Projet ECG

    Citation Envoyé par niala72bis Voir le message
    Une autre chose à ne pas négliger :
    16-Level Deep Hardware Stack with Optional Overflow/Underflow Reset
    ... on est en 2024 ... change de CPU ...

    ok, je sors ...
    << L'histoire nous apprend que l'on apprend rien de l'histoire. >>

  13. #12
    Gyrocompas

    Re : Projet ECG

    Bonjour,
    on est en 2024
    Ce qui ne change rien au problème qui est méthodologique.
    Dans un premier temps déterminer l'amplitude min-max de la fonction de transfert niveau des capteurs -> sortie traitement.
    Dans un second temps, l'afficher.
    Dans ce dernier cas, l'utilisation d'une table contenant une rampe linéaire permet de valider l'affichage.

  14. #13
    Murayama

    Re : Projet ECG

    Bonjour!

    Ce qui ne change rien au problème qui est méthodologique
    Oui, mais ça ne change rien non plus au fait que le chip n'a que 256 bytes de ram et 2k de flash,
    ou 4 selon les modèles. Avec 256 bytes de ram, on ne peut même pas maintenir un tableau de
    données à afficher sur un LCD de 320 x 240. Il faut vraiment aimer se pourrir la vie.
    Juste pour info, un chip que j'ai beaucoup usilisé pour diverses variantes d'ECG, EEG, etc:
    MSP430F5529
    Avantages:
    8k de ram, 128k de flash
    1 ADC 12 bits 8 ou 16 canaux (je ne sais plus, mais en tout cas 16 registres).
    -> Possibilité d'enregistrer des salves de 16 échantillons, avec interruption à la fin.
    Il a USB, on peut donc utiliser un port VCom pour communiquer.

    Du point de vue encombrement, voir photo de ce qui peut se faire. EEG + température +
    pulse oxymetre.

    Nom : IMG_8024.png
Affichages : 52
Taille : 209,7 Ko

    Le connecteur à droite est un 50 pins, ce qui fait que sa longueur (entre les pattes
    extrêmes) est de 24x1.27mm, donc en gros 30mm. 30 x 40, si je me souviens bien, et l'épaisseur
    était de 10mm sans la batterie. Le tout était dans une montre. La carte analogique est un EEG. Du
    point de vue complexité, c'est du même niveau qu'un ECG. On aperçoit le zigbee de la transmission radio.
    Ça date de 2008 ~ 2009, je suis certain qu'on peut faire beaucoup mieux maintenant.

    Pascal
    Dernière modification par gienas ; 10/01/2024 à 07h25. Motif: Suppression du doublon d’image inutile

  15. #14
    Gyrocompas

    Re : Projet ECG

    Bonjour,
    Besoin matériel :
    Il suffit de traiter le profil présenté en #3, sous diviser la séquence en ne retenant que les valeurs min et max de chacune.
    La présence d'un graphique précis pour un non cardiologue est inutile.

Discussions similaires

  1. [STI2D]Projet ITEC revue de projet final
    Par invitede7dcab0 dans le forum TPE / TIPE et autres travaux
    Réponses: 0
    Dernier message: 30/05/2014, 20h29
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...