Affichage tension alternative via python sur ordinateur
brucine Messages postés 21667 Date d'inscription Statut Membre Dernière intervention -
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
- Affichage tension alternative via python sur ordinateur
- Coco.gg alternative - Accueil - Réseaux sociaux
- Coco chat alternative - Accueil - Réseaux sociaux
- Ordinateur - Guide
- Alternative zone telechargement - Accueil - Outils
- Ordinateur qui rame - Guide
6 réponses
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
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
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
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..
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionBonjour,
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
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
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
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.