ph-logger from cheap ph meter from DX

of course if i could do that i could make several monitoring stations, the problem however is that i have limited knowledge of electronics, so i i'm somewhat dependent on a little help on the way, i really do not hawe any good tools either, like Oscilloscope etc, i only hawe multimeters.....

is the microcontrollers the same?

esmi83:
LeoPhi - Sparky's Widgets
is the microcontrollers the same?

:smiley:

It probably is a microcontroller, but it is very unlikely it's an atmega32u4 as used in the link mentioned. The arduino-PH-meter-controller uses the same exterior as the chip in your meter, but internally it may differ a lot.

Looking only at their microcontrollers, and only those using this so called tqfp-44 exterior, Atmel (producer of "arduino" chips) sells about 85 different ones and for sure isn't the only one company on the market.

Quite often texts on chips are small /poorly readable, but with a good light and magnifying-glass it's often possible to find out what chip it is. Knowing which one it is may help you/us one step further.
The same is true for the LCD. Could you give us any info you can find on both ?

It's a pity the back is covered with glue. It wouldn't surprise me the rectangular block houses an opamp.

esmi83:
LeoPhi - Sparky's Widgets
is the microcontrollers the same?

They sure look the same.
First of, I'm a total n00b!
To ease talking about the pins I made a pic where I numbered them, no idea if this is a smart way of doing it.

I think all you need is a multimeter to figure this out.
DO NOT TRY THIS UNTIL SOMEONE WITH MORE KNOWLEDGE SAYS IT'S OK, YOU MIGHT DESTROY THE pH METER
Do I remember correctly that the meter gives randon mesurment(numbers jumping everywhere on LCD) when it NOT submerged in anything? If so:
Try measuring the pins (might be easiest at IC end) against ground, while its NOT submerged but ON.
If you get a voltage on almost all pins(we are not looking for a constant voltage, just quick pulses, as the numbers on the LCD randomly change), that would mean the LCD has common ground. Note/post the voltage. Note/post what pin/pins are 0V at ALL time, that would be ground.
If not(or only at 1 or 2 pins) it would have ground at the pins and voltage as common. Shit, I cant imagine this helping you a bit, but... I'll go one...

Lets say you get 3.3v at almost all pins, so we have com ground.
Now turn of the pH meter and take 2 of the 1,5V battery's and connect BAT- to lcd ground pin. Then connect BAT+ to 1k resistor and to LCD pins(one by one) that gave you a voltage when testing before. The 1k Ohm might be to big and the LCD segments dont light up, then you would need to change the resistor to a smaller one. Actually, I'm not even sure if you need a resistor. Oh god, this is not going to end well...
If you get the LCD segmets(you should see just one light up at a time), take note what segment lights up and what pin at that time you are applying voltage to.
Now we would know what combination of pins for example are on/high when the LCD is displaying 1.1. This way I think you could connect the LCD pins to digital input pins(or piso) and get the reading in to your arduino.

I'm totally guessing here, I DO NOT KNOW WHAT I'M TALKING ABOUT so please, help out.

It's a pity the back is covered with glue.

Back side:

Front without microcontroller:

actually it is written something on the chip, but only kelilong's logo and "www.kelilong.com"

Seems a bit strange that a company selling mostly sensors would design its own microcontrollers. But with such numbers of meters/chips sold, printing the name may just have been part of a contract with the chip factory. It's a pity, but that's all it is.

If you have a multimeter, you can check which voltage the chip uses to send data to the lcd. You won't harm the PH-meter by doing that.

The drawings of Samba can be very helpful.

Check 1, I do guess Black/Red wire (battery) will be gnd and positive voltage, but you've got to be sure.

Second part, check what voltage there may be between black and yellow lines.

Keep in mind there may be no difference in voltage on some yellow lines. Should one of the last two numbers displayed for example be 1, only 2 out of 7 segments will be turned on. To see all lines/segments activated one would need an impossible PH of 18.8.

Any way, once you know which voltage the LCD/segments needs, easiest will probably be to start experimenting with the LCD to check which line triggers which segment.

This is still a bit risky since I still don't know which exact LCD-display was used. I did search on 2.5 displays in the last days though and haven't found one that doesn't use a common pin and a pin per segment yet. The number of IO-lines would also perfectly fit.

Samba, if you still have your LCD, could you test it for this project ?
Looking at the board (&datasheets of other LCDs) you won't need a resistor. If you feel safer using one, each segment draws only a few microAmperes, you probably will be able to trigger a segment using a resistor of 10k or higher.
Once we know which line triggers which segment we can almost start programming.

By the way, one thing that came to mind after seeing the meter without chip is that you may... still be able to read the meter. The PH-sensor itself gives a very small voltage, the opamp translates it to a higher voltage after which it is read by an ADC in the microcontroller and printed on lcd. What we've tried so far is looking at the output of a microcontroller, but you can try to read its input as well.
Arduino has an adc as well. If you can find the right pin, it may be possible to analogread it with your arduino.

Simpson_Jr:
Samba, if you still have your LCD, could you test it for this project ?

Unfortunately I don't have it no more. But one is in the mail from China, so I'll have a new fully working one "soon".

Simpson_Jr:
By the way, one thing that came to mind after seeing the meter without chip is that you may... still be able to read the meter. The PH-sensor itself gives a very small voltage, the opamp translates it to a higher voltage after which it is read by an ADC in the microcontroller and printed on lcd. What we've tried so far is looking at the output of a microcontroller, but you can try to read its input as well.
Arduino has an adc as well. If you can find the right pin, it may be possible to analogread it with your arduino.

The sensor part is removed as well, so I'll just have to wait.

What about OP!
Are you still around?

Edit:
I should learn to use kicad or something and make some "proper" drawing of the circuit

yes i am here, but i hawe also broke apart the sensor... i have the lcd though but i do not know how to test it..... I have no tools, only a multimeter.

has anybody done more on this?

I got mine in the mail, but been busy. Ill try to chop it up soon...

nice

i have just ordered one of these

seems easier than ripping a meter apart! (although not as fun)

:slight_smile:

Femur

yes but i hawe to order a new one :slight_smile:

An easier alternative....

A pH meter is simple a voltmeter with a very high input impedance. The output of a pH probe is around -27mV per pH unit.
An easier way to do this would be a High input impedance amplifier with some gain and offset to suit the 0-5v analog input on the arduinos....

Sorry for taking so long with my update.
I got the new meter open yesterday, it seems to be a little different from the old one.
I got 2.5V on some of the pins that I think go to the LCD.

It looks like it might be possible to solder some wires to the pads in the PCB under the LCD and still get the LCD back on and working.

The micro-controller is ICL7106CM44, I think

http://www.digikey.com/product-detail/en/ICL7106CM44/ICL7106CM44-ND/936120

Any ideas what I should now do?
Remove the LCD and try to solder wires to the pads?
But what if I don't get the LCD back on. How do I compare the input on my arduino to the pH, if I cant see it on a LCD?

The ICL7106CM44 is not a micro controller - it's an voltmeter chip

The voltage on it's input can be read by the Arduino analog input.

// Per.

Zapro:
The ICL7106CM44 is not a micro controller - it's an voltmeter chip

The voltage on it's input can be read by the Arduino analog input.

// Per.

Anyone made this work?

Just a word of warning regarding LCDs - they do NOT use DC current like an LED display, so there is little point in measuring voltages on the LCD pins. An LCD actually use AC voltage for the activation of the segments. The common is a phase driver, and it will alternate between 0 and Vcc, while the segments alternate on a reversed phase when they are lit, and the same phase when they aren't. The frequency is usually 30-60 Hz, depending on the specifics of the LCD. Applying DC voltage to an LCD segment for a prolonged time, will result in it fading and not being useable.

Hello everyone,

long time ago I bought this meter, before this thread was abandoned.
but I made it work. ]:smiley:

some notes :

  1. before you yell at me, I have no idea what im doing so if you see I did something wrong please share your knowlage
  2. sorry for my English :roll_eyes:

what I did:
Samba posted the chip name and datasheet, and guynaor said that LCD's drives on AC, and he was right.
After I cracked the case open, I dumped the switch and battaries and connected it to 5VDC.
Mesured the voltage that drives the LCD and it was about 4.6 VAC.
using the datasheet and some tracing with a multimeter I determined that there are 2 full digits used and a half a digit which is the 1, and of course the dot, because I don't care about the dot.
and the conclusion:
Pin BP/GND - its like the common ground for the LCD
Pin AB4 - Drives the "1" first digit
Pins A3-G3 - Drives the second letter
Pins A2-G2 - Drives the third letter (the first after the decimal)
Pins A1-G1 - Not in use (but if you want higher resolution for the pH metering you get it here) I won't be using it

its 15 pins for all segments and one ground
I soldered to each pin a wire (soldering to the LCD pads would be much easier but I wanted it on for debugging)

I took 16 Diodes (1N4001 - this is what I had) and "rectified" the currents, resulting in signals that are about 2.5-2.6 VDC peak
second part is two shift registers (CD2041BE) linked together, every shift register has 8 inputs, so its 16 total.
each input lead connected to ground with a 100K pullup resistor (I think 10K will be enough) and each signal connected to different input pin
Inputs 1-7 -> A3-G3
Input 8 -> AB4
Second chip:
Inputs 1-7 -> A2-G2

made some calculations and matched binary codes to the digits that are showing.
I have used this : http://www.arduino.cc/en/Tutorial/ShiftIn A-LOT, thank you Carlyn Maw
Threw some codes together and got it working :

// Stuffs by AlexShu

int latchPin = 3;
int dataPin = 4;
int clockPin = 2;
int pH_1=0;
float pH_2=0;
float pH=0;

byte switchVar1 = 0;
byte switchVar2 = 0;

void setup() {
  Serial.begin(9600);

  pinMode(latchPin, OUTPUT);
  pinMode(clockPin, OUTPUT); 
  pinMode(dataPin, INPUT);

}

void loop() {

  digitalWrite(latchPin,1);
  delayMicroseconds(20);
  digitalWrite(latchPin,0);

  switchVar1 = shiftIn(dataPin, clockPin);
  switchVar2 = shiftIn(dataPin, clockPin);

 // Serial.println(switchVar1, BIN);
//Serial.println(switchVar2, BIN);

// Translating the first two digits
  switch (switchVar1) {
  case B00000110:
    pH_1=1;
    break;
  case B01011011:
    pH_1=2;
    break;
  case B01001111:
    pH_1=3;
    break;
  case B01100110:
    pH_1=4;
    break;    
  case B01101101:
    pH_1=5;
    break;        
  case B01111101:
    pH_1=6;
    break;     
  case B00000111:
    pH_1=7;
    break;     
    case B01111111:
    pH_1=8;
    break;     
    case B01101111:
    pH_1=9;
    break;     
    case B00111111:
    pH_1=0;
    break;     
        case B10111111:
    pH_1=10;
    break;  
      case B10000110:
    pH_1=11;
    break;
  case B11011011:
    pH_1=12;
    break;
  case B11001111:
    pH_1=13;
    break;
  case B11100110:
    pH_1=14;
    break;    
  case B11101101:
    pH_1=15;
    break;        
  case B11111101:
    pH_1=16;
    break;     
  case B10000111:
    pH_1=17;
    break;     
    case B11111111:
    pH_1=18;
    break;     
    case B11101111:
    pH_1=19;
  default: 
    pH_1=-1;
  }

// Translating the digit after the decimal
 switch (switchVar2) {
    case B00000110:
    pH_2=0.1;
    break;
  case B01011011:
    pH_2=0.2;
    break;
  case B01001111:
    pH_2=0.3;
    break;
  case B01100110:
    pH_2=0.4;
    break;    
  case B01101101:
    pH_2=0.5;
    break;        
  case B01111101:
    pH_2=0.6;
    break;     
  case B00000111:
    pH_2=0.7;
    break;     
    case B01111111:
    pH_2=0.8;
    break;     
    case B01101111:
    pH_2=0.9;
    break;     
    case B00111111:
    pH_2=0.0;
    break;  
  default: 
    pH_2=-1;
  }
  
// Calculating pH  
pH = pH_1+pH_2;
// Avoiding garbage
if (pH>0){
Serial.println(pH);
} else {
  pH = 0;
}


byte shiftIn(int myDataPin, int myClockPin) { 
  int i;
  int temp = 0;
  int pinState;
  byte myDataIn = 0;

  pinMode(myClockPin, OUTPUT);
  pinMode(myDataPin, INPUT);

  for (i=7; i>=0; i--)
  {
    digitalWrite(myClockPin, 0);
   delayMicroseconds(10);
    temp = digitalRead(myDataPin);
    if (temp) {
      pinState = 1;
      myDataIn = myDataIn | (1 << i);
    }
    else {
      pinState = 0;
    }
    digitalWrite(myClockPin, 1);
  }
  return myDataIn;
}

Next plan:

  1. listen to you yelling at me knowing nothing about electronics
  2. get some advice on how to make it better
  3. tidy it up
  4. use it in my project

Aftermath notes:

  1. I don't really know it all those diodes are necessary (but I guess its protecting both sides of the equipment)
  2. Messiest job I ever did, looks like a parallel flux capacitor :stuck_out_tongue_closed_eyes:

some pictures attached, have more, just tell if you need.
I plan to make full description on my blog soon if anybody interested talk to me.
oh, total cost is 11$ for everything, 8$ for the meter (cheapest one is currently 8.25$)

3$ for shift registers diodes and resistors every other thing is scrap i'm sure everyone has

Thank you :slight_smile: