Lecture de valeur ohmique.

Emile

Senior Member
Bonjour à tous,

je suis en train d'utiliser la fonction readadc10 et calibadc.

je dois mesurer une résistance par calcul.

J'ai un pont diviseur avec au dessus une résistance de 220 ohms (celle que je dois mesurer dont je ne suis pas censé connaitre la valeur) et en dessous une résistance de 10 Kohms dont je connais la valeur.

Je relie le point milieu sur mon entrée ADC 0 et j'utilise la fonction readc10 0, W1 avec un debug W1 pour connaitre la valeur (comprise entre 0 et 1023).

Cela fonctionne , pas de soucis ,j'obtiens en fonction de la polarité du pont diviseur soit la valeur 20 soit la valeur 999; mais une fois sur 2 par calcul j'obtiens des valeurs délirantes pour ma fameuse résistance inconnue 237 ohms à 450 ohms ! (237 ca me va mais 450 ...)
et calibadc me sort des valeurs allant de 100 à 150 , alors que mon alimentation est censée être stabilisée (4,7 V - 2 A ).

A l'echelle d'une résistance de 20 Mohms ceci est dérisoire mais là je veux faire allumer des leds en fonction d'une variation de résistance et mes comparaisons se font sur +/- 5 ohms ... une erreur de 200 ohms rend donc tout mon programme inutile et autant faire une mesure à l'ohmetre !

Qu'en pensez vous ? Comment affiner ce montage pour obtenir une meilleure résolution ?

Merci

Emile
 
Last edited:

Chavaquiah

Senior Member
Pourquoi utiliser calibadc? Avec un pont diviseur, la référence devrait être Vdd (même si vous utilisez une alimentation stabilisée).

Quelques petites choses à vérifier avec readadc:

Tout d'abord, si vous utilisez un X2 Picaxe, adcsetup doit être utilisé en premier.

Aussi, quand on utilise debug, on ne dois pas utiliser le câble série normal mais la connexion USB (ou laisser une pause entre debug et la lecture de tension).

N'oubliez pas également d'utiliser un condensateur entre les connexions Vdd et Vss du Picaxe.

Bien entendu, les tolérances des résistances auront une incidence sur les résultats. Avec des pièces de 5%, une résistance de 220 Ohm nominales pourrait donner un résultat compris entre 185 et 244 Ohm.
 

Emile

Senior Member
J'ai refait des essais.

Au lieu d'utiliser une résistance de 10 K , j'utilise une résistance de 220 ohms et une autre (celle à deviner ...) de 47 ohms.

J'obtiens des valeurs beaucoup plus précises.

calibadc10 me permet de connaitre précisément par calcul la tension Vcc de mon montage .

Vcc = 1023 X 6 / 126 / 10 = 4,8714 Volts.
où 126 est la valeur que debug me met dans W1 suite à la commande calibadc10.

Je connais donc 220 ohms (R 1) et je cherche R 2. (ici 47 ohms mais chuut...:) )

Alors :

Après utilisation de la commande readadc10 et après mise de l'entrée ADC 0 sur le point milieu du pont diviseur :

J'obtiens par debug la valeur de 840 correspondant à la tension aux bornes de R1.

1023 = 4,8714 Volts
donc
4,8714 Volts / 1023 = 0,004761904762
donc 840 X 0,004761904762 = 4 Volts. (tension aux bornes de R1).

Tension aux bornes de R2 : 4,8714 Volts - 4 Volts = 0,8714 volts.

I R1 = U R1 / R1 = 4 / 220
I R1 = 4 / 220
I R1 = 0,01818 A

Donc dans un circuit série l'intensité est la même partout donc I R1 = I géneral.

Donc :

R 2 = U 2 / I général
R 2 = 0,8714 / 0,01818
R2 = 47, 927 Ohms.

Et donc ... on a bien ce que l'on cherchait :)

Vive la france , vive picaxe !

Emile
 
Last edited:

Chavaquiah

Senior Member
:cool:

c = valeur de la commande calibadc10
a = tension aux bornes de R1
R1 = 220 Ohm


V = 1023 * 6 / c / 10

#V = 4,8714


V1 = a * V / 1023
V1 = a * 1023 * 6 / c / 10

#V1 = 4


V2 = V - V1
V2 = (1023 * 6 / c / 10) - (a * 1023 * 6 / c / 10 / 1023)

#V2 = 0,8714


I = V1 / R1
I = a * 1023 * 6 / c / 10 / 1023 / R1

#I = I1 = I2 = 0,01818

R2 = V2 / I
R2 = (1023 * 6 / c / 10 - a * 1023 * 6 / c / 10 / 1023) / (a * 1023 * 6 / c / 10 / 1023 / R1)
R2 = (1023 * 6 / c / 10 - a * 1023 * 6 / c / 10 / 1023) / (a * 1023 * 6 / c / 10 / 1023 / R1)
R2 = (1023 * 6 / c / 10 - a * 6 / c / 10 ) / (a * 6 / c / 10 / R1)


R2 = (1023 - a) / (a / R1)

R2 = (1023 - a) * 220 / a



a = 840
R1 = 220
=>
R2 = (1023 - 840) * 220 / 840
R2 = 47,92857143


Et bien, encore une fois: Pourquoi utiliser calibadc? :p
 

Emile

Senior Member
J'ai essayé de mettre tout ce calcul dans le PICAXE mais cela ne marche pas :(
J'ai l'impression que je n'arrive pas à faire lire les valeurs avec des virgules.

Voici mon code.





SYMBOL VALEURCALIB = W5
SYMBOL TENSIONR1 = W6
SYMBOL TENSIONR2 = W7
SYMBOL INTENSITER1 = W8
SYMBOL VALEURREADADC = W9
SYMBOL VALEUREVCC = W10
SYMBOL VALEURER2 = W11


comparateur:

calibadc10 VALEURCALIB ‘ lire la valeur de calcul Vcc dans W5
readadc10 0 ,VALEURREADADC ‘ lire la valeur du point milieu dans W9
VALEUREVCC = 1023 * 6 / VALEURCALIB / 10 ‘ Connaître la valeur de Vcc

TENSIONR1 = VALEURREADADC * VALEUREVCC / 1023 ‘ Connaître la tension aux bornes de R1
TENSIONR2 = VALEUREVCC - TENSIONR1 ‘ Connaître la tension aux bornes de R2

INTENSITER1 = TENSIONR1 / 220 ‘ Connaître intensité dans le circuit

VALEURER2 = TENSIONR2 / INTENSITER1 ‘ Connaître la valeur ohmique de R2
debug w12

If VALEURER2 < 15 then prog1
If VALEURER2 < 100 then prog2
If VALEURER2 < 500 then prog3
If VALEURER2 < 1500 then prog4

goto comparateur






prog1: high 1
pause 100
low 1
goto comparateur

prog2: high 2
pause 100
low 2
goto comparateur

prog3: high 3
pause 100
low 3
goto comparateur

prog4: high 4
pause 100
low 4
goto comparateur



Emile
 

Chavaquiah

Senior Member
J'ai l'impression que je n'arrive pas à faire lire les valeurs avec des virgules.
En effet! Les Picaxes travaillent avec des valeurs entières seulement.

Essayez avec:

ValeurR2 = 1023 - ValeurADC * 44 / ValeurADC * 5

Et oubliez toutes les autres variables! :rolleyes:
 
Last edited:
Top