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:15] sguillie [Mise en place du banc de test] |
wiki:projets:open-air:home:journal:decembre [2016/09/11 11:17] (Version actuelle) |
||
---|---|---|---|
Ligne 48: | Ligne 48: | ||
D'un point de vue de l' | D'un point de vue de l' | ||
- | ==== Connectiques SHARP et SHINYEI==== | + | === Connectiques SHARP et SHINYEI=== |
Pour chacun des composants à tester les branchements sont explicités dans la datasheet. | Pour chacun des composants à tester les branchements sont explicités dans la datasheet. | ||
Ligne 64: | Ligne 64: | ||
Pour chacun des capteurs c'est la carte Arduino Uno qui est utilisée pour le traitement des données. Le stockage sera quant à lui réalisé sur une carte SD. La partie matériel étant définie il convient désormais de définir le code utilisé par l' | Pour chacun des capteurs c'est la carte Arduino Uno qui est utilisée pour le traitement des données. Le stockage sera quant à lui réalisé sur une carte SD. La partie matériel étant définie il convient désormais de définir le code utilisé par l' | ||
- | ==== Code V1 ==== | + | === Code V1 === |
De part la nature du signal à mesurer on aura deux codes différents selon le capteur. Pour chacun la dernière version est décrite dans l' | De part la nature du signal à mesurer on aura deux codes différents selon le capteur. Pour chacun la dernière version est décrite dans l' | ||
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' |
{{ : | {{ : | ||
Ligne 510: | Ligne 709: | ||
Du point de vue résultats les capteurs semblent bien répondre aux contraintes extérieures, | Du point de vue résultats les capteurs semblent bien répondre aux contraintes extérieures, | ||
+ | |||
+ | ===== Bilan Décembre ===== | ||
+ | |||
+ | Ce premier mois à été d' | ||
+ | |||