Ajout de nouvelle sonde pour mesure température

Un log shield sur carte SD avec horloge RTC et zone de prototypage à pastilles carrées

Ajout de nouvelle sonde pour mesure température

Message non lude JM29 » Ven 2 Déc 2011 22:45

Hello,
retour sur mes expérimentations que j'avais mis en pause ce shield .... je m'y remet avec à nouveau une nouvelle question : on fait comment pour ajouter une nouvelle sonde pour l’enregistrement d'une autre mesure simultanée ? j'ai un autre LM35DZ et j'aimerai faire un test de sonde déporté.
Merci pour vos conseils
JM
JM29
 
Messages: 10
Inscription: Mar 31 Mai 2011 23:59

Re: Ajout de nouvelle sonde pour mesure température

Message non lude Stéphane » Lun 5 Déc 2011 10:06

Bonjour,

Le LM35DZ est un capteur de température, avec sa valeur retournée qui est une valeur analogique fonction de la température.
Si vous voulez le déporter, il vous faut juste tirer des fils (+5V, GND et Pin Axxx) vers le LM35DZ.

Assignez une nouvelle pin analogique à votre deuxième capteur dans votre programme, et c'est joué :)

En espérant avoir répondu à votre question,

Bonne journée.
Avatar de l’utilisateur
Stéphane
 
Messages: 179
Inscription: Lun 2 Mai 2011 09:40

Re: Ajout de nouvelle sonde pour mesure température

Message non lude JM29 » Mar 6 Déc 2011 19:33

Salut Stéphane,
Merci pour cette réponse. En fait ce qui me pose soucis c'est dans le programme, d'intégrer la partie code pour que s'inscrive dans le fichier texte la valeur de la sonde 2. Pour le coup, là je suis perdu.
Jean-Marc
JM29
 
Messages: 10
Inscription: Mar 31 Mai 2011 23:59

Re: Ajout de nouvelle sonde pour mesure température

Message non lude Stéphane » Mer 7 Déc 2011 09:44

Bonjour,

Pouvez-vous poster votre code initial ?
Nous partirons de là pour expliquer comment interfacer un deuxième capteur.

Bonne journée :)
Avatar de l’utilisateur
Stéphane
 
Messages: 179
Inscription: Lun 2 Mai 2011 09:40

Re: Ajout de nouvelle sonde pour mesure température

Message non lude JM29 » Lun 10 Déc 2012 23:36

Hello,
gros remontage de post pour le coup : j'avais mis de côté ce projet et je me décide aujourd'hui à me relancer dans celui ci :D
Bien entendu j'avais réussi lors de mes derniers essai à enregistrer la mesure d'une sonde .... et je n'ai pas eu la présence d'esprit d'enregistrer mon code ... et forcément j'y arrive plus.
L'idée de départ : un boitier autonome pour faire en même temps et une fois par heure deux mesures : une pour l'eau de l'aquarium et une pour la pièce dans lequel se trouve celui là. Pour le montage, c'est ok. Par contre je suis pas sûr du code pour l'enregistrement des deux capteurs.
Enfin, je ne sais plus comment transformer la valeur mesurée en ° celcius : j'ai beau essayer toutes les combinaison j'y arrive plus :oops:

Voici mon code initial pour les deux capteurs :

Code: Tout sélectionner
    /*
                SNOOTLAB
                Application N°1 Shield Mémoire : Stockage des valeurs de temperature dans un fichier texte
                avec fonction d'horodatage
                MàJ: 2 juillet 2012
                Environnement : linux debian based / IDE Arduino 1.0.1 / Arduino UNO rev3 et Duemilanove
            */

            #include <Wire.h>
            #include <SD.h>
            #include <RTClib.h>

            // Declaration des pin utilisées
            const char pin_chipSelect = 10;                            //10 est la pin utilisée par le shield mémoire pour le signal ChipSelect
            const char pin_capteur = 0;                                //Numéro de la pin où est relié le capteur en question
            const char pin_capteur1 = 1;                                //Numéro de la pin où est relié le capteur en question


            // Declaration des variables générales
            const unsigned long F_refresh = 1000;                      //Entrez ici la fréquence de rafraichissement du capteur, en millisecondes
            RTC_DS1307 RTC;
            File fichier;
            String datastring;

            void setup()
            {
             
              Serial.begin(57600);                                     //Initialisation de la liaison série
              Serial.print("Initialisation de la SD card...");
             
              pinMode(pin_chipSelect, OUTPUT);                         // Mettre la pin en output
             Wire.begin();
               RTC.begin();                           
               if (! RTC.isrunning())
           {
             // Si la RTC n'est pas configurée, le faire avec les valeurs de l'ordinateur au moment de la compilation
             RTC.adjust(DateTime(__DATE__, __TIME__));
           }
             
              if (!SD.begin(pin_chipSelect))                           // Vérification de la présence de la SD card
                {                         
                  Serial.println("Carte fausse ou absente");
                  return;                                              // Si problème, sortir et bloquer l'exécution
                }
             
              Serial.println("Carte OK.");
             
              datastring = "\nReleve et horodatage des valeurs du capteur, selon horloge RTC\n---------\n ";
             
              fichier = SD.open("log1.txt", FILE_WRITE);               // Ouverture du fichier en mode Ecriture.

              if (fichier)                                             // Si le fichier existe déja, on écrira à la suite des données présentes.
                {

                  fichier.println(datastring);

                  fichier.close();

                  Serial.println(datastring);              // dupliquer la donnée sur port série
                }
               
              else                                                     //Si problème à l'ouvertre, alors signaler l'erreur
                {                                                       
                    Serial.println("erreur d'ouverture du fichier durant la configuration");
                }
             
            }

            void loop()
            {
              delay(F_refresh);
             
              DateTime moment = RTC.now();         //Init de l'objet temporel
              datastring=String(moment.day(),DEC);
              datastring+='/';
              datastring+=String(moment.month(),DEC);
              datastring+='/';
              datastring+=String(moment.year(),DEC);
              datastring+=' ';
              datastring+=String(moment.hour(),DEC);
              datastring+=':';
              datastring+=String(moment.minute(),DEC);
              datastring+=':';
              datastring+=String(moment.second(),DEC);
             
              int sensor = analogRead(pin_capteur);                    // lire la valeur du capteur et la mettre dans la chaine de caractères
             
              datastring += ("\t Valeur capteur sonde aquarium = ");            // préalablement remplie avec les données temporelles
              datastring += String(sensor);
             
              int sensor2 = analogRead(pin_capteur1);                    // lire la valeur du capteur et la mettre dans la chaine de caractères
             
              datastring += ("\t Valeur capteur sonde exterieure = ");            // préalablement remplie avec les données temporelles
              datastring += String(sensor);
             
              fichier = SD.open("log1.txt", FILE_WRITE);
             
              if (fichier)
                {
                 
                  fichier.println(datastring);
                 
                  fichier.close();
                 
                  Serial.println(datastring);                 // dupliquer la donnée sur port série
                }
              else {
                    Serial.println("erreur d'ouverture du fichier");
                    }
             
              datastring =0;
            }





J’obtiens toujours la même valeur même quand le chauffe un des capteurs.
Quelqu'un aurait-il une idée ou verrait-il une ou des erreurs ?
Merci
Jean-Marc
JM29
 
Messages: 10
Inscription: Mar 31 Mai 2011 23:59

Re: Ajout de nouvelle sonde pour mesure température

Message non lude phil » Mar 11 Déc 2012 14:06

Essaye de remplacer
Code: Tout sélectionner
analogRead(pin_capteur);
et
analogRead(pin_capteur1);

par
Code: Tout sélectionner
analogRead(A0)
et
analogRead(A1)

pour voir... Je suis pas convaincu que les déclarations de pin au format char fonctionne...
all your shields are belong to us...
Avatar de l’utilisateur
phil
 
Messages: 192
Inscription: Mer 7 Sep 2011 11:19

Re: Ajout de nouvelle sonde pour mesure température

Message non lude JM29 » Mer 12 Déc 2012 00:42

Salut,
j'ai essayé les modifications que tu m'as proposé mais sans succès : j'ai toujours les mêmes résultats quelque soit la sonde.
Le fichier texte créé apporte en outre des bizarreries :


Releve et horodatage des valeurs du capteur, selon hïrloge!RTC
----!RTC-
12/12/2012 1:42:26 Valeur capteur sonde aquarium = 25 Valeur capteur sonde exterieure = 25
Releve et horodatage des valeurs du capteur, selon horloge RTC
---------
Releve et horodatage des valeurs du capteur, selon horloge RTC
---------
12/12/2012 1:43:1 Valeur capteur sonde aquarium = 25 Valeur capteur sonde exterieure = 25
Releve et horodatage des valeurs du capteur, selon horloge RTC
---------
12/12/2012 1:44:26 Valeur capteur sonde aquarium = 26 Valeur capte  sonde!exterieu!ext 26
Releve et horodatage des valeurs du capteur, selon horloge RTC
---------
12/12/2012 1:44:30 Valeur capteur sonde aquarium = 25 Valeur capteur sonde exterieure = 25
Releve et horodatage des valeurs du capteur, selon horloge RTC
--------
Releve et horodatage des valeurs du capteur, selon horloge RTC
-------
12/12/2012 1:44:43 Valeur capteur sonde aquarium = 26 Valeur capteur sonde exterieure = 26
 /12/2012 1:44:44 Valeur capteur sonde aquarium = 41 Valeur capteur sonde exterieure =
log1.txt %;›:\ \ aleur capteur sonde aquarium = 14 h    14


JM
JM29
 
Messages: 10
Inscription: Mar 31 Mai 2011 23:59

Re: Ajout de nouvelle sonde pour mesure température

Message non lude JM29 » Mer 12 Déc 2012 16:32

Hello,
Je continue mes recherches ...
Ce pourrait-il que le fait de faire deux mesures simultanément provoque ce soucis ?
est-il possible de faire les mesures à quelques secondes d'intervalle dans ce cas ?
Jean-Marc
JM29
 
Messages: 10
Inscription: Mar 31 Mai 2011 23:59

Re: Ajout de nouvelle sonde pour mesure température

Message non lude Stéphane » Jeu 13 Déc 2012 13:06

Bonjour,

Pour la déclaration des pins, je vous conseillerais de passer par des "#define" : ici.
Pour relever deux valeurs analogiques, il est conseillé d'attendre un peu entre les deux relevés.
Donnez nous un peu plus de détails sur vos avancements, de manière à mieux cerner le problème.

P.S: j'ai édité votre message pour mettre le code entre les balises eponymes.
Avatar de l’utilisateur
Stéphane
 
Messages: 179
Inscription: Lun 2 Mai 2011 09:40

Re: Ajout de nouvelle sonde pour mesure température

Message non lude JM29 » Mar 18 Déc 2012 20:14

Salut,
Comme je suis un fainéant :oops: , je pense finalement partir sur une copie de projet : http://forum.snootlab.com/viewtopic.php?f=32&t=214
Il correspond en effet à ce que je voudrais faire : le deuligne ainsi que deux capteurs en moins. Les sondes DS18B20 n'étant pas très chères, je vais en prendre deux et je pense perdre moins de temps à modifier un code existant qu'à tenter de bidouiller un nouveau.
JM
JM29
 
Messages: 10
Inscription: Mar 31 Mai 2011 23:59

Re: Ajout de nouvelle sonde pour mesure température

Message non lude Sna » Jeu 21 Fév 2013 12:31

En meme temps c'est bien dommage car ton code fonctionne

Tu va bien chercher les 2 valeurs, et tu les recois bien dans tes variables sensor et sensor2, mais regarde ce que tu affiche? :)
Le resultat que tu recois me parait coherent moi, si tu affiches 2 fois sensor, tu recevra bien 2 fois la meme valeur :)
Sna
 
Messages: 9
Inscription: Sam 10 Nov 2012 13:45


Retourner vers Mémoire

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité

cron