Affichage tension alternative via python sur ordinateur

Fermé
Chris3874 Messages postés 31 Date d'inscription mercredi 21 juin 2023 Statut Membre Dernière intervention 25 septembre 2023 - 21 juin 2023 à 20:04
brucine Messages postés 19118 Date d'inscription lundi 22 février 2021 Statut Membre Dernière intervention 20 février 2025 - 6 juil. 2023 à 12:01

Bonjour 

J'ai réalisé un circuit électronique avec Arduino permettant de visualiser la tension(fréquence cardiaque) en sortie d'un capteur cardio optique placé sur le poignet. 

Malheureusement mes compétences informatiques sont limitées.

Je souhaiterais déterminer le code python pour visualiser cette tension variable entre 0 et 5V sur mon ordinateur. 

La fréquence principal du signal oscille entre 30 et 250Hz mais il y a pas mal de bruit...

J'utilise Edupython comme interface .

Merci de votre aide 

Chris

A voir également:

6 réponses

mamiemando Messages postés 33539 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 19 février 2025 7 828
Modifié le 21 juin 2023 à 21:24

Bonjour,

Préliminaires

Généralement on utilise matplotlib (pyplot) pour tracer une courbe. Il faut au préalable installer ce paquet, mais selon cette page il est déjà installé dans tonc as.

Ensuite tout dépend de la nature des points que tu collectes. Je suppose que tu as une liste de coordonnées (x, y) (où x est le temps et y la tension à l'instant t).

Si c'est le cas, la fonction la plus indiquée est matplotlib.pyplot.plot. Ce dernier s'utilise en formant deux vecteurs X et Y (contenant respectivement les abscisses et les ordonnées de tes points).

Points sous forme d'un vecteur d'abscisses et d'un vecteur d'ordonnées

Voici un exemple relativement minimal :

import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(-5, 5, 1000)
y = np.sin(2 * np.pi * x)

plt.plot(x, y, 'r')
plt.xlabel("x")
plt.ylabel("y")
plt.title("Un exemple simple")
plt.grid()
plt.show()

Ici je suppose que les points à tracer sont [(1, 10), (2, -20), (3, 30), (4, -40)] :

  • je crée le vecteur des abscisses (1, 2, 3, 4)
  • je crée le vecteur des ordonnées (10, -20, 30, -40)

Puis je trace le graphe en précisant le label de l'axe des abscisses, des ordonnées, le titre de la figure. Je trace une grille pour qu'on y vois plus clair, puis je trace le graphe.

Points sous forme de couple

On peut facilement reconstruire et x et y comme suit :

import numpy as np
import matplotlib.pyplot as plt

points = [(1, 10), (2, -20), (3, 30), (4, -40)]
x = [x_ for (x_, y_) in points]
y = [y_ for (x_, y_) in points]

plt.plot(x, y, 'r')
plt.xlabel("x")
plt.ylabel("y")
plt.title("Un exemple simple")
plt.grid()
plt.show()

Tracer une fonction mathématique

Pour tracer une fonction mathématique, on procède de la même façon : on génère plein de valeurs de x et on calcule pour chacune d'elle la valeur correspondantes :

Dans cet exemple, on génère les 1000 valeurs de x linéairement réparties (donc à intervalles réguliers) entre -5 et 5. Puis pour chacune on calcule la valeur de y correspondante (ici, y = sin(2.pi.x).

import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(-5, 5, 1000)
y = np.sin(2 * np.pi * x)

plt.plot(x, y, 'r')
plt.xlabel("x")
plt.ylabel("y")
plt.title("y = sin(2.$\pi$.x)")
plt.grid()
plt.show()

Bonne chance

0

Rebonjour et merci pour ta réponse. 

Cependant c'est pas tout à fait ce que je voulais...

En effet ton programme trace une courbe à partir d'un intervalle de valeurs et en prenant un nb de points ds cette intervalle pour tracer une fonction connue sur cette intervalle. 

Mon problème est différent je veux visualiser(et non tracer) une courbe(tension en fonction du tps) en sortie de mon circuit électronique, un peu comme un oscilloscope qui releve la tension, mais visible sur mon ordinateur. 

Encore merci 

Chris

0
mamiemando Messages postés 33539 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 19 février 2025 7 828
22 juin 2023 à 13:39

Bonjour,

Il faut dans ce cas que tu aies un moyen de récupérer a tension électrique de ton circuit pour construire ta liste de points, c'est une étape inévitable. Toute la question maintenant, c'est comment récupérer ces points. D'où mes questions : comment procèdes-tu pour le moment et comment est raccordé ton circuit électronique à ton Arduino ?

Voici un lien qui répond peut-être à ta question. Il évoque un module nommé UUGear, mais je ne sais pas s'il est adapté à ton cas d'usage.

Bonne chance

0

Bonjour et merci 

Pour l'instant la sortie de mon ensemble(capteur +traitement du signal) est reliée à un oscilloscope. 

Mais j'ai besoin de travailler dur mon projet pdt les vacances et je ne peux emmener un oscilloscope du lycée. 

J'aurais donc besoin de visualiser pdt les vacances cette tension afin d'apporter des améliorations à mon circuit grâce à Arduino relié à un PC.

Pour le reste ça me paraît complexe et m'oblige à rajouter de l'électronique alors qu'il y a déjà bcp de bruits parasites..

0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
mamiemando Messages postés 33539 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 19 février 2025 7 828
22 juin 2023 à 18:48

Bonjour,

Je comprends, mais tant qu'on ne sait pas comment acquérir les données de ton oscilloscope depuis un programme python, on ne pourra pas avancer. C'est pour ça que je t'ai invité à regardé UUGear (ou tout autre paquet qui permettrait de récupérer des données). L'as-tu fait ?

Bonne chance

0

Bonjour et encore merci. 

UUGear ne me semble pas fonctionner et m'oblige, si j'ai bien compris, à rajouter un circuit électrique. 

En revanche j'ai trouvé quelqu'un qui a fait qq chose de proche de moi comme montage électrique et il a fait en plus un filtrage numérique pour améliorer le signal de sortie et l'afficher mais je n'y comprends rien...

Il y a sans doute une fonction qui affiche là-dedans et le reste qui filtre le signal. 

Mon montage est un peu différent mais l'objectif était le même donc le programme est très proche de celui-ci. 

http://gringet.blogspot.com/p/polygraph.html?m=1#led

Allez en bas de la page sur download et cliquer sur fichier python...

Il y a ss doute la solution pour afficher et le reste pour le filtrage numérique mais je ne comprends pas ce qu'il fait exactement...

Encore merci 

0
mamiemando Messages postés 33539 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 19 février 2025 7 828 > Chris3874
23 juin 2023 à 10:38

Dans ton lien, la personne semble raccorder son circuit électronique à un port série. Est-ce ton cas ?

0
Chris3874 > mamiemando Messages postés 33539 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 19 février 2025
23 juin 2023 à 10:44

En fait mon circuit électronique qui ressemble bcp au sien puisque c'est le même capteur que j'ai créé est relié à ma carte Arduino  qui elle même est reliée au port serie de mon ordinateur. 

Encore merci 

0
mamiemando Messages postés 33539 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 19 février 2025 7 828 > Chris3874
26 juin 2023 à 14:39

Du coup, nous avons la réponse à mon message #3 : tu acquières tes données part le port série. Tu peux donc effectivement t'inspirer du lien que tu as donné en message #6. Tu peux aussi regarder ce lien. Parviens-tu à récupérer ainsi des valeurs ?

0

Bonjour 

Merci pour le lien mais j'ai essayé pas mal de choses, effectué des modifications....sans succès....je n'y arrive pas...je ne maitrise pas assez Python. 

Il faudrait que je sache ce que fait exactement chaque ligne pour pouvoir l'adapter aux besoins...

Ou comprendre ligne par ligne ce que fait le programme en lien dans le message 2 et celui que tu m'as donné en message 3, ça me permettra d'adapter probablement par la suite. 

Serais-tu capable de le detailler avec les explications ligne par ligne pour un novice comme moi ?

Merci et désolé pour le retard dû aux multiples essais et à qq bugs sur le site...

Chris

0
brucine Messages postés 19118 Date d'inscription lundi 22 février 2021 Statut Membre Dernière intervention 20 février 2025 2 892
6 juil. 2023 à 12:01

Bonjour,

Juste une remarque sur le plan de la sémantique: la tension (qui ne se mesure de manière fiable à ce jour que par compression artérielle sur le plan osseux sous-jacent) et qui correspond à la pression artérielle n'est pas la fréquence cardiaque (qui comme son nom l'indique correspond au nombre de battements par minute).

Un certain nombre d'applications se flatte de déterminer la première également par mesure optique du flux sanguin, et aucune de ces mesures n'ayant montré sa fiabilité à ce jour; c'est surtout la fréquence cardiaque dont le monitorage graphique a un intérêt.

0