Skip to main content

Projet : Automatisation et régulation du pH

Capture d'écran 2026-01-28 132536.png

UE MU5CI823-Optimisation, contrôle et digitalisation des procédés

Groupe 8

Noms et Prénoms:

SELMANI Abderrahmane (abderrahmane.selmani@etu.sorbonne-université.fr) 21518618

DOGHRI Adam (adam.doghri@etu.sorbonne-universite.fr) 21518599

Si Tayeb Fares (fares.si-tayebetu.sorbonne-universite.fr) 21519164 

Djebrouni Rayan (rayan.djebrouni@etu.sorbonne-universite.fr) 21519173

Cursus scolaire: Master 2 de Chimie - Parcours Ingénierie Chimique

Date de commencement des projets: octobre 2023

 
Date de fin des projets: janvier 2026

I.Introduction:

Selon la qualité de l’eau prélevée, la production d’eau potable nécessite la mise en œuvre de différentes étapes faisant appel à quatre types de procédés : physiques, chimiques, physico-chimiques et biologiques.

Une station de production d’eau potable destinée au traitement des eaux de surface repose généralement sur une filière comprenant les étapes suivantes :
dégrillage, tamisage, floculation–décantation, filtration sur sable, ozonation, filtration sur charbon actif et chloration.

Dans le cadre de notre projet, l’attention a été portée sur l’étape de neutralisation

Objectif du projet: 

L’objectif du projet est de concevoir et réaliser un système automatisé de régulation du pH d’une solution aqueuse (acide ou basique), piloté par une carte Arduino. Ce projet s’inspire des problématiques industrielles liées à la neutralisation des rejets liquides, étape clé dans le traitement des eaux industrielles avant rejet ou réutilisation.

II.Le matériel utilisé

  • 3 bouteilles 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
  • Une Tige d’agitation associé à un moteur
  • Un afficheur
  • Un indicateur de niveau
  • Un Arduino avec une plaque d’essai
  • Des files et des tuyaux en plastique
  • Interrupteur
  • Un support en bois

Les appareils utilisés

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

III.Les étapes de construction

  • Étape 1 : Construction du support Nous avons utilisé 2 plaques.
  • É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. Enfin, nous avons fait des trous 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 s'ouvre quand l’interrupteur est ON, et donc l’acide se verse le réacteur.

-La valeur de pH est mesurée par la sonde de pH.

-L’agitation commence .

-Après 3 secondes de l’agitation, l’électrovanne liée au réservoir de la base s’ouvre automatiquement et la valeur de pH s’affiche au fur et à mesure dans l’afficheur.

-Dès que la valeur de pH atteint 7, les deux électrovannes se ferment automatiquement et l’électrovanne liée au réacteur s’ouvre pour la vidange dans le tank.

-Le niveau de remplissage de tank est indiqué par un capteur de niveau.

-Une fois le niveau seuil atteint, toutes les électrovannes s’arrêtent.

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

Capture (5).PNG

                                                    Figure 1 : schéma de fonctionnement de procédé de régulation

L’eau du robinet est introduite dans la cuve principale, où un agitateur assure une homogénéisation continue du milieu. Le pH de la solution est mesuré en temps réel à l’aide d’un pH-mètre, qui transmet l’information au système de commande. En fonction de la valeur mesurée et de la consigne de pH, une solution acide ou une solution basique est injectée dans la cuve à partir de réservoirs dédiés, via des électrovannes. Lorsque le pH est trop élevé, la solution acide est ajoutée, tandis qu’en cas de pH trop faible, la solution basique est injectée. L’agitation permet une répartition rapide des réactifs, garantissant ainsi une correction efficace et continue du pH jusqu’à l’obtention de la valeur souhaitée.

WhatsApp Image 2026-01-28dad at 14.53.15.jpeg

                                                                      Figure 2 : Impression 3D des pales d'agitation

whatsapp-image-2026-01-28-at-14-53-15.jpg

                                                                                    Figure 3 : Pales d'agitation 

whatsapp-image-2026-01-2lkjm8-at-14-53-15.jpg

                                                                                Figure 4 : Montage Arduino 

V.Code Arduino 

Le code Arduino a été réalisé à l'aide de l'outil Ai ChatGpt5 : 

#include "DFRobot_PH.h"
#include <EEPROM.h>
#include <Wire.h>
#include "rgb_lcd.h"

#define PH_PIN A0

// Relais (déjà branchés chez vous)
#define VALVE_BASE  7
#define VALVE_ACID  8

// Consigne pH
const float PH_SET = 7.00;

// Petite hystérésis pour éviter ON/OFF permanent
const float HYS = 0.02;

DFRobot_PH phSensor;
rgb_lcd lcd;

float temperature = 25.0;

void setup() {
  Serial.begin(115200);

  pinMode(VALVE_BASE, OUTPUT);
  pinMode(VALVE_ACID, OUTPUT);

  // Relais actifs LOW → HIGH = vanne fermée
  digitalWrite(VALVE_BASE, HIGH);
  digitalWrite(VALVE_ACID, HIGH);

  phSensor.begin();

  lcd.begin(16, 2);
  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print("Regulation pH");
  delay(800);
  lcd.clear();
}
void loop() {
  // Lecture du pH
  float voltage = analogRead(PH_PIN) * (5000.0 / 1024.0);
  float pH = phSensor.readPH(voltage, temperature);

  bool openBase = false;
  bool openAcid = false;

  // Logique de régulation
  if (pH < (PH_SET - HYS)) {
    openBase = true;
  }
  else if (pH > (PH_SET + HYS)) {
    openAcid = true;
  }

  // Sécurité : jamais les deux en même temps
  if (openBase && openAcid) {
    openBase = false;
    openAcid = false;
  } 

  // Commande des relais (actifs LOW)
  digitalWrite(VALVE_BASE, openBase ? LOW : HIGH);
  digitalWrite(VALVE_ACID, openAcid ? LOW : HIGH);

  // Affichage LCD
  lcd.setCursor(0, 0);
  lcd.print("pH:");
  lcd.print(pH, 2);
  lcd.print("        ");

  lcd.setCursor(0, 1);
  lcd.print("BASE:");
  lcd.print(openBase ? "ON " : "OFF");
  lcd.print(" AC:");
  lcd.print(openAcid ? "ON " : "OFF");

  // Debug série
  Serial.print("pH=");
  Serial.print(pH, 2);
  Serial.print(" | BASE=");
  Serial.print(openBase ? "ON" : "OFF");
  Serial.print(" | ACIDE=");
  Serial.println(openAcid ? "ON" : "OFF");

  delay(200);

Explication du code :

Ce programme Arduino réalise une régulation automatique du pH d’une solution autour d’une valeur cible fixée à pH = 7. Il utilise un capteur de pH DFRobot, deux électrovannes commandées par relais (une pour ajouter une base et une pour ajouter un acide) et un écran LCD RGB pour l’affichage.

L’Arduino commence par initialiser la communication série (pour le débogage), configurer les broches des relais en sortie et les mettre à l’état HIGH car les relais sont actifs à l’état bas (LOW = vanne ouverte, HIGH = vanne fermée). Le capteur de pH est ensuite initialisé, ainsi que l’écran LCD qui affiche brièvement un message de démarrage.

Dans la boucle principale, l’Arduino lit en continu la tension issue du capteur de pH via l’entrée analogique A0. Cette valeur analogique (0–1023) est convertie en tension en millivolts, puis transformée en valeur de pH réelle grâce à la fonction readPH() de la bibliothèque DFRobot, en tenant compte d’une température supposée constante de 25 °C. Cette température est importante car la mesure du pH dépend légèrement de la température.

La valeur de pH mesurée est ensuite comparée à la consigne (pH = 7.00) avec une hystérésis de ±0,02. Cette hystérésis permet d’éviter des commutations trop fréquentes des relais lorsque le pH oscille autour de la consigne. Si le pH est inférieur à 6,98, cela signifie que la solution est trop acide : l’électrovanne de base est alors ouverte pour corriger le pH. À l’inverse, si le pH est supérieur à 7,02, la solution est trop basique : l’électrovanne d’acide est ouverte. Si le pH est dans la zone acceptable autour de la consigne, aucune vanne n’est activée.

Une sécurité logicielle empêche explicitement l’ouverture simultanée des deux vannes, ce qui éviterait une injection d’acide et de base en même temps (situation dangereuse et inefficace). Une fois la décision prise, l’Arduino commande les relais en appliquant un niveau LOW pour ouvrir la vanne concernée et HIGH pour la fermer.

En parallèle, l’écran LCD affiche en temps réel la valeur du pH mesuré sur la première ligne, et sur la deuxième ligne l’état des vannes (ON/OFF pour la base et l’acide). Les mêmes informations sont envoyées sur le moniteur série afin de permettre le suivi du fonctionnement et le diagnostic du système. La boucle se répète toutes les 200 ms, assurant une régulation réactive mais stable.

VI. Schéma du montage : Plaque d’essai-Arduino

Tinkercad est un programme de modélisation 3D en ligne qui s'exécute dans un navigateur web, connu pour sa simplicité et sa facilité d’utilisation.

Voici le schéma détaillé de notre montage : 

Capture d'écran 2026-02-04 115840.png

Figure 5 : schéma du montage

Une vidéo explicative a été ajoutée afin d’illustrer le fonctionnement du système :

https://drive.google.com/drive/folders/1TZQ5oi3JKfVTSi8YBwyKRysVEG_OjWrw?usp=sharing