Régulateur PH pour Airduino et Blynk


Messages recommandés

J'ai aussi un autre taff celui la est en français et il partage le code pour le ph sur un Airduino

 

Une carte arduino : personnellement, je suis allé au moins cher avec une carte WAVGAT à 2,26 € (attention aux particularités de cette carte)

Une sonde pH-métrique (réf PH-4502C) à 10 €

3 boutons poussoir

Des câbles

Un proto-shield à 0,76 € (ou une breadboard)

Un jeu de solutions tampon Fisher pH 4, pH 7, pH 10 (« gratuit » car disponible dans mon établissement, mais dans l'absolu, c'est presque 30€ le litre de chaque !)

Un écran LCD 4 lignes avec bus I2C (réf 2004A) à 3,50 €, en option

Éventuellement un boîtier pour fermer et fixer le tout.

 

Les branchements

Voici le diagramme Fritzing pour faire les branchements. Il est possible de ne pas utiliser d'écran LCD et remplacer le tout par de la communication avec le port Série.

pH-metre_bb2.thumb.png.19b997b23c1b161f0bc62ef2e8b39489.png

Le programme:

#include 
#include 
//----- Adressage matériel -----
// En cas de non fonctionnement, décommentez la ligne plus bas et commentez la ligne ci-dessous
LiquidCrystal_I2C lcd(0x27, 20, 4);
//LiquidCrystal_I2C lcd(0x3F,20,4);

//PH mètre
const int pinpH = A0 ;
const int overpH = 8 ;
//Boutons de mesure
const int readpH = 9 ;
const int pH7 = 10 ;
const int pH4 = 11 ;

//Variables intermédiaires
int cal4 =0;
int cal7 =0;
long slope =0.;
long intercept=0.;
bool calibrated=false;
int pHRaw;
long pHfull;
String line="";

void setup() {
  lcd.init();
  pinMode(pinpH, INPUT);
  pinMode(overpH, INPUT); //si au dela d'un seuil fixé via potentiomètre
  pinMode(readpH, INPUT_PULLUP); // lancer lecture du pH
  pinMode(pH7, INPUT_PULLUP); // tampon pH7
  pinMode(pH4, INPUT_PULLUP); // tampon pH4
  Serial.begin(9600);
}


long ReadPH(){
  int buf[10],temp;
  float avgValue=0.0;
  analogRead(pinpH);
  for(int i=0;i<10;i++){ //10 mesures
    buf[i]=analogRead(pinpH);
    delay(10);}

  for(int i=0;i<10;i++){ // moyenne
    avgValue+=(float) buf[i];}
  avgValue/=10;
  return avgValue;
}

void loop() {
    lcd.backlight();
    pHRaw= ReadPH();//récupération de la valeur brute moyennée sur 10 valeurs
    
    boolean calpH4 = digitalRead(pH4);
    if(calpH4 == LOW){//si le bouton pH4 appuyé, alors
        cal4 = pHRaw;
        lcd.setCursor(0, 2);
        lcd.print("calibre ph 4");        
        lcd.setCursor(0, 3);
        lcd.print("pH raw : "+ (String) pHRaw);
        calibrated = false;
    }

    boolean calpH7 = digitalRead(pH7);
    if(calpH7 == LOW){//si le bouton pH7 appuyé, alors
        cal7 = pHRaw;        
        lcd.setCursor(0, 2);
        lcd.print("calibre ph 7");        
        lcd.setCursor(0, 3);
        lcd.print("pH raw : "+ (String) pHRaw);
        calibrated = false;
    }

    if(cal4 != 0 && cal7 != 0 && calibrated == false){
        slope = (cal7-cal4)/3.0;
        intercept = cal4-4.0*slope;
        calibrated = true;  
        lcd.setCursor(0, 0);
        lcd.print("Pente : "+String(slope,2));
        lcd.setCursor(0, 1);
        lcd.print("Ord : " + String(intercept,2)); 
        lcd.setCursor(0, 2);
        lcd.print("pH-metre calibre");
    }

    boolean Read = digitalRead(readpH);
    if(Read == LOW){//si le bouton read appuyé, alors
        if(calibrated==true){
          pHfull=(pHRaw-intercept)/slope;
          lcd.setCursor(0, 2);
          lcd.print("pH : " + String(pHfull,2)+"   ");
          lcd.setCursor(0, 3);
          lcd.print("pH raw : "+(String) pHRaw);
        }else{
          lcd.setCursor(0, 2);
          lcd.print("pH-metre non cal! ");
          lcd.setCursor(0, 3);
          lcd.print("pH raw : "+(String) pHRaw);
        }             
    }
    
    delay(100);
}

Utilisation:

Il faut commencer par régler le potentiomètre en ayant trempé la sonde dans la solution de tampon pH=7. Ensuite, il faut ajuster le potentiomètre le plus près de la fiche BNC pour que la valeur brute affichée soit à environ la moitié de la gamme de lecture soit environ 511 ou 512 pour une carte UNO R3 -- qui peut lire des valeurs entre 0 et 1023. Pour cela, il suffit d'appuyer sur le bouton de mesure relié avec un fil jaune ou orange sur le diagramme ci-dessus qui affiche la valeur sur l'écran.

Pour faire la calibration à proprement parler, il faut appuyer sur le bouton « Orange/pin 10 » lorsque la sonde est immergée dans la solution de pH=7. Ensuite, il faut rincer l'électrode, immerger la sonde dans la solution tampon pH=4 et appuyer sur le bouton « Violet / pin 11 ». Le ph-mètre est alors calibré et affiche la pente et l'ordonnée à l'origine de la droite trouvée.

Une fois le pH-mètre calibré, il faut appuyer sur le bouton « Jaune / pin 9 » !

 

Raffinements

 

Améliorer la calibration avec la température n°1

Il est possible d'ajouter une sonde de température pour avoir la température de la solution.

 

Améliorer la calibration avec la température n°2

Si la température est mesurée, il est possible d'améliorer la calibration en utilisant le pH des solutions tampon à la température mesurée.

 

Stabilité de la mesure

Il est possible de vérifier que la mesure est stable en faisant des moyennes glissantes.

 

Faire des incertitudes de type A

Il est possible de faire une incertitude de type A sur les valeurs mesurées.

 

Enregistrer les données

Il est possible d'utiliser une horloge RTC et un lecteur de carte SD pour procéder à l'écriture dans un fichier.

 

  • Thanks 1
Lien à poster
Partager sur d’autres sites