materiels:capteurs:ph:ph

Différences

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

Lien vers cette vue comparative

Prochaine révision
Révision précédente
materiels:capteurs:ph:ph [2019/05/26 12:40] – modification externe 127.0.0.1materiels:capteurs:ph:ph [2022/07/07 11:21] (Version actuelle) phil
Ligne 1: Ligne 1:
 +[[materiels:accueilmateriels|{{ :iconemaison.jpg?nolink&30|Sommaire Matériels}}]]
 +
 +===== Capteurs - pH =====
 +
 +[Mise à jour le 7/7/2022]
 +
 +
 +==== Généralités ====
 +{{ :materiels:capteurs:iconeph.jpg?nolink|}}
 +Le sigle "pH" désigne le Potentiel d'Hydrogène dans l'eau dont dépend l'acidité de l'eau : une eau acide possède un pH bas, une eau trop basique possède un pH élevé ; et on considère une eau neutre celle dont le pH est à 7,0. \\
 +Plus souvent, le pH mesure l’acidité ou la basicité d’une solution. Ainsi, dans un milieu aqueux à 25 °C :
 +  * une solution de **pH = 7** est dite **neutre** ;
 +  * une solution de **pH < 7** est dite **acide** ; plus son pH diminue, plus elle est acide ;
 +  * une solution de **pH > 7** est dite **basique** ; plus son pH augmente, plus elle est basique.<html><a href="https://fr.wikipedia.org/wiki/Potentiel_hydrog%C3%A8ne" target="_blank">Wikipédia</a></html>
 +
 +----
 +
 +
 +==== Sonde pH + interface pro SEN0169 ====
 +{{ :materiels:capteurs:ph.png?nolink&300|}}
 +  * // Source // : <html><a href="https://www.dfrobot.com/wiki/index.php/PH_meter(SKU:_SEN0161)#Introduction" target="_blank">wiki</a></html>
 +
 +<callout type="info" icon="true">Sonde pH professionnelle DFRobot avec interface compatible Arduino permettant de mesurer un pH entre 0 et 14 à une température comprise entre 0 et +60 °C. Ce module se raccorde sur une entrée analogique d'une carte compatible Arduino ou directement sur le shield d'expansion E/S via le cordon inclus.</callout>
 +
 +L'utilisation de cette sonde doit se faire dans un liquide au repos et électriquement neutre.
 +
 +  * // Distributeur // : <html><a href="https://www.gotronic.fr/art-sonde-ph-interface-pro-sen0169-24570.htm" target="_blank">Gotronic</a></html>
 +
 +  * // Caractéristiques //
 +    * Alimentation: 5 Vcc
 +    * Plage de mesure de pH: 0 à 14
 +    * Température de fonctionnement: 0 à 60 °C
 +    * Précision: ± 0,1 pH (25 °C)
 +    * Temps de réponse: ≤ 1min
 +    * Dimensions:
 +      *  sonde: Ø33 x 180 mm
 +      *  interface: 43 x 32 x 15 mm
 +    * Tube en plastique résistant aux chocs.
 +    * La sonde est livrée avec 5 m de câble et un connecteur BNC.
 +
 +{{ :materiels:capteurs:acrobate.gif?nolink&40|}}
 +  * // Documentation //
 +    * <html><a href="http://image.dfrobot.com/image/data/SEN0161/pH%20meter%20V1.0%20SCH.pdf" target="_blank">Schéma, </a></html>
 +    *  <html><a href="http://image.dfrobot.com/image/data/SEN0161/PH%20composite%20electrode%20manual.pdf" target="_blank">PH composite electrode manual</a></html>
 +
 +  * // Modèle de la sonde de pH//
 +{{ :materiels:capteurs:500px-ph-mv.jpg?nolink |}}
 +
 +  * //Connexion à un shield// <html><a href="https://webge.fr/doc/wikis/pdf/TinkerkitV2.pdf" target="_blank">Tinkerkit v2</a></html> monté sur une Arduino Uno
 +{{ :materiels:capteurs:ph.jpg?nolink&600 |}}
 + 
 +  * // Un premier exemple pour tester le capteur //
 +
 +{{ :materiels:capteurs:distance:arduinoico.png?nolink&40|}}
 +<code cpp ph.cpp>
 +/*
 + # This sample code is used to test the pH meter V1.0.
 + # Editor : YouYou
 + # Ver    : 1.0
 + # Product: analog pH meter
 + # SKU    : SEN0161
 +*/
 +#define SensorPin A0            //pH meter Analog output to Arduino Analog Input 0
 +#define Offset 0.00            //deviation compensate
 +#define LED 13
 +#define samplingInterval 20
 +#define printInterval 800
 +#define ArrayLenth  40    //times of collection
 +int pHArray[ArrayLenth];   //Store the average value of the sensor feedback
 +int pHArrayIndex=0;    
 +void setup(void)
 +{
 +  pinMode(LED,OUTPUT);  
 +  Serial.begin(9600);  
 +  Serial.println("pH meter experiment!");    //Test the serial monitor
 +}
 +void loop(void)
 +{
 +  static unsigned long samplingTime = millis();
 +  static unsigned long printTime = millis();
 +  static float pHValue,voltage;
 +  if(millis()-samplingTime > samplingInterval)
 +  {
 +      pHArray[pHArrayIndex++]=analogRead(SensorPin);
 +      if(pHArrayIndex==ArrayLenth)pHArrayIndex=0;
 +      voltage = avergearray(pHArray, ArrayLenth)*5.0/1024;
 +      pHValue = 3.5*voltage+Offset;
 +      samplingTime=millis();
 +  }
 +  if(millis() - printTime > printInterval)   //Every 800 milliseconds, print a numerical, convert the state of the LED indicator
 +  {
 + Serial.print("Voltage:");
 +        Serial.print(voltage,2);
 +        Serial.print("    pH value: ");
 + Serial.println(pHValue,2);
 +        digitalWrite(LED,digitalRead(LED)^1);
 +        printTime=millis();
 +  }
 +}
 +double avergearray(int* arr, int number){
 +  int i;
 +  int max,min;
 +  double avg;
 +  long amount=0;
 +  if(number<=0){
 +    Serial.println("Error number for the array to avraging!/n");
 +    return 0;
 +  }
 +  if(number<5){   //less than 5, calculated directly statistics
 +    for(i=0;i<number;i++){
 +      amount+=arr[i];
 +    }
 +    avg = amount/number;
 +    return avg;
 +  }else{
 +    if(arr[0]<arr[1]){
 +      min = arr[0];max=arr[1];
 +    }
 +    else{
 +      min=arr[1];max=arr[0];
 +    }
 +    for(i=2;i<number;i++){
 +      if(arr[i]<min){
 +        amount+=min;        //arr<min
 +        min=arr[i];
 +      }else {
 +        if(arr[i]>max){
 +          amount+=max;    //arr>max
 +          max=arr[i];
 +        }else{
 +          amount+=arr[i]; //min<=arr<=max
 +        }
 +      }//if
 +    }//for
 +    avg = (double)amount/(number-2);
 +  }//if
 +  return avg;
 +}
 +</code>
 +
 +{{ :materiels:capteurs:vscode.png?nolink&40|}}
 +<callout type="tip" icon="true">Le projet pour l'IDE **VSCode** de l'exemple ci-dessus est téléchargeable <html><a href="https://webge.fr/doc/wikis/code/Arduino/ARD_Uno_pH_SEN0169.zip">ici</a></html></callout>