Skip to main content

Régulation du pH (Projet C)

Ahmed Hamza, Malek Sari, Naouel Azaiez, Yakoub Laidani, Malak Ben Hamida

La régulation du pH

I. Objectif du projet :

Le projet consiste à réguler le pH d’une certaine solution (acide ou basique) en utilisant un programme Arduino. L’idée vient du problème du traitement des eaux qui est une étape primordiale avant de le rejeter dans l'environnement.

Le traitement de l'eau se manifeste par une réaction entre l'acide chlorhydrique (HCl) et le carbonate de sodium (Na2CO3), pour produire du chlorure de sodium (NaCl), du dioxyde de carbone (CO2), et de l'eau (H2O)=> Elimination des ions carbonate dans l'eau.


HCl+Na2CO3 ==> NaCl+CO2+H2O

II.Description du projet:

HCl est stocké dans le réservoir 1, et Na2CO3 dans le réservoir 2

Lorsque l'interrupteur est allumé, la vanne 1 s'ouvre, permettant le versement de HCl  dans le réservoir   3.

Puis, la vanne 1 se ferme après 3 secondes, et la vanne 2 s'ouvre, permettant le versement de   Na2CO3 de  dans le réservoir 3 durant 3 secondes.

Ensuite, l’agitation commence.

L’agitation dure 5 secondes. Ainsi, le mélange réagit, formant davantage de NaCl, CO2, et H2O.

Un capteur de pH est accordé au milieu réactionnel. 

Le capteur de pH se met en marche et il s’arrête lorsque la valeur pH atteint une valeur autour de 7.

Après la réaction, la vanne 3 s'ouvre et le vidange se fait dans le réservoir 4.

III. Matériel utilisé :

  • 4 réservoirs en plastique (2 réservoirs pour l’acide et la base, un réacteur, et un tank).
  • 3 électrovannes associées à des relais.
  • Une sonde de pH
  • Carte pH-mètre reliée à l’Arduino
  • 2  solutions étalons
  • Un Arduino avec une plaque d’essai
  • Des files et des tuyaux en plastique
  • Interrupteur
  • Un support en bois
  • Une tige d’agitation associée à un moteur

IV. Les appareils utilisés : 

  • Perceuse à colonne
  • Scie électrique
  • Des outils manuels ( pistolet à colle, perceuse, viceuse à main,…)
  • Imprimante 3D

V. Les étapes de construction : 

Étape 1 : Construction du support
Nous avons utilisé 2 plaques en bois

Étape 2 : Mise en place des réservoirs
Nous avons fixé d’abord les 2 réservoirs des solutions acide et base. Ensuite, nous avons fixé
le réacteur et le tank en faisant des trous dans les petits plaques ajoutés. Enfin, nous avons fait des trous dans les réservoirs pour faire passer les tuyaux.

Étape 3 : Mise en place des électrovannes
Nous avons placé les électrovannes à la sortie des deux réservoirs ainsi que le réacteur.
Nous avons associé à ces dernières des relais.


Étape 4 : Impression de la tige
Nous avons fait le design de la tige en utilisant le logiciel Tinkercad, et ensuite nous avons
utilisé l'imprimante 3D. Enfin, nous avons relié la tige au moteur.


Étape 5 : Montage finale
Nous avons fait le montage total, nous avons relié les électrovannes, la sonde de pH,
l’indicateur de niveau avec la plaque d’essai et cette dernière avec Arduino auquel nous
avons associé le programme de régulation de pH.


VI.Principe de fonctionnement : 

-L’électrovanne liée au réservoir de l’acide (HCl)s'ouvre quand l’interrupteur est ON, et donc
l’acide se verse le réacteur (réservoir 3).

-Aprés 3 secondes, l’électrovanne liée au réservoir de Na2CO3 s'ouvre, et donc
la base se verse dans réacteur (réservoir 3).
-La valeur de pH est mesurée par la sonde de pH.

-Après 5 secondes de l’agitation et la valeur de pH s’affiche au fur et à mesure dans l’afficheur.
-Dès que la valeur de pH atteint 7 , l’électrovanne liée au réacteur s’ouvre pour la vidange dans le tank.


Pour bien illustrer l’idée du projet, nous avons réalisé ce schéma explicatif : 

 

VII. Illustrations du projet

Organisation des différents composantes du projet et commande du matériel (1séance)

image.png

Préparation du support (3 séance)

image.png      

Ecriture du code (2 séances)

Cablage des composants avec la carte arduino (2 séances)

image.png C37image.png

 

image.png

Test du code et rectification (Vidéo)

 https://drive.google.com/drive/folders/1Z9QvfrS876cZnwdwtNFdvtTpCLOnY27U

VIII. Le code Arduino

Code des vannes, du moteur et du pH:

const int RELAY_PIN_VANNE1 = A5;  // Broche de l'Arduino connectée à la vanne 1

const int RELAY_PIN_VANNE2 = A4;  // Broche de l'Arduino connectée à la vanne 2

const int RELAY_PIN_MOTEUR = 13;  // Broche de l'Arduino connectée au relais du moteur

#define PH_PIN A0  // Broche analogique à laquelle le capteur pH est connecté

 void setup() {

  pinMode(RELAY_PIN_VANNE1, OUTPUT);

  pinMode(RELAY_PIN_VANNE2, OUTPUT);

  pinMode(RELAY_PIN_MOTEUR, OUTPUT);

  Serial.begin(9600);

}

void loop() {

  // Contrôler les vannes en fonction du pH

  float pHValue = readPH();

   if (isnan(pHValue)) {

    Serial.println("Erreur de lecture du capteur pH. Vérifiez la connexion.");

  } else {

    Serial.print("Valeur du pH : ");

    Serial.println(pHValue, 2);  // Affiche la valeur pH avec deux décimales

    // Contrôler la vanne 1 si le pH est inférieur à 7

    if (pHValue < 7) {

      digitalWrite(RELAY_PIN_VANNE1, HIGH);

      delay(5000);  // Ouvrir la vanne 1 pendant 5 secondes

      digitalWrite(RELAY_PIN_VANNE1, LOW);

    }

  delay(1000);  // Attendez 1 seconde entre les opérations des vannes

 // Contrôler la vanne 2 si le pH est supérieur à 7

    if (pHValue > 7) {

      digitalWrite(RELAY_PIN_VANNE2, HIGH);

      delay(5000);  // Ouvrir la vanne 2 pendant 5 secondes

      digitalWrite(RELAY_PIN_VANNE2, LOW);

    }

   delay(1000);  // Attendez 1 seconde entre les opérations des vannes

  // Activer le moteur pendant 1 seconde

    digitalWrite(RELAY_PIN_MOTEUR, HIGH);

    delay(1000);

    digitalWrite(RELAY_PIN_MOTEUR, LOW);

  delay(1000);  // Attendez 1 seconde entre les opérations du moteur

  }

delay(1000);  // Attendez une seconde entre les lectures pour éviter des lectures trop fréquentes

}

 float readPH() {

  int rawValue = analogRead(PH_PIN);

  float voltage = (rawValue / 1024.0) * 5.0;  // Convertit la valeur analogique en tension

  float pHValue = 7 - (voltage - 2.5);  // Formule de conversion approximative, à calibrer selon le capteur

    return pHValue;

}