Sida 1 av 2

Är en pH-mätare en voltdividerar?

Postat: 14 oktober 2014, 13:57:14
av Al_Bundy
Hej!

Jag undrar om en pH-mätare är en voltdividerare?


Bild på min setup
Bild

Voltdividerare
Bild


Vi säger att min ADC är på 10 bit, dvs den kan spotta ut ett tal mellan 0 till 1023, dvs 1024 positioner.

Om jag då läser av spänningen som kommer in till Analog in 0, som bilden visar, då jag t.ex stoppar pH-mätaren i t.ex i en lösnings om är pH-7 så ska den visa ett visst värde t.ex 500 eller 340, och om jag då stoppar pH-mätaren i en lösning som är pH-8 så ska den visa något annat?

Visst är tanken så eller har jag missuppfattat något?

Jag har köpt elektroden från denna sida men tycker koden är så smutsig.

KOD:

Kod: Markera allt

/*
 # This sample code is used to test the pH meter Pro V1.0.
 # Editor : YouYou
 # Ver    : 1.0
 # Product: analog pH meter Pro
 # SKU    : SEN0169
*/
#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;
}
http://dfrobot.com/wiki/index.php/Analo ... KU:SEN0169

Re: Är en pH-mätare en voltdividerar?

Postat: 14 oktober 2014, 14:19:26
av Walle
För det första finns det inget som heter "voltdividerare", det heter spänningsdelare och ingenting annat. En volt är alltid en volt, den går inte att dividera. Precis som att en meter alltid är en meter. Skilj på enheter och storheter.

Sen står det ju klart och tydligt i texten på sidan du länkade till:

The output of pH electrode is Millivolts,and the pH value of the relationship is shown as follows (25 ℃):

Bild

Det är ju bara att titta i tabellen så ser du vilken utspänning du får vid ett visst PH-värde.

Re: Är en pH-mätare en voltdividerar?

Postat: 14 oktober 2014, 14:31:18
av bearing
Precis... spänningsdelare...
En voltdividerare skulle kunna vara en person som argumenterar hit och dit om saltomortaler och liknande.

Det verkar som att en pH-sensor är en galvanisk cell.
http://www.all-about-ph.com/ph-sensor.html

Re: Är en pH-mätare en voltdividerar?

Postat: 14 oktober 2014, 14:34:54
av Nerre
Nu verkar det ju sitta ett kretskort mellan där och det kortet verkar ju ge en analog utsignal som är proportionell mot pH.

Även en spännings-delare ger en analog utsignal, men det är väl det enda de har gemensamt. På en spänningsdelare varierar t.ex. utspänningen om inspänningen varierar (det undrar jag om det gör på pH-mätaren)

Bara för att nåt har anslutningar för "plus", "minus" och "ut" betyder inte att det är en spänningsdelare.

Re: Är en pH-mätare en voltdividerar?

Postat: 14 oktober 2014, 14:44:25
av Al_Bundy
Walle skrev:För det första finns det inget som heter "voltdividerare", det heter spänningsdelare och ingenting annat. En volt är alltid en volt, den går inte att dividera. Precis som att en meter alltid är en meter. Skilj på enheter och storheter.

Sen står det ju klart och tydligt i texten på sidan du länkade till:

The output of pH electrode is Millivolts,and the pH value of the relationship is shown as follows (25 ℃):

Bild

Det är ju bara att titta i tabellen så ser du vilken utspänning du får vid ett visst PH-värde.

Jo, men vi säger att jag stoppar ned pH-mätaren i ett vattenglas och då får jag värdet 500. Hur omvandlar jag det till just mV?

Jag hade mest tänkt på en linjärisera av en formel av dessa värden.
Vi tar ett värde från ph 4, 7 och 10. Sen gör vi en y = kx+m formel av detta där y är ADC värdet, x är ph värdet, k lutning och m är begynelsevärdet.

Re: Är en pH-mätare en voltdividerar?

Postat: 14 oktober 2014, 14:52:15
av Walle
Det har ju inget med PH-sensorn att göra, det handlar om att du måste lära dig hur ADCn fungerar.

Om ADCn har en upplösning på 10 bitar och mäter ett område mellan 0 och 5 volt så betyder ett värde på 500 att det ligger 2.44 volt på ingången. Formeln är enkel: (mätområde/upplösning)*aktuellt värde. Så (5/1024)*500=2.44
Vill du utnyttja ADCns hela mätområde så får du antingen skala mätområdet till signalen, eller skala signalen till mätområdet. D.v.s. när du har max utsignal från givaren så ska ADCn ge 1024 och när du har minimum utsignal från givaren så ska ADCn ge 0.

Re: Är en pH-mätare en voltdividerar?

Postat: 14 oktober 2014, 14:58:25
av bearing
Walle var före igen=)
Jo, men vi säger att jag stoppar ned pH-mätaren i ett vattenglas och då får jag värdet 500. Hur omvandlar jag det till just mV?
Om vi antar att referensspänningen till ADC är 5000mV blir formeln/koden:

Kod: Markera allt

#define adc_reference 5000U
#define adc_resolution 1024

adc_result = 500
milli_volt = adc_reference * adc_result / adc_resolution

Re: Är en pH-mätare en voltdividerar?

Postat: 14 oktober 2014, 15:00:51
av Al_Bundy
Tack.

Jag vet hur en sådan fungerar. Men jag var lite osäker.
Hur som helst: Är en pH-mätare linjär? Typ om jag vill visa ph 6.45 så måste jag nog hitta min egen formel?

Tabellen är linjär så pH-lär vara linjärt.

Re: Är en pH-mätare en voltdividerar?

Postat: 14 oktober 2014, 15:30:15
av Al_Bundy
Måste man utgå från denna tabell?

Re: Är en pH-mätare en voltdividerar?

Postat: 14 oktober 2014, 15:51:32
av 13th.Marine
Eftersom mätaren lämnar negativ spänning så räcker det inte med enkel matning.

EDIT: Jag såg inte att det sitter ett kort där emellan som verkar omvandla det hela.
EDIT2: Denna kodbit kan vara intressant (tagen ur deras exempelkod)

Kod: Markera allt

pHValue = 3.5*voltage+Offset

Re: Är en pH-mätare en voltdividerar?

Postat: 14 oktober 2014, 16:13:23
av bearing
Dock ser det ut som att kortet har en potentiometer för att ställa in förstärkning. Så det där programmet / den där konstanten 3,5 / förutsätter antagligen att man kalibrerar via potentiometern, mot lösningar med känt pH. Det är iaf min gissning.

EDIT: det står ju i texten i länken hur man ska utföra hela kalibreringen, såg jag nu. TS har ju allt serverat på silverfat.

Re: Är en pH-mätare en voltdividerar?

Postat: 14 oktober 2014, 16:55:50
av mac
Att mäta pH elektroniskt är inte trivialt. Sensorn behöver kalibreras ofta mot kända buffertlösningar (som inte är jättebilliga i inköp). Dessutom påverkas mätningarna av temperaturen. När jag pluggade kemi på universitetet la man ofta mer tid på kalibrering än mätning. Kalibrerar man inte får man i regel ganska stor felvisning.

Ska man inte mäta pH jätteofta eller behöver bra precision över ett stort område är det oftast smidigare och billigare med pH-papper.

Re: Är en pH-mätare en voltdividerar?

Postat: 14 oktober 2014, 17:34:40
av Al_Bundy
Jag vet att man kaliberar på offset, men är det inte bättre om man skapar en linjär formel igenom att bara mäta olika ADC värden vid 3 olika lösningar t.ex 4, 7 och 10? Sen skapa en y = km+m formel av detta?

Det kanske går också?

T.ex att 800 = PH 14
och 350 = PH 0

Då är lutningen k = (800-350)/(14-0) = 32.14

Då skulle man kunna räkna ut m också rätt enkelt med lite gymnasiealgebra. :tumupp:

Re: Är en pH-mätare en voltdividerar?

Postat: 14 oktober 2014, 17:48:13
av bearing
Både förskjutning och förstärkning behöver kalibreras. Förskjutningen har de lagt i källkoden, och förstärkningen i en potentiometer.

Din idé för kalibrering låter bättre, förutsatt att variationen på förstärkningen inte är så stor att antalet bitar blir för litet i ena änden.

Re: Är en pH-mätare en voltdividerar?

Postat: 14 oktober 2014, 18:19:47
av Al_Bundy
Yes.

Exakt. Mighty Bundy har alltid rätt :wink:

Jag brukar alltid räkna ut en y = k*x + m formel OM givaren ger linjärt ADC värden.
Jag är helt säker på att metoden från koden ovan fungerar också. Men det blir så bökigt om man ska göra två stycken y = k*x + m formel där ena visa negativt och andra visar positivt.