Des sketchs à ajouter à ArdPyLog (suite)


17. pH-Metre
(Mesurer le pH d’une solution aqueuse – Catégorie: Capteurs)

 

L’objectif de cette activité est de mesurer le pH d’une solution aqueuse à l’aide d’une sonde pH et de l’interface SEN0161 de DF ROBOT.

La sonde pH économique avec l’interface compatible Arduino est idéale pour une utilisation générale et permettant de mesurer un pH entre 0 et 14 à une température comprise entre 0 et +60 °C.

Cette sonde délivre une tension analogique en fonction du pH.

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.


Remarques :

– l’utilisation de cette sonde doit se faire dans un liquide au repos et électriquement neutre,
– cette sonde ne peut pas rester immergée dans la solution à mesurer.


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)

 

L’écran à cristaux liquides utilisé comporte deux rangées de 16 caractères, d’où son nom de LCD 1602 et le potentiomètre du montage permet de régler sa luminosité.

Le code de l’activité nécessite l’installation au préalable de la librairie  » LiquidCrystal  » d’Adafruit.
Afin d’ajouter une librairie à l’IDE Arduino, il faut aller dans le menu « Outils ->Gérer les bibliothèques » :

Il suffit ensuite de rechercher et d’ajouter la librairie  » LiquidCrystal  » d’Adafruit:

 

Le programme

Voici le code de l’activité :

#include <LiquidCrystal.h>

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);


const int onOffSwitchStateSwitchPin = 7;
const int PinLED = 6;

int onOffSwitchState = 0;
int previousOnOffSwitchState = 0;
int state=0;
float Offset=0.0;
int ValSensor=0;
float pHValue=0.0;


void setup() {
pinMode(onOffSwitchStateSwitchPin, INPUT);
pinMode(PinLED,OUTPUT);

lcd.begin(16, 2);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print (« ARDUINO -« );
lcd.setCursor(0, 1);
lcd.print (« PH-METRE »);

}

void loop() {

onOffSwitchState = digitalRead(onOffSwitchStateSwitchPin);
delay(1);
if ((onOffSwitchState == HIGH)&&(previousOnOffSwitchState == LOW))
{
state=1-state;
delay(10);
}
else
{
if ((onOffSwitchState == LOW)&&(previousOnOffSwitchState == HIGH))
{
delay(10);
}
}
previousOnOffSwitchState = onOffSwitchState;

if (state==1)
{

digitalWrite(PinLED, HIGH);
ValSensor=analogRead(A0);
pHValue=(ValSensor*5.0/1024)*3.5 + Offset;
lcd.clear();
lcd.setCursor(0, 0);
lcd.print (« PH = »);
lcd.setCursor(0, 1);
lcd.print (pHValue);
delay(500);
}

else
{

digitalWrite(PinLED, LOW);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print (« ARDUINO -« );
lcd.setCursor(0, 1);
lcd.print (« PH-METRE »);

delay(500);
}
}

 

Déroulement du programme :

– 1. Insertion des bibliothèques :

. Insertion de la librairie  » LiquidCrystal  » d’Adafruit,
. Initialisation de la librairie avec les broches utilisées pour l’écran LCD.

 

– 2. Déclaration des constantes et variables :

. const int onOffSwitchStateSwitchPin = 7 (constante nombre entier correspondant à la broche du bouton poussoir)

. const int PinLED = 6 (constante nombre entier correspondant à la broche de la DEL)

. int onOffSwitchState = 0 (variable nombre entier pour stocker la valeur du potentiel de la broche du bouton poussoir)

. int previousOnOffSwitchState = 0 (variable nombre entier pour stocker la précédente valeur du potentiel de la broche du bouton poussoir)

. int state=0 (variable nombre entier correspondant à l’action à effectuer)

. float Offset=0.0 (variable nombre décimal d’ajustement du pH à déterminer par l’étalonnage de la sonde)

. int ValSensor=0 (variable nombre entier pour stocker la valeur de la broche de la sonde pH)

. float pHValue=0.0 (variable nombre décimal pour le calcul de pH)

 

– 3. Initialisation des entrées et sorties :

. Initialisation du nombre de lignes et de colonnes de l’écran LCD,
. Initialisation de la broche du bouton poussoir en entrée digitale,
. Initialisation de la broche de la DEL en sortie digitale,
. Affichage du titre de l’activité « ARDUINO – pH-METRE » sur l’écran LCD.

 

– 4. Fonction principale en boucle :

–> Lecture de la valeur de la broche du bouton poussoir,
–> Si le bouton poussoir est appuyé, la lecture de l’entrée analogique A0 commence (la DEL rouge est allumée),
–> Calcul du pH,
–> Affichage du pH sur l’écran LCD,
–> Si le bouton poussoir est de nouveau appuyé, les mesures sont arrêtées (la DEL rouge est éteinte).