Étape 8: Utilisation de sonde de température MCP9701
Problème : La tension de sortie maximale est de 3,0 volts et l’Arduino standard utilise l’alimentation 5 volts souvent de l’ordinateur/ordinateur portable USB. Cette tension peut varier causant les lectures de varier.
Solution : Pour améliorer la précision, j’ai décidé d’utiliser les 3.3Vdc de l’Arduino connectée à la broche AREF Arduino à travers une résistance de 3,3 K. Les 3.3Vdc source est beaucoup plus précis que le 5Vdc. Pour les techno-geeks, résistance interne est de 32K oui AREF = 3.3/(32K/(32K+3.3K) = 3,0 Vcc.
Pour utiliser la broche AREF, la ligne suivante a été ajoutée au code Arduino.
analogReference(EXTERNAL) ;
Conception de logiciels :
Voici le code essentiel :
Obtenir nsamps moyenne de la température lectures
pour (octet j = 0; j < nsamp; j ++)
{
ThermValue += analogRead(ThermPin) ;
}
ThermValueAvg = ThermValue/nsamp ;
mVout=(float) ThermValueAvg*3000.0/1023.0 ; 3, 0V = 3000mV
NC =(mVout-400.0)/19,5 ; TA = (Vout-400mV) / 19.5mV //Original
NC =(mVout-490.0)/19,5 ; TA = (Vout-400mV) / 19.5mV //Modified
TempF = NC * (9.0/5.0) + 32 ;
Explication de code : La ThermPin 2 analogique est échantillonné dix fois puis en moyenne. Le compteur analogique sans moyenne est converti en mVolts(mVout). Le mVout est converti en NC (Centigrade). Le premier calcul de NC est commenté. Il s’agit de la conversion proposée. Pour le MCP9701 que j’utilisais, j’ai trouvé que c’était au large d’environ 8 degrés, donc j’ai ajusté (tâtonnement) la formule à la seconde formule. Vous pouvez ajuster la valeur 490, si vous utilisez un MCP9701 et de trouver qu’il ne relève pas la bonne température. Puis la ligne suivante convertit NC TempF (Fahrenheit).