Bonjour à tous,
je suis un projet pour contrôler et piloter le pH de ma piscine.
donc, mon projet :
mesurer le PH
quand celui ci atteint une valeur basse définie, déclencher deux relais, un qui active une pompe de brassage, un autre qui active une pompe doseuse.
un fois la valeur maxi atteinte, couper les relais.
J'ai donc commandé la sonde PH et le shield qui va avec (Liquid PH0-14 Value Detect Sensor Module + PH Electrode Probe BNC for Arduino).
Et une nouvelle carte arduino UNO.
Pour l'heure j'ai déjà un système en place mais qui utilise un système de contrôle ph extérieur (je m'en sers comme un bouton, HIGH ; LOW).
Je voudrais donc faire une solution 100% arduino.
voici mon code actuel qui fonctionne :
// constentes et variables :
const int Ph_metre = 6; // Ph_metre sur pin 6
const int RELAY1_pompe_brassage = 4; // pompe brassage, relais 1 sur pin 4
const int RELAY2_pompe_doseuse = 5; // pompe doseuse, relais 2 sur pin 5
int etat_Ph_metre = 0; // variable pour la lecture de l'Etat du Ph_metre
void setup() {
// Pin 4, 5 et 6 sont des sorties
pinMode(RELAY1_pompe_brassage, OUTPUT); // pin 4 est une sortie
pinMode(RELAY2_pompe_doseuse, OUTPUT); // pin 5 est une sortie
// Ph_metre est une entrée
pinMode(Ph_metre, INPUT);
}
void loop() {
// Lit l'état du Ph metre
etat_Ph_metre = digitalRead(Ph_metre);
// vérifie si le PH_metre est enclanché.
// si oui etat_Ph_metre est LOW :
if (etat_Ph_metre == LOW){
// allumer les relais :
digitalWrite (RELAY1_pompe_brassage, LOW); // relais 1 = activation pompe de brassage
digitalWrite (RELAY2_pompe_doseuse, LOW); // relais 2 = activation pompe doseuse
} else {
// sinon éteindre ne rien faire
digitalWrite(RELAY1_pompe_brassage, HIGH) ;
digitalWrite(RELAY2_pompe_doseuse, HIGH);
}
}
donc l'idée est de remplacer le ph metre "tout fait" par le "kit" arduino.
pour la mesure du PH, je pensais utiliser ce code (tout fait par le vendeur du kit) :
#define SensorPin 0 //pH meter Analog output to Arduino Analog Input 0
unsigned long int avgValue; //Store the average value of the sensor feedback
float b;
int buf[10],temp;
void setup()
{
pinMode(13,OUTPUT);
Serial.begin(9600);
Serial.println("Ready"); //Test the serial monitor
}
void loop()
{
for(int i=0;i<10;i++) //Get 10 sample value from the sensor for smooth the value
{
buf[i]=analogRead(SensorPin);
delay(10);
}
for(int i=0;i<9;i++) //sort the analog from small to large
{
for(int j=i+1;j<10;j++)
{
if(buf[i]>buf[j])
{
temp=buf[i];
buf[i]=buf[j];
buf[j]=temp;
}
}
}
avgValue=0;
for(int i=2;i<8;i++) //take the average value of 6 center sample
avgValue+=buf[i];
float phValue=(float)avgValue*5.0/1024/6; //convert the analog into millivolt
phValue=3.5*phValue; //convert the millivolt into pH value
Serial.print(" pH:");
Serial.print(phValue,2);
Serial.println(" ");
digitalWrite(13, HIGH);
delay(800);
digitalWrite(13, LOW);
}
j'ai donc deux soucis, le premier comment intégrer le code de mesure du PH dans le miens et faire que la valeur lue commande le déclanchement , et ensuite le calibrage de la sonde (peut-etre ajouter un potentiomètre, genre ca : Diymore KY-040 360 degrés codeur rotatif Modul).
merci d'avance pour votre aide, je dois pas être loin de comprendre ce qu'il me manque, mais un petit coup de neurones m'est nécessaire .