Outils pour utilisateurs

Outils du site


wiki:projet:turbococo_arthur_manon_elise

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
wiki:projet:turbococo_arthur_manon_elise [2022/04/22 16:28]
arthur.coron@etu.sorbonne-universite.fr
wiki:projet:turbococo_arthur_manon_elise [2022/05/22 21:30] (Version actuelle)
Ligne 1: Ligne 1:
-                                                                                              Wiki man elise arthur + 
-====== Projet: filtration de nanofossiles calcaires par méthode de tamisation de différentes tailles - paléoclimat du Cénozoïque ======+ 
 + 
 +                                                                                          Wiki Arthur, Elise, Manon 
 +====== Projet: filtration automatisée de nanofossiles calcaires par méthode de tamisation de différentes tailles - paléoclimat du Cénozoïque ======
    
 {{ :wiki:utilisateurs:1.png?direct&200 |}} {{ :wiki:utilisateurs:1.png?direct&200 |}}
Ligne 19: Ligne 22:
  
 Première approche avec Arduino, nous avons essayé d'allumer une LED.  Première approche avec Arduino, nous avons essayé d'allumer une LED. 
 +
 __//**Problème :**//__ la LED ne s'allume pas lorsqu'elle est montée sur la breadboard. Si nous la branchons directement sur la carte Arduino UNO, la LED s'allume. Le programme fonctionne donc bien, le problème vient soit du montage, soit de la breadboard. __//**Problème :**//__ la LED ne s'allume pas lorsqu'elle est montée sur la breadboard. Si nous la branchons directement sur la carte Arduino UNO, la LED s'allume. Le programme fonctionne donc bien, le problème vient soit du montage, soit de la breadboard.
  
Ligne 46: Ligne 50:
  
 Après avoir reçu un nouveau capteur, on essaie de détecter le niveau de l’eau dans le tube. Après avoir reçu un nouveau capteur, on essaie de détecter le niveau de l’eau dans le tube.
 +
 __//**Problème :**//__ réussir à fixer le capteur au verre sans qu’il y ait d’interférences. __//**Problème :**//__ réussir à fixer le capteur au verre sans qu’il y ait d’interférences.
 On a d’abord essayé avec une élastique en tissu  mais on s’est rendu compte que l’élastique était trop épais, trop grand, et qu'il absorbait l’eau (gêne les mesures).  On a d’abord essayé avec une élastique en tissu  mais on s’est rendu compte que l’élastique était trop épais, trop grand, et qu'il absorbait l’eau (gêne les mesures). 
Ligne 52: Ligne 57:
  
 On a remarqué que le capteur détecte le niveau d’eau sans programme Arduino. L’objectif est donc de mettre au point un programme qui stocke l'information //**"eau détectée/ou non"**//. En ajoutant une LED au montage, on fait en sorte que le courant passe (la LED s'allume) lorsque le niveau d'eau est //**"bas"**// (l’eau n'est pas détectée). On a remarqué que le capteur détecte le niveau d’eau sans programme Arduino. L’objectif est donc de mettre au point un programme qui stocke l'information //**"eau détectée/ou non"**//. En ajoutant une LED au montage, on fait en sorte que le courant passe (la LED s'allume) lorsque le niveau d'eau est //**"bas"**// (l’eau n'est pas détectée).
 +
 __**//Problème ://**__ la LED reste toujours allumée quelque soit le niveau d'eau. On a trouvé un nouveau programme qui fait fonctionner le montage correctement. __**//Problème ://**__ la LED reste toujours allumée quelque soit le niveau d'eau. On a trouvé un nouveau programme qui fait fonctionner le montage correctement.
  
Ligne 103: Ligne 109:
  
 Nous avons modélisé les pièces 3D qui permettront de fixer les capteurs au tube. Pour cela on utilise Tinkercad.  Nous avons modélisé les pièces 3D qui permettront de fixer les capteurs au tube. Pour cela on utilise Tinkercad. 
 +
 __**//Problème ://**__ on a mis un peu de temps avant de bien prendre le logiciel en main, mais maintenant Tinkercad n'a plus de secret pour nous. Après un 1er essai, on s'est rendu compte que les modèle 3D étaient trop petits : on a confondu cm et mm. On s'est aussi trompé dans la mesure du trou central qui est beaucoup trop grande. Les modèles sont enfin prêts à être imprimés. [//Impression 3D lancée par **Pierre**//] __**//Problème ://**__ on a mis un peu de temps avant de bien prendre le logiciel en main, mais maintenant Tinkercad n'a plus de secret pour nous. Après un 1er essai, on s'est rendu compte que les modèle 3D étaient trop petits : on a confondu cm et mm. On s'est aussi trompé dans la mesure du trou central qui est beaucoup trop grande. Les modèles sont enfin prêts à être imprimés. [//Impression 3D lancée par **Pierre**//]
  
Ligne 139: Ligne 146:
  
 {{ :wiki:projet:capteurs_accroche.jpg?400 |}} {{ :wiki:projet:capteurs_accroche.jpg?400 |}}
 +
 +[[https://dropsu.sorbonne-universite.fr/s/akFwWp8NXYcZYZE?path=%2F]]
  
 ---- ----
Ligne 144: Ligne 153:
  
  
-Fabrice est venu voir notre montage, il fut charmé. Validation et finalisation du système pompe-capteur. Nous avons voulu mettre un interrupteur, mais sans succès... la carte a sûrement grillée. Pour empêcher que les soudures des fils dénudés se touchent et éviter les cours-circuits, on utilise des dominos. +Fabrice est venu voir notre montage. Validation et finalisation du système pompe-capteur. Nous avons voulu ajouter un interrupteur pour faciliter la mise en route du système, mais sans succès. La carte relais de la pompe a sûrement grillée. Pour empêcher que les soudures des fils dénudés ne se touchent et éviter les cours-circuits, on utilise des dominos. 
-w+
  
 ---- ----
 <fs large>//__**Semaine 8 et 9:**__//</fs> (25/03 et 01/04) <fs large>//__**Semaine 8 et 9:**__//</fs> (25/03 et 01/04)
  
-Dernier problème à surmonter: l'agitation de l'hélice +Nous nous attaquons à l'agitation du système. Fabrice souhaite qu'elle se fasse en 2 temps :  
-Avec notre coach en chef Fabrice, on a convenu que l'agitation se ferait en 2 temps :  + 
-D'une part on va agiter en continu tant que la pompe remplit d'eau (c'est à dire tant que le capteur haut reste éteint).  +- agitation continue lors de la phase de remplissage (tant que le capteur haut est éteint) 
-D'autre part, pendant que l'eau est supposé se vider avec une filtration, l'hélice tournera par intervalle de temps que l'on choisira (donc tant que capteur bas allumé, on va faire tourner 5sec allumé, et attendre 5 sec) + 
-Après, un formidable café offert par la maison, on s'est attaqué à la programmation du moteur de l'hélice.  +- agitation discontinue lors de la phase de vidageL'hélice fonctionnera ou non par intervalle de temps prédéfini (tant que capteur bas est allumé) 
-On a très vite réussi à faire tourner le moteur en continu pendant le remplissage.  + 
-[screenshot du code]  +Niveau programmation, on a très vite réussi à faire tourner le moteur en continu pendant le remplissage.  
-Cependant, le programme du moteur en intervalle de tempsest nettement plus complexe.  +  
-Notre kamarade Manon a réussi un début de programme pour faire fonctionner le moteur pendant la descente de l'eau, mais l'intervalle entre agitation et non-agitation est trop court (2sec puis 1 sec) ce qui fera agiter beaucoup trop pendant la tamisation.  +{{ :wiki:projet:luuuui.png?400 |}} 
-[screenshot programme]  + 
-Notre dernier objectif est donc de finaliser le programme en faisant marcher l'agitation par moteur toutes les 5 secondes+Le programme pour faire fonctionner le moteur par intervalle de temps est plus complexe. 
 +Nous parvenons à faire tourner le moteur pendant le vidage, mais l'intervalle de temps est trop court (2sec puis 1 sec) par rapport à celui défini (5sec).
  
 ---- ----
Ligne 167: Ligne 177:
 Avec l'aide de **Loïc**, nous sommes parvenus à écrire le programme final : la pompe et le moteur fonctionnent en continus lors du remplissage et le moteur fonctionne en cycle de 5sec lorsque la pompe est éteinte. Avec l'aide de **Loïc**, nous sommes parvenus à écrire le programme final : la pompe et le moteur fonctionnent en continus lors du remplissage et le moteur fonctionne en cycle de 5sec lorsque la pompe est éteinte.
  
-Il manque plus qu'à alléger le montage en réduisant les fils.+Il manque plus qu'à alléger le montage en raccourcissant les fils.
  
 ---- ----
Ligne 173: Ligne 183:
 2 2
  
-On a coupé les fils et fait des soudures pour que le montage soit plus aéré. On a changer l'Arduino MEGA en Arduino UNO et enlevé la breadboard qu'on a remplacé par des dominos.+On a raccourcit les fils et fait des soudures pour que le montage soit plus aéré. On a changer l'Arduino MEGA en Arduino UNO et enlevé la breadboard qu'on a remplacé par des dominos.
  
 __**//Problème ://**__ au moment de lancer le programme, la pompe et le moteur ne fonctionnent pas correctement. Nous ne comprenons pas d'où vient le problème : Arduino, programme, capteurs, pompe, branchements, soudures ?  __**//Problème ://**__ au moment de lancer le programme, la pompe et le moteur ne fonctionnent pas correctement. Nous ne comprenons pas d'où vient le problème : Arduino, programme, capteurs, pompe, branchements, soudures ? 
Ligne 180: Ligne 190:
 <fs large>//__**Semaine 12 :**__//</fs> (22/04) <fs large>//__**Semaine 12 :**__//</fs> (22/04)
  
-Nous reprenons le montage et ça ne fonctionne toujours pas. On a d'abord pensé que le problème venait des dominos mais même problème lorsqu'on rebranche tout sur la breadboard. Le problème ne vient pas non plus de l'Arduino car en remettant la carte Arduino MEGA, ça ne fonctionne toujours pas. Peut-être que le problème est lié aux soudures et à des court-circuits ? Fabrice les a refaiteet on a remis de nouveaux fils non coupés. Ça ne fonctionne pas non plus. +Nous reprenons le montage et ça ne fonctionne toujours pas. On a d'abord pensé que le problème venait des dominosmais même problème lorsqu'on rebranche tout sur la breadboard. Le problème ne vient pas non plus de l'Arduino car en remettant la carte Arduino MEGA, ça ne fonctionne toujours pas. C'est peut-être lié à d'éventuels court-circuits au niveau des soudures ? Fabrice les a refaite et on a mis de nouveaux fils non coupés. Ça ne fonctionne pas non plus. 
-Finalement, en utilisant des "Serial.println" dans le programme, on s'est rendu compte que le capteur du Haut était cassé. **Pierre** nous en a donc commandé un nouveau que nous essaierons la semaine prochaine.+En utilisant des "Serial.println" dans le programme, on s'est rendu compte que le capteur du Haut était cassé. **Pierre** nous en a donc commandé un nouveau que nous essaierons la semaine prochaine.
  
 ---- ----
 <fs large>//__**Semaine 13 :**__//</fs> (22/04) <fs large>//__**Semaine 13 :**__//</fs> (22/04)
  
-Nous avons remplacer le capteur du Haut qui ne fonctionnait plus (il affichait 0,82) par un nouveau. Avec beaucoup de motivation, nous avons repris le montage pas à pas. +Nous avons remplacer le capteur du Haut qui ne fonctionnait plus (il affichait 0,82V) par un nouveau. Nous avons repris le montage pas à pas. 
 - Nous remplaçons la carte Arduino MEGA par la carte Arduino UNO - Nous remplaçons la carte Arduino MEGA par la carte Arduino UNO
 - Nous utilisons des dominos à la place de la breadboard pour simplifier les branchements - Nous utilisons des dominos à la place de la breadboard pour simplifier les branchements
 - Les capteurs haut et bas fonctionnent bien individuellement avec le programme : ils affichent 0V quand il n'y a pas d'eau et 5V quand il y a de l'eau. - Les capteurs haut et bas fonctionnent bien individuellement avec le programme : ils affichent 0V quand il n'y a pas d'eau et 5V quand il y a de l'eau.
-- La pompe fonctionne lorsqu'on le branche l'alimentation. Nous arrivons également à la faire fonctionner conjointement avec les capteurs en utilisant le programme : elle fonctionne lorsque le niveau d'eau est inférieur au capteur bas et s'arrête lorsqu'il est supérieur au capteur haut.+- La pompe fonctionne lorsqu'on branche l'alimentation. Nous arrivons également à la faire fonctionner conjointement avec les capteurs en utilisant le programme (en marche lorsque le niveau d'eau est sous le capteur bas et éteinte lorsqu'il est au-dessus capteur haut).
 - Le moteur fonctionne lorsqu'on le branche à l'alimentation.  - Le moteur fonctionne lorsqu'on le branche à l'alimentation. 
  
Ligne 203: Ligne 213:
 - on a remplacé les boucles "else" par des boucles "if" - on a remplacé les boucles "else" par des boucles "if"
  
 +Voici le  programme final qui fonctionne :
 +
 +----
 //-------------------------------------------------------- variables // //-------------------------------------------------------- variables //
      
Ligne 216: Ligne 229:
                 pinMode (4, OUTPUT);                                        // borne 4 Arduino reliée à la pompe                 pinMode (4, OUTPUT);                                        // borne 4 Arduino reliée à la pompe
                 pinMode (2, OUTPUT);                                        // borne 2 Arduino reliée au moteur                 pinMode (2, OUTPUT);                                        // borne 2 Arduino reliée au moteur
-                
       }       }
    
Ligne 228: Ligne 240:
                 int sensorValue1 = analogRead(A2);                          // lit la valeur analogique reçue en A2, envoyée par le capteur HAUT                 int sensorValue1 = analogRead(A2);                          // lit la valeur analogique reçue en A2, envoyée par le capteur HAUT
  
-     
                 float voltage0 = sensorValue0 * (5.0 / 1023.0);             // conversion de la valeur analogique (de 0 à 1023) en voltage (de 0 à 5V) - capteur BAS                 float voltage0 = sensorValue0 * (5.0 / 1023.0);             // conversion de la valeur analogique (de 0 à 1023) en voltage (de 0 à 5V) - capteur BAS
                 float voltage1 = sensorValue1 * (5.0 / 1023.0);             // conversion de la valeur analogique (de 0 à 1023) en voltage (de 0 à 5V) - capteur HAUT                 float voltage1 = sensorValue1 * (5.0 / 1023.0);             // conversion de la valeur analogique (de 0 à 1023) en voltage (de 0 à 5V) - capteur HAUT
  
- 
-   
- // Serial.println("bas"); 
- // Serial.println(voltage0); 
- // Serial.println(" "); 
- // Serial.println("haut"); 
- // Serial.println(voltage1) 
-  
                     if (remplissage == 1) {                                 // si le niveau d'eau est sous le capteur du HAUT, alors :                                     if (remplissage == 1) {                                 // si le niveau d'eau est sous le capteur du HAUT, alors :                
                         if ((voltage0< 2.5) & (voltage1 < 2.5)) {                               // si le capteur BAS ne détecte pas l'eau, alors :                                                                                                                            if ((voltage0< 2.5) & (voltage1 < 2.5)) {                               // si le capteur BAS ne détecte pas l'eau, alors :                                                                                                   
Ligne 245: Ligne 248:
                             digitalWrite (2, LOW);                          // "pas de courant" en sortie 2 : le circuit est fermé dans la carte relais, le moteur fonctionne                             digitalWrite (2, LOW);                          // "pas de courant" en sortie 2 : le circuit est fermé dans la carte relais, le moteur fonctionne
                             remplissage = 1;                                // on reste dans cette boucle                             remplissage = 1;                                // on reste dans cette boucle
-                            Serial.println("niveau sous bas");    
-                            Serial.println(remplissage);  
                         }                          } 
                                                  
Ligne 253: Ligne 254:
                             digitalWrite (2, LOW);                          // "pas de courant" en sortie 2 : le circuit est fermé dans la carte relais, le moteur fonctionne                             digitalWrite (2, LOW);                          // "pas de courant" en sortie 2 : le circuit est fermé dans la carte relais, le moteur fonctionne
                             remplissage = 1;                             remplissage = 1;
-                            Serial.println("niveau entre haut et bas"); 
-                            Serial.println(remplissage);  
                         }                          } 
 +                        
                         if ((voltage1 > 2.5)&(voltage0>2.5)){               // si le capteur HAUT détecte l'eau, alors :                         if ((voltage1 > 2.5)&(voltage0>2.5)){               // si le capteur HAUT détecte l'eau, alors :
                             digitalWrite (4, HIGH);                         // "courant" en sortie 5 : le circuit est ouvert dans la carte relais, la pompe ne fonctionnne pas                             digitalWrite (4, HIGH);                         // "courant" en sortie 5 : le circuit est ouvert dans la carte relais, la pompe ne fonctionnne pas
Ligne 263: Ligne 263:
                             heure_start_sec = (heure_start_ms/equivalence_ms_s);                             heure_start_sec = (heure_start_ms/equivalence_ms_s);
                             chrono = 0;                                                                     // conversion des ms en s                             chrono = 0;                                                                     // conversion des ms en s
-                            Serial.println("niveau over ze top"); 
-                            Serial.println(remplissage);  
-                            Serial.println(chrono);   
                         }                         }
                      }                      }
 +                     
                      if (remplissage == 0) {                                 // si le niveau d'eau est au dessus le capteur HAUT, alors :                        if (remplissage == 0) {                                 // si le niveau d'eau est au dessus le capteur HAUT, alors :  
                         if (voltage0 > 2.5) {                               // si le niveau d'eau est au dessus le capteur BAS, alors                          if (voltage0 > 2.5) {                               // si le niveau d'eau est au dessus le capteur BAS, alors 
Ligne 276: Ligne 274:
                                         heure_delay_sec = (heure_delay_ms/equivalence_ms_s);               // conversion des ms en s                                         heure_delay_sec = (heure_delay_ms/equivalence_ms_s);               // conversion des ms en s
                                         chrono = heure_delay_sec - heure_start_sec;                        // calcul du chrono = (heure du début  - heure du retard)                                         chrono = heure_delay_sec - heure_start_sec;                        // calcul du chrono = (heure du début  - heure du retard)
-                                        Serial.println(chrono); 
-                                        Serial.println(remplissage);  
                                         remplissage = 0;                                         remplissage = 0;
                               }                               }
 +                              
                               if  ((chrono <= 10) & (chrono > 5)) {// si le chrono est > 5 s, alors :                                 if  ((chrono <= 10) & (chrono > 5)) {// si le chrono est > 5 s, alors :  
                                         digitalWrite (2, HIGH);                                         digitalWrite (2, HIGH);
Ligne 286: Ligne 283:
                                         heure_delay_sec = (heure_delay_ms/equivalence_ms_s);               // conversion des ms en s                                         heure_delay_sec = (heure_delay_ms/equivalence_ms_s);               // conversion des ms en s
                                         chrono = heure_delay_sec - heure_start_sec;                        // calcul du chrono = (heure du début - heure du retard)                                         chrono = heure_delay_sec - heure_start_sec;                        // calcul du chrono = (heure du début - heure du retard)
-                                        Serial.println("chrono entre 5 et 10"); 
                                         remplissage = 0;                                         remplissage = 0;
                               }                               }
 +                              
                               if (chrono > 10)                                        // si le chrono > 10 s, alors :                               if (chrono > 10)                                        // si le chrono > 10 s, alors :
                                chrono = 0;                                                                 // le chrono est remis à 0                                                  chrono = 0;                                                                 // le chrono est remis à 0                  
                                heure_start_ms = millis();                                                  // l'heure du début est remis à jour en ms                                heure_start_ms = millis();                                                  // l'heure du début est remis à jour en ms
                                heure_start_sec = (heure_start_ms/equivalence_ms_s);                        // conversion des ms en s                                heure_start_sec = (heure_start_ms/equivalence_ms_s);                        // conversion des ms en s
-                               Serial.println("chrono > 10"); 
                                remplissage = 0;                                remplissage = 0;
                              }                              }
                         }                         }
 +                        
                         if (voltage0 < 2.5) {                           if (voltage0 < 2.5) {  
                            remplissage = 1;                            remplissage = 1;
-                           Serial.println("repasse remp a 1");               
                         }                         }
                       }                       }
-                  }   // ferme void loop  +                  }   // ferme void loop   
                                            
-Le montage et le programme fonctionnent correctement, Fabrice a validé. 
  
 +
 +
 +----
 +
 +Le montage et le programme fonctionnent correctement : validation par Fabrice.
 On a commencé à modéliser le montage sur Tinkercad. Il ne reste plus qu'à réduire les câblages, enlever les dominos et les replacer sur la breadboard (Fabrice préfère). On a commencé à modéliser le montage sur Tinkercad. Il ne reste plus qu'à réduire les câblages, enlever les dominos et les replacer sur la breadboard (Fabrice préfère).
  
 +{{ :wiki:projet:finito.png?600 |}}
 +
 +----
 +
 +Nous tenons à remercier Fabrice Minoletti de nous avoir encadré et surtout de nous avoir fait confiance tout au long de ce projet. Ce fut un plaisir de travailler avec lui au fils des semaines, et nous mesurons la chance que nous avons eu de goûter à son merveilleux café.
 +Un grand merci à Loïc Labrousse pour la partie programmation sans qui moteur et pompe vibreraient encore aujourd'hui. 
 +Merci aussi à Pierre Thery d'avoir été présent chaque semaine et aussi impliqué dans notre projet, notamment pour l'usinage des pièces.
 +Merci à Christian du Fablab qui nous a expliqué les bases du montages et de la programmation.
 +
 +Nous sommes fières d'être parvenus au bout de ce projet et espérons que Fabrice en aura utilité. Nous avons développé des compétences qui nous seront utiles dans notre poursuite d'étude/future vie professionnelle. Merci encore
                                                                                
wiki/projet/turbococo_arthur_manon_elise.1650644916.txt.gz · Dernière modification: 2022/04/22 16:28 de arthur.coron@etu.sorbonne-universite.fr