Go Down

Topic: Programmation : Comment calculer l'énergie? (Read 395 times) previous topic - next topic

ProjetSTI2D

Bonjour, nous sommes actuellement en projet en utilisation avec l'arduino pour calculer l'énergie avec nos capteurs de courant et de tension.
Pour cela, nous aurions besoin de l'aide d'un expert pour nous aider car cela fait plusieurs mois qu'on arrive pas à avancer.
Merci d'avance.

iFrostizz67

Pourquoi ne pas lire la tension en analogique sur le port de la carte Arduino directement ?

ProjetSTI2D

car on a besoin du courant et du temps pour calculer l'energie E=UxIxt

iFrostizz67

De combien est la tension et intensité que vous souhaitez mesurer environ ?

ProjetSTI2D

on a déja fait des programmes pour connaitre la tension et le courant avec les capteurs. Le problème est qu'on ne sait pas calculer l'energie avec le language arduino.

dbrion06

#5
May 20, 2019, 05:44 pm Last Edit: May 20, 2019, 05:55 pm by dbrion06
La puissance  moyenne est la moyenne du produit de la tension par l'intensité  (est ce vrai?).
L'arduino permet de calculer une puissance instantanée (en admettant que l'intensité et la tension ne varient pas très vite) assez rapidement : les multiplications sont rapides, les cumuls, préalables au calcul de moyenne, aussi.  Vous pouvez integrer cette grandeur sur la période que vous voulez... (au bout d'un certain temps,  l'énergie sera très grande)

Ce qui pose 3 questions:

0) quelles sont les ordres de grandeur qui vous interessent (energie d'une lampe, d'un moteur, d'une LED?; temps (toutes les secondes, 10 secondes?)

a) sur quelle période souhaitez vous cumuler?

b) savez vous lire une intensité avec arduino?

c) savez vous lire une tension avec Arduino?

Nota : on peut, même si ça "ne marche pas", pouvoir répondre à ces trois questions (j'ignore si vous les avez déjà posées a votre encadrant, si vous les avez déjà résolues ou tenté de les résoudre -en xx mois, ça doit être faisable, ce sont -partiellement- des questions soit d'intendance, soit de cours)  mène à une solution informatique triviale.
Pour ma curiosité: avez vous eu des cours de C++?; d'électricité?
Edité : corrigé confusion énergie/puissance

dbrion06

https://www.arduino.cc/reference/en/ allez voir à "arithmetic operators", seconde ligne;
faites bien attention aux conversions de type... (lire la page complète peut résoudre la difficulté suivante que vous rencontrerez)

ProjetSTI2D

Ma partie du projet est de calculer l'energie que nous produisons avec un rameur. Pour ça j'ai du utiliser un capteur d'intensité et de tension pour trouver U et I. Ainsi essayer de faire la formule E=P*t. Nous savons lire l'intensité et la tension. Il nous reste plus qu'à trouver la formule de l'energie sous language arduino et l'afficher sur un écran avec LiquidCrystal.

Nous avons pas eu de cour C++

kamill

#8
May 20, 2019, 06:03 pm Last Edit: May 20, 2019, 06:03 pm by kamill
Bonjour,

Il faut intégrer la puissance en fonction du temps.
Pour cela tu découpes le temps en petites durée où tu considères que la puissance est constante (par exemple toutes les 10 ms), tu calcules P*Δt et tu additionnes à la valeur d'énergie précédente.

dbrion06

#9
May 20, 2019, 06:17 pm Last Edit: May 20, 2019, 06:34 pm by dbrion06
La puissance est donc assez stable (les fluctuations sont petites pendant, disons, 1/10 ième de seconde).

L'énergie n'a pas de limites: la calculer sur une période finie....

Que se passerait il si vous lisiez  à cadence régulière l'intensité et le voltage , pendant xxx secondes, affichiez le cumul des produits de l'intensité par la tension (multiplié par le pas d'échantillonnage: s'il est constant, cette multiplication peut avoir lieu juste avant l'affichage).

Je vous conseillerais

a) de tout convertir en floats (c'est ce qu'on fait quand in n'a pas d'ordre de grandeur des grandeurs à mesurer, ou quand elles peuvent devenir arbitairement grandes/petites) et en unités standard...

b) de regarder comment déclencher une action régulièrement blinkWithoutDelay est un exemple fourni avec Arduino .

c) d'essayer d'analyser les erreurs commises avec cette méthode; de cocher cette analyse par écrit.... (note -t-on un truc qui marche/ une analyse des erreurs et limitations du truc -les deux seraient préférables- )

Nota : a priori, mesurer (avec micros() ; dans la référence) le temps entre deux mesures  deltat, comme préconisé par kamill, est préférable à faire en sorte que les mesures soient à cadence fixe...

biggil

Le problème est qu'on ne sait pas calculer l'energie avec le language arduino.
Le langage Arduino est le C++. Savez-vous faire une multiplication en C++ ?

ProjetSTI2D

#11
May 21, 2019, 09:08 am Last Edit: May 21, 2019, 09:12 am by ProjetSTI2D
nous savons pas faire une multiplication en C++, puisque nous avons pas fait l'étude du C++

al1fch

#12
May 21, 2019, 09:17 am Last Edit: May 21, 2019, 09:19 am by al1fch
il est donc temps d'apprendre....... les ressources ne manquent pas sur le WEB...

en particulier l'excellent tutoriel conseillé aux débutants........

les nouveaux , ceux qui qui prennent le temps de consulter la 'Règle du Forum'  ne peuvent pas passer à côté du lien


ProjetSTI2D

double Energ = 0;
double Temps = 0;
double Voltage = 0;
double Current = 0;
double DT = 1000;
void setup() {
  Serial.begin(9600);

}

void loop() {

  for(int i = 0; i < 1000; i++) {
    Voltage = (Voltage + (.0049 * analogRead(A0)));
    delay(1);
  }
  Voltage = Voltage /1000;
  Current = (Voltage -2.5)/ 0.185;
 Serial.print("\n Voltage Sensed (V) = ");
 Serial.print(Voltage,2);
 Serial.print("\t Current (A) = ");
 Serial.print(Current,2);
 delay(1000);


 
  }

Go Up