Incompréhension entrées analogiques
Répondre à la discussion
Affichage des résultats 1 à 18 sur 18

Incompréhension entrées analogiques



  1. #1
    mitonin

    Incompréhension entrées analogiques


    ------

    Bonjour,

    mon but était tout simple et me paraissait être fait en 30 sec, mais voila, ça ne fonctionne pas ^^

    Je voulais relier 2 capteurs de temperature TMP36 à 2 entrées analogiques d'un arduino uno, et en faire la moyenne.

    j'arrive à lire une valeur mais pas deux, dès que je branche les 2 entrées analog, l'arduino lit 0 aux deux, dès que j'en branche 1, l'arduino lit qq de cohérent.


    Comment pourrais-je remédier à cela ?

    je vous met mon code :

    if(iCompteur > ciTemps_mesure)
    {
    iTemp1=analogRead(PIN_capteur1 );
    iTemp2=analogRead(PIN_capteur2 );

    iTempMoy=iTemp1+iTemp2;
    fTempMoy=iTempMoy/2;
    fTempMilli=(fTempMoy*5000)/1024; // on converti en millivolt
    fTemp=(fTempMilli-500)/10; // on converti en degré
    iCompteur=0;
    }

    -----
    Dernière modification par mitonin ; 08/02/2015 à 15h21.

  2. #2
    Yoruk

    Re : Incompréhension entrées analogiques

    Salut,

    Tu peux donner schéma + code complet + datasheet des capteurs ?
    La robotique, c'est fantastique !

  3. #3
    mitonin

    Re : Incompréhension entrées analogiques

    Pour le schéma, j'ai rien fait de sorcier, +5V du uno aux pattes 1 des capteurs, patte 3 à la masse du micro et la patte du milieu aux entrées analogiques ^^

    pour le code, ya pas grand chose en plus ^^

    je mets la datasheet
    #include <MsTimer2.h>

    #define PIN_capteur1 4
    #define PIN_capteur2 5

    int iCompteur;
    int iTemp1, iTemp2, iTempMoy;
    float fTemp1, fTemp2,fTemp,fTempMoy,fTempMil li;
    const int ciTemps_mesure=5000;
    char *cEspace="//////////////////",*cMoy="Temperature Moyenne", *cMilli="Temeprature en millivolt", *cTemp="Temperature en degrés", *cCapteur1="Capteur 1", *cCapteur2="Capteur 2";



    void InterruptTimer() // timer 10 ms
    {
    iCompteur+=10;
    iCompteurPause+=10;
    }


    void setup() {
    Serial.begin(9600);
    MsTimer2::set(10, InterruptTimer); // mets une interruption timer de 10 ms
    MsTimer2::start(); // active Timer2
    }



    void loop()
    {

    if(iCompteur > ciTemps_mesure)
    {
    iTemp1=analogRead(PIN_capteur1 );
    iTemp2=analogRead(PIN_capteur2 );

    iTempMoy=iTemp1+iTemp2;
    fTempMoy=iTempMoy/2;
    fTempMilli=(fTempMoy*5000)/1024; // on converti en millivolt
    fTemp=(fTempMilli-500)/10; // on converti en degré
    iCompteur=0;
    Serial.println(cCapteur1);
    Serial.println(iTemp1);
    Serial.println(cCapteur2);
    Serial.println(iTemp2);
    Serial.println(cMoy);
    Serial.println(fTempMoy);
    Serial.println(cMilli);
    Serial.println(fTempMilli);
    Serial.println(cTemp);
    Serial.println(fTemp);
    Serial.println(cEspace);

    }

    }
    Images attachées Images attachées

  4. #4
    jiherve

    Re : Incompréhension entrées analogiques

    Bonjour
    c'est bien ce que je craignais tu ne laisses pas au convertisseur le temps de faire les mesures, de mémoire il faut au moins 100 à 200 µS entre deux mesures et sans doute un peu plus si l'on commute l'entrée.
    Donc sans trop modifier ton soft fais l'acquisition une fois sur deux pour chacun des capteurs, il suffit de rajouter une variable , tes calculs de moyenne et autres n'y verront rien.
    JR
    l'électronique c'est pas du vaudou!

  5. A voir en vidéo sur Futura
  6. #5
    Yoruk

    Re : Incompréhension entrées analogiques

    Tes capteurs renvoient direct une tension analogique entre 0 et 5V ?

    Tu as tenté de travailler sans interruptions ? (Avec des delay entre les relevés ?)

    Je ne comprends pas "iTempMoy=iTemp1+iTemp2;". Tu fait la moyenne des 2 capteurs à la fois ? C'est casse-gu*** !

    Tente d'afficher dans la console uniquement les 2 relevés bruts des entrées analogiques (sans moyenne ni rien), dans une boucle très simple (avec 1 seconde de délai entre chaque relevés), histoire de cibler plus le problème.
    La robotique, c'est fantastique !

  7. #6
    mitonin

    Re : Incompréhension entrées analogiques

    j'ai pas tenté sans interruption nan, mais j'ai tenté avec du temps entre les 2 mesures, ça n'a rien changé ^^

    les capteurs renvoient maxi 1.5 ou 2V


    ouai c'est le but de faire la moyenne des deux capteurs

  8. #7
    Yoruk

    Re : Incompréhension entrées analogiques

    Tente ma proposition SVP, avec une seconde entre chaque relevé.
    La robotique, c'est fantastique !

  9. #8
    paulfjujo

    Re : Incompréhension entrées analogiques

    bonsoir,



    et si tu modifies legerement l'ordre d'impression
    en intercalant l'ecriture de la 1ere valeur, AVANT l'acquisition de la deuxieme..
    il s'ecoulera peut-etre un temps suffisant.


    Code:
    void loop()
    {
    
    if(iCompteur > ciTemps_mesure) 
    {
    iTemp1=analogRead(PIN_capteur1 );
    Serial.println(cCapteur1);
    Serial.println(iTemp1);
    
    iTemp2=analogRead(PIN_capteur2 );
    
    iTempMoy=iTemp1+iTemp2;
    fTempMoy=iTempMoy/2;
    fTempMilli=(fTempMoy*5000)/1024; // on converti en millivolt
    fTemp=(fTempMilli-500)/10; // on converti en degré
    iCompteur=0;
    
    Serial.println(cCapteur2);
    Serial.println(iTemp2);
    Serial.println(cMoy);
    Serial.println(fTempMoy);
    Serial.println(cMilli);
    Serial.println(fTempMilli);
    Serial.println(cTemp);
    Serial.println(fTemp);
    Serial.println(cEspace);
    
    }

  10. #9
    jiherve

    Re : Incompréhension entrées analogiques

    re
    'arrive à lire une valeur mais pas deux, dès que je branche les 2 entrées analog, l'arduino lit 0 aux deux, dès que j'en branche 1,
    avec le meme soft ?
    JR
    l'électronique c'est pas du vaudou!

  11. #10
    jiherve

    Re : Incompréhension entrées analogiques

    Re
    comme les pin de l'ADC ont un usage multiple que deviennent elles lorsque l'on ne les utilise pas spécifiquement.
    C'est çà l’inconvénient des surcouches soft c'est opaque.
    JR
    l'électronique c'est pas du vaudou!

  12. #11
    mitonin

    Re : Incompréhension entrées analogiques

    oui oui, sans changer le soft, si je branche qu'un des deux capteurs (peu importe lequel), je lis bien 0 à l'un et une certaine valeur cohérente à l'autre, mais dès que je branche les 2 j'ai 0 aux deux entrées.

    J'ai tenté en faisant une fois sur deux, toujours 0 à chaque entrée.

    même scénario sans interruption et avec des delay.

    D'autres idées? ^^

  13. #12
    Yoruk

    Re : Incompréhension entrées analogiques

    Tente :

    Code:
    void loop()
    {
    
    
    iTemp1=analogRead(PIN_capteur1 );
    
    delay(1000);
    
    iTemp2=analogRead(PIN_capteur2 );
    
    delay(1000);
    
    Serial.println(iTemp1);
    Serial.println(iTemp2);
    }
    Et donne le résultat de la console avec 1 capteur sur l'entrée 1, 1 capteur sur l'entrée 2, et les 2 capteurs.
    La robotique, c'est fantastique !

  14. #13
    mitonin

    Re : Incompréhension entrées analogiques

    déjà tenté (enfin pas sur les pin 1&2 mais bon) ^^

  15. #14
    jiherve

    Re : Incompréhension entrées analogiques

    Re
    ???????????
    Et sur les pins où tu as tenté qu'y avait il de branché ,ne nous dis pas rien car cela nous décevrait beaucoup.
    essayes ce que te dit Yoruk et reviens
    JR
    l'électronique c'est pas du vaudou!

  16. #15
    mitonin

    Re : Incompréhension entrées analogiques

    tenté avec ce code c/c, pas plus de résultats ^^

    toujours qq si une seule entrée est branché et 0 si je branche les 2

    comment ça qu'y avait-il de branché? Bin mes sorties de mes capteurs

  17. #16
    jiherve

    Re : Incompréhension entrées analogiques

    Re
    bon séparons les variables , connectes tes deux entrées chacune sur une sortie de l'arduino et fais varier ces sorties entre '0' et '1' et vérifie que tes canaux ADC fonctionnent.
    tu dois récupérer 0x00,0xFF ou à peu pres sur chacun des canaux indépendamment l'un de l'autre.
    et dernière chose schéma de câblage ou photo de ton montage la doc du TMP36 ne suffit pas.
    JR
    l'électronique c'est pas du vaudou!

  18. #17
    Yoruk

    Re : Incompréhension entrées analogiques

    Ou, à partir du code que je t'ai donné, connecte une entrée au 5v, une autre au 0 (au GND), permutte, place les 2 à 0, et enfin les 2 au 5v.

    Merci de poster le résultat de la console, pas juste "ça marche pas".
    La robotique, c'est fantastique !

  19. #18
    bastien31

    Re : Incompréhension entrées analogiques

    A tu essayer de tester les 2 entré analogique independament?
    Yen a pas une ma configuré par exemple?

Discussions similaires

  1. Multiplexage d'entrées analogiques et numérique
    Par invite08bd213e dans le forum Électronique
    Réponses: 14
    Dernier message: 24/02/2010, 16h23
  2. Microcontroleur... entrées analogiques
    Par invite457124b9 dans le forum Électronique
    Réponses: 1
    Dernier message: 15/06/2009, 10h15
  3. entrées analogiques résolution 8 bits
    Par juju60123 dans le forum Électronique
    Réponses: 12
    Dernier message: 19/05/2008, 19h08
  4. entrées analogiques su pic 16F877
    Par invite99a31ef7 dans le forum Électronique
    Réponses: 3
    Dernier message: 16/04/2008, 20h42
  5. Démultiplier ses entrées analogiques ?
    Par invite79a74df4 dans le forum Électronique
    Réponses: 5
    Dernier message: 26/02/2007, 18h15
Découvrez nos comparatifs produits sur l'informatique et les technologies.