Étape 16 : Logiciel de réglage de la précision (partie 2)
Nous couper l’ampèremètre.
Le parage de voltmètre était facile - l’erreur a été causée seulement par la propagation des valeurs des résistances des diviseurs de tension.
Dans l’ampèremètre, les sources d’erreurs sont principalement :
- la propagation de la résistance de R1 (Voir l’image à l’étape 4). Sa valeur est de 1 Ohm, et la valeur exacte de l’appareil utilisé est difficile à mesurer avec précision
- le gain en tension de l’ampli op - causée principalement par les valeurs de résistances R2 et R3 répartis
- L’offset de l’ampli op Voffset. Comme mentionné précédemment LM358 n’est pas le meilleur choix pour ce projet (j’ai eu un de disponible et je l’ai utilisé. C’est pourquoi le PCB appuie également le package SO08 - pas souvent utilisé de nos jours). Dans la fiche technique de la puce peut être vu que le décalage peut être de 7 mV. Avec notre solution de transfert de tension courant, cela peut introduire une erreur courante constante de 7mA. Il peut arriver qu’aucun courant ne passe, mais l’ampère mètre montre 7mA et vice versa : un courant de 7 mA peut circuler et l’appareil peut afficher 0 mA.
Toutes ces erreurs doivent être nettoyés par le logiciel.
Comme première étape, il faut déterminer la valeur exacte de la résistance R1. Pour cela j’ai utilisé un générateur de courant constant.
J’ai appliqué 189,9 mA de courant d’entrée et j’ai mesuré 186,7 mV sur la résistance R1. Sa valeur est fixée à 0,98315 ohms. Ce numéro servira également comme coefficient de correction.
Il reste deux autre paramètre, qui doit être calculé / mesuré : le gain en tension réelle de l’ampli op et sa tension de décalage.
Afin de déterminer leur, nous devons faire deux mesures séparées à deux courants différents. Les mesures sont : nous fixons le courant par le générateur de courant et nous mesurer une fois avec le multimètre numérique standard et une fois avec « Arduino » base DMM. La tension sur la R1 est également mesurée au cours de cette procédure. Voici les résultats que j’ai eu :
Tension courante mesurée actuelle appliquée sur R1
(standard DMM) « Arduino » DMM (standard DMM)
[mA] [mA] [mV]
189,9 186,7 186
73,1 71.9 71,7
La tension de décalage opamp est ajoutée à la chute de tension sur la R1, et le potentiel qui en résulte est amplifié 10 (corrigé par le coefficient d’erreur) et enfin converti par l’ADC.
Ce processus peut être modélisé par l’équation suivante :
(VR1+ Voffset) * coeff_A_gain = Iame;
où :
VR1 - dépasse la tension de R1 ;
Décalage de la V - l’ampli op d’entrée offset de tension ;
coeff_A_gain - coefficient de gain d’erreur, dans ce cas a unité de Siemens [S] ;
j’aiame - mesurée par le DMM actuel "Arduino"
Selon cette équation et les données mesurées, remplaçant Vcompensépar "x" etcoeff_A_gain avec "y" un système de deux équations et deux inconnues variables peut être écrite :
(186,7 + x) * y = 186
(71,7 + x) * y = 71,9
186.7Y + xy = 186
71,7 y + xy = 71,9 ; extraction de la première de la deuxième équation
115y = 114.1
y = 0.992174 - l’erreur de gain causée par la propagation de valeur de résistance du gain en définissant des résistances R2, R3
X = 0,767 mV - l’offset d’entrée de l’ampli op (pas si mal...)
Le code final pour l’ampèremètre maintenant aurait les définitions suivantes :
float coeff_A_gain = 0.992174 ;
float coeff_A_res = 0.98315 ;
float opamp_offset = 0.000767 ;
Le calcul du courant peut être fait avec l’équation suivante :
disp_res = (((curr_value*supply)/1024 - 10 * opamp_offset) / coeff_A_gain) / coeff_A_res * 100 ;
(Voir l’étape 14 pour plus d’informations)