Zelfbouw Arduinio Ph controller


jan fokke

Well-known member
Lid geworden
11 augustus 2011
Berichten
2,823
Leeftijd
41
Locatie
leeuwarden
Ik ben van plan om zelf een ph controller te gaan maken.
Ik heb net het spul besteld via ebay.

De functies voor het apparaat worden gewoon pH meten en dan de klep van de co2 open of dicht zetten aan de hand van de met de hand ingestelde kH waarde.
Mischien wil ik hem dan ook nog uitbreiden met een temperatuur sensor maar dat weet ik nog niet.
Dit ook omdat de pH ook temperatuur afhankelijk is en dus deze ook wel mee genomen moet worden in de berekening die het apparaat moet maken.

Kan alleen nu zo snel even niet de juiste formules vinden voor het berekenen van de co2 aan de hand van kH en pH waarde met en zonder correctie van de temperatuur.
 
197567jan_fokke_0_85_nieuwe_ma.jpg

835469jan_fokke_0_85_nieuwe_ma.jpg

Deze foto's zijn van 2 weken geleden

717896jan_fokke_0_85_nieuwe_ma.jpg


Gister weer er mee verder gegaan en nu ziet het bordje er zo uit als op de boven staande foto.

// the setup function runs once when you press reset or power the board
int CO2Klep =4;
int LED = 7;
int PhElec = 0; // potentiometer wiper (middle terminal) connected to analog pin 3
int Phwaarde = 0;
int Phscherm = 0;
int Phinstpod = 1;
int Phinst = 0;
int Phinstscherm = 0;

#define SensorPin A2 //pH meter Analog output to Arduino Analog Input 2
#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;
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);


void setup() {
// initialize digital pin 13 as an output.
pinMode(CO2Klep, OUTPUT);
pinMode(LED, OUTPUT);
Serial.begin(9600); // opens serial port, sets data rate to 9600 bps
lcd.begin(16, 2);
lcd.setCursor(0, 0);
lcd.print("GemetPh");
lcd.setCursor(0, 1);
lcd.print("inPh");

}
// the loop function runs over and over again forever
void loop() {

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();
}

{

lcd.setCursor(9, 0);
lcd.print(pHValue);
lcd.print(" ");
Serial.println(Phscherm); // print as an ASCII-encoded decimal
Phinstscherm = map (Phinst, 0, 1023, 0,140);
Phinst = analogRead (Phinstpod);

lcd.setCursor(9, 1);
lcd.print(Phinstscherm/10);
lcd.print(".");
lcd.print(Phinstscherm%10);
lcd.print(" ");
Serial.println(Phinst);
}
// wait for a second
if (Phwaarde <100){
digitalWrite(LED, HIGH); // turn the LED on (HIGH is the voltage level)

}
if (Phwaarde >105){
digitalWrite(LED, LOW); // turn the LED off by making the voltage LOW
// wait for a second
}


}
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;
}
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<min){
amount+=min; //arr<min
min=arr;
}else {
if(arr>max){
amount+=max; //arr>max
max=arr;
}else{
amount+=arr; //min<=arr<=max
}
}//if
}//for
avg = (double)amount/(number-2);
}//if
return avg;
}


de code tot nu toe.

Wat ik er nog bij wil hebben is een automatische calibratie functie.
En verderder wordt die nog uitgebreid met een temperatuur sensor die mijn verwarming gaat aansturen.
 
Ik zie ook dat er op het bordje voor mijn pH electrode 2 stelschroefjes zijn en ik weet dat deze er voor zijn om de electrode handmatig te kunnen calibreren maar nu is mijn vraag weet iemand welk schroefje voor welke pH is.
Mocht het niet gaan lukken om een automatische calibratie in het programma te zetten.
 
Welke sensoren heb je nu precies in gebruik?
Een temperatuur sensor en wat nog meer?

Leuk project trouwens :)
 
Temperatuur sensor heb ik nog niet in gebruik.
Enige sensor wat hier in in gebruik is op dit moment is de pH elektrode.
Temperatuur sensor heb ik vandaag besteld dus als die binnen is ga ik die ook installeren.

Nu het eerst volgende ding wat ik er in ga verwerken is dat de pH elektrode het magneet ventiel gaat aansturen.

aan de hand van dit schema

127128jan_fokke_0_85_picture.jpg
 
Stefanfr zei:
Zoek je deze misschien?

CO2 = 3 * KH * 10(7-pH) (KH in degrees)
KH(degrees) = 0.056 * KH(ppm)

Deze temperatuur sensor heb ik besteld en moet zeggen dat hij best accuraat is!
http://www.ebay.com/itm/Waterproof-...0-Length-1M-/170821333658?hash=item27c5beb29a

Ik heb nog een andere formule die een klein beetje afwijkt, geen idee welke 'juister' is...

Co2 = kH / 2,8 * 10^(7,91-pH)

Ik dacht wel dat die formules alleen tellen wanneer de temperatuur 25� is.
 
Of deze.
NTC-Temperatursensor -30 - +105 �C MJSTS-103-3950-1-600-3D ...

17. Nov. 2015 ... NTC-Temperatursensor -30 - +105 �C MJSTS-103-3950-1-600-3D .... temperature sensor, thermistor, capteur temp�rature, k�ltef�hler, temp ...
https://www.conrad.de/.../ntc-temperatu ... 23879.html -
losse draadaansluiting.

of deze
Temperatuursensoren bij Conrad.nl online bestellen

Dallas DS18S20 Temperatuursensor met directe digitale uitgang -50 tot +125 �C in .... NTC-temperatuursensor -30 - +105 �C MJSTS-502-3470-1-600-XH Soort ...
https://www.conrad.nl/nl/temperatuursen ... 31030.html

met stekkeraansluiting.
 
Ik heb er al een besteld via ebay hoop hem volgende week binnen te hebben.
zodat ik dan weer verder kan gaan met dit project
 
Heb je de waterproof versie besteld? die zijn vrij handig moet ik zeggen.
Om hem aan te sluiten gebruik ik geen pullup resistor of dergelijke dit kan arduino namelijk zelf.
Deze library heb je daar voor nodig
daar in zit deze code voor de no-pullup die kun je dus een beetje tweaken voor jou programma:
Code:
#include <OneWire.h>
#include <DallasTemperature.h>

// This is an updated version of the Tester program that comes with the DallasTemp library
// It will drive a DS18x20 tempurature sensor plugged directly to the Arduino header pins 8,9, and 10.
// The flat side of the sensor should face into the center of the board.
// More info and a video here...
// http://wp.josh.com/2014/06/23/no-external-pull-up-needed-for-ds18b20-temp-sensor/#more-1892


// Data wire is plugged into port 2 on the Arduino
#define ONE_WIRE_BUS 9

// Uncomment this line if you are using the updated dallas_temp_library that 
// supports the busFail() method to diagnose bus problems
// #define BUSFAIL 

// Setup a oneWire instance to communicate with any OneWire devices (not just Maxim/Dallas temperature ICs)
OneWire oneWire(ONE_WIRE_BUS);

// Pass our oneWire reference to Dallas Temperature. 
DallasTemperature sensors(&oneWire);

void setup(void)
{
  
  // This lines just make it so you can plug a DS18B20 directly into 
  // digitial pins 8-10. 
  
  digitalWrite( 8 , LOW );
  pinMode( 8  , OUTPUT );
  digitalWrite( 10 , LOW );  
  pinMode( 10 , OUTPUT );
  
  // start serial port
  Serial.begin(9600);
  Serial.println("Dallas Temperature IC Control Library Demo");
  
}


void loop(void)
{ 
  
  #ifdef BUSFAIL
  
    Serial.print(" Test:");
      
    if (sensors.reset()) {
      
      Serial.print("good");
      
    } else {
      
      if (sensors.busFail()) {
        
        Serial.print("fail");
        
      } else {
        
        Serial.print("empty");
        
      }
        
    }
    
  #endif 

  int numberOfDevices; // Number of temperature devices found

  DeviceAddress tempDeviceAddress; // We'll use this variable to store a found device address    
  
  // For testing purposes, reset the bus every loop so we can see if any devices appear or fall off
  sensors.begin();

  // Grab a count of devices on the wire
  numberOfDevices = sensors.getDeviceCount();

  Serial.print(" Parasite:"); 
  if (sensors.isParasitePowerMode()) Serial.print("ON ");
  else Serial.print("OFF ");
    
  Serial.print("Count:");
  Serial.print(numberOfDevices, DEC);
 // report parasite power requirements

  sensors.requestTemperatures(); // Send the command to get temperatures
  
  // Loop through each device, print out temperature data
  for(int i=0;i<numberOfDevices; i++)
  {
    // Search the wire for address
    if(sensors.getAddress(tempDeviceAddress, i))
	{
		// Output the device ID
		Serial.print(" #");
		Serial.print(i,DEC);
		Serial.print("=");


                float tempC = sensors.getTempC(tempDeviceAddress);

                Serial.print(DallasTemperature::toFahrenheit(tempC)); // Converts tempC to Fahrenheit

	} 
	//else ghost device! Check your power requirements and cabling
	
  }
  
 Serial.println("");
  
 delay(1000);
}

// function to print a device address
void printAddress(DeviceAddress deviceAddress)
{
  for (uint8_t i = 0; i < 8; i++)
  {
    if (deviceAddress[i] < 16) Serial.print("0");
    Serial.print(deviceAddress[i], HEX);
  }
}


Voor het digitaal (automatisch) kalibreren van de ph probe moet je de analoge versie op het bord, de schroefjes, helemaal open draaien en dan in je programma de waarde opslaan in je EEPROM die je krijgt bij een lage eikvloeistof als 0 punt voor je metingen en daarna met een hogere eikvloeistof controleren of hij accuraat is
 
oke ik zal morgen avond er weer even verder mee gaan prutsen en hopelijk heb ik dan ook de temperatuursensor binnen en zo. en anders eerst met het bestaande spul verder af maken en dan kan de rest er later als ik het binnen heb nog ingebouwd worden.

Want ik wil het volgende nog gaan doen:

temperatuur meten en bijstellen met verwarming.

Menu maken zodat ik daar als startscherm de parameters zie van temperatuur en pH
en dan in het menu een ding waar ik de pH kan instellen en nog een voor de temperatuur

en misschien komen er in de toekomst ook nog wel meer dingen bij maar dat moet ik nog even zien.
 
Wanneer je dit met de temperatuursensor gaat realiseren zou ik een relais op je heater maken zodat je deze via je programma uit en aan kunt zetten. Dan de heater op max zetten of voor wat meer veiligheid 1 a 2 graden warmer dan je je aquarium wilt hebben zodat wanneer je programma niet goed functioneert je aquarium niet aan de kook gaat.
Dit is vrij makkelijk te maken en z'n relaisbordje kost een paar euro.
http://www.ebay.com/itm/5V-Two-2-Channel-Relay-Module-With-optocoupler-For-PIC-AVR-DSP-ARM-Arduino-/181026509345?hash=item2a26055221:g:aVcAAOSw0e9UvczK
Dit is er een met 2 relais kun je eventueel je co2 of licht er ook op aansluiten en ook deze via het programma uit en aan zetten
 
CO2 wordt al aangestuurd via een relais en dit ga ik ook met de verwarming doen en ik gan ze zelf maken is wel zo leuk en waar ik het doe hebben ze ook de techniek om zelf van die bordjes te maken.
Zie ook schema hier boven is van het solid state relais voor de CO2
 
Nice, Maar ik hoop niet etsen enz?
Dit zal in het begin wel werken maar is zeer gevoelig voor kortsluiting en beschadigingen dat het enkel voor prototyping gebruikt word. Je kunt dual layer printplaten ook uit china laten komen, zijn sites die dit goedkoop aanbieden en als je langer kan wachten doen ze het ook in bulk (met andere klanten) krijg je extra korting
 
oke ik weet niet wat ik gebrukt heb maar heb hem nog niet verder in elkaar gezet. Gister eerst wat testjes uitgevoerd en nu blijkt dat ik verkeerde pH waarden krijg want bij natrium hydroxide krijg ik een waarde van 2,00. Kan iemand mij vertellen of het aan de code ligt die ik gebruikt heb of dat er in de aansluiting iets fout zit.
 
klopt de code wel want ik krijg vreemde waarden als ik de ph meter in ph vloeistof hang.
 
Er bestaan van 1 merk kleine zakjes met de standaard calibreer-vloeistoffen.
Misschien is het handiger om daarmee eerst eens de analoge procedure te doorlopen.
 
Je moet de pH circuit wel eerst kalibreren. Die schroefjes zijn waarschijnlijk voor de gain en nulpunt(pH7) van het circuit af te stellen, je moet hem dus afstellen, de tong in juiste hoek houden en met schroevendraaier aan de slag gaan met beide potmeters.

Wat een karige informatie geven die chinezen(?) weer, als het nu printje was van 1 a 2 euro, maar ze reken iets van 15 a 20 euro voor pH circuit printje. Ik denk dat je beste flesje pH4 en pH7 kan kopen, en dan twee kleine smalle flesjes regelt waar je tekens wat kan overgieten, heb maar iets van 5ml nodig per keer, Sera heeft flesjes van 100ML voor 6 euro ongeveer. En dan maar gewoon gaan testen hoe hij reageert op de potmeters.

Tijdens paar dagen testen hoef je niet steeds nieuwe te pakken, zorg dat je de probe goed droog maakt als je hem van pH4 naar pH7 overzet om besmetting te voorkomen, en na gebruik afsluit om verdamping te voorkomen. Heb het wel eens weken gebruikt en dan week het maar 0.2 af na die tijd, dat afwijken maakt tijdens het testen niks uit en scheelt je hoop geld.

Heb je pH meter bij de hand, dat is wel handig om er pH meter bij te hebben zodat je ze parallel naast elkaar kan laten draaien om te kijken of alles goed gaat.
 
Oke ik zal er vrijdag of van het weekend wel eens weer mee gaan prutsen en kijken of ik er een beetje goede waarden uit krijg.
Ja de pH buffers heb ik al gehaald.
en nee ik heb er niet naast nog een pH meter liggen.
 
vandaag wat aan de potmeters lopen draaien maar krijg de ph niet naar 7 :S

Dus mijn vraag klopt de code van pH meter wel. Of moet ik een andere code gaan gebruiken.
/*
# This sample code is used to test the pH meter V1.1.
# Editor : YouYou
# Date : 2014.06.23
# Ver : 1.1
# Product: analog pH meter V1.1
# SKU : SEN0161
*/
#define SensorPin A2 //pH meter Analog output to Arduino Analog Input 2
#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;
}
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<min){
amount+=min; //arr<min
min=arr;
}else {
if(arr>max){
amount+=max; //arr>max
max=arr;
}else{
amount+=arr; //min<=arr<=max
}
}//if
}//for
avg = (double)amount/(number-2);
}//if
return avg;
}
 
ik snap niet wat er mis gaat en waarom ik er geen normale waarden uit kan krijgen ook bij de buffer van 4 krijg ik een waarde van rond de 14 of zo ongeveer.
 
ik denk dat je offset voltage niet geheel klopt.
aan de code te zien is het de DFrobot PH-probe?
je moet dan volgens mij in de code de offset aanpassen aan de hand van het terug gegeven voltage.

ik heb me er ooit eens in verdiept maar vond het teveel werk :p
de potmeter op het printplaatje doet niet heel veel volgens mij
 
#define Offset 0.00 //deviation compensate
deze waarde moet geen 0 zijn als ik het goed heb, je zou even rond kunnen neuzen op plantedtank.net daar zijn meerdere DIY ph meters gemaakt met de DFrobot code, misschien dat ze je daar verder kunnen helpen
 
ik heb de probe via e bay gekocht net als het print plaatje.
deze code heb ik gewoon op internet gevonden en ik zou het ook niet wten of het wel de juiste code is voor dit plaatje en probe.
 
Code:
#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;
}
 
Die had ik zelf ook al gevonden en geprobeerd maar nog steeds niet heel veel er uit weten te krijgen

// the setup function runs once when you press reset or power the board
int CO2Klep =4;
int LED = 7;
int PhElec = 0; // potentiometer wiper (middle terminal) connected to analog pin 3
int Phwaarde = 0;
int Phscherm = 0;
int Phinstpod = 1;
int Phinst = 0;
int Phinstscherm = 0;
#define SensorPin A2 //pH meter Analog output to Arduino Analog Input 2
#define voltOffset -2.50 //offset to calculate voltage
#define phOffset 7.00 //offset to calculate ph
#define Gain 4.0 //gain compensate: (7-6.68)=0.32, gain = (7-4)/0.32=9,38
#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;
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);


void setup() {
// initialize digital pin 13 as an output.
pinMode(CO2Klep, OUTPUT);
pinMode(LED, OUTPUT);
Serial.begin(9600); // opens serial port, sets data rate to 9600 bps
lcd.begin(16, 2);
lcd.setCursor(0, 0);
lcd.print("GemetPh");
lcd.setCursor(0, 1);
lcd.print("inPh");

}
// the loop function runs over and over again forever
void loop() {

Phscherm = map(Phwaarde, 0, 1023, 0, 14);

Phwaarde = analogRead(PhElec); // read the input pin

Serial.println(Phscherm); // print as an ASCII-encoded decimal
Phinstscherm = map (Phinst, 0, 1023, 0,14);
Phinst = analogRead (Phinstpod);
lcd.setCursor(9, 1);
lcd.print(Phinstscherm);
Serial.println(Phinst);

static unsigned long samplingTime = millis();
static unsigned long printTime = millis();
static float phReading,voltage;
if(millis()-samplingTime > samplingInterval)
{
int phRead=1024-analogRead(SensorPin); //changed to 1024-
voltage = voltOffset + phRead*5.0/1024; //AnalogRead 0-1024
phReading = Gain*voltage+phOffset;
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(phReading,2);
digitalWrite(LED,digitalRead(LED)^1);
printTime=millis();
}

lcd.setCursor(9, 0);
lcd.print(phReading);
lcd.print(" ");

if(phReading < 100){
digitalWrite(LED, HIGH); // turn the LED on (HIGH is the voltage level)

}
if (phReading > 105){
digitalWrite(LED, LOW); // turn the LED off by making the voltage LOW
// wait for a second
}
}
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;
}
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<min){
amount+=min; //arr<min
min=arr;
}else {
if(arr>max){
amount+=max; //arr>max
max=arr;
}else{
amount+=arr; //min<=arr<=max
}
}//if
}//for
avg = (double)amount/(number-2);
}//if
return avg;
}
/*
if(pHValue < 100){
digitalWrite(LED, HIGH); // turn the LED on (HIGH is the voltage level)

}
if (pHValue > 105){
digitalWrite(LED, LOW); // turn the LED off by making the voltage LOW
// wait for a second
}*/
 
de waarden zijn wel constant maar gewoon dat als je de electrode in ph buffer van 4 steekt je iets van 14 er uit komt.
 
kan je verschillende waardes meten op de probe zelf als je hem in verschillende vloeistoffen doopt?
verschillen zitten in millivolten op een analoge ph meter
 
Ja dat kan ik wel maar het probleem zit hem in die gain snap niet welke aarden die daarvoor gebruikt
 

Terug
Bovenaan