Aller au contenu


Photo
- - - - -

UTILISATION CAPTEUR TEMPERATURE TMP6

capteur temperature TMP6

6 réponses à ce sujet

#1 cerisier

cerisier

    Nouveau membre

  • Membres
  • 9 messages

Posté 01 février 2017 - 06:07

Je suis tout novice en robotique mais pas en informatique domaine ou j'ai débuté en 1970 oui, oui vous lisez bien c'était l'époque des cartes perforées.

Je souhaite m'initier  à la robotique et j'ai commencé avec le starter kit arduino

Or  dés le deuxième exercice j'ai  un problème d'utilisation du capteur de température TMP6.

J'ai fait fonctionner le schéma, très simple, malheureusement, lorsque j'affiche sur l'ordinateur les données captées toutes les 2 secondes , et bien que le  capteur soit  indiqué avec une précision +/- 2% , j'obtiens sur une durée de 2 minutes des variations aléatoires des données capteur de 41 à 80 soit des températures de 20° à 40°, alors que bien sûr la température de la pièce est restée stable,
J'ai essayé de mettre un condensateur entre le +5v et la masse, sans résultat.

J'ai aussi changé de capteur, sans résultat

Le montage comporte simplement une borne du TMP6 au +5V (dans le bon sens), une borne à la masse et la borne intermédiaire sur la broche analogique A0  en dehors des circuits relatifs aux LEDS

ci-après le code avec les informations contenues dans le livre arduino, code qui se poursuit par l'exploitation des données pour gérer des LEDs

const int capteur = A0;
 const int  tempRef = 20.0;
 
void setup() 
{
 Serial.begin(9600);
for (int noPin = 11; noPin < 14; noPin++)
  {
    pinMode (noPin, OUTPUT);
    digitalWrite (noPin, LOW);
  }
}

void loop() {
 int capteurVal = analogRead(capteur);
 Serial.print("valeur capteur   :");
 Serial.print(capteurVal);
 float voltage = (capteurVal/1024.0)*5.0;
 Serial.print("    volts   : ");
 Serial.print(voltage);
 Serial.print("   degres C  : ");
 float temperature = (voltage)*100;
 Serial.println(temperature);
 if (temperature < tempRef )

Voilà, si quelqu'un a déjà eu ce problème et pouvait m'aider à  comprendre ce qui se passe cela me rendrait service



#2 Path

Path

    Made By Humans

  • Modérateur
  • PipPipPipPipPip
  • 2 504 messages
  • Gender:Male
  • Location:Paris

Posté 01 février 2017 - 06:36

ça chauffe peut-être tout près du capteur.

 

Tu peux ajouter la fin du programme stp :)

 

Une petite photo du montage ? ça nous aidera.



#3 ashira

ashira

    Membre chevronné

  • Modérateur
  • PipPipPipPip
  • 1 333 messages
  • Gender:Male

Posté 01 février 2017 - 08:29

Salut!

Si tu affiches la valeur rapidement, toutes les 50ms par exemple, tu as une valeur bizarre de temps en temps où ça fait n'importe quoi tout le temps ?

Ps: tu peux ouvrir un sujet dédié pour parler de ton problème, en programmation ou electronique par exemple.

#4 cerisier

cerisier

    Nouveau membre

  • Membres
  • 9 messages

Posté 02 février 2017 - 12:55

merci pour vos réponses rapides

votre demande d'avoir tout le programme m'a amené à penser que les leds  étaient pour quelque chose dans l'anomalie observée

j'ai donc supprimé le code relatif à l'exploitation des températures : pas de changement

j'ai supprimé la tension sur les  leds : et là bingo ça marche les valeurs de capteur restent stables, varient correctement  si on prend le capteur dans les doigts et revient à la normale lorsqu'on les enlève

j'ai remis le code relatif à l'exploitation des températures : tout reste OK

donc ce sont les leds qui font la panique et je ne vois vraiment pas pourquoi, j'ai vérifié n fois le montage

je  vous joins  2 photos



 const int capteur = A0;
 const int  tempRef = 20.0;
 
void setup() 
{
 Serial.begin(9600);
for (int noPin = 11; noPin < 14; noPin++)
  {
    pinMode (noPin, OUTPUT);
    digitalWrite (noPin, LOW);
  }
}

void loop() {
 int capteurVal = analogRead(capteur);
       Serial.print("valeur capteur   :");
       Serial.print(capteurVal);
 float voltage = (capteurVal)/(1024.0 )*5.0;
       Serial.print("    volts   : ");
       Serial.print(voltage);
       Serial.print("   degres C  : ");
 float temperature = ((voltage )*100) -40;
       Serial.println(temperature);
 if (temperature < tempRef )
 {
    digitalWrite (11,LOW);
    digitalWrite (12,LOW);
    digitalWrite (13,LOW);
 }
 else if (temperature >= tempRef +2 && temperature < tempRef + 4)
 {
   digitalWrite (11,HIGH);
   digitalWrite (12,LOW);
   digitalWrite (13,LOW);
 }
 else if (temperature >= tempRef +4 && temperature < tempRef + 6)
 {
   digitalWrite (11,HIGH);
   digitalWrite (12,HIGH);
   digitalWrite (13,LOW);
 }
 else if (temperature >= tempRef +6)
 {
   digitalWrite (11,HIGH);
   digitalWrite (12,HIGH);
   digitalWrite (13,HIGH);
 }
 delay (100);
}



#5 levend

levend

    Pilier du forum

  • Membres
  • PipPipPipPipPip
  • 5 653 messages
  • Gender:Male
  • Location:Vendée
  • Interests:Robotique, informatique, architecture et patrimoine...

Posté 02 février 2017 - 05:24

J'ai déplacé le sujet dans la section Electronique, ça me semble plus adapté que la section Présentation :D


Imprimante 3D : Prusa i3 (MK1) + CR-10S + CR-10 S5 + Artillery Sidewinder X2 + CR-30 + Elegoo Mars + Anycubic Wash & cure 2 + Phrozen Sonic Mega 8K + Phrozen Cure Mega + Tronxy VEHO 600 PRO

https://www.linkedin...oré-61b18432b/


#6 cerisier

cerisier

    Nouveau membre

  • Membres
  • 9 messages

Posté 05 février 2017 - 10:38

j'ai enfin trouvé une solution :  j'ai connecté la masse des leds non pas à la ligne de  masse de la breadboard à laquelle est connecté le TMP6, mais au GND qui se trouve au dessus des pins 1 à 13 et dans ces conditions le fonctionnement devient normal



#7 ashira

ashira

    Membre chevronné

  • Modérateur
  • PipPipPipPip
  • 1 333 messages
  • Gender:Male

Posté 05 février 2017 - 11:34

Et la masse de la breadboard n'est pas connectée à celle de l'arduino?



Répondre à ce sujet



  


1 utilisateur(s) li(sen)t ce sujet

0 members, 1 guests, 0 anonymous users