Go Down

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

68tjs

#15
Nov 08, 2017, 05:06 pm Last Edit: Nov 08, 2017, 05:13 pm by 68tjs
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

J-M-L

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
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

aligote

#17
Nov 08, 2017, 06:02 pm Last Edit: Nov 08, 2017, 06:04 pm by aligote
.............
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



Pascal17740

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....


J-M-L

#19
Nov 08, 2017, 08:05 pm Last Edit: Nov 08, 2017, 08:07 pm by J-M-L
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?
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

68tjs

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 ?

aligote

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

68tjs

#22
Nov 08, 2017, 08:59 pm Last Edit: Nov 08, 2017, 09:03 pm by 68tjs
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.

rjnc38

#23
Nov 08, 2017, 10:05 pm Last Edit: Nov 08, 2017, 10:10 pm by rjnc38
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é ...

Pascal17740

#24
Nov 09, 2017, 12:03 am Last Edit: Nov 09, 2017, 12:08 am by Pascal17740
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.

J-M-L

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

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

68tjs

#26
Nov 09, 2017, 09:28 am Last Edit: Nov 09, 2017, 09:37 am by 68tjs
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é.

Pascal17740

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.

68tjs

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.

Pascal17740

#29
Nov 10, 2017, 12:19 am Last Edit: Nov 10, 2017, 12:25 am by Pascal17740
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 .

Go Up