Arduino Forum

International => Français => Topic started by: Pascal17740 on Nov 07, 2017, 12:40 am

Title: 'Resolu ' mesure de courant et tension
Post by: Pascal17740 on Nov 07, 2017, 12:40 am
 Bonjour, je réalise un test de tension de batterie et de son courant de charge
le test de tension fonction mais pas celui de courant même quand je port a +vcc l entrée analogique le résultat reste a zéro
les declarations de variables sont les suivantes
Code: [Select]

   float vout = 0.0;
      float vin = 0.0;
        float R1 = 30000.0; 
         float R2 = 7500.0;
            int tensBat = 0.0;
              int ANA0 =0;
                int ANA1 = 1;
                  int ANA2 = 2;
    float ICconso = 0.0; float ICcharge =0.0; float average=0.0;

et les fonctions
Code: [Select]

 void test_bat() {
  tensBat = analogRead(ANA2);
       vout = (tensBat * 5.0) / 1024.0; // see text
        vin = vout / (R2/(R1+R2));Serial.print(vin,1);
   if ((vin <= 12.0))
  {
  batcharge=true;
  }
 if (vin>14)
  {
 batcharge=false;
  }
   if (batcharge || cmdBat)
   {
   digitalWrite(BATCHARGE,LOW); batcharge2=true;
   }
    else
   {
   digitalWrite(BATCHARGE,HIGH);batcharge2=false;
   }
  }
  void test_courant(){
   for(int i = 0; i <3000; i++)
    // average = average + (.0264 * analogRead(ANA0) -13.51) / 1000; //ACS712 5 Ampères
    average = average + (.049 * analogRead(ANA0)-25)/1000;//ACS712 20 Ampères
    Serial.print(average);delay(1);
}

affichage tension ok courant 0.0
Title: Re: mesure de courant et tension
Post by: Leptro on Nov 07, 2017, 06:29 am
Je pense que le problème vient de la formule :
Code: [Select]
average = average + (.049 * analogRead(ANA0)-25)/1000;//ACS712 20 Ampères

ce capteur de courant fourni effectivement 185mv/A , il suffit de mesurer la tension en sortie du capteur soustraire les 2.5V si nécessaire et faire la transposition.





Title: Re: mesure de courant et tension
Post by: Pascal17740 on Nov 07, 2017, 11:07 pm
Je pense que le problème vient de la formule :
Code: [Select]
average = average + (.049 * analogRead(ANA0)-25)/1000;//ACS712 20 Ampères

ce capteur de courant fourni effectivement 185mv/A , il suffit de mesurer la tension en sortie du capteur soustraire les 2.5V si nécessaire et faire la transposition.


Non le probleme ne viens pas de la formule si je force l entee analogique a +vcc c 'est a dire 5 volts  je n'ai toujour pas de resultat autre qu e 0.0
Title: Re: mesure de courant et tension
Post by: ChPr on Nov 07, 2017, 11:20 pm
Le problème vient bien ce cette ligne :

Code: [Select]
average = average + (.049 * analogRead(ANA0)-25)/1000;//ACS712 20 Ampères

Remplacez la valeur 1000 par 1000.0

Ça devrait mieux aller.

Cordialement.

Pierre
Title: Re: mesure de courant et tension
Post by: Pascal17740 on Nov 08, 2017, 12:18 am
Le problème vient bien ce cette ligne :

Code: [Select]
average = average + (.049 * analogRead(ANA0)-25)/1000;//ACS712 20 Ampères

Remplacez la valeur 1000 par 1000.0

Ça devrait mieux aller.

Cordialement.

Pierre
Non le probleme ne viens pas de la formule si je force l entee analogique a +vcc c 'est a dire 5 volts  je n'ai toujour pas de resultat autre qu e 0.0
je viens de corriger la formule
Title: Re: mesure de courant et tension
Post by: Leptro on Nov 08, 2017, 03:35 am
si tu force la pin analogue à 5V   analogread retournera 1023.
EN mettant 1023 dans ta formule tu obtiens 0.025  Iccharge sera égale à 0.0 (float icharge=0.0);

pour le test n'applique pas la formule et affiche la valeur issue de analogread.

A+
Title: Re: mesure de courant et tension
Post by: J-M-L on Nov 08, 2017, 05:55 am
Le problème vient bien ce cette ligne :
Code: [Select]
average = average + (.049 * analogRead(ANA0)-25)/1000;//ACS712 20 Ampères
Remplacez la valeur 1000 par 1000.0
Ça devrait mieux aller.
Non car il y a déjà un .049 et la variable average qui fait basculer tout le calcul en flottant


Essayez un
Code: [Select]
Serial.print(average, 6); pour avoir un affichage avec 6 chiffres après la virgule (et tant que vous y êtes déclarez les pins en const byte Plutôt qu'en int utiliser A0 plutôt que 0 (même si ça marche ça rend le code plus explicite et évite de se tromper de pin si vous faites un digitalRead dessus) et appuyez sur ctrl-T dans l'éditeur pour indenter correctement ce code)
Title: Re: mesure de courant et tension
Post by: ChPr on Nov 08, 2017, 08:33 am
Non car il y a déjà un .049 et la variable average qui fait basculer tout le calcul en flottant  ...
C'est vrai. Je croyais que la valeur la plus extérieure (1000) donnait le ton. Mais bon, je serai toujours surpris par les subtilités du C.

Pour autant, j'ai essayé votre formule avec un simple Serial.println(average) et en remplaçant la lecture analogique par 1023 : on affiche bien une valeur ... qui plus est, croit avec le temps et tend vers l'infini..

Votre problème vient de la lecture analogique.

Par ailleurs, votre formule décrit le comportement d'un intégrateur.

Pour qu'elle se comporte comme un filtre passe-bas, il faut l'écrire ce cette façon :

Code: [Select]
average = A * average + B * nouvelle_lecture

avec A + B = 1. Par exemple, A = 0.9 et B = 0.1.

Plus le rapport A / B sera grand, plus le filtrage sera efficace mais plus le résultat sera long à obtenir.

Cordialement.

Pierre
Title: Re: mesure de courant et tension
Post by: aligote on Nov 08, 2017, 09:10 am
Bonjour,

J'utilise un capteur d'intensité (+-5A)et tout se passe bien.

J'ai toujours un peu de difficulté à lire le code écrit par une autre personne.

Quelques remarques :

- La valeur 2,5V (donc 512 comme valeur après conversion A/D) est indicative pour la valeur de tension obtenue dans le cas d'intensité nulle. Perso je stocke dans une variable offset la valeur mesurée au démarrage du programme, valeur qui est ensuite retranchée au résultat de la conversion A/D.
- Pour mes mesures, me suis méfié des priorités des opérations pour le compilateur entre les int et les float. De ce fait je fais un affichage préalable du résultat (valeur analogique- offset) avant de multiplier par une valeur de calibre qui sera un float.

Code corrigé

Code: [Select]


int Calibre_I=97;


void AFFICHE_INTENSITE(byte x, byte y)
{Intensite=analogRead(IntensitePin);
  if (Intensite>Offset_I)
     Intensite=Intensite-Offset_I;
    else Intensite=0;
 if (Intensite==1) Intensite=0;
 lcd.setCursor(x,y);
 lcd.print(0.1*Calibre_I*Intensite/200,1);lcd.print(" A ");
}



Serge .D
Title: Re: mesure de courant et tension
Post by: J-M-L on Nov 08, 2017, 10:31 am
Bonjour,

J'utilise un capteur d'intensité (+-5A)et tout se passe bien.

J'ai toujours un peu de difficulté à lire le code écrit par une autre personne.

Quelques remarques :

- La valeur 2,5V (donc 512 comme valeur après conversion A/D) est indicative pour la valeur de tension obtenue dans le cas d'intensité nulle. Perso je stocke dans une variable offset la valeur mesurée au démarrage du programme, valeur qui est ensuite retranchée au résultat de la conversion A/D.
- Pour mes mesures, me suis méfié des priorités des opérations pour le compilateur entre les int et les float. De ce fait je fais un affichage préalable du résultat (valeur analogique- offset) avant de multiplier par une valeur de calibre qui sera un float.

Code: [Select]


int Calibre_I=97;


void AFFICHE_INTENSITE(byte x, byte y)
{Intensite=analogRead(IntensitePin);lcd.setCursor(x,y);
 if (Intensite>Offset_I)
     Intensite=Intensite-Offset_I;
    else Intensite=0;
 if (Intensite==1) Intensite=0;
 lcd.print(0.1*Calibre_I*Intensite/200,1);lcd.print(" A ");
}



Serge .D

il ne vous manque pas un lcd.setCursor(x,y); dans votre fonction? (juste une remarque en passant :) )


EDIT: NON, il me manque mes lunettes :)
Title: Re: mesure de courant et tension
Post by: 68tjs on Nov 08, 2017, 01:36 pm
Bonjour,

Plusieurs points m'interpellent dans ce sujet :
1) Pourquoi un moyennage ?
Souvent un moyennage sert à cacher la poussière sous le tapis. L'origine des perturbations étant le plus souvent un câblage brouillon non adapté.
Il faut relier la sortie du capteur à l'entrée de mesure analogique avec une paire torsadée. Un fil de la paire torsadée sera le signal, l'autre sera la masse. C'est très important de transporter les signaux ainsi, le fil relié à la masse est très important c'est lui qui apportera une immunité aux bruits ambiants.
S'il subsiste du bruit (provenant du capteur) il faut placer un filtre passe bas pour couper le bruit qui est HF.
Le filtre le plus simple est un filtre RC. La résistance en série avec le fil, au plus près de l'entrée analogique, le condensateur entre l'entrée analogique et la masse.
Valeurs de départ R = 10k , C= 100nF à 1µF
Remarque :
mathématiquement le moyennage est un filtre passe bas.
physiquement : un filtre "vire" les bruits et les empêche de pénétrer dans le  le micro.

2) Si on veut un moyennage c'est qu'on veut de la précision et là il y a des trous dans la raquette.
A) Cela m'étonnerait que la tension Vcc fasse 5,0000 V. Si le Vcc vient de l'USB c'est 5V +/- 5% soit  entre 4,75V et 5,25V, sinon la dispersion sera celle du régulateur interne..
B) Tous les circuits intégrés ont de la dispersion, cela m'étonnerai que le 2,5V théorique soit exactement égal à Vcc/2 parce cette tension vient d'un circuit de polarisation interne au circuit et donc va aussi dépendre de sa tension d'alim Vcc.

Pour moi toutes  ces valeurs doivent être mesurées et ne doivent pas être gravées "en dur" dans le source du programme.

Si l'utilisation est unique on peut utiliser des "defines"
#define Vcc 4.89
#define Vo 2.515
L'adaptation aux valeurs réelles sera simple à faire.

Si le programme doit être distribué à l'identique sur plusieurs postes c'est le moment d'utiliser l'EEPROM du micro pour y charger les valeurs exactes que le programme viendra lire au démarrage.

Remarque sur les cartes :
Si c'est une UNO l'implantation de la piste Aref est tellement mauvaise qu'il est impossible de faire des mesures correctes en l'état. Sur les forum on en est même à un point où les fervents arduinistes trouvent normal d'être obligés de faire un moyennage !
Il faut souder un condensateur de 100 nF au dos de la carte ,sur le support entre les pins  gnd et Aref du micro.
Attention pattes très courtes pour le condo ou mieux un cms format 0805. Et la mesure gagnera immédiatement en stabilité.

Si c'est une nano le problème est sur la tension Vcc.
Si la carte est alimentée par Vin, avec 9V par exemple, Vcc sera peu dispersé --> dispersion du régulateur de tension.
Si c'est par l'USB ce pourra être vite la catastrophe !
1) 5V USB à +/-5% ( 4,75V<Vcc< 5,25V
2) Il y a une diode Schottky entre le Vcc USB et le Vcc micro.  --> chute de tension imprécise d'environ 0,3 à 0.5V qui en plus dépend de la consommation. Et cerise sur le gâteau dispersion de cette chute de tension en fonction de la température.

Au final par l'USB on peut s'attendre à avoir un Vcc compris entre 4,25 V et 4,95 V plus dispersion en température.

Moralité : bien réfléchir avant d'annoncer des résultats avec des chiffres après la virgule.
Title: Re: mesure de courant et tension
Post by: aligote on Nov 08, 2017, 01:59 pm
il ne vous manque pas un lcd.setCursor(x,y); dans votre fonction? (juste une remarque en passant :) )
Il me semble que celui de la 1ere ligne de la fonction doit suffire ?

Serge .D
Title: Re: mesure de courant et tension
Post by: J-M-L on Nov 08, 2017, 03:30 pm
Il me semble que celui de la 1ere ligne de la fonction doit suffire ?

Serge .D
quoi, vous voulez dire que j'ai encore oublié mes lunettes?

ah oui... :)

(pour ma défense: généralement on mets 1 unité cohérente d'expressions par ligne. Donc pour ma part une lecture analogique et un positionnement sur le LCD devraient être sur 2 lignes séparées, c'est pour cela que je ne l'ai pas vu...  :smiley-roll-sweat:  :smiley-roll-sweat: )
Title: Re: mesure de courant et tension
Post by: kamill on Nov 08, 2017, 03:36 pm
(pour ma défense: généralement on mets 1 unité logique de commande par ligne. Donc pour ma part une lecture analogique et un positionnement sur le LCD devraient être sur 2 lignes séparées, c'est pour cela que je ne l'ai pas vu...
Bonjour,

Moi j'ajouterais que cette instruction n'a rien à faire avec la lecture analogique et qu'elle devrait se trouver juste avant le print. Il faut quand même un minimum de rigueur quand on écrit un programme sinon c'est une grosse source d'erreur.
Title: Re: mesure de courant et tension
Post by: J-M-L on Nov 08, 2017, 03:44 pm
gros +1 avec @68tjs - c'est aussi pour cela qu'il est bon d'utiliser des capteurs numériques plutôt que analogique. au moins on n'est pas dépendant de la conception de l'arduino pour la lecture
Title: Re: mesure de courant et tension
Post by: 68tjs on Nov 08, 2017, 05:06 pm
Quote
il est bon d'utiliser des capteurs numériques plutôt que analogique
Pas pour moi :smiley-mr-green: Le numérique ce n'est pas drôle.

Plus sérieusement oui sans connaissance particulière, et on ne peut pas tout connaître, les capteurs numériques posent moins de difficulté de mise en œuvre.

Mais, il y a toujours un mais, même avec un capteur numérique on peut être ennuyé avec des problèmes analogiques comme on le voit de temps en temps sur ce forum avec des connexion de l'ordre de plusieurs mètres.
Dès que les longueurs de câble ne sont plus négligeables on tombe dans l'analogique pur et là cela se gâte.
Les signaux sont numériques oui, mais le transport des signaux est analogique.

Ce que j'aimerai que l'on retienne de ce que j'ai écrit c'est que les composants électroniques ne sont des trucs théoriques mais des êtres réels avec leur défauts. Les datasheet donnent le plus souvent des valeurs centrées qui sont le résultat d'une moyenne.
Un montage électronique cela se mesure USB = 5V c'est du rêve, chaque PC fourni une valeur différentes et même à l'intérieur d'un même PC selon le module USB il peut y avoir des différences.
On est dans la vrai vie, en électronique on ne peut jamais écrire U = 4,352 V mais U = 4,325 V +/- x mV
Title: Re: mesure de courant et tension
Post by: J-M-L on Nov 08, 2017, 05:49 pm
Ce que j'aimerai que l'on retienne de ce que j'ai écrit c'est que les composants électroniques ne sont des trucs théoriques mais des êtres réels avec leur défauts. Les datasheet donnent le plus souvent des valeurs centrées qui sont le résultat d'une moyenne.
tout à fait OK
Title: Re: mesure de courant et tension
Post by: aligote on Nov 08, 2017, 06:02 pm
.............
Moralité : bien réfléchir avant d'annoncer des résultats avec des chiffres après la virgule.
................
Ajouter aussi pour compléter le tableau que la précision de ce genre de capteur de courant n'est pas non plus si grande que cela :

Par exemple une erreur de 2% pour le capteur  à pleine échelle représente 20 unités sur le résultat de la conversion A/D sur 10 bits.

Serge .D


(http://forum.arduino.cc/index.php?action=dlattach;topic=510064.0;attach=232669)
Title: Re: mesure de courant et tension
Post by: Pascal17740 on Nov 08, 2017, 08:00 pm
bonsoir,
je n ai toujours pas des solution a mon probleme il doit y avoir un probleme d 'ecriture dans le code non en rapport avec l ' equation ....
je suis dans le neant C tique....

Title: Re: mesure de courant et tension
Post by: J-M-L on Nov 08, 2017, 08:05 pm
bonsoir,
je n ai toujours pas des solution a mon probleme il doit y avoir un probleme d 'ecriture dans le code non en rapport avec l ' equation ....
je suis dans le neant C tique....
qu'avez vous fait pour débugger?

postez tout le code et dites nous ce que vous voyez comme valeur de analogRead dans votre fonction... avez vous fait le Serial print?
Title: Re: mesure de courant et tension
Post by: 68tjs on Nov 08, 2017, 08:09 pm
Je répète ma question :
Pourquoi tu fais un moyennage ?
Clairement, sauf justifications, je mets en doute la nécessité du moyennage

Est-ce un code que tu as trouvé tout fait ?
Title: Re: mesure de courant et tension
Post by: aligote on Nov 08, 2017, 08:20 pm
bonsoir,
je n ai toujours pas des solution a mon probleme il doit y avoir un probleme d 'ecriture dans le code non en rapport avec l ' equation ....
je suis dans le neant C tique....


Je propose dans un premier temps :

- 1 Vérifier  avec un multimètre numérique que la valeur de la tension sur la borne  A0 est convenable.
- 2 Mettre en commentaire le contenu actuel de la fonction test_courant() et dans cette fonction sortir  par un Serial.print la valeur de analogRead(ANA0) en augmentant la durée du delay()

Serge .D
Title: Re: mesure de courant et tension
Post by: 68tjs on Nov 08, 2017, 08:59 pm
Et un lien vers le module ACS712 que tu as approvisionné cela pourrait être utile !
Note qu'il faut lire ton code pour trouver dans les commentaires le nom du module que tu utilise.  Est-ce normal ?
Parce que tu réclame une solution mais tu ne donnes pas toutes les billes, pas très cohérent ça.

Lit donc le message épinglé :
Bienvenue sur le forum de la .......
et tu y trouvera toutes les indications que tu aurai du donner dès le départ.

Règle générale quand on fait du développement :  "quand cela ne fonctionne pas on décompose le problème".
Indispensable : tu commences par tout décâbler. Si tu ne le fais pas et que tu as une connerie cachée dans le câblage tu ne la trouvera jamais (je parle d'expérience 40 ans de dev derrière moi) !

1) Mesurer la valeur du Vcc qui alimente la carte arduino et le module.
2) Relier avec un câblage correct le module ASC à une entrée analogique.
3) Mesurer avec un voltmètre la tension en sortie du module, on doit avoir autour de 2,5V , il faut la valeur exacte.
4) Faire SEULEMENT une série de mesure analogique et rien d'autre, pas de LCD ou autre machins.
5) Afficher avec un Serial.print la réponse du convertisseur. Avec une tension de référence par défaut à Vcc tu devrais trouver autour de 500.
6) Et bien évidement vérifier la cohérence entre la mesure au voltmètre et la mesure par la carte arduino

Si cela fonctionne tu peux passer à la suite et câbler les autres composants UN par UN et faire des tests simples à chaque fois.
Sinon il sera inutile d'aller plus loin tant que cette opération basique ne fonctionnera pas.
Title: Re: mesure de courant et tension
Post by: rjnc38 on Nov 08, 2017, 10:05 pm
Je répète ma question :
Pourquoi tu fais un moyennage ?
Clairement, sauf justifications, je mets en doute la nécessité du moyennage
je vais peut être dire une co...rie mais ce module est fait pour de l'AC et du DC
donc le code n'est pas le même dans les deux cas :
- en DC une mesure peut suffire
- en AC c'est plus complexe, il faut intégrer sur une demi sinusoïde  pour trouver la valeure efficace du courant d'ou la remarque de ChPr
Par ailleurs, votre formule décrit le comportement d'un intégrateur.
(ou rechercher la valeur max ...)
donc clairement
Quote from: 68tjs
Est-ce un code que tu as trouvé tout fait ?
oui en ayant même loupé quelques lignes et pas vérifié sur quel circuit il est utilisé ...
Title: Re: mesure de courant et tension
Post by: Pascal17740 on Nov 09, 2017, 12:03 am
Et un lien vers le module ACS712 que tu as approvisionné cela pourrait être utile !
Note qu'il faut lire ton code pour trouver dans les commentaires le nom du module que tu utilise.  Est-ce normal ?
Parce que tu réclame une solution mais tu ne donnes pas toutes les billes, pas très cohérent ça.

Lit donc le message épinglé :
Bienvenue sur le forum de la .......
et tu y trouvera toutes les indications que tu aurai du donner dès le départ.

Règle générale quand on fait du développement :  "quand cela ne fonctionne pas on décompose le problème".
Indispensable : tu commences par tout décâbler. Si tu ne le fais pas et que tu as une connerie cachée dans le câblage tu ne la trouvera jamais (je parle d'expérience 40 ans de dev derrière moi) !

1) Mesurer la valeur du Vcc qui alimente la carte arduino et le module.
2) Relier avec un câblage correct le module ASC à une entrée analogique.
3) Mesurer avec un voltmètre la tension en sortie du module, on doit avoir autour de 2,5V , il faut la valeur exacte.
4) Faire SEULEMENT une série de mesure analogique et rien d'autre, pas de LCD ou autre machins.
5) Afficher avec un Serial.print la réponse du convertisseur. Avec une tension de référence par défaut à Vcc tu devrais trouver autour de 500.
6) Et bien évidement vérifier la cohérence entre la mesure au voltmètre et la mesure par la carte arduino

Si cela fonctionne tu peux passer à la suite et câbler les autres composants UN par UN et faire des tests simples à chaque fois.
Sinon il sera inutile d'aller plus loin tant que cette opération basique ne fonctionnera pas.

Pour faire claire la reference du capteur est dans le peu de code mis des le premeire poste en gros une vingtaine de lignes , si je presise par plusieures fois, excuse moi du peu et de plus ecrit en rouge que la broche analogque  a ete tester avec vcc , cela veut bien dir en direct donc le module acs debrancher , l alimentation de cinq volts est obtenu depuis une alimentation de 9 volts cabler sur la prise alim,  pour les mesures de tension sur le detecteur sans le brancher sur la mega corespond bien +/- a 2.5 volt a vide , a savoir que la mesure attendue n"as pas besoin d'etre extremement precise c'est pour controler le courant de charge de ma baterie donc pas au mA pret.ensuite je placerais un second Acs 5 A pour controler la consommation du montage .Et je n ai jamais parler d'afficheur lcd faut pas confondre les posts... j ai aussi poster l ino complet dans le cas ou il y aurais une interaction inattendu qui bloque l affichage de la valeur du courant de charge.
Title: Re: mesure de courant et tension
Post by: J-M-L on Nov 09, 2017, 12:41 am
Pouvez vous tester avec juste votre fonction les bonnes déclarations et un appel à votre fonction dans le setup, pas un code de 50k qu'on ne peut pas lire sur forum (suis sur mon mobile)?

isolez le problème

Title: Re: mesure de courant et tension
Post by: 68tjs on Nov 09, 2017, 09:28 am
Pour faire clair il est préférable de faire des retours à la ligne pour aérer son texte et d'éviter l'écriture au km.
Quand on est demandeur il est préférable de ne pas décourager ceux qui peuvent aider et de leur faciliter la tâche.

Si je résume ce que j'ai compris:
- coté module ACS c'est ok
- coté entrée analogique c'est ko.

Il semblerait qu'il y ait soit une erreur de manip soit que le micro ait subit des outrages "involontaires".

Pour lever le doute :
1) carte seule, au fait tu ne nous as pas encore dit de quelle carte arduino il s'agit -> tu ne dis pas tout !
Tu raccordes le 3,3V sur  A0.
2) Tu fait un digitalRead(x)  -> résultat cohérent ou pas ?  --> on a le droit de la faire voir la partie info
3) Tu fais un analogRead(x) -> résultat cohérent ou pas

et tu reproduis la manip sur les entrées A0 à A5. Au moins on saura si la carte arduino est intacte où si "elle a souffert".

Info :
- Toutes les I/O ont une fonction principale et une ou plusieurs fonctions secondaires.
- La fonction principale de toutes les I/O est d'être des I/O NUMERIQUES, même AO à A5.
- Au démarage (après un reset ou à l'allumage de la carte)  toutes les I/O sont sur leur fonction principale c'est à dire en mode digital (même AO à A5) et positionnées en entrée.
- la fonction secondaire de A0 à A5 est d'être la mesure analogique.
A4 et A5 ont une autre fonction secondaire qui est l'I2C.
- Ce n'est que la fonction analogRead qui peut faire passer individuellement A0 ou A1, ou... ou A5 sur leur fonction secondaire la mesure analogique

PS
Ecoute ce qu'on te dit , JML dans le post  précedent et moi dans le #22 : décompose ton programme en petit bout que tu teste un par un.
Toutes les personnes qui sont des développeurs professionnels en activité ou d'anciens développeurs en retraite te diront la même chose : il n'y a pas d'autre solutions.
Et moi j'ajoute que ce n'est pas la peine d'aligner les lignes de code tant le matériel et sa communication avec le micro  n'est pas validé.
Title: Re: mesure de courant et tension
Post by: Pascal17740 on Nov 09, 2017, 09:47 pm
68tjs

la carte sur laquelle je televerse est une mega .Pour tester les broches Analogiques,
j ai pris ma fonction test_tension  j ai affecter  a tours de role sur les pin A0 a A2 cela marche  ce qui dé-douane la partie hardware donc reste plus que le software a verfier . je m y attaque des ce week end. Par contre j ai pas de confirmation de la formule exacte de conversion on ne trove pas deux formules pareilles.
Title: Re: mesure de courant et tension
Post by: 68tjs on Nov 09, 2017, 11:33 pm
Je ne sais pas ou tu cherches la formule de conversion mais pour moi il n'y a qu'un seul endroit : c'est la datasheet du produit.
Si tu met dans le champ recherche de ton moteur de recherche favori, moi c'est Qwant.com, raz le bol de hégémonie de google et du vol de données personnelles, tu obtients une série de réponse.

J'élimine  tout ce qui est adafruit, sparkfun et autre vendeurs de modules -->  les datasheets qu'il fournissent ont toujours 5 à 10 versions de retard.

Je cherche un nom de fabricant (oui je sais je suis un ancien électronicien professionnel et c'est plus facile pour moi).
Dans le cas présent j'ai reconnu le nom d'Allegro et j'ai téléchargé.
Si tu n'en connais pas tu tâtonnes jusqu'à trouver celui du fabricant du produit.
Je trouve que cela vaut vraiment la peine de perdre un peu de temps pour avoir un document à jour.

Que peut-on déduire de la date sheet ?
Je précise que je n'ai encore jamais utilisé ce circuit.

Ce circuit utilise l'effet Haull, c'est à dire que le courant qui traverse le circuit intégré génère un champ magnétique et que ce champ magnétique va à son tour générer une tension. Il y a donc isolement électrique entre la partie puissance et la partie mesure.

Au repos le circuit délivre Vcc/2. Cela signifie que le circuit est prévu pour le continu et l'alternatif.
Cela veut dire aussi qu'en continu la tension évoluera de Vcc/2 à Vcc ou si tu connecte le fil du courant dans l'autre sens de Vcc/2 à 0 puisque le champ magnétique dépend du sens du courant.

De combien évolue la tension de sortie en fonction du courant. circuit en fonction du courant.
La datasheet est prévue pour 3 versions du circuit
x05B    Imax = 5A  sensibilité = 185 mV par ampère
x20A   Imax = 20A sensibilité 100 mVpar ampère
x30A   Imax = 30A sensibilité = 66 mV par ampère

Je n'arrive pas déterminer quelle version tu as : c'est écrit sur le boîtier du circuit intégré.
Imaginons que c'est la version 5A
La tension de sortie sera égale à la tension de repos plus la tension due à l'effet Haull soit
Vs = 2,5 + 0,185 * I   (I en ampères)
et si jamais tu inverses le sens du courant dans le circuit intégré (je t'invite à le faire rien que pour ta curiosité naturelle) la formule devient :
Vs = 2,5 - 0,185*I

Moyennage ou pas.
C'est une question de bruit, rappelle toi j'ai recommandé de relier le capteur au micro avec une paire torsadée.
Perso j'ai sacrifié quelques mètres de câble ethernet rigide (mono brin) dont je récupère les paires.
Mais pour faire un essais tu peux torsader deux fils Dupont, ceux qui sont vendus pour les breadboards.
Avec de la nappe il y a aussi la possibilité d'utiliser 3 conducteurs:
- le central est pour le signal
- les deux extérieurs sont reliés à la masse aux deux extrémités.


Sur cette version de CI  il n'y a qu'une seule bande passante 80 kHz mais il y a un filtre que l'on peut mettre en service.
Si ce filtre est en service sur ton module il y a un condensateur soudé entre la pin 6 du ASC712 et la masse.
Il y a moyen de faire quelque chose si tu sais un peu manier le fer à souder.

Mais fais déjà des tests et on en reparle après.
Title: Re: mesure de courant et tension
Post by: Pascal17740 on Nov 10, 2017, 12:19 am
68 tjs  :)
j ai trouver l affichage par serial.print me donne bien 1023 du fait de vcc sur A0
le pb etait purement logiciel , il fallait juste ne pas oublier de faire l "appel de fonction dans le loop c 'est a dire
 test_courant();
maintenant reste plus que  la convertion... :(
je n ai pas besoin de paires torsades si l acs a coté du mega ?
pour le reste je vais relir ton dernier post et appliquer .
Title: Re: mesure de courant et tension
Post by: Leptro on Nov 10, 2017, 03:19 am
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.


Title: Re: mesure de courant et tension
Post by: Pascal17740 on Nov 10, 2017, 08:47 am
leptro
la tu tu te moque de moi!!!!! pour rester poli
le code complet etait dispo depuis le debut en piece jointe #4.......
Title: Re: mesure de courant et tension
Post by: 68tjs on Nov 10, 2017, 09:06 am
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.
Title: Re: mesure de courant et tension
Post by: Leptro on Nov 10, 2017, 10:56 am
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.
Title: Re: mesure de courant et tension
Post by: J-M-L on Nov 10, 2017, 11:12 am
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...

Title: Re: mesure de courant et tension
Post by: Pascal17740 on Nov 10, 2017, 12:11 pm
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.
Title: Re: mesure de courant et tension
Post by: Pascal17740 on Nov 12, 2017, 04:53 pm
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
Title: Re: mesure de courant et tension
Post by: Leptro on Nov 12, 2017, 06:13 pm
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.

Title: Re: mesure de courant et tension
Post by: J-M-L on Nov 12, 2017, 06:23 pm
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
Title: Re: mesure de courant et tension
Post by: Pascal17740 on Nov 12, 2017, 06:24 pm
non le /500 correspond au nombre de fois ou la valeur est lue ce qui sert a faire la moyenne et non 0.001
Title: Re: mesure de courant et tension
Post by: Pascal17740 on Nov 12, 2017, 06:33 pm
merci J-M-L
mais ta version de croquis bien que quelque soit peu differente me donne exactement le meme resultat en debug
Title: Re: mesure de courant et tension
Post by: J-M-L on Nov 12, 2017, 06:41 pm
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);
}
Title: Re: mesure de courant et tension
Post by: Pascal17740 on Nov 12, 2017, 06:48 pm
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
Title: Re: mesure de courant et tension
Post by: Leptro on Nov 12, 2017, 06:52 pm
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.


Title: Re: mesure de courant et tension
Post by: J-M-L on Nov 12, 2017, 07:09 pm
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)
Title: Re: mesure de courant et tension
Post by: Pascal17740 on Nov 12, 2017, 07:10 pm
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.



a savoir que si je supprime la boucle de moyennage le probleme reste identique
5 v sur A0 = I 13.58 A
0 v suur A0 = I -13.54
Title: Re: mesure de courant et tension
Post by: J-M-L on Nov 12, 2017, 07:11 pm
a savoir que si je supprime la boucle de moyennage le probleme reste identique
5 v sur A0 = I 13.58 A
0 v suur A0 = I -13.54

si tension_capteur = 0 alors courant = ((tension_capteur - 2.5) / 0.185) vaut -13.54...

tout fonctionne bien


vous êtes sûr que vous voyez -5V (MOINS 5V pour la tension) quand branché sur GND ??
Title: Re: mesure de courant et tension
Post by: 68tjs on Nov 12, 2017, 07:15 pm
Je ferai autrement, la mise au point ne se fait pas comme cela, il faut de la rigueur.
Je commencerai par faire la mesure avec un voltmètre, avec et sans courant (--> mesure du Vcc/2 réel en sortie de capteur).
Je ferai le calcul  avec une calculette.
Je regarderai si la mesure est déconnante ou si elle est correcte.
A quoi sert d'aligner des lignes de code si l'électronique n'est pas validée avant ?

Ensuite si c'est bon on passe à la programmation
1)  Je ne laisserai branché QUE le capteur.
2) je partirai sur une seule mesure, sans aucun moyenage et je vérifierai la validité de la mesure.
3) Je séparerai dès le début le courant de la composante continue (déjà mesurée) de sortie du capteur et je validerai le calcul.
Tant que ce ne sera pas bon il faudra trouver la raison.

4) Je connecterai le restant en vérifiant régulièrement la validité de la mesure : c'est le meilleur moyen pour trouver une éventuelle incohérence de câblage --> c'est le meilleur mais aussi en fin de compte le plus rapide.

5) si le besoin s'en fait sentir, et seulement si c'est nécessaire, j'introduirai un moyenage.
 
Question :
Est-ce logique d'accumuler les mesures brutes (composante continue + courant), d'en faire la moyenne et seulement à la fin soustraire la composante continue de la mesure ?
Cette composante continue est bien déterminée, la lecture de la datasheet valide bien qu'elle est égale non pas à 2,5V mais à Vcc/2 c'est quelque peu différent. Même si la mesure de l'ADC du micro est bruitée une mesure au voltmètre de ce Vcc/2 donnera un résultat précis et fiable.

Pour moi ce n'est pas logique, il faut soustraire cette valeur de la mesure brute avant de faire l'accumulation.
Cela peut fonctionner mais ce n'est pas logique et ce qui n'est pas logique sera à un moment ou à un autre source d'erreur.


Title: Re: mesure de courant et tension
Post by: Pascal17740 on Nov 12, 2017, 07:16 pm
non je n ai jamais parler de - 5v mais de -13,5 A pour  0V et 13.5 pour +5V
Title: Re: mesure de courant et tension
Post by: J-M-L on Nov 12, 2017, 07:18 pm
non je n ai jamais parler de - 5v mais de -13,5 A pour  0V et 13.5 pour +5V
--> c'est quoi le petit tiret avant le 5?

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
avec la pin à GND vous devriez avoir dans la console 0V avec la formule... mais comme vous refusez de copier coller ce qui s'affiche, on ne sait pas...


Title: Re: mesure de courant et tension
Post by: Pascal17740 on Nov 12, 2017, 07:21 pm
Je ferai autrement, la mise au point ne se fait pas comme cela, il faut de la rigueur.
Je commencerai par faire la mesure avec un voltmètre, avec et sans courant (--> mesure du Vcc/2 réel en sortie de capteur).
Je ferai le calcul  avec une calculette.
Je regarderai si la mesure est déconnante ou si elle est correcte.
A quoi sert d'aligner des lignes de code si l'électronique n'est pas validée avant ?

Ensuite si c'est bon on passe à la programmation
1)  Je ne laisserai branché QUE le capteur.
2) je partirai sur une seule mesure, sans aucun moyenage et je vérifierai la validité de la mesure.
3) Je séparerai dès le début le courant de la composante continue (déjà mesurée) de sortie du capteur et je validerai le calcul.
Tant que ce ne sera pas bon il faudra trouver la raison.

4) Je connecterai le restant en vérifiant régulièrement la validité de la mesure : c'est le meilleur moyen pour trouver une éventuelle incohérence de câblage --> c'est le meilleur mais aussi en fin de compte le plus rapide.

5) si le besoin s'en fait sentir, et seulement si c'est nécessaire, j'introduirai un moyenage.
 
Question :
Est-ce logique d'accumuler les mesures brutes (composante continue + courant), d'en faire la moyenne et seulement à la fin soustraire la composante continue de la mesure ?
Cette composante continue est bien déterminée, la lecture de la datasheet valide bien qu'elle est égale non pas à 2,5V mais à Vcc/2 c'est quelque peu différent. Même si la mesure de l'ADC du micro est bruitée une mesure au voltmètre de ce Vcc/2 donnera un résultat précis et fiable.

Pour moi ce n'est pas logique, il faut soustraire cette valeur de la mesure brute avant de faire l'accumulation.
Cela peut fonctionner mais ce n'est pas logique et ce qui n'est pas logique sera à un moment ou à un autre source d'erreur.



je ne branche pas de capteur je veux verifier cette formule qui est sense me donner 5 A lorsque je passe a 5 v  l entree analogique et 0 lorsque la broche est a GND.
car il est pas normal d obtenir des valeur de -13.5  a 0 v et 13, 5 a vcc
Title: Re: mesure de courant et tension
Post by: Pascal17740 on Nov 12, 2017, 07:30 pm
--> c'est quoi le petit tiret avant le 5?

avec la pin à GND vous devriez avoir dans la console 0V avec la formule... mais comme vous refusez de copier coller ce qui s'affiche, on ne sait pas...



c est une erreur de frappe je voulais marque 0 v
quand au copier coller j ai beau surligner les resultat dans la console je n ai pas la fonction copier qui marche .
Title: Re: mesure de courant et tension
Post by: Leptro on Nov 12, 2017, 07:36 pm
Que ce soit dans la console ou dans la fenêtre de compilation, il suffit de sélectionner le résultat avec la souris puis faire CTRL+C pour copier
Et CTRL + V pour coller dans le forum.

Title: Re: mesure de courant et tension
Post by: Pascal17740 on Nov 12, 2017, 07:46 pm
Tension capteur (V) = 5.01    Courant capteur (A) = 13.58
 Tension capteur (V) = 5.01    Courant capteur (A) = 13.58
 Tension capteur (V) = 5.01    Courant capteur (A) = 13.58
 Tension capteur (V) = 5.01    Courant capteur (A) = 13.58
 Tension capteur (V) = 5.01    Courant capteur (A) = 13.58
 Tension capteur (V) = 5.01    Courant capteur (A) = 13.58
 Tension capteur (V) = 5.01    Courant capteur (A) = 13.58
 Tension capteur (V) = 5.01    Courant capteur (A) = 13.58
 Tension capteur (V) = 5.01    Courant capteur (A) = 13.58
 Tension capteur (V) = 5.01    Courant capteur (A) = 13.58
 Tension capteur (V) = 5.01    Courant capteur (A) = 13.58
 Tension capteur (V) = 5.01    Courant capteur (A) = 13.58
 Tension capteur (V) = 5.01    Courant capteur (A) = 13.58
 Tension capteur (V) = 5.01    Courant capteur (A) = 13.58
 Tension capteur (V) = 0.00    Courant capteur (A) = -13.51
 Tension capteur (V) = 0.00    Courant capteur (A) = -13.51
 Tension capteur (V) = 0.00    Courant capteur (A) = -13.51
 Tension capteur (V) = 0.00    Courant capteur (A) = -13.51
 Tension capteur (V) = 0.00    Courant capteur (A) = -13.51
 Tension capteur (V) = 0.00    Courant capteur (A) = -13.51
 Tension capteur (V) = 0.00    Courant capteur (A) = -13.51
  Tension capteur (V) = 3.34    Courant capteur (A) = 4.55
 Tension capteur (V) = 3.33    Courant capteur (A) = 4.50
 Tension capteur (V) = 3.33    Courant capteur (A) = 4.50
 Tension capteur (V) = 3.34    Courant capteur (A) = 4.52
 Tension capteur (V) = 3.34    Courant capteur (A) = 4.52
 Tension capteur (V) = 3.34    Courant capteur (A) = 4.52
 Tension capteur (V) = 3.34    Courant capteur (A) = 4.52
 Tension capteur (V) = 3.33    Courant capteur (A) = 4.50
Title: Re: mesure de courant et tension
Post by: J-M-L on Nov 12, 2017, 07:48 pm
OK donc votre code et votre arduino fonctionnent. pas de soucis.

Dans la vraie vie en courant continue une intensité de 0A vous donnera un courant proche de Vcc / 2 donc vous serez toujours au dessus de ce seuil dans la mesure de AnalogRead() (échantilloné) et donc la formule mathématique de l'intensité ne passera pas négative.

(68tjs dira que dans la vraie vie va falloir tenir compte des petites approximations et il aura raison)
Title: Re: mesure de courant et tension
Post by: 68tjs on Nov 12, 2017, 08:09 pm
Le principe de ce produit est simple : il est prévu pour le continu comme pour l'alternatif.
Comme on évite au maximum d'utiliser une double tension +5V et -5V, le concepteur du produit a prévu un décalage sur la sortie égal à Vcc/2 et j'y tiens absolument Vcc/2 pas 2,5V  --> si Vcc = 4,8V la sortie sera égale à 2,4 V  et avec 2.5  la valeur de ton courant sera fausse !

Donc cette valeur de Vcc/2 ne représente en rien la valeur du courant.
Avant toute manipulation du résultat il faut VIRER cette composante continue de Vcc/2.
Sinon tu compliques inutilement comme en ce moment.

Je te rappelle que je t'ai dit qu'en fonctionnement avec un courant continu si tu fais passer le courant dans un sens la mesure vraie ( après déduction du Vcc/2) aura un sens et si tu inverse le câblage tu obtiendra la même valeur absolue mais avec le signe opposé.
Title: Re: mesure de courant et tension
Post by: Pascal17740 on Nov 12, 2017, 08:15 pm
je veux bien comprendre ta variation de vcc/2

mais cela n explique pas pourquoi j obtient 13.5 ampere a vcc et non 5 amperes.....
Title: Re: mesure de courant et tension
Post by: J-M-L on Nov 12, 2017, 08:36 pm
Je n'ai pas regardé mais en faisant confiance à 68tjs --> La formule qui donne l'intensité pour un x05B  (Imax = 5A  sensibilité = 185 mV par ampère)

Vs = 2,5 + 0,185 * I   (I en ampères)

soit

I = (Vs - 2,5) / 0,185

MAIS comme votre capteur est calibré pour ne pas mesurer plus de 5A, ça veut donc dire que Vs ne sera jamais égal à 5V mais au mieux il sera à environ 3.425V ce qui donne bien les 5A souhaités -> analogRead() sera environ à 700.

votre "simulation" sort des conditions normales de fonctionnement du capteur et donc la formule est hors intervalle de validité


Title: Re: mesure de courant et tension
Post by: 68tjs on Nov 12, 2017, 09:29 pm
Tiens une bonne remarque et j'ajoute  c'est quelle version de capteur exactement ?

Parce qu'avec les renseignements donnés au compte goutte je n'arrive plus à m'y retrouver.
Dans le code j'ai aperçu une version 5A et dans le texte il me semble avoir lu une version 20 A

RAZ  --> Remise à Zéro pour ceux qui ne comprennent pas le français.
Si je reprends en tenant compte de la remarque judicieuse de J-M-L

Quote
La datasheet est prévue pour 3 versions du circuit
x05B    Imax = 5A  sensibilité = 185 mV par ampère
x20A   Imax = 20A sensibilité 100 mV par ampère
x30A   Imax = 30A sensibilité = 66 mV par ampère
Soit une excursion maximale par version avec un Vcc théorique égal à 5,00 V

Version         Vmax si sens positif     Vmin si sens négatif
x05B 2,5V + 0,185x5  = 3,425V   2,5V - 0,185 x 5 = 1,575V
x20A 2,5V + 0,100x 20 = 4,5V 2,5 V -0,100 x 20 = 0,5 V
x30A 2,5V + 0,066x 30 = 4,48 V               2,5V + 0,066x 30 = 0,52V


Conclusion : ta méthode de placer à 0 et à Vcc n'est pas bonne.
Franchement je n'avais compris ce que tu voulais faire, je pensais que tu voulais seulement vérifier les entrées de ta carte.
Si tu veux étalonner il faut utiliser une charge réelle, utiliser un multimètre en fonction ampèremètre et comparer les résultats.
Si tu veux simuler tu peux utiliser un potentiomètre branché entre  la masse et le Vcc et dont tu règles la tension de sortie avec un voltmètre.

Mais as-tu seulement un multimètre, je me pose la question.

Question qui j'espère obtiendra une réponse : le code c'est toi qui l'a pondu ou tu l'a récupéré ?

Title: Re: mesure de courant et tension
Post by: Pascal17740 on Nov 12, 2017, 09:32 pm
Je n'ai pas regardé mais en faisant confiance à 68tjs --> La formule qui donne l'intensité pour un x05B  (Imax = 5A  sensibilité = 185 mV par ampère)

Vs = 2,5 + 0,185 * I   (I en ampères)

soit

I = (Vs - 2,5) / 0,185

MAIS comme votre capteur est calibré pour ne pas mesurer plus de 5A, ça veut donc dire que Vs ne sera jamais égal à 5V mais au mieux il sera à environ 3.425V ce qui donne bien les 5A souhaités -> analogRead() sera environ à 700.

votre "simulation" sort des conditions normales de fonctionnement du capteur et donc la formule est hors intervalle de validité



pour respecter les ordre des priorite mathematique Vs = 2,5 +( 0,185 * I)   (I en ampères)
avec butee haute a vs = 3.425
cela deviens de suite plus comprehensif
Title: Re: mesure de courant et tension
Post by: J-M-L on Nov 12, 2017, 09:46 pm
pour respecter les ordre des priorite mathematique Vs = 2,5 +( 0,185 * I)   (I en ampères)
avec butee haute a vs = 3.425
cela deviens de suite plus comprehensif
que dire... la multiplication étant prioritaire en notation mathématiques sur l'addition, mon expression est entièrement correcte.... désolé...

il n'y a que vous qui ne comprenez pas depuis le début j'ai l'impression... ou alors on était dans un flou artistique :) moi aussi je pensais que vous ne vouliez que vérifier si les entrées analogiques de votre carte étaient en bon état... (cf mon post plus haut où je dis "votre code et votre arduino fonctionnent. pas de soucis")
Title: Re: mesure de courant et tension
Post by: Pascal17740 on Nov 12, 2017, 10:20 pm
Tiens une bonne remarque et j'ajoute  c'est quelle version de capteur exactement ?

Parce qu'avec les renseignements donnés au compte goutte je n'arrive plus à m'y retrouver.
Dans le code j'ai aperçu une version 5A et dans le texte il me semble avoir lu une version 20 A

RAZ  --> Remise à Zéro pour ceux qui ne comprennent pas le français.
Si je reprends en tenant compte de la remarque judicieuse de J-M-L
Soit une excursion maximale par version avec un Vcc théorique égal à 5,00 V

Version        Vmax si sens positif    Vmin si sens négatif
x05B2,5V + 0,185x5  = 3,425V  2,5V - 0,185 x 5 = 1,575V
x20A2,5V + 0,100x 20 = 4,5V2,5 V -0,100 x 20 = 0,5 V
x30A2,5V + 0,066x 30 = 4,48 V              2,5V + 0,066x 30 = 0,52V


Conclusion : ta méthode de placer à 0 et à Vcc n'est pas bonne.
Franchement je n'avais compris ce que tu voulais faire, je pensais que tu voulais seulement vérifier les entrées de ta carte.
Si tu veux étalonner il faut utiliser une charge réelle, utiliser un multimètre en fonction ampèremètre et comparer les résultats.
Si tu veux simuler tu peux utiliser un potentiomètre branché entre  la masse et le Vcc et dont tu règles la tension de sortie avec un voltmètre.

Mais as-tu seulement un multimètre, je me pose la question.

Question qui j'espère obtiendra une réponse : le code c'est toi qui l'a pondu ou tu l'a récupéré ?


desole ne sachant pas que l on atteind jamais les 5 volts en sorti je me suis focaliser sur cette valeur et non la butee de 3.425 v pour le capteur 5 amperes
j ai preciser que je voulais comprendre la formule mathematique et que le capteur n'etait pas brancher sur la uno et c est maintenant que l on me dit que la tension maximun de sortie du capteur est de 3.425 v pour 5 A.
Oui j ai bien parler de capteur 5 et 20 amperes mais cela etait avant de faire des test simple sur Uno avec la formule pour le acs712 5 A avant de poursuivre avec celui de 20 A et lorsque tout aurait ete concluant et l inclure dans mon prjet de domotique . Pour une fois que je fais des tests les plus simplicime possible pour verifier une partie de code sans aucune autre interraction  jai bien utiliser un potar de 10 meghom pour faie varier la valeur d entree sur ma pin analogique et aussi un multimtre pour en controler la tension.
Title: Re: mesure de courant et tension
Post by: J-M-L on Nov 12, 2017, 11:07 pm
bon - l'important c'est que tout est compris maintenant :)

bonne soirée
Title: Re: mesure de courant et tension
Post by: 68tjs on Nov 13, 2017, 08:37 am
Et continue d'être aussi clair que cette fois et on pourra avancer plus vite.
Je répète ma question : est-ce toi qui a pondu le code avec le moyenage  ou l'as tu trouvé sur internet ?
Title: Re: mesure de courant et tension
Post by: aligote on Nov 13, 2017, 08:47 am
............... Pour une fois que je fais des tests les plus simplicime possible pour verifier une partie de code sans aucune autre interraction  jai bien utiliser un potar de 10 meghom pour faie varier la valeur d entree sur ma pin analogique et aussi un multimtre pour en controler la tension.
Je trouve cette valeur bien trop élevée ...

Serge .D
Title: Re: mesure de courant et tension
Post by: 68tjs on Nov 13, 2017, 09:22 am
Exact, cela m'avais échappé.
La datasheet du microcontroleur indique que la source analogique à mesurer ne doit pas avoir une impédance interne supérieure à 1 megohm.

Avec un potar 10 megohms et le curseur au point milieu on obtient une impédance de sortie de 5 megohms.
Title: Re: mesure de courant et tension
Post by: ChPr on Nov 13, 2017, 09:31 am
...
Avec un potar 10 megohms et le curseur au point milieu on obtient une impédance de sortie de 5 megohms.
Ah bon ! Moi j'aurais dit 2.5 MOhm ...

Cordialement.

Pierre
Title: Re: mesure de courant et tension
Post by: aligote on Nov 13, 2017, 10:00 am
Quote
Avec un potar 10 megohms et le curseur au point milieu on obtient une impédance de sortie de 5 megohms.
Ah bon ! Moi j'aurais dit 2.5 MOhm ...

Cordialement.

Pierre
Je dirais :
- Sans voltmètre 5 MOhm
- Avec voltmètre, moins que cela, tout dépends de l'impédance du voltmètre....

Serge .D
Title: Re: mesure de courant et tension
Post by: ChPr on Nov 13, 2017, 10:13 am
Je dirais :
- Sans voltmètre 5 MOhm

On a donc deux résistances de 5 MOhm en parallèle, ce qui nous fait ... 2.5 MOhm

Cordialement.

Pierre
Title: Re: mesure de courant et tension
Post by: aligote on Nov 13, 2017, 12:45 pm
  • potentiomètre = 10 MOhm,
  • curseur au milieur -> deux résistances de 5 MOhm
  • l'une allant au +5V et l'autre au GND
  • l'impédance de la source est quasiment nulle devant ces valeurs

On a donc deux résistances de 5 MOhm en parallèle, ce qui nous fait ... 2.5 MOhm

Cordialement.

Pierre
Tout à fait exact ! lecture approximative et trop rapide de ma part. Gloup ! et ReGloup !
D'autant que pour les autres positions du potentiomètre c'est moins.
...... mais c'est quand même trop.

Serge .D

Punition : Recopier 100 fois le théorème de Thévenin
Title: Re: mesure de courant et tension
Post by: 68tjs on Nov 13, 2017, 02:15 pm
J'ajoute ma dose personnelle de "gloups".
Voilà ce que c'est de répondre trop vite.

Pour ne pas avoir totalement tort (quelle mauvaise foi ! ) la limite étant de 1 Mohms il serait préférable de ne pas dépasser 470 k.
Et 47k (ou 51k) feront parfaitement l'affaire.

Un peu d'explication :
L'ADC fonctionne selon le principe de charge de capacités. Si la résistance de source est trop élevée les différentes capacités internes de l'ADC du micro n'auront pas le temps de se charger et le résultat sera faux.
Title: Re: mesure de courant et tension
Post by: aligote on Nov 13, 2017, 03:43 pm
J'ajoute ma dose personnelle de "gloups".
Voilà ce que c'est de répondre trop vite.

Pour ne pas avoir totalement tort (quelle mauvaise foi ! ) la limite étant de 1 Mohms il serait préférable de ne pas dépasser 470 k.
Et 47k (ou 51k) feront parfaitement l'affaire.

Un peu d'explication :
L'ADC fonctionne selon le principe de charge de capacités. Si la résistance de source est trop élevée les différentes capacités internes de l'ADC du micro n'auront pas le temps de se charger et le résultat sera faux.

Participation au message d'un frère Gloupeur :

Pour ma part j'évite les valeurs d'impédances de sortie élevées, car en plus de l'erreur systématique de mesure, à haute impédance le signal risque d'être davantage pollué par des parasites électriques qui rendent les résultats fluctuants.

serge .D
Title: Re: mesure de courant et tension
Post by: Pascal17740 on Nov 13, 2017, 06:10 pm
Bonjour n etant pas informaticien de nature j ai trouver la formule de base sur de la doc ecrite par le pere de l arduino ou un de ses peres , dont je ne rappel plus le Nom au moments ou je saisie c'est quelques lignes .Pour le potensiometre alias potart , j ai fait une boulette  :smiley-confuse: il s'agissait d un  100k
entre vcc et gnd .
Merci a tous pour votre participation.