Go Down

Topic: 'Resolu ' mesure de courant et tension (Read 7452 times) previous topic - next topic

Leptro

#30
Nov 10, 2017, 03:19 am Last Edit: Nov 10, 2017, 08:21 am by Leptro
Quote
le pb etait purement logiciel ,
C'est pour cela que c'est mieux d'avoir le code complet.

ça se serait vu dès le départ.

On a eu le temps de tergiverser sur plein de points...

Qu'en est t'il de la formule? je suis curieux de voir le résultat.



Pascal17740

#31
Nov 10, 2017, 08:47 am Last Edit: Nov 10, 2017, 08:49 am by Pascal17740
leptro
la tu tu te moque de moi!!!!! pour rester poli
le code complet etait dispo depuis le debut en piece jointe #4.......

68tjs

C'est la deuxième fois que tu réponds agacé,
Ce qui est parfaitement vrai, sauf peut-être pour toi, c'est que dès le départ rien n'était clair.

Ce n'est pas un reproche mais une constatation.
Il faut bien débuter un jour donc ça on l'accepte même si on le fait remarquer dans l'intérêt des échanges.

Mais rappelle toi bien qu'en face de toi tu as des bénévolles qui répondent sur leur temps de loisir.
Il serait domage pour toi de les faire fuir par des réflexions un peu trop vives.

Leptro

oups mille excuses..  Autant pour moi.


On lit tellement de messages sans fondement, incomplets.. et on doit à chaque fois deviner.
Et j'avoue que dans le flow d'info j'ai raté la pièce jointe.

J-M-L

leptro
la tu tu te moque de moi!!!!! pour rester poli
le code complet etait dispo depuis le debut en piece jointe #4.......
Poster en PJ un truc de 1600 lignes que l'on ne peut pas lire directement dans le forum n'incite pas les bénévoles que nous sommes tous à creuser. c'est aussi facile de rater la PJ.

Perso je lis le forum le plus souvent depuis mon smartphone, il m'est donc impossible de lire simplement votre code...

Le point - où la leçon à retenir - c'est que pour tester plutôt que de regarder le programme dans son ensemble, vous devez créer un code de 10 lignes pour affiner votre formule. Une fois que vous avez compris comment se comporte le module, alors vous intégrez cela dans votre grand code.

et quand ça ne marche pas, postez les 10 lignes ici. ce sera facile pour tout le monde de regarder et de vous aider...

Hello - Please do not PM me for help,  others will benefit as well if you post your question publicly on the forums.
Bonjour Pas de messages privés SVP, postez dans le forum directement pour que ça profite à tous

Pascal17740

je n ai l intention de faché ni de decouragé personne, mais il s averre que les 10 lignes de code presentes dans le post 1 n' on pas permis de detecter cette ommision , et dans mon cas le non affichache d une valeur meme erronnée , le pb etait l affichage d'une valeur et que tous le monde c 'est focalisé sur la formule, quelle soit fausse ou correcte il y aurais du avoir une valeur. Mea culpa j ai peut etres manquer de rigueur dans la diffusion des infos. desormais j ai bien la valeur des deux entrees analogiques que je vais exploiter une pour le courant de charge de la batterie (de voiture) avec un acs 20a et le courant de conso du projet domotique avec un acs 5a
reste plus qu a trouber les deux formules adequates.

Pascal17740

bonjour je viens de develloper sur une uno juste la fonction mesure de courant mais le resultat n 'est pas celui escompter  si je force l entree analogique a + 5 volts j obtiens dans serial tension capteur 5 V , courant capteur 13.6 A et des que je force l entree a gnd tension capteur - 5 V , courant capteur -13.6 A
je ne vois pas ou est le pb
Code: [Select]

/*
  Mesure de courant continu asc712 5A
 */
 
float tension_capteur = 0;
float Courant = 0;
void setup(){
  Serial.begin(9600);
}
 
void loop(){
  // Tension lue 500 fois pour moyenne
  for(int i = 0; i< 500; i++) {
   tension_capteur = (tension_capteur + (.0049 *( analogRead(A0))));   // (5 V / 1024 = 0.0049)
    delay(1);
  }
tension_capteur = tension_capteur /500;
Courant = ((tension_capteur-2.5)/ 0.185); // conversion tension/courant
 
Serial.print("\n Tension capteur (V) = "); // tension du capteur sur Serial
Serial.print(tension_capteur,2);  // 2 chiffres apres la virgule
Serial.print("\t Courant capteur (A) = ");   // courant capteur sur Serial
Serial.print(Courant,2);   // 2 chiffres apres la virgule
delay(1000);
}

de ce fait je ne prends en compte que la formule sur un Montage separer avant l integration sur mon mega

Leptro

après une itération du "loop"

La tension capteur Avant la boucle for et égale à  tension_capteur à la sortie de la boucle for.

Si précédemment elle valait 5V et qu'on connecte l'entée analogique à GND.

On devrait avoir à la sortie tension capteur= 5/500. soit 0.01V  mais pas -5V je ne comprends pas cette valeur.

En la mettant dans la formule, le courant sera bien de -13.46A .

Il faut donc faire quelque chose avant la boucle for.


J-M-L

#38
Nov 12, 2017, 06:23 pm Last Edit: Nov 12, 2017, 06:24 pm by J-M-L
juste par curiosité, si vous faites

Code: [Select]
void setup() {
  Serial.begin(115200);
  pinMode(A0, INPUT);
}

void loop() {
  float tension_capteur = 0;
  float courant = 0;

  // Tension lue 500 fois pour moyenne
  for (int i = 0; i < 500; i++) {
    tension_capteur += analogRead(A0);
    delay(1);
  }
  tension_capteur = (tension_capteur / 500.0) * 5.0 / 1024;
  courant = ((tension_capteur - 2.5) / 0.185); // conversion tension/courant

  Serial.print("\n Tension capteur (V) = ");
  Serial.print(tension_capteur, 2);
  Serial.print("\t Courant capteur (A) = ");   // courant capteur sur Serial
  Serial.println(courant, 2);  // 2 chiffres apres la virgule
  delay(1000);
}

ça dit quoi?

il n'y a aucune raison que la tension affichée devienne négative
Hello - Please do not PM me for help,  others will benefit as well if you post your question publicly on the forums.
Bonjour Pas de messages privés SVP, postez dans le forum directement pour que ça profite à tous

Pascal17740

non le /500 correspond au nombre de fois ou la valeur est lue ce qui sert a faire la moyenne et non 0.001

Pascal17740

merci J-M-L
mais ta version de croquis bien que quelque soit peu differente me donne exactement le meme resultat en debug

J-M-L

#41
Nov 12, 2017, 06:41 pm Last Edit: Nov 12, 2017, 06:42 pm by J-M-L
pouvez vous confirmer que vous avez juste un Arduino Uno et que vous mettez un fil entre la sortie 5V et la pin A0 et qu'il n'y a rien d'autre du tout de branché sur votre UNO?

pouvez vous copier coller exactement ce que port Serial (configuré à 115200) dit ?

et si vous faites tourner cela, ça dit quoi en fonction du fil mis sur 5V ou sur GND et connecté à A0?

Code: [Select]
void setup() {
  Serial.begin(115200);
  pinMode(A0, INPUT);
}

void loop() {
  Serial.print("A0 = ");
  Serial.println(analogRead(A0));
  delay(1000);
}
Hello - Please do not PM me for help,  others will benefit as well if you post your question publicly on the forums.
Bonjour Pas de messages privés SVP, postez dans le forum directement pour que ça profite à tous

Pascal17740

#42
Nov 12, 2017, 06:48 pm Last Edit: Nov 12, 2017, 06:55 pm by Pascal17740
A0 = 1023 avec version minimaliste sous 5v
A0 = 0 gnd
A0 = 681 sous 3.3 v
oui rien d autre que la mise a +vvc de a0

Leptro

oui , mais à l'entrée de la boucle for tension_capteur vaut 5v
à la sortie elle vaut 5+500*0 ! puisque A0=0.
puis elle vaut 5/500 soit 0.01.



J-M-L

A0 = 1023 avec version minimaliste sous 5v
A0 = 0 gnd
A0 = 681 sous 3.3 v
oui rien d autre que la mise a +vvc de a0
donc cette partie la fonctionne bien

vous avez bien testé avec mon code ou la déclaration des float est dans la loop, pas en dehors (histoire qu'ils soient remis à 0)
Hello - Please do not PM me for help,  others will benefit as well if you post your question publicly on the forums.
Bonjour Pas de messages privés SVP, postez dans le forum directement pour que ça profite à tous

Go Up