Capteurs de température, je suis maudit...

Bonjour,

Suite à mes mésaventures (résolues) avec le DS1631, j'ai décidé de monter en parallèle de ce dernier un capteur analogique, le MCP9700, afin de comparer les deux mesures.

http://ww1.microchip.com/downloads/en/DeviceDoc/21942e.pdf

Le MCP9700 est branché sur l'entrée analogique 0 de l'arduino, VCC et GND, suivant la datasheet ci-dessus.

Voilà le code :

  // MCP9700
  float analogique=0.0;
  analogique = ((float)analogRead(0) * 5.0 / 1024.0);
  analogique=analogique/0.01;
  Serial.print("Analogique : "); Serial.print(analogique); Serial.println("");
  • Si je ne me trompe pas (encore...), la résolution du convertisseur A/N est de 10 bits pour 5V, donc 1024 pas, d'où la ligne 2 du code
  • Le MCP a une résolution de 10mv/°C, d'où la ligne 3

Et là, j'obtiens des valeurs complètement aberrantes, très fluctuantes, oscillant entre 30 et 300. J'ai rajouté une capa de 100nF entre la sortie du capteur et le GND, même chose. J'ai essayé une autre entrée analogique, même chose.

Quelle bêtise le débutant que je suis a t-il encore fait ?

Merci d'avance

bonjour les deux gnd (arduino et MCP9700) sont-elles reliées ensemble (il le faut) ? A+

Déjà on peut limité les lignes :

float analogique=((float)analogRead(0) * 50.0 / 1024.0);

Après oui sans hardware ça sera dur de t'aider ;)

Désolé, j'aurais du effectivement préciser le câblage. Oui, les GND sont bien reliés, puisque je me sers du +5 et du GND de l'arduino pour alimenter ma breadboard. J'ai donc bien le +5 sur la broche 1, le GND sur la 3, et la 2 en sortie vers l'entrée analogique (boitier TO92) L'arduino est lui alimenté par le port USB du PC.

As tu mesuré avec un voltmètre la tension que sort le capteur ? C'est la première des choses à faire que de vérifier qu'elle est correcte.. Si tu n'as pas de multimètre tu cours en acheter un : autour de 10 € en magasin de bricolage. Sans multimètre tu sera toujours bloqué par ce genre interrogations auxquelles tu ne pourra pas répondre.

Si la sortie du capteur est correcte - il faut vérifier qu'en entrée du micro il y a bien la même tension qu'à la sortie du capteur : cela parait évident mais il faut toujours vérifier les évidences car parfois la bêtise est tellement énorme qu'on ne l'a voit pas. Et qu'on soit débutant ou chevronné c'est pareil. - il faut arranger les câbles proprement, évite les grandes boucles qui se transforment en antennes de réception qui captent tout ce qui passe à leur portée. Il est toujours préférable de plaquer les fils. Torsade le fil de mesure avec le fil de masse, ça évite les boucles. N'oublie pas que tu traque le mV et qu'un millivolt c'est tout petit. Il ne faut absolument pas que le fil reliant la masse du capteur à celle de l'arduino serve à un quelconque autre circuit. Quelle est la longueur des câbles de liaison avec le capteur ? Ces circuits n'aiment pas avoir une liaison trop capacitive, c'est expliqué dans la datasheet du LM35 (circuit équivalent de chez National). National préconise une résistance série de 2k ohms, personnellement j'ai essayé 1k, 2k, 4,7k et 10k : pour moi avec 50m de câble et un LM35 l'optimum est à 4,7 kohms mais c'est correct à partir de 2 kohms.

Vérifie que la carte est correcte en mesurant le 3,3V disponible. Si tu ne te sert pas de l'I2C, utilise de préférence les entrées A4 ou A5 . Comme elle sont prévues pour l'I2C elles sont mieux isolées que les autres -> c'est une info que j'ai trouvé dans la datasheet Atmel. Ne retient jamais la première mesure mais au minimum la deuxième. Il faut savoir qu'il n'y a qu'un seul convertisseur pour 6 entrées. Les entrées sont donc multiplexées et le multiplexeur demande du temps pour se stabiliser , Atmel recommande de rejeter la première mesure perso je ne retiens que la 5éme mesure -> c'est encore une info que j'ai trouvé dans la datasheet.

Si tout est correct et que tu ne compte pas utiliser le capteur à une température supérieure à 100 °C tu peut passer sur la référence interne de 1,1 V avec un ordre AnalogReference (INTERNAL) -> je cite de tête, la syntaxe est à vérifier sur le site arduino. Cela permettra d'améliorer la précision.

bon courage.