IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Arduino Discussion :

Relevé de température perturbé par le déclenchement d'autres capteurs


Sujet :

Arduino

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Septembre 2010
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : retraité
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Septembre 2010
    Messages : 116
    Par défaut Relevé de température perturbé par le déclenchement d'autres capteurs
    Salut à tous,

    Je propose à votre sagacité le problème suivant :
    Le projet est de lier en Bluetooth et dans les 2 sens (1 PC et 1 Arduino UNO R3).
    Dans le sens PC --> Arduino:
    - Commander 3 relais (3 leds pour l'essai)
    Dans le sens Arduino --> PC:
    - Obtenir une température sur le moniteur série
    - Lire le retour d'un capteur PIR (envoi d'un signal HIGH)
    - Lire le retour d'un autre capteur (indéterminé pour l'instant) mais susceptible d'envoyer un signal LOW

    Le code fonctionne mais les relevés de température sont perturbés dès que les Leds sont allumées.
    Les relevés redeviennent corrects quelque temps après l'extinction des Leds.
    Le fait d'alimenter le LM35 par une source externe n'améliore pas.
    A part le problème de valeur de température, le système avec ou sans le XBee Bluetooth HC-06 est fonctionnel dans les 2 sens.

    Ci-joint le schéma Fritzing, le code et copie d'écran du moniteur.

    Je sèche.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
     
    char saisie;
    boolean capteur_1_state = 1; // cas capteur PULL_UP au repos
    boolean capteur_2_state = 0; // cas capteur PULL_DOWN au repos
    float tension = 5.0; // tension de service pour LM35 capteur temperature
    float temperature;
    void setup() {
     pinMode(10,OUTPUT); pinMode(11,OUTPUT);  pinMode(12,OUTPUT); // inter
     pinMode(7,INPUT_PULLUP); // cas capteur PULL_UP
     pinMode(5,INPUT);        // cas capteur PULL_DOWN
     Serial.begin(9600);
    //capteursState();
    }
     
    void loop() {
      float LM35value = analogRead(A0);
      temperature = (LM35value / 1023) * tension * 100;
      //temperature =  LM35value * tension / 1023.0 * 100.0;
      delay(10);
     
      if (digitalRead(7) != capteur_1_state  ) { // cas capteur PULL_UP
        capteur_1_state = digitalRead(7);
        capteursState();
        delay(10);
      }
       if (digitalRead(5) != capteur_2_state  ) { // cas capteur PULL_DOWN
        capteur_2_state = digitalRead(5);
        capteursState();
        delay(10);
      }  
     saisie=Serial.read();
     if (saisie == 'r')  capteursState(); // interrogation sans modif
      if (saisie == 'a' || saisie == 'b' || saisie == 'c') { 
          digitalWrite(int(saisie)-87,abs(digitalRead(int(saisie)-87)-1)); 
          // la ligne ci-dessus inverse l'etat du pin concerné.
          Serial.print(" Capteur en Pin "); Serial.print(int(saisie)-87); 
          Serial.print(" ( "); Serial.print(char(saisie));
          Serial.print(" ) "); Serial.print(" passe sur "); 
            if (digitalRead(int(saisie)-87)==1) Serial.println(" ON ");
            else Serial.println(" OFF ");
          delay(10);
          capteursState();
        }
      while(Serial.available()) Serial.read();// vide le buffer
      delay(500);
    }
     
    void relais(){
      /* le code ASCII de 'a' est 97, 'b' 98 et 'c' 99 donc
       * le code ASCII moins 87 donne le N° pin concerné.
       */
           digitalWrite(int(saisie)-87,HIGH); 
            delay(25); 
          digitalWrite(int(saisie)-87,LOW); 
            delay(25); }
    void capteursState(){
      Serial.println("  Etat des capteurs: ('r' pour relire)");
        Serial.print("    Interrupteur a := ");
        Serial.println((digitalRead(10)==1)?"ON":"OFF");
        Serial.print("    Interrupteur b := ");
        Serial.println((digitalRead(11)==1)?"ON":"OFF");
        Serial.print("    Interrupteur c := ");
        Serial.println((digitalRead(12)==1)?"ON":"OFF");
        Serial.print("    Capteur Digital d  := ");
        Serial.println(digitalRead(7));    
        Serial.print("    Capteur Digital e  := ");
        Serial.println(digitalRead(5)); 
        Serial.print(" temperature en degres := ");
        Serial.println(temperature);
     //       Serial.println(analogRead(A0)); // pour controle
            Serial.println();
      }
    Nom : Capture_2.JPG
Affichages : 1678
Taille : 46,7 Ko
    XBeeBluetooth_temp.zip
    Images attachées Images attachées  

  2. #2
    Responsable Arduino et Systèmes Embarqués


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    13 200
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 13 200
    Billets dans le blog
    47
    Par défaut
    Bonsoir,

    Je poste une copie d'écran de ton schéma Fritzing, pour ceux qui n'ont pas installé ce logiciel :

    Nom : CaptureXBeeBluetooth_temp01.PNG
Affichages : 1459
Taille : 107,0 Ko

    Et on remarque tout de suite... il manque les résistances de limitation de courant au niveau des LED !

  3. #3
    Membre confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Septembre 2010
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : retraité
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Septembre 2010
    Messages : 116
    Par défaut
    Salut à tous,

    Effectivement, la remarque est justifiée mais c’est juste un oubli sur le ‘Fritzing’ car en pratique, plutôt que d’encombrer plus que nécessaire par trop de fils, les petites ‘breadboard’ que j’utilise, j’ai quelques leds avec des R 220 soudées ensembles. Voir photos
    Par ailleurs, sur le ‘Fritzing’ ne figure pas non plus le module Bluetooth XBee HC-06 (photo).
    Cela ne change rien au fonctionnement ni au code sauf qu’il utilise un autre port.
    Les photos montrent le disfonctionnement température avec le moniteur série ‘Termite’.


    Nom : IMG_8290.jpg
Affichages : 1204
Taille : 1,38 Mo
    Nom : IMG_8291.jpg
Affichages : 1132
Taille : 310,9 Ko
    Nom : IMG_8294.jpg
Affichages : 1195
Taille : 1,12 Mo

  4. #4
    Responsable Arduino et Systèmes Embarqués


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    13 200
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 13 200
    Billets dans le blog
    47
    Par défaut
    Il y a peut-être une chute de tension au niveau du 5V (consommation du Xbee ?), à vérifier au multimètre aux bornes du LM35. La tension de référence 5V pour le CAN en est perturbée et en-dessous de 4V le LM35 ne fonctionne pas.

    Note que pour mesurer des températures ambiantes, tu auras une bien meilleure résolution en utilisant la tension de référence 1,1V intégrée (pleine échelle à 110 °C, car 110x10mv/°=1,1V) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    analogReference(INTERNAL); // Pour l'arduino Uno

  5. #5
    Membre confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Septembre 2010
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : retraité
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Septembre 2010
    Messages : 116
    Par défaut
    Salut à tous,
    Précisions supplémentaires :
    La carte Arduino est alimentée en 9v externe par une alim 2A régulée stabilisée.
    L’alim indique 31.5 mA. de consommation totale, leds éteintes.
    La tension sur la ‘breadboard’ est de 5.01v.
    La tension tombe à 4.93v si les 3 leds sont allumées.
    L’alim indique alors 61.3 mA de conso totale.
    Le déclenchement du PIR n’a pas d’effet important sur la conso +-20mA.
    Le PIR débranché n’a pas d’incidence significative sur les meures.
    Le LM35 est branché sur Vin de l’Arduino (9.00v) pour soulager son régulateur interne puisque le datasheet indique : « Operates From 4 V to 30 V. », le ‘moins’ est commun.
    Ce montage n’améliore pas les résultats de lecture de la température.
    Un essai avec à la place du LM35 le TMP 36CZ qui est fourni avec le kit de démarrage Arduino donne les mêmes aberrations.

  6. #6
    Modérateur

    Homme Profil pro
    Ingénieur électricien
    Inscrit en
    Septembre 2008
    Messages
    1 282
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur électricien

    Informations forums :
    Inscription : Septembre 2008
    Messages : 1 282
    Par défaut
    Bonjour

    Il y a quand-même des aberrations dans les mesures:
    - 0.08V de chute de tension sur le 5V avec juste 30mA de consommation supplémentaire ce n'est pas normal.
    - 30mA de consommation pour 3 Leds avec des résistances de 220ohm sous 5V c'est trop faible aussi. 10mA par résistance -> 2.2V auquel on ajoute 1.6V pour les Leds (Les valeurs typiques c'est Led rouge standard 1.6V, Led rouge haute brillance 2.0 à 2.2V, et Led verte 1.4V) au total moins de 4V c'est significativement trop faible. On devrait être à au moins 45mA pour les 3 leds.

    Pour moi le régulateur 5V de la carte Arduino est mourant, et en conséquence la référence de tension pour le convertisseur analogique digital n'étant pas stable, la mesure ne peut être que instable. Ou alors vu le montage c'est l'un des contacts utilisé pour relier le GND qui n'est pas bon, avec le courant des Leds une tension apparait entre la carte Arduino et la breadboard et en conséquence le référencement du LM n'est plus bon.

    Bonne suite

    Delias

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 5
    Dernier message: 17/04/2013, 18h44
  2. Ping sur routeur perturbé par un matériel connecté
    Par Pasokoniidesuka dans le forum Dépannage et Assistance
    Réponses: 8
    Dernier message: 15/05/2012, 01h09
  3. [Info] Database control perturbé par glogin.sql
    Par Pomalaix dans le forum Entreprise Manager
    Réponses: 1
    Dernier message: 19/08/2008, 15h41
  4. Dimensions cellules Mozilla perturbées par javascript
    Par speedev dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 07/06/2006, 10h46
  5. Température processeur par le code
    Par XioN dans le forum Delphi
    Réponses: 3
    Dernier message: 29/05/2006, 21h14

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo