Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
wiki:projets:open-air:home:journal:decembre [2016/03/31 09:21] sguillie [Code V1] |
wiki:projets:open-air:home:journal:decembre [2016/09/11 11:17] (Version actuelle) |
||
---|---|---|---|
Ligne 490: | Ligne 490: | ||
| | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | ==== Capteurs de Gaz ==== | ||
+ | Un capteur de gaz est un élément constitué de différentes couches de semi conducteurs sensible à la présence de certains composés gazeux. De manière générale l' | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | Pour chacun des capteurs à tester on aura une connectique légèrement différente, | ||
+ | |||
+ | ==== Code V1 ==== | ||
+ | |||
+ | Le code qui suit correspond à la première version utilisée pour nos tests. | ||
+ | |||
+ | <code =cpp> | ||
+ | #include < | ||
+ | |||
+ | #include < | ||
+ | |||
+ | int sd_cs=4; // carte sd commande | ||
+ | int sd_mosi=11; | ||
+ | int sd_miso=12; | ||
+ | int sck_sd=13; | ||
+ | int capteur; | ||
+ | int capteurmax= 19; | ||
+ | |||
+ | unsigned long debut=0;// temps depuis le démarrage de la dernière mesure | ||
+ | unsigned long temps=0; //temps depuis le début du test | ||
+ | unsigned long tempsmesure=300000; | ||
+ | unsigned long totalduration=0; | ||
+ | float mesure[6]={0.0, | ||
+ | float tension[6]={0.0, | ||
+ | float totaltension[6]={0.0, | ||
+ | float tauxgazs[6]={0.0, | ||
+ | float in_max=1023.0; | ||
+ | float in_min=0; | ||
+ | float out_max=100.0; | ||
+ | float out_min=0; | ||
+ | |||
+ | int jour=0; | ||
+ | int heure=0; | ||
+ | int minute=0; | ||
+ | int seconde=0; | ||
+ | int compteur=0 | ||
+ | File fichier; | ||
+ | |||
+ | void setup() { | ||
+ | |||
+ | //ouverture connection série | ||
+ | Serial.begin(9600); | ||
+ | |||
+ | // | ||
+ | | ||
+ | if (!SD.begin(sd_cs)) { | ||
+ | Serial.println(" | ||
+ | return; | ||
+ | } | ||
+ | Serial.println(" | ||
+ | delay(1000); | ||
+ | if (SD.exists(" | ||
+ | Serial.println(" | ||
+ | SD.remove(" | ||
+ | Serial.println(" | ||
+ | delay(1000); | ||
+ | } | ||
+ | |||
+ | // | ||
+ | //while (capteurmax> | ||
+ | // if (Serial.available()> | ||
+ | // | ||
+ | // | ||
+ | // | ||
+ | // } | ||
+ | //} | ||
+ | // capteurmax=capteurmax+14; | ||
+ | |||
+ | // | ||
+ | for (capteur=14; | ||
+ | pinMode (capteur, INPUT); | ||
+ | delay(100); | ||
+ | fichier=SD.open(" | ||
+ | if (fichier) { | ||
+ | if (capteur< | ||
+ | | ||
+ | fichier.print(capteur); | ||
+ | fichier.print(";" | ||
+ | } | ||
+ | else{ | ||
+ | fichier.print(" | ||
+ | fichier.println(capteur); | ||
+ | } | ||
+ | fichier.close(); | ||
+ | } | ||
+ | |||
+ | } | ||
+ | debut=millis(); | ||
+ | Serial.print(" | ||
+ | date(); | ||
+ | |||
+ | } | ||
+ | |||
+ | void loop() { | ||
+ | compteur++ | ||
+ | //boucle sur chaque capteur | ||
+ | for (capteur=0; | ||
+ | |||
+ | // Mesure la tension du capteur | ||
+ | mesure[capteur]=analogRead(capteur); | ||
+ | // conversion des données | ||
+ | tension[capteur]= conversion(mesure[capteur], | ||
+ | |||
+ | // | ||
+ | totaltension[capteur]=(totaltension[capteur]+tension[capteur]/ | ||
+ | |||
+ | totalduration=millis()-debut; | ||
+ | |||
+ | //affichage du taux de gaz | ||
+ | if (totalduration> | ||
+ | date(); | ||
+ | fichier=SD.open(" | ||
+ | fichier.print ("Jour "); | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | fichier.print (minute); | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | for (capteur=0; | ||
+ | Serial.print(" | ||
+ | Serial.println(capteur); | ||
+ | Serial.println (tension[capteur]); | ||
+ | //faire conversion selon le capteur | ||
+ | //... | ||
+ | |||
+ | fichier=SD.open(" | ||
+ | if (fichier) { | ||
+ | Serial.print(" | ||
+ | if (capteur< | ||
+ | fichier.print(tension[capteur]); | ||
+ | fichier.print(";" | ||
+ | } | ||
+ | else{ | ||
+ | fichier.println(tension[capteur]); | ||
+ | } | ||
+ | fichier.close(); | ||
+ | |||
+ | Serial.println(" | ||
+ | } | ||
+ | else { | ||
+ | Serial.println (" | ||
+ | } | ||
+ | |||
+ | duration[capteur]=0; | ||
+ | debut=millis(); | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | |||
+ | } | ||
+ | // affichage de la date sur le port série | ||
+ | void date () | ||
+ | { | ||
+ | temps=millis(); | ||
+ | if (temps> 86400000){ | ||
+ | jour= temps/ | ||
+ | temps=temps400000; | ||
+ | } | ||
+ | |||
+ | if (temps> 3600000){ | ||
+ | heure= temps/ | ||
+ | temps=temps600000; | ||
+ | } | ||
+ | |||
+ | if (temps> 60000){ | ||
+ | minute= temps/ | ||
+ | temps=temps`000; | ||
+ | } | ||
+ | |||
+ | seconde= temps/1000; | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | Serial.print (minute); | ||
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | } | ||
+ | // | ||
+ | float conversion (int in, float x_min, float x_max, float y_min, float y_max) | ||
+ | { | ||
+ | float out=0; | ||
+ | out = (in-x_max)*((y_max-y_min)/ | ||
+ | return out; | ||
} | } | ||
</ | </ | ||
Ligne 497: | Ligne 696: | ||
Pour cette manipulation seul les composant de type SHARP ont été testés. Trois d' | Pour cette manipulation seul les composant de type SHARP ont été testés. Trois d' | ||
- | L' | + | L' |
L' | L' | ||
- | Le but ici n'est pas tant d' | + | Le but ici n'est pas tant d' |
{{ : | {{ : |