Offline
Full Member
Karma: 0
Posts: 104
|
 |
« on: November 17, 2012, 01:56:08 pm » |
Bonjour, après une journée de recherche je me permet de poster mon problème,
Dans le cadre de l'utilisation d'un accéléromètre j'ai besoin de connaitre le voltage rendu vers mon entrée analogique, La valeur prise en compte est normalement de 0 a 1023 correspondent a 0 et 5 volte, donc en théorie si je divise 5 par 1023 sa devrais me donner 0.005 volte par unités, Le problème c'est que le résultat ne correspond pas a la réaliser car je devrais normalement enregistrée 1.65v et j'obtiens 1.95v, Mon voltmètre lui me renvois bien 1.65v,
Existe t-ils un moyen de convertir la valeur analogique de l'Arduino en voltage et ce sans montage externe ?
|
|
|
|
« Last Edit: November 17, 2012, 01:57:43 pm by lacolombenoir »
|
Logged
|
|
|
|
|
Ile-de-France (92 sud), France
Offline
Edison Member
Karma: 22
Posts: 1817
|
 |
« Reply #1 on: November 17, 2012, 02:10:20 pm » |
L'entrée analogique mesure 0..1023 entre 0V et VCC Mesure ton VCC, il ne doit pas être à 5V mais plutot à 4.23V
|
|
|
|
|
Logged
|
Barbuduino: Arduino sur Breadboard & VinciDuino: Clone Leonardo // WR703: Mini-routeur hacké // LauchPad MSP430 et Stellaris // Panda II Arduino-like .NetMF sous VisualC# RTFC: Read That F.....g Code / RTFD: Read That F.....g Doc / RTFDS: Read That F.....g DataSheet / RTFS: Read That F.....g Schematic / Wot da ya wanna D.I.Y. today ?
|
|
|
|
France S-O ou exil en IDF
Offline
Edison Member
Karma: 12
Posts: 1078
|
 |
« Reply #2 on: November 17, 2012, 02:16:41 pm » |
Ce n'est pas normal les entrées analogiques donnent des résultats justes pour autant qu'elles sont utilisées correctement, à 99,99% il y a des erreurs quelque part.
Ce qui arrive fréquemment c'est que le même fil sert simmultanément à faire passer beaucoup de courant et de référence pour la mesure de tension avec les entrées analogiques et si le fil est fin sa résistance ne sera pas négligeable. Si tu es dans ce cas commence par remplacer le fil du 0V par un gros fil comme ceux utilisé pour le 220V et regarde si la différence est restée la même ou si elle à diminuée.
Sinon pour pouvoir répondre : - Schéma de câblage complet avec tout ce qui est connecté. - Référence de tout ce qui est connecté avec des liens vers les datasheets. - Si possible photo de la réalisation. et - code.
|
|
|
|
|
Logged
|
Aides toi et la communauté t'aidera
|
|
|
|
Offline
Edison Member
Karma: 6
Posts: 2440
|
 |
« Reply #3 on: November 17, 2012, 02:44:12 pm » |
Bonjour, après une journée de recherche je me permet de poster mon problème,
Dans le cadre de l'utilisation d'un accéléromètre j'ai besoin de connaitre le voltage rendu vers mon entrée analogique, La valeur prise en compte est normalement de 0 a 1023 correspondent a 0 et 5 volte, donc en théorie si je divise 5 par 1023 sa devrais me donner 0.005 volte par unités, Le problème c'est que le résultat ne correspond pas a la réaliser car je devrais normalement enregistrée 1.65v et j'obtiens 1.95v, Mon voltmètre lui me renvois bien 1.65v,
Existe t-ils un moyen de convertir la valeur analogique de l'Arduino en voltage et ce sans montage externe ?
Bonsoir meme avis que barbudor par defaut AREF=VCC et il est simple de voir que pour une meme tension stabilisée sur une entrée ana de l'arduino, la valeur rendue est differente selon si l'arduino est alimenté par l'usb ou par son connecteur . pour un peu plus de "rigueur" il faut passer par une vraie ref de tension et l'indiquer dans le "programme"
|
|
|
|
|
Logged
|
|
|
|
|
France S-O ou exil en IDF
Offline
Edison Member
Karma: 12
Posts: 1078
|
 |
« Reply #4 on: November 17, 2012, 03:04:16 pm » |
Euh il dit mesurer 1,95V par l'arduino alors que le voltmètre lui donne 1,65V
Si c'est un problème de tension d'alim elle ne ferait pas 4,23V mais plutôt 5,9 V soit presque 20% de plus puisque le résultat de la mesure "serait plus grand" que la réalité et non l'inverse.
C'est pourquoi j'ai incriminé une chute de tension parasite dans les câbles de mesure.
Cela dit je partage entièrement l'avis que pour faire des mesures dignes de ce nom il faut utiliser une vraie référence de tension externe.
|
|
|
|
|
Logged
|
Aides toi et la communauté t'aidera
|
|
|
|
Offline
Full Member
Karma: 0
Posts: 104
|
 |
« Reply #5 on: November 17, 2012, 03:12:20 pm » |
En effet j'ai vérifier et la tentions n'est pas exactement de 5 volte mais 4.23, la puce souder sur la carte est une MMA7361 dont voici le datasheet http://cdn.shopify.com/s/files/1/0038/9582/files/MMA7361L.pdf?1282525052, mais bon je suis sure que la tentions renvoyer est bonne vu que le voltmètre indique les bonne valeur selon la datasheet, voici le lien pour la photo  PS: Apparemment l'erreur venais du faite que je prenais 5 pour le voltage, merci de m'avoir fais remarquer cette erreur, si vous avez des suggestions ou amélioration n'hésiter pas a les posters. Et pour les intéresser voici le code source il est loin d'être terminer il n'est qu'à l'état de teste. int x; int y; int z; double vx;
int someil = 2; int gselect = 3;
void setup() { Serial.begin(9600); pinMode(someil,OUTPUT); // initiation du pin de someil pinMode(gselect,OUTPUT); // initiation du pin de sensibilité digitalWrite(someil,HIGH); // mise en action du dispositif digitalWrite(gselect,LOW);// high detection directionel low bidirectionel }
void loop() { x = analogRead(A3); y = analogRead(A4); z = analogRead(A5); vx =x*(4.23/1023); Serial.print("x = "); Serial.print(vx); Serial.print(" , "); Serial.print("y = "); Serial.print(y); Serial.print(" , "); Serial.print("z = "); Serial.print(z); Serial.println("."); delay(100); }
|
|
|
|
« Last Edit: November 17, 2012, 03:25:08 pm by lacolombenoir »
|
Logged
|
|
|
|
|
Offline
Edison Member
Karma: 6
Posts: 2440
|
 |
« Reply #6 on: November 17, 2012, 03:42:01 pm » |
... PS: apparemment l'erreur venais du faite que je prenais 5 pour le voltage, merci de m'avoir fais remarquer cette erreur, si vous avez des suggestions ou amélioration n'hésiter pas a les posters.
...
tu cumule beaucoup de dispersion sur ta chaine d'acquisition Ton accelero est alimenté en 3.3V (VDD typ) il y a un centrage sur Zero G à 1.65 V = ~ 1/2 de VDD l'excursion theorique possible des G (Neg/Pos) est comprise entre 0/3.3V en utilisant la ref "defaut" de l'arduino et en supposant (ce qui n'est déjà pas le cas  ) un 5V "aux petits oignons, tu perd la portion 5V-3.3V = delta 1.7 soit pour un pas ~ à 0,0049 V ~347 points de perdus = quasi 30% de perte pour la résolution de mesure. suggestion(s) : déjà passer AREF en EXTERNAL à 3.3V , ça ne pourra pas etre pire  alimenter si possible l'accelero par le meme 3.3V que l'AREF externe
|
|
|
|
« Last Edit: November 17, 2012, 03:52:38 pm by Artouste »
|
Logged
|
|
|
|
|
Offline
Full Member
Karma: 0
Posts: 104
|
 |
« Reply #7 on: November 17, 2012, 04:43:20 pm » |
Je vais paraitre un peu bête mais je n'ai pas trouver comment définir AREF en 3.3v.
|
|
|
|
|
Logged
|
|
|
|
|
Ile-de-France (92 sud), France
Offline
Edison Member
Karma: 22
Posts: 1817
|
 |
« Reply #8 on: November 17, 2012, 04:50:31 pm » |
Euh il dit mesurer 1,95V par l'arduino alors que le voltmètre lui donne 1,65V
Justement Sa vrai mesure c'est celle du voltmètre : 1.65V Les 1.95V c'est pas une mesure c'est le mauvais résultat de 390 * 5V / 1023 = 1.95 D'ou on déduit facilement que son VCC est en fait 1.65/1.95 * 5V = 4.23 Sur la photo on devine que la carte Arduino en question est une Nano d'origine eBayienne. Ca sent la diode de protection anti-retour sur l'alim, modèle de base à 0.7V de chute de tension au lieu d'une Schottky moins gourmande comme sur la Nano officielle (MBR0520, VF=0.36V)
|
|
|
|
|
Logged
|
Barbuduino: Arduino sur Breadboard & VinciDuino: Clone Leonardo // WR703: Mini-routeur hacké // LauchPad MSP430 et Stellaris // Panda II Arduino-like .NetMF sous VisualC# RTFC: Read That F.....g Code / RTFD: Read That F.....g Doc / RTFDS: Read That F.....g DataSheet / RTFS: Read That F.....g Schematic / Wot da ya wanna D.I.Y. today ?
|
|
|
|
|
|
Offline
Full Member
Karma: 0
Posts: 104
|
 |
« Reply #10 on: November 17, 2012, 06:14:12 pm » |
Sa fonctionne merci j'avais pas réaliser qu'il fallait mettre le pin aref sous la tentions voulue, Sinon oui c'est du made in ebay mais je vous rassure j'ai un Arduino uno, j'ai prix la v3 non officiel du mini (10€) pour le jour ou je tenterais d'utiliser les ondes radio , et en plus avec l'Arduino Due  qui venais tout juste de sortir j'ai préférée faire quelques économie pour le moment en vue de pouvoirs me l'acheter plus tard. sinon voici le code actuel plus précis dans les mesures int x; int y; int z; double vx; double vy; double vz;
int someil = 2; int gselect = 3;
void setup() { Serial.begin(9600); pinMode(someil,OUTPUT); // initiation du pin de someil pinMode(gselect,OUTPUT); // initiation du pin de sensibilité digitalWrite(someil,HIGH); // mise en action du dispositif digitalWrite(gselect,LOW);// high detection directionel low bidirectionel analogReference(EXTERNAL); }
void loop() { x = analogRead(A3); y = analogRead(A4); z = analogRead(A5); vx =x*(3.35/1023); vy =y*(3.35/1023); vz =z*(3.35/1023); Serial.print("x = "); Serial.print(vx); Serial.print(" , "); Serial.print("y = "); Serial.print(vy); Serial.print(" , "); Serial.print("z = "); Serial.print(vz); Serial.println("."); delay(100); }
|
|
|
|
|
Logged
|
|
|
|
|
Offline
Edison Member
Karma: 6
Posts: 2440
|
 |
« Reply #11 on: November 18, 2012, 06:01:54 am » |
Sa fonctionne merci j'avais pas réaliser qu'il fallait mettre le pin aref sous la tentions voulue,
ok tant mieux le 3.3V pris comme AREF est celui de l'arduino ou celui de la carte accelero ?
|
|
|
|
|
Logged
|
|
|
|
|
Offline
Full Member
Karma: 0
Posts: 104
|
 |
« Reply #12 on: November 18, 2012, 09:31:38 am » |
Vu que tout est relier a la carte (Arduino) en matière de courent ses celui de (l'arduino) qui est utiliser, mais je vais probablement prévoir un second usb pour l'accéléromètre et tenter d'en faire une sorti 3.3V et une fois que j'aurais fais sa je mettrais la sorti du second usb sur la broche AREF de la carte.
|
|
|
|
|
Logged
|
|
|
|
|
Offline
Edison Member
Karma: 6
Posts: 2440
|
 |
« Reply #13 on: November 19, 2012, 06:12:32 am » |
Vu que tout est relier a la carte (Arduino) en matière de courent ses celui de (l'arduino) qui est utiliser, mais je vais probablement prévoir un second usb pour l'accéléromètre et tenter d'en faire une sorti 3.3V et une fois que j'aurais fais sa je mettrais la sorti du second usb sur la broche AREF de la carte.
bonjour je suis désolé, mais meme en faisant un effort, je n'ai rien compris à tes explications/demonstrations
|
|
|
|
|
Logged
|
|
|
|
|
Offline
Full Member
Karma: 0
Posts: 104
|
 |
« Reply #14 on: November 19, 2012, 01:37:24 pm » |
Pour faire simple AREF est relier au 3.3V de l'Arduino, et finalement l'accéléromètre restera alimenter uniquement par l'Arduino.
PS: désolé si ce que je dit n'est pas très claire.
|
|
|
|
|
Logged
|
|
|
|
|
|