j'ai un besoin urgent de votre aide
Ma question est simple : comment mesurer une tension aux bornes d'une résistance avec une arduino ?
Pour le moment j'utilise un pont diviseur de tension avec cette formule : Tension = valeur * (5 / 1023) où "valeur" est ce qui est mesuré par la pin analogique A0. Le problème c'est que j'obtiens des tensions fausses !! (dans mon cas R1 = 10 kohm, R2 = 13 kohm, je suis sensé obtenir U2 = 2.82V et j'obtiens U2 = 1.92).
Je vous joins mon code.
Merci de votre aide infiniment précieuse
void setup() {
Serial.begin(9600);
}
void loop() {
int valeur = analogRead(A0); // Mesure la tension sur la broche A0
float tension = valeur * (5.0 / 1023.0); // Transforme la mesure (nombre entier) en tension via un produit en croix
Serial.println(tension);
delay(3000);
}
Hi everyone !!
I urgently need your help
My question is very simple: how to measure a voltage across a resistance with an arduino?
At the moment I am using a voltage divider bridge with this formula : voltage=value*(5/1023) where "value" is what is measured by the analog pin A0. The problem is that I get false voltages !! (In my case R1 = 10 kohm, R2 = 13 kohm, I'm supposed to get U2 = 2,82V and I get U2 = 1,92V).
Here is my code.
thank you very much for your help !!
void setup() {
Serial.begin(9600);
}
void loop() {
int valeur = analogRead(A0); // Mesure la tension sur la broche A0
float tension = valeur * (5.0 / 1023.0); // Transforme la mesure (nombre entier) en tension via un produit en croix
Serial.println(tension);
delay(3000);
}
Ce sujet a été traité 1000 fois... sur divers sites.
Par simple application de la loi d'ohm, le pont diviseur composé de R1 et R2 applique un coefficient multiplicateur égale à (r2/(r1+r2)) noté ici K
il suffit de de faire:
tension = valeur * (5.0 / 1023.0)/K ;
pour obtenir la valeur de tension correspondante.
Il faut aussi répondre à la question de 3Sigma pour bien adapter le pont diviseur pour ne pas dépasser la tension Max de 5V sur l'entrée analogique.
Tu es sur que R1 et R2 ne sont pas inversés? Ce qui donnerait une tension plus proche de ce que tu mesures.
Ceci dit tout à fait d'accord avec 3Sigma la première chose à faire est de mesurer la tension du pont (et tant qu'a faire mesurer la tension du point milieu).
Bonjour à tous et merci pour vos réponses !! je réponds tardivement car je ne recevais aucune notification, ce que je trouvais bizarre
J'ai mis pas mal de temps à trouver le problème, et effectivement ça venait des résistances ... C'est l’inconvénient de commander le matériel sur internet, ça coûte pas cher mais on est jamais sûr de ce qu'on reçoit !! J'aurai au moins appris qu'un multimètre est le minimum à avoir si on veut bricoler un peu
En tous cas vos réponses m'ont été très instructives, alors merci !!
Un pro te répondra sûrement quelque chose de plus rigoureux, mais 1023 est la valeur analogique max sur Arduino(si tu veux lire une tension allant de 0V à 5V, 0V afficherait 0 et 5V afficherait 1023).
Le convertisseur analogique digital des micros des cartes Uno, nano,mini-pro et Mega est un convertisseur 10 bits et 210 = 1024.
Note au passage que je n'ai pas utilisé le terme carte arduino car plusieurs microcontroleurs sont utilisés par Arduino avec des caractéristiques différentes.
Revenons à nos moutons :
Le convertisseur utilise une tension de référence : soit Vcc, soit une référence interne 1,1 V ± 0,1V ou une tension extérieure et divise cette tension en 1024 échantillons et renvoie le nombre d'échantillons contenus dans la tension à mesurer.
Ce qui fait en commençant à compter à partir de 0 une valeur min de 0 et une valeur max de 1023.
Si tu obtiens 1023 c'est que tu es en butée et donc en excès de tension. Il faut que tu atténue la tension a mesurer avant de l'appliquer sur une entrée "dite analogique" (mais qui est nativement numérique et qui ne devient analogique que pendant l'usage d'analogRead() ).
Précision de la mesure :
FONDAMENTAL : la précision ne pourra jamais être supérieure à celle de la tension de référence, pour info l'USB c'est 5V ± 5%. (4,75V ≤ Vusb ≤ 5,25V)
Compte tenu des divers défauts du microcontrôleur en général et du convertisseur en particulier tu n'aura jamais la précision d'un voltmètre numérique. Compte une précision entre ± 5 et ±10 échantillons prés.
La valeur d'un échantillon est Vréférence/1023
L'alimentation du microproceseur par le biais d'une batterie, si tant est que le port existe, apporte t elle une tension de travail plus stable ?
Tout dépend de l'accumulateur et de ce qui est branché dessus. Une alimentation "parfaite" sur laquelle tu connectes un ou plusieurs moteurs sera vite très bruitée.
Une carte arduino alimentée sur USB dépendra du PC sur laquelle est est raccordée.
Une carte arduino alimentée à partir de son régulateur interne ne dépendra que de ce régulateur dont il est possible de mesurer sa tension exacte.
Je retourne ta question : de quelle précision as tu réellement besoin ?
Savoir ce que l'on fait est une nécessité et c'était le sens de ma réponse, mais je n'ai jamais dit qu'il fallait toujours la précision maximum. Sous une tension de référence de 5V le pas de mesure est de 5mV, soit estimation maximum +/- 50 mV.
As tu besoin de mieux ?
Connaitre son besoin exact n'est pas chose facile et souvent les gens demandent le plus pensant être tranquille.
Désolé ce choix est souvent contre productif car porteur de contraintes inutiles et ce qu'on gagne d'un coté on le pertd de l'autre, quand on ne perd pas plus qu'on ne gagne.