Thermomètre PCCette page ne seras jamais modifiée voyez la nouvelle version du documentDans cette page nous verrons la mise en place d'un enregistreur de température à l'aide d'un PC sous linux ( le serveur Noiseless dans mon cas ). Le schéma utiliséIl existe plusieurs moyens de mesurer la température sous linux. ( Utilisation de composants comme le DS1621, DS18S20, ... ) mais j'ai malgré tout choisi d'utiliser une simple thermistance NTC pour ne pas avoir à commander des composants que je n'avais pas.![]() Je n'avais pas besoin de visualiser une deuxième température, j'ai mis une résistance entre les broches 1 et 6: elle est obligatoire sinon le module "analog" de votre noyau ne vas pas reconnaître votre montage. Vous pouvez bien sur mettre une thermistance NTC. Attention à la valeur de la thermistance dans la gamme de température à visualiser. Votre de port jeux devrais pouvoir reconnaître des valeurs entre 1k ohm et 150k ohm même si celui de ma 'SoudBlaster AWE64 ISA/PNP' semble fonctionner jusqu'à 250k ohm ( mais attention au niveau de bruit sur le signal ). Installation du logicielC'est sans doute la partie la plus compliqué car vous n'avez peut peut être pas les caractéristiques de votre NTC. Il faut que votre port jeux soit calibré et configuré.Activation du port jeuxUn problème du circuit viens du fait qu'il faut une configuration correcte du noyau.Il faut tout d'abord que votre port jeux soit reconnu, pour cela veuillez consulter la documentation à propos de votre carte son. Quelques fois il faut charger le module "ns558", d'autre fois c'est avec la driver de la carte son. Par exemple si vous avez une carte avec un chipset CM8738 vous allez activer le joystick dans la configuration du noyau et chargez le module avec "modprobe cmpci joystick=1" Si votre port jeux est reconnu par la carte son vous devriez le noyau devrais produire un message du type gameport: NS558 PnP at pnp01:01.01 io 0x200 size 8 speed 547 kHzIl faut ensuite charger le module "analog", dans le noyau vous devriez voir quelque chose comme ceci input: Analog 2-axis 4-button joystick at pnp01:01.01/gameport0 [TSC timer, 98 MHz clock, 1896 ns res]
Enfin chargez le module "evdev" et contrôlez que c'est bien reconnu.
$ cat /proc/bus/input/devices
Dans mon cas j'accède au thermomètre via /dev/input/event0: aucun autre périphérique d'entrée n'est branché sur mon serveur. Mais si vous avez sur cette machine un clavier et une souris se seras probablement /dev/input/event2. Attention, même sans changer de carte son, si vous changez la frequance CPU vous perdez la calibration. Utilisation de temp.cÉvitez de me poser des questions trop techniques sur ce programme car je n'en suis pas l'auteur. Premièrement téléchargez le code original sur http://www.ainan.org/files/temp.c.Comme dit dans le code source il faut compiler avec la commande gcc temp.c -lm -O3 -Wall -W -ansi -o tempMais il faudras d'abord calibrer votre port jeux et votre NTC. Calibration du port jeuxCommencez par decomenter l'option#define CALIBRATE puis préparez deux résistances de valeurs différentes que vous
appellerez R_black et et R_red, mesurez leur valeurs à l'ohmmètre et modifiez la partie suivante du code source
/* these are the calibration resistors you use to measure the above values: */
Après avoir compilé le code vous allez mètre les resistances de calibration entre les broches du port jeux. Comme je n'avais pas besoin des deux mesures je n'est calibré que les broches 1 et 3 qui correspondent à l'axe X. Lancez le code
# ./temp /dev/input/event0
La valeur "x" correspond à la valeur de calibration du sens X, càd les broches 1 et 3. La valeur "y" correspond aux broches 1 et 6 mais je ne les ais pas utilisés car je n'en avait pas besoin.Ces valeurs de X ne veulent rien dire, je n'est pas repris mes resistances de calibration pour écrire cette documentation Bref notez les valeurs de X ( voir y ) avec chacune des vos resistances de calibration dans chacun des ports à calibrer Maintenant modifiez le code source avec les valeurs que vous avez mesurés avec chaque résistance
/* please measure and set these: */
Une fois votre port jeux calibré vous allez pouvoir lire la valeur d'une resistance sur R_a et sur R_b si vous avez calibré les broches de Y ( 1,6 ). Si vous pouvez lire les bonnes valeurs ( essayez avec plusieurs resistances classique ) vous allez pouvoir commencer la calibration de votre NTC. Vous pouvez aussi recommenter l'option #define CALIBRATE
Calibration de votre NTCPremièrement il vous faut connaître la valeur de votre NTC a 25.0°C. Comme je n'avais aucune documentation sur elle: j'ai approché une lampe électrique en collant la NTC à la sonde d'un autre thermomètre jusqu'à avoir 25°C, ensuite il faut mesurer la valeur à l'ohmmètre. J'ai mesuré 25.1kohm alors j'ai modifié la ligne suivante#define R_s 25100.0
Maintenant c'est un peu plus compliqué. Il faut calculer la valeur du facteur B pour votre NTC. Mettez votre NTC à deux températures si possible éloignés que nous appellerons T_a et T_b, les valeurs des resistances que vous allez mesurer serons R_a et R_b. Il faut que T_a soit la température basse et T_b soit la température élevé, sachant qu'il s'agit de températures en °K, donc il faut ajouter 273.15 à la valeur en °C ![]() Pour comprendre voici un exemple: T_a = 0°C ==> 273.15°K --> R_a = 77.5k T_b = 20°C ==> 293.15°K --> R_b = 30.5k ![]() Modifiez le code source comme dans l'exemple suivant /* fill in ntc thermistor specs here: */
Maintenant votre thermomètre PC est sensé fonctionner, vous allez pouvoir lancer le programme en tache de fond pour éventuellement utiliser les scripts pour faire des graphiques ou autres. Graphiques de températureJ'ai fait un script pour tracer des graphiques de température en fonction de ce que est mesuré.Il est composé en deux parties. "temperatured" qui doit être lancé en tache de fond, il devras probablement être modifié pour fonctionner chez vous. La script plotemp sert a créer le graphiques de température pour les mettre dans une page HTML qui devrais être accessible depuis votre serveur http. Problèmes connus
|