Pi-Arduino


10 posts
by hichamrol » Thu May 18, 2017 5:48 pm
Bonjour, je suis nouveau ici et j'ai besoin de votre aide...
J'établie une connexion entre le Raspberry Pi et la carte Arduino Uno, ça marche bien, sauf que quand je lis les lignes de l'arduino a partir du Pi, je remarque un décalage. Je vous explique: comme le Pi n'a pas d'entrées analogiques, j'utilise ceux de l'arduino pour mesurer la tension de mon circuit, le multimètre me donne la valeur 2.5 par exemple alors que les valeurs lues au Pi sont aux environs de 2.7, ce décalage augmente de facon exponentielle en fonction de la tension d'entrée..sachant que quand je lie mon arduino à mon pc, mon arduino envoie des valeurs exactes.
Merci
Posts: 9
Joined: Mon May 15, 2017 4:39 pm
by totoharibo » Thu May 18, 2017 8:31 pm
tu peux préciser ta config et les logiciels que tu utilises ?
c'est quoi ton "circuit", alimenté comment, etc ?
Pour toi c'est évident pour moi non (et pour les autres aussi je pense)

Avec plus de précisions tu auras sans doute plus de réponses.
Posts: 3124
Joined: Thu Jan 24, 2013 8:43 am
by hichamrol » Thu May 18, 2017 9:13 pm
Tout simplement je suis entrain de tester un diviseur de tension !!
J'ai une tension maximum 20v et 2 résistance 10k et 30k , donc la sortie max sera 5v aux borne la resistance 10k, donc je mesure la tension aux borne de la résistance 10k , je donne le + pour le port analogique A0 et la masse pour GND de L'arduino ,
le problème c'est par exemple : la tension est bien mesuré et bien reçue dans mon arduino , mais quand j'ai fait le transfert de l'information à Raspberry , je vois dans ce dernier que la tension est augmentée de façon exponentielle , il dépend le la valeur du tension ,( Si la tension calculée est 1v ----> 1,12 // 2 ->>> 2.17 // 3- ---->> 3.20 // 4----> 4.24 ......
j’espère que j'ai bien expliqué la situation ..
Posts: 9
Joined: Mon May 15, 2017 4:39 pm
by danjperron » Thu May 18, 2017 10:44 pm
Les résistances ne sont pas exactes et la valeur de tension de référence ne l'est pas aussi.

La courbe n'est pas exponentielle mais bien linéaire.

il s'agit d'ajuster la fonction de conversion. Utilise la fonction sur le graphique excel.

ARDUINOA2D.png
Arduino tension lue
ARDUINOA2D.png (58.08 KiB) Viewed 286 times
Posts: 2621
Joined: Thu Dec 27, 2012 4:05 am
Location: Québec, Canada
by totoharibo » Fri May 19, 2017 7:05 am
+1 avec danjperron
mesures la valeur des résistances avec ton multimètre.
Les résistances sont à +/-5% et même 10%
Posts: 3124
Joined: Thu Jan 24, 2013 8:43 am
by fdufnews » Fri May 19, 2017 10:55 am
Ne pas oublier que, par défaut, la tension de référence de l'ADC dans une carte Arduino c'est la tension d'alimentation de la carte.
Si tu trouves un écart entre ce que tu mesures connecté à un PC et connecté à un PI c'est peut-être tout simplement parce que le PI ne délivre pas exactement 5V.

Tu as 2 solutions pour modifier cela:
1) utiliser la référence interne de l'ATmega comme tension de référence. Par contre elle est plus faible et donc il faudra changer tes diviseurs de tension
2) utiliser une référence externe de qualité.
Posts: 262
Joined: Fri Oct 07, 2011 5:37 pm
by hichamrol » Fri May 19, 2017 12:03 pm
Mr dan , j'ai fait votre astuce de conversion , mais j'ai bien remarqué que la courbe est exponentielle , par ce que la conversion m'a donné des bonnes valeurs autour de 7V et 13 V aprés quand j'ai augmenté la tension plus de 13V je remarque que les incertitudes augmente en fonction de la tension ...
Merci pour Votre aide anyway <3
Posts: 9
Joined: Mon May 15, 2017 4:39 pm
by hichamrol » Fri May 19, 2017 12:05 pm
Cher fdufnews ... est ce que vous pouvez bien m'expliquer les 2 astuces !! ?
Posts: 9
Joined: Mon May 15, 2017 4:39 pm
by danjperron » Fri May 19, 2017 1:16 pm
Mr dan , j'ai fait votre astuce de conversion , mais j'ai bien remarqué que la courbe est exponentielle


Alors donne nous le tableau complet des valeurs parceque les valeurs que tu nous as données sont linéaires et ils doivent l'être de toute façon.

Oui il est préférable d'utiliser la référence interne puisque le 5V de l'alimentation n'est pas stable et il est en plus bruyant.

Un diviseur de tension c'est R1/(R1+R2) alors ajuste la valeur de lecture maximal pour la valeur de référence interne qui est de 1.1 Volt. Une valeur maximum de 13V donnera une réduction de 1.1/13. Donc des valeurs de résistances proche semblent être 1k et 12k soit une réduction de 1/13

13V * 1K/(1K+12K) = 1V P.S. il faut toujours laisser une marge pour être certain de ne pas saturer la conversion.

Lors de la prise de lecture le système charge un condensateur interne . Il est possible que le condensateur pertube la lecture. Pour éviter ce problème il s'agit ajouter un simple condensateur en parallèle avec la résistance de 1K pour éviter que le chargement du condensateur interne diminue la tension.

Ne pas oublier que le convertisseur est 10 bits donc la résolution minimum sera de

1.1V * ( 12K+1K)/1K / 1024 = 13.9 mV

Évidemment il faudra ajuster le facteur de conversion puisqu'il est certain que tout n'est pas fondamentalement exact. Alors crée un tableau pour trouver la pente et l'interception. Excel te donnera la réponse avec l'axe X pour les valeurs numériques de l'arduino et l'axe Y pour les valeurs de tension exacte. Ajoute une courbe de tendances linéaire et affiche la formule. La formule sera ta fonction de conversion.
Posts: 2621
Joined: Thu Dec 27, 2012 4:05 am
Location: Québec, Canada
by hichamrol » Fri May 19, 2017 5:19 pm
Merci à vous!
J'ai mesuré le pin 5v de l'arduino, j'ai trouvé 4.68V, donc apparement comme vous l'avez dîtes le PI ne fournit pas 5V à l'aduino...
Alors, j'ai utilisé le port AREF comme réference externe, en reliant le port "5v" avec le AREF, en régulant mes calculs, j'ai pu mesurer la tension avec plus de précision.
Mercii
Posts: 9
Joined: Mon May 15, 2017 4:39 pm