Author Topic: Uni-T UT139c LCD biasing and other mods  (Read 28015 times)

0 Members and 1 Guest are viewing this topic.

Offline frozenfrogzTopic starter

  • Frequent Contributor
  • **
  • Posts: 936
  • Country: de
  • Having fun with Arduino and Raspberry Pi
Uni-T UT139c LCD biasing and other mods
« on: February 16, 2017, 10:31:45 am »
Dear forum,

I am looking for some info on biasing the LCD on the UT139c. The issue in question is quite similar to that of the Brymen BM235 described and fixed in this thread and Daves video.
Forum and web search did not turn up anything useful so far. Has anyone reverse engineered said device or are schematics available?

Thanks and best regards from Germany,

Frederik

Edit: After digging a little deeper I managed to find a solution, see detailed reply below.
« Last Edit: February 18, 2017, 06:24:27 pm by frozenfrogz »
He’s like a trained ape. Without the training.
 

Offline frozenfrogzTopic starter

  • Frequent Contributor
  • **
  • Posts: 936
  • Country: de
  • Having fun with Arduino and Raspberry Pi
Re: Uni-T UT139c LCD biasing (schematics avail?)
« Reply #1 on: February 16, 2017, 12:38:56 pm »
From: Kerry Wong's dtm0660l based hack, especially: The translated data sheet, it looks like the LCD Voltage is set by the EEPROM?
I am having difficulties measuring VLCD. I only get 0.5V from VLCD to VSS. What am I doing wrong here? COM to SEG is sort of 3.1 Volt-ish.

Reference from another thread:

Pointers welcome!

Regards,
Frederik

__Edit__

Also: (And maybe I should have asked this in the first place)

How is the biasing on the UT139Cs that you own?

Is this just a one-off problem and I should return the thing to get a new one?
« Last Edit: February 16, 2017, 05:56:11 pm by frozenfrogz »
He’s like a trained ape. Without the training.
 

Offline frozenfrogzTopic starter

  • Frequent Contributor
  • **
  • Posts: 936
  • Country: de
  • Having fun with Arduino and Raspberry Pi
Re: Uni-T UT139c LCD biasing and other mods
« Reply #2 on: February 18, 2017, 06:50:15 pm »
To cut it short:

I found a solution starting from Kerry Wongs article.
The broken out pins on the PCB did somehow not work for me. I bought a SOIC8 programming clip as I thought it might come handy in the future anyway.

Basically this link to STM32duino forums set me up with any additional info I needed.

The EEPROM on the UT139C PCB (full disassembly of the LCD module required) is a T24C02A similar to other meters based on the DTM0660L chip.
I used an Arduino and newly accuired programming clip to dump the EEPROM contents. The sketch of Andy Hulls post over at the STM32duino community is pretty nice and needs just minor adjustments to match an Arduino board of choice.

The factory setting for my meters VLCD was 3.0V (taken from the memory dump). I reprogrammed it to 3.3V and the display is now pretty usable. For my taste, the contrast could still need a little bit more oomph, but I am not complaining. 3.3V is the maximum setting, as the DTM0660L datasheet indicates.

While having the infrastructure set up I am wondering if all UT139 meters are built of the same hardware and just restricted via software. If I happen to find a cheap 139A I will check if I can simply turn it into a 139C as with the Rigol scopes :)
All in all there are a whole lot of hackable parameters to look into!

Anyone wanting more info on the issue, feel free to ask!

Regards,
Frederik

Edit: Added some photos
« Last Edit: February 18, 2017, 07:20:19 pm by frozenfrogz »
He’s like a trained ape. Without the training.
 
The following users thanked this post: Falkra, Marco1971

Offline Kbird

  • Regular Contributor
  • *
  • Posts: 60
  • Country: ca
Re: Uni-T UT139c LCD biasing and other mods
« Reply #3 on: March 12, 2017, 10:19:22 pm »
Thanks for the Post I just opened mine up to try and reset the resolution and change the backlight timeout and discovered that the LCD Backplate (White peice) is now soldered to the PCB which I have not seen in any of the pics about this Hack before .

It appears to be a Rev.4 like yours and I think in your last pic I can see you just carefully bent the white peice (real name ? :) )
up to vertical while you did the mod, is that Correct ?

KB

Uni-T UT-139C
Uni-T UT-210E                  Electronics Noob....
MC-52-0055-6
 
The following users thanked this post: Falkra

Offline frozenfrogzTopic starter

  • Frequent Contributor
  • **
  • Posts: 936
  • Country: de
  • Having fun with Arduino and Raspberry Pi
Re: Uni-T UT139c LCD biasing and other mods
« Reply #4 on: March 13, 2017, 12:00:01 am »
Yes, two LEDs are glued to the white back plate and you need to bend the legs in order to reach the EEPROM.

Also, I got an email from a reseller regarding the display:

(translated from german)
»Thank you for your inquiry for the UT139C.
Unfortunately the manufacturer told us, that it is not possible to make changes to the display in order to improve readability.
However, the UT139 series will soon be equipped with an HTN display instead of the current simpler LCD model. This will ensure optimal readability.«

HTN are a bit better in regard to contrast and viewing angle, compared to TN as the cheapest option - STN or FSTN would be superior to all of these, but also way more expensive.

As shown, there is a slight reserve to set a higher bias, but moving to a better panel is not the worst decision Uni-Trend could come up with. We will see, how this affects retail prices though.
He’s like a trained ape. Without the training.
 
The following users thanked this post: Marco1971

Offline Kbird

  • Regular Contributor
  • *
  • Posts: 60
  • Country: ca
Re: Uni-T UT139c LCD biasing and other mods
« Reply #5 on: March 13, 2017, 03:27:18 am »

Thanks for the reply Frozen , I will probably try your LCD enhancement too , though I think mine maybe a little better than yours was to start but could you post your new eeprom settings please for 3.3v , thx.

KB

Uni-T UT-139C
Uni-T UT-210E                  Electronics Noob....
MC-52-0055-6
 

Offline frozenfrogzTopic starter

  • Frequent Contributor
  • **
  • Posts: 936
  • Country: de
  • Having fun with Arduino and Raspberry Pi
Re: Uni-T UT139c LCD biasing and other mods
« Reply #6 on: March 13, 2017, 07:59:52 am »
The EEPROM dump (factory settings) looked like this:
Code: [Select]
I2C device found at address 0x50
-- : 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F

00 : FF FF FF FF FF FF FF FF FF 52 00 04 01 0C C1 03
10 : 10 27 38 18 4E 02 65 4B 3D 3D FF 3B 0A FF 40 FF
20 : 96 98 58 81 FA 00 32 00 00 80 00 80 A3 7D F3 AD
30 : 4E 02 09 1C 02 09 A6 00 0B 41 14 0A 1C 03 0A 00
40 : 00 01 00 01 00 07 98 00 64 00 64 00 64 00 00 00
50 : 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80
60 : AB 7F E9 80 01 00 8F 2A 00 00 00 00 00 00 00 00
70 : 47 7F 00 80 4A 81 E0 7C D2 2C 00 00 00 00 00 00
80 : 00 00 00 0E 00 10 1E 18 00 00 0C 12 13 07 03 01
90 : 00 00 00 0F 00 11 00 19 00 00 0D 00 15 09 04 02
A0 : 00 00 00 00 00 00 00 00 00 00 00 00 00 0A 00 00
B0 : 00 00 00 00 00 00 00 00 00 00 00 00 00 0B 00 00
C0 : 0D 00 02 20 0D 00 03 20 20 00 03 20 20 00 03 10
D0 : 41 00 03 08 41 00 03 05 41 00 03 05 0D 00 02 20
E0 : E2 F1 0B 80 00 80 00 80 00 80 00 80 00 80 00 80
F0 : 00 80 00 80 00 80 00 80 5A C7 EC 0F 0F 80 00 00
Look out for hex address F9 (in my case value C7).

C7 base 16 converts to 1100 0111 base 2. Bit 3 and 2 hold the value for the LCD supply voltage. Taken from the DTM datasheet, my Uni-T was set to 3.0V, so the new value for 3.3V was: 1100 0011 – or C3 in hex.
Yours may vary, so perform the dump and go with it accordingly.
Just write the single byte at 0xF9.
He’s like a trained ape. Without the training.
 
The following users thanked this post: Falkra, Kbird

Offline Kbird

  • Regular Contributor
  • *
  • Posts: 60
  • Country: ca
Re: Uni-T UT139c LCD biasing and other mods
« Reply #7 on: March 15, 2017, 03:36:48 am »

Thanks for the information Frozen that will certainly be helpful.


KB
Uni-T UT-139C
Uni-T UT-210E                  Electronics Noob....
MC-52-0055-6
 

Offline Kbird

  • Regular Contributor
  • *
  • Posts: 60
  • Country: ca
Re: Uni-T UT139c LCD biasing and other mods
« Reply #8 on: March 15, 2017, 08:26:42 am »

Hi Frozen could you please post or attach your .ino file you used please ? so I can study it and try and learn what is happening and where.

I have a Leonardo , but I don't have a Test Clip and none of the local store do either , since I thought Uni-T at the Factory had programmed it with a Pogo Pin adapter I Soldered in a 5 pin Female header to the VDD,WP, SCL, SDA, and V-  holes , and connected VDD to 3.3v, WP to GND and SCL and SDA to the same pin on the Leonardo , I am unfamilar with V- but thought perhaps it was GND too? , so hopefully I didnt hurt anything but 1st time i plugged the Leo.  in the Meter chirped a few times and I quickly pulled V- out and Windows then recognised the Leo. too.

I Uploaded Kerry Wong's sketch to the Leo thinking that I would then need to somehow dump the EEPROM , or the Sketch would ask questions like I saw in Andy Hull's sketch . Though I can't program Arduino yet I thought the "write" part of Kerry's sketch was commented out , and the Meter still works , ( not fully reassembled yet) I don't remember the Auto time off icon on all the time ?  , and the Backlight now seems to stay on for about 4 minutes ? maybe 4 1/2 minutes..... so something happened.... but maybe it was my V- wire connecting that did it. 

If the Sketch dumped a .hex somewhere , I am not sure where.....

If you know of another write up on this Hack with more in depth instructions that would be great too , thanks.

KB
   
Uni-T UT-139C
Uni-T UT-210E                  Electronics Noob....
MC-52-0055-6
 

Offline frozenfrogzTopic starter

  • Frequent Contributor
  • **
  • Posts: 936
  • Country: de
  • Having fun with Arduino and Raspberry Pi
Re: Uni-T UT139c LCD biasing and other mods
« Reply #9 on: March 15, 2017, 09:55:38 am »
Well..

The unpopulated header (VDD, WP, SCL, SDA, V-) did not work for me - hence the use of an SOIC8 programming clip. You should get one at your local electronics store, or via ebay / amazon.
Deducting from your write up, you did not really understand what the Arduino program does.
Basically the dump is performed via serial write. That means, the contents of the EEPROM will be sent over the serial port and you need to »catch« it with a serial terminal - which happens to be shipped with the Arduino IDE.
Here is my adapted version of the STM32 sketch, but beware: It is messy, because I just changed the parts I needed to make it work on an Arduino Uno without commenting etc.

UT139 EEPROM dump and update
Code: [Select]
// --------------------------------------
// Modified i2c_scanner to find, dump and update a DTM0660 based multimeter EEPROM
// to hack in missing features.
//
// See http://www.kerrywong.com/2016/03/19/hacking-dtm0660l-based-multimeters/comment-page-1/#comment-874169
// for more about hacking this chipset
//
// The i2c scanner code came with the following comments.
// Version 1
//    This program (or code that looks like it)
//    can be found in many places.
//    For example on the Arduino.cc forum.
//    The original author is not know.
// Version 2, Juni 2012, Using Arduino 1.0.1
//     Adapted to be as simple as possible by Arduino.cc user Krodal
// Version 3, Feb 26  2013
//    V3 by louarnold
// Version 4, March 3, 2013, Using Arduino 1.0.3
//    by Arduino.cc user Krodal.
//    Changes by louarnold removed.
//    Scanning addresses changed from 0...127 to 1...119,
//    according to the i2c scanner by Nick Gammon
//    http://www.gammon.com.au/forum/?id=10896
// Version 5, March 28, 2013
//    As version 4, but address scans now to 127.
//    A sensor seems to use address 120.
//
//
// This sketch tests the standard 7-bit addresses
// Devices with higher bit address will not be seen properly.
//
// Additional i2c hints from http://playground.arduino.cc/Code/I2CEEPROM
//
// This code was written for and tested on and STM32F103C8T6 - the so called BluePill -  see http://wiki.stm32duino.com/index.php?title=Blue_Pill
// but should work pretty much unmodified on most 'duinos.
//
// Thanks to the many coding giants, who's shoulders this sketch stands upon.
//
// The hexdump of the 24c02 will appear on the STM32 USB serial device, or UART1, depending on the settings in the IDE.
// See http://stm32duino.com for details of how the serial ports on the STM32F103XX devices are defined.
//
// For most Multimeters, you should be able to use a SOC8 clamp to connect without the inconvenience of soldering to the board.
// Search Ebay for "SOIC8 SOP8 Flash Chip IC Test Clips Socket Adapter BIOS" or similar.

#include <Wire.h>

// #define BLINK_PIN 13   // Unused.. Can be used to assist with debugging.

#define BOARD_POWER 9  // This can theoretically be used to power the multimeter/24c02 since the board draws a few miliamps.
// In the end, I just opted to power the board from 3v3 directly, as this makes manually resetting the multimeter only, easier.

#define BOARD_WP 8     // Pull down WP pin to allow us to write to the 24c02 - by default this is held high by a pullup resistor on the multimeter.

void setup()
{
  // Allow the USB to re-enumerate before we attempt to talk. You can probably shorten this delay considerably.
  delay(30000);
Serial.begin(9600);
  // Using the BluePill, or other STM32F103XX boards, PB6 is SCL => Pin 6 on the 24C02
  //                                                  PB7 is SDA => Pin 5 on the 24C02
  //                                                  PB8 is GPOI used to pull WP (Write Protect) (Pin7) low on the 24C02 to allow writing to the chip.
  //                                                  There is a pullup on WP on the Victor VC921 and probably most other devices, so we need to pull low to write.

  // Power up the multimeter if connected to the BOARD_POWER
  pinMode(BOARD_POWER, OUTPUT);
  digitalWrite(BOARD_POWER, HIGH);

  //Enable writing to the eeprom
  pinMode(BOARD_WP, OUTPUT);
  digitalWrite(BOARD_WP, LOW);
  Serial.println("\nDTM0660 EEPROM dumper and updater.");
  Wire.begin();
  Serial.println("Waiting for DTM0660 POST and  i2c Bus to settle.");
  delay(3000);
}

void loop()
{
  byte error, address;
  int nDevices;
  Serial.println("Scanning...");
  nDevices = 0;
  for (address = 1; address < 127; address++ )
  {
    // The i2c_scanner uses the return value of
    // the Write.endTransmisstion to see if
    // a device did acknowledge to the address.
    Wire.beginTransmission(address);
    error = Wire.endTransmission();
    if (error == 0)
    {
      Serial.print("\nI2C device found at address 0x");
      if (address < 16) {
        Serial.print("0");
      }
      Serial.print(address, HEX);
      Serial.println(" ");
     
      // Dump the current rom values, so we have somthing to fall back on if it all goes pear shaped.
      // NOTE: The 24c02 also contains calibration values, so should be unique to the meter, simply pasting the hexdump from
      //       one meter to another will screw up the calibration.
     
      dump24c02(address);
     
      // Enable serial.
      // NOTE: On some meters, this will break the button matrix, or screw up some other features.
      //       You do this entirely at your own risk.. magic smoke and a dead meter may result.
      //       If in doubt, check whether pin 20 on the DTM0660 looks to be connected to some other circuitry before attempting to enable serial output.
      //       It is however safe to do this on the version of Victor VC921 I have as the Tx pin pad is not connected to anything else.
     
      //enableRS232();

      // Set LCD bias to 3.3V   
      //VLCD();
     
      //Select one of the following three modes.
     
      //enable4000Count();
      //enable6000Count();
      //enable8000Count();
     
      //extendPowerOn();
      nDevices++;
    }
    else if (error == 4)
    {
      Serial.print("Unknow error at address 0x");
      if (address < 16)
        Serial.print("0");
      Serial.println(address, HEX);
    }
  }
  if (nDevices == 0)
    Serial.println("No I2C devices found\n");
  else
    Serial.println("\nDone.\n");

  // Put any changes to bytes immediately after the dump, since that will ensure they hit the found i2c device.
   
  delay(5000);           // Wait 5 seconds then re-scan.
}

void dump24c02(byte i2cAddress)
{
  int addrPointer = 0;
  int romLength = 0xff;    // 24c02 - 256x8 bits (256 bytes)
  byte b = 0;
  Serial.println("-- : 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F");
  while (addrPointer <= romLength)
  {
    if (!(addrPointer % 16)) {
      Serial.print("\n");
      if (addrPointer < 16) {
        Serial.print("0");
      }
      Serial.print(addrPointer, HEX);
      Serial.print(" : ");
    }
    b = i2c_eeprom_read_byte(i2cAddress, addrPointer);  // Read byte
    addrPointer++;                                      // increment address pointer
    if (b < 0x10) {
      Serial.print("0");
    }
    Serial.print(b, HEX);                               // Print byte
    Serial.print(" ");
  }
  Serial.println(" ");
}

byte i2c_eeprom_read_byte( int deviceaddress, unsigned int eeaddress ) {

  Wire.beginTransmission(deviceaddress);
  Wire.write((int)eeaddress);
  Wire.endTransmission();
  Wire.requestFrom(deviceaddress, 1);

  if (Wire.available()) {
    return Wire.read();
  } else {
    return 0xff;
  }
}

void i2c_eeprom_write_byte( int deviceaddress, unsigned int eeaddress, byte data ) {
  digitalWrite(BOARD_WP, LOW);
  delay(100);
  int rdata = data;
  Wire.beginTransmission(deviceaddress);
  Wire.write((int)(eeaddress)); //
  Wire.write(rdata);
  Wire.endTransmission();
  //digitalWrite(BOARD_WP, HIGH);
}

void enableRS232() {
  Serial.println("Enabling RS232");
  i2c_eeprom_write_byte(0x50, 0xFA, 0xCE);
  Serial.println("Done");
}

void extendPowerOn() {
  Serial.println("Extending Power On time");
  i2c_eeprom_write_byte(0x50, 0xFB, 0x1e);
  Serial.println("Done");
}

void VLCD() {
  Serial.println("Setting LCD bias to 3.3V");
  i2c_eeprom_write_byte(0x50, 0xF9, 0xC3);
  Serial.println("Done");
}

void enable8000Count() {
  Serial.println("Enabling 8000 Count Mode");   
  // Enable 8000 Count - Values taken from - this thread. May require a little polishing, but do appear to work.
  // https://www.eevblog.com/forum/testgear/canadian-tire-mastercraft-dmm-new-and-old-revision-teardown/msg928377/#msg928377
  i2c_eeprom_write_byte(0x50, 0x10,  0x40); // Full Scale 0x1F40 - 8000
  i2c_eeprom_write_byte(0x50, 0x11,  0x1F); // Note: Little endian byte swap
  //
  i2c_eeprom_write_byte(0x50, 0x12,  0x41); // Range Up 0x1F41 - 8001
  i2c_eeprom_write_byte(0x50, 0x13,  0x1F); // Note: Little endian byte swap
  //
  i2c_eeprom_write_byte(0x50, 0x14,  0xEE); // Range down value, changed to 750 (0x02EE).
  i2c_eeprom_write_byte(0x50, 0x15,  0x02); // Note: Little endian byte swap
  Serial.println("Done");
}

void enable6000Count() {
  Serial.println("Enabling 6000 Count Mode");   
  // Enable 6000 Count - values similar to 8000 count mode, but based on Kerry Wong's ennoLogic eM860T dump
  i2c_eeprom_write_byte(0x50, 0x10,  0x70); // Full Scale 0x1710 - 5904
  i2c_eeprom_write_byte(0x50, 0x11,  0x17); // Note: Little endian byte swap
  //
  i2c_eeprom_write_byte(0x50, 0x12,  0x17); // Range Up 0x1838 - 6200
  i2c_eeprom_write_byte(0x50, 0x13,  0x71); // Note: Little endian byte swap
  //
  i2c_eeprom_write_byte(0x50, 0x14,  0x44); // Range down value, changed to 580 (0x0244).
  i2c_eeprom_write_byte(0x50, 0x15,  0x02); // Note: Little endian byte swap
  Serial.println("Done");
}


void enable4000Count() {
  Serial.println("Enabling 4000 Count Mode");   
  // Enable 4000 Count - these values are taken from the Victor VC921 unmodified dump.
  i2c_eeprom_write_byte(0x50, 0x10,  0xA0); // Full Scale 0x0FA0 - 4000
  i2c_eeprom_write_byte(0x50, 0x11,  0x0F); // Note: Little endian byte swap
  //
  i2c_eeprom_write_byte(0x50, 0x12,  0x68); // Range Up 0x1068 - 4200
  i2c_eeprom_write_byte(0x50, 0x13,  0x10); // Note: Little endian byte swap
  //
  i2c_eeprom_write_byte(0x50, 0x14,  0x7C); // Range down value, changed to 380 (0x017C).
  i2c_eeprom_write_byte(0x50, 0x15,  0x01); // Note: Little endian byte swap
  Serial.println("Done");
}
I added the VLCD 'subroutine' which is currently commented out from the main loop.
In its current state, you should get the dump via serial terminal without making changes to the EEPROM contents.
Please read through the program carefully and make sure you understand what it does and how it correlates with your EEPROM contents before changing values. There are also a lot of calibration values stored in the EEPROM you do not want to touch ;)

Good luck,
Frederik
He’s like a trained ape. Without the training.
 
The following users thanked this post: Falkra, Kbird

Offline Kbird

  • Regular Contributor
  • *
  • Posts: 60
  • Country: ca
Re: Uni-T UT139c LCD biasing and other mods
« Reply #10 on: March 16, 2017, 03:54:56 am »
Thanks Frozen , You are correct I am New to Arduino too , I started a few months back converting some Old TM HOTAS Joysticks etc to USB, via the Leonardo or Pro Micro and MMJoy2 (custom Firmware) which does not require a whole lot of Arduino knowledge in and of itself , so I appreciate the Help and Hints.

I could not find a SOIC Clip locally and didn't want to wait 30-60 days ...again... the Pro Micros I ordered 2 months ago , have still not arrived , nor has a small 2 port USB KVM which was ordered 6 weeks ago .

Honestly I am not sure if the broken out Pins have worked or not , just not sure why I have a 4 - 4.5 minute Backlight time now :)  , I did not see anything in the Serial Monitor Window though .

I was hoping to just make the BACK-UP of the EEPROM , last night and then spend some time understanding and making the changes , since it is years since I fooled with a HEX Editor.

I did find that Russian Thread here too :

http://kazus.ru/forums/showthread.php?t=112135

one of the Guys there made a Dump Editor , though I don't know if it works for the 139C as well

http://kazus.ru/forums/showpost.php?p=1024371&postcount=531


Thanks again I appreciate it.

KB.

« Last Edit: March 16, 2017, 04:02:47 am by Kbird »
Uni-T UT-139C
Uni-T UT-210E                  Electronics Noob....
MC-52-0055-6
 

Offline frozenfrogzTopic starter

  • Frequent Contributor
  • **
  • Posts: 936
  • Country: de
  • Having fun with Arduino and Raspberry Pi
Re: Uni-T UT139c LCD biasing and other mods
« Reply #11 on: March 16, 2017, 06:30:38 am »
Regarding the SOIC8 clip, you could go DIY with the help of a PCI slot from an old board.
See this thread for reference

Searching for "SOIC8 clip DIY" on the web should also get you various options. :)
He’s like a trained ape. Without the training.
 
The following users thanked this post: Marco1971

Offline Kbird

  • Regular Contributor
  • *
  • Posts: 60
  • Country: ca
Re: Uni-T UT139c LCD biasing and other mods
« Reply #12 on: March 16, 2017, 03:38:59 pm »

Thanks for that link  interesting, I might have to give it a try , as I am not having much luck ordering stuff off AliExpress and other such Sites.

Uni-T UT-139C
Uni-T UT-210E                  Electronics Noob....
MC-52-0055-6
 

Offline frozenfrogzTopic starter

  • Frequent Contributor
  • **
  • Posts: 936
  • Country: de
  • Having fun with Arduino and Raspberry Pi
Re: Uni-T UT139c LCD biasing and other mods
« Reply #13 on: March 16, 2017, 03:57:43 pm »
Yes, AliExpress is mostly cheap crap not worth paying a parcel service to ship stuff from China/Asia.
You might get lucky, but actually you will need to do a whole lot of research ;)
He’s like a trained ape. Without the training.
 

Offline Kbird

  • Regular Contributor
  • *
  • Posts: 60
  • Country: ca
Re: Uni-T UT139c LCD biasing and other mods
« Reply #14 on: March 17, 2017, 06:18:04 am »
Hi FF , actually the 5 socket Female Pin Header I Soldered in to the Breakout Area is working and thanks to your Sketch File I can "see" the EEPROM Dump in Serial Monitor or CoolTerm  , it takes a while to start ...maybe 30 secs as per the sketch , then it Reads the eeprom in a loop but seems to crash after about 8-12 "Prints" to the Terminal Window. I am using a Leonardo , I see you are Using an Uno , is the lockup something that could be caused by that difference do you think?

Still reading up on Serial Terminal , so as yet I have not been able to save the eeprom  but this is what is seen in CoolTerm with a Capture to Text File. From the Dump I can now see my Backlight is indeed 255 secs (FF), or 4 1/4 minutes.

Scanning...

I2C device found at address 0x50
-- : 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F

00 : FF FF FF FF FF FF FF FF FF 52 00 F0 00 DC B9 03
10 : 10 27 38 18 4E 02 65 4B 3D 3D FF 3B 0A FF 40 FF
20 : 51 98 3D 81 FA 00 32 00 00 80 00 80 4B 7D AE B1
30 : 4E 02 09 8D 02 09 CE FF 0A 3C 14 0A CE 02 0A 00
40 : 00 01 00 01 00 07 98 00 64 00 64 00 64 00 00 00
50 : 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80
60 : 9D 7F 04 80 01 00 A5 2A 00 00 00 00 00 00 00 00
70 : 6B 7F 00 80 98 80 E0 7C F3 2A 00 00 00 00 00 00
80 : 00 00 00 0E 00 10 1E 18 00 00 0C 12 13 07 03 01
90 : 00 00 00 0F 00 11 00 19 00 00 0D 00 15 09 04 02
A0 : 00 00 00 00 00 00 00 00 00 00 00 00 00 0A 00 00
B0 : 00 00 00 00 00 00 00 00 00 00 00 00 00 0B 00 00
C0 : 0D 00 02 20 0D 00 03 20 20 00 03 20 20 00 03 10
D0 : 41 00 03 08 41 00 03 05 41 00 03 05 0D 00 02 20
E0 : E2 F1 0B 80 00 80 00 80 00 80 00 80 00 80 00 80
F0 : 00 80 00 80 00 80 00 80 5A C7 FF 0F FF 80 00 00 

Done.

Scanning...

I2C device found at address 0x50
-- : 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F

00 : FF FF FF FF FF FF FF FF FF 52 00 F0 00 DC B9 03
10 : 10 27 38 18 4E 02 65 4B 3D 3D FF 3B 0A FF 40 FF
20 : 51 98 3D 81 FA 00 32 00 00 80 00 80 4B 7D AE B1
30 : 4E 02 09 8D 02 09 CE FF 0A 3C 14 0A CE 02 0A 00
40 : 00 01 00 01 00 07 98 00 64 00 64 00 64 00 00 00
50 : 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80
60 : 9D 7F 04 80 01 00 A5 2A 00 00 00 00 00 00 00 00
70 : 6B 7F 00 80 98 80 E0 7C F3 2A 00 00 00 00 00 00
80 : 00 00 00 0E 00 10 1E 18 00 00 0C 12 13 07 03 01
90 : 00 00 00 0F 00 11 00 19 00 00 0D 00 15 09 04 02
A0 : 00 00 00 00 00 00 00 00 00 00 00 00 00 0A 00 00
B0 : 00 00 00 00 00 00 00 00 00 00 00 00 00 0B 00 00
C0 : 0D 00 02 20 0D 00 03 20 20 00 03 20 20 00 03 10
D0 : 41 00 03 08 41 00 03 05 41 00 03 05 0D 00 02 20
E0 : E2 F1 0B 80 00 80 00 80 00 80 00 80 00 80 00 80
F0 : 00 80 00 80 FF

          this is what is seen ^^^^^ when it locks up  (not always same spot) , resetting the Leonardo usually gets it going again.

but I just had a thought that perhaps I had both Serial Terminals Open by accident and they were both trying to access/connect at the same time...


I have actually asked for my money back after 2 months of waiting for the AliExpress Shipment but the Seller extended the period by another Month and has not returned the Money...


« Last Edit: March 20, 2017, 12:01:53 am by Kbird »
Uni-T UT-139C
Uni-T UT-210E                  Electronics Noob....
MC-52-0055-6
 
The following users thanked this post: Falkra

Offline frozenfrogzTopic starter

  • Frequent Contributor
  • **
  • Posts: 936
  • Country: de
  • Having fun with Arduino and Raspberry Pi
Re: Uni-T UT139c LCD biasing and other mods
« Reply #15 on: March 17, 2017, 07:49:59 am »
Why it locks up, I don't know. But regarding a file of the dump: Just copy and paste the table in a .txt file to save the initial values ;) That is all there is to it.
I would not care to much about the locking up issue, there is no need to cycle through multiple times anyway.
If you are going to write some new values (i.e. C3 instead of C7 for a higher LCD bias), you could also do the writing in the setup loop of the arduino code, so that it is only executed once. There are some other options, for example insert a checking routine and just write to the EEPROM in case the value differs from what it should be, but that is not jet implemented. Maybe I will incorporate something like that in a nicer version :)

Edit: I need to recheck the headers on my device. Somehow I could not find the EEPROM on the I2C, but I have been experimenting with different programs before. Because I wanted to rule out as many problems as possible, I went the SOIC8 clip way, but most likely access to the EEPROM will also work on my board and I just had something wrong in my first attempts.
« Last Edit: March 17, 2017, 07:55:10 am by frozenfrogz »
He’s like a trained ape. Without the training.
 

Offline Kbird

  • Regular Contributor
  • *
  • Posts: 60
  • Country: ca
Re: Uni-T UT139c LCD biasing and other mods
« Reply #16 on: March 17, 2017, 03:29:03 pm »

Ok great , you saved me from a weekend of trying to figure how people were capturing the EEPROM in BINARY/HEX   :)
 
RealTerm has an Option for that by the looks but I couldn't get it to work last night , from my reading so far on this Hack,
no one had mentioned you just need to Copy and paste to Notepad from Serial Monitor to save the EEPROM and I would
not have guessed it was that easy , but I guess I should ask how to write it back to the EEPROM if needed? Just send the text file?
It also appears RealTerm allows the Writing of Single Bytes to specific User assigned I2C addresses , though I have not tried it :)

I got the File from SourceForge but this page has way more info I just found...
https://realterm.sourceforge.io/

My plan was to set 8000 count , and a backlight of 30 secs  and now your LCD voltage Mod too , and not play around with it, (if it ain't broke...)  so this has been a learning experience for sure. I am just hoping that Connecting V- to GND on my 1st hookup attempt has not damaged the EEPROM Calibration somehow as previously I had the standard 15 sec backlight time out (which is now 255sec).

I added the lines below to the script but have not uncommented (//) it or the other options yet to "write them" as I thought I'd let you look and see if I was on the right track ?   Or maybe I'll wait for your "Nicer Version" of the script :)     since I am not sure why the need for looping is needed either but I suspect something else on my Leonardo (USB?) is interrupting the Serial Port and causing the lock up.


   //extendBacklightOn();   // just copied and renamed extendPowerOn();

and       

 void extendBacklightOn() {
  Serial.println("Extending Power On time");
  i2c_eeprom_write_byte(0x50, 0xFC, 0x1e);     // Copied and change Byte From extendPowerOn
  Serial.println("Done");
}


Thanks for the Help...

KB
Uni-T UT-139C
Uni-T UT-210E                  Electronics Noob....
MC-52-0055-6
 

Offline frozenfrogzTopic starter

  • Frequent Contributor
  • **
  • Posts: 936
  • Country: de
  • Having fun with Arduino and Raspberry Pi
Re: Uni-T UT139c LCD biasing and other mods
« Reply #17 on: March 17, 2017, 03:39:23 pm »
Regarding a memory dump that you could just write back to the EEPROM, you would need to do some re-formatting and also write a suitable routine to read from the file and write to each byte.
However, as you should not touch most memory addresses in the EEPROM anyway, you need the original contents as a reference in case you screwed up.
For this use-case the plain text / table is very convenient. You have all the initial values at hand if you want to roll back changes later.
He’s like a trained ape. Without the training.
 

Offline Kbird

  • Regular Contributor
  • *
  • Posts: 60
  • Country: ca
Re: Uni-T UT139c LCD biasing and other mods
« Reply #18 on: March 20, 2017, 12:58:42 am »
Thought I would report back and Thank you again , the Mod is now complete but not without some misadventures :)

Since I had the backup i decided to Run your Sketch with my Leonardo so I un-commented the Enable lines in the Sketch and uploaded it but things didn't go well, I thought I had killed it , every byte that was programmed to be changed in the sketch was changed to FF , so I thought I was totally screwed ,especially when I reassembled the Meter and the display was so low Contrast it could not be seen looking straight on at it, even with the Backlight on.  So after playing around with it and not getting anything to change I went looking for a SOIC8 Clip locally again but had no luck, but while I was out I had a thought that perhaps it was because you used an Uno and I was using a Leonardo , so I purchased a Uno instead to play with ...initially it did not help though.....

The Uno not working either (still FF every time the Sketch ran) made me realise something else was up , and I realised that something was screwing up the Write but not the Read function of the Sketch , which meant probably the WP (Write Protect) Pin was no being pulled low enough. I had it connected to GND for that purpose but then realised the Sketch was defining a Pin for that ie : Pin 8 . Changing that did not help actually, so my next thought was that something was up with the SDA and SCL Pins and on looking really close at your Pics I could see you were using the Uno's A4 and A5, not the Broken out SDA and SCL Pins next to AREF so I switched the wires to them , and the Meter PCB Chirped like it usually does, as I forgot to disconnect the Uno before switching the SDA and SCL wires and since the Sketch was still looping, it wrote the Correct Values almost straight away to my great relief :) , when wired Correctly the Meter PCB Chirps like it usually does , when SDA and SCL are incorrectly wired (along with WP?)  the Buzzer "ticks" or chirps repeatedly fast not normally, this freaked me out initially on my 1st hookup but i didn't know what it was then. The PCB Chirps normally when you access the Serial Port with Serial Monitor or a Serial Terminal such as CoolTerm as well. 

When wired Correctly with WP to Pin8 and the Reference SDA and SCL Pins used not the Broke out pins next to AREF the Leonardo also works
so no need for a UNO after All.

So I now have a nicely Contrasted LCD :)  and a few other adjustments finally....  and a spare Uno :)

With the corrected Wiring I no longer seem to get the lock up in the Serial Terminal/Monitor either.


so here is some Info for Others who find this thread in the future..... (this and more also included in the Modified Sketch below)

BTW I Soldered a 5pin Female Header in which can be left in place if you didn't read the whole thread....

*** the 2nd pic does not show the needed wire in the V- pin header going to ground

   139C Pin     UNO Pin    LEO Pin   

     VDD           3.3v           3.3v
      WP              8               8
      SLC            A5              3
      SDA            A4             2
       V-             GND          GND



and my Adapted Sketch with Commenting

Code: [Select]

 // --------------------------------------
// Modified i2c_scanner to find, dump and update a DTM0660 based multimeter EEPROM
// to hack in missing features.
//
// See http://www.kerrywong.com/2016/03/19/hacking-dtm0660l-based-multimeters/comment-page-1/#comment-874169
// for more about hacking this chipset

// Modified slighty by Kbird March 2017 for Use with OSEPP Uno R4 and to clarify some things for Noobs like myself....
// This Code is not mine, I do not Code, I have simply clarified things for myself and people new to this kind of thing.

// I soldered a 5 pin female Header to the UT139c PCB on the RH side where I beleive Uni-T uses a Pogo Pin Adaptor + Programmer,
// in the 5 Holes ,ie VDD_WP_SLC_SDA_WP_V-  above the two holes labelled CAL (leave these empty), No need to remove the LCD at all.

// When attaching the Uno or connecting to the Serial Port, the Buzzer on the PCB will "Chirp" as normal , as you must have the Meter ON
// to Programme it , it can be in ANY MODE except OFF, so after pulling the Meter's batteries Turn the Dial to V before further disassembly.
// If you hear the Buzzer "Ticking" or chirping Constantly remove the 3.3v pwr wire and Check your wiring or try the ALT SDA and SCL positions

// IF you Find the EEPROM is programmed with FF in the positions you tried to change instead of what was intended Don't panic !
// Check your Wiring especially that WP is to Pin 8 and that V- is to Ground (GND) to allow the Write process....
// And then just let it run again after reconnecting the Uno. ( the Sketch should still be looping , open Serial Monitor to watch progress)

// *** NOTE ALL OPTIONS ARE DISABLED BELOW CURRENTLY ..the sketch will just scan the I2C Bus and print the EEPROM to the Serial Monitor Window
// *** THIS IS YOUR DEFUALT EEPROM ...COPY AND PASTE IT TO NOTEPAD and save it somewhere safe so you have a Copy in case your efforts go sideways

// Using the Uno (or Leonardo) connect the UT139C Pins thus....
 
                                   // VDD Pin  to 3.3v Power pin
                                   // SDA      to A4   pin      ( or Pin2 on Leonardo) *Can also use SDA PIN too if Working -- not working on some Clones 
                                   // SLC      to A5   pin      ( or Pin3 on Leonardo) *Can also use SLC PIN too if Working -- not working on some Clones
                                   // GND      to GND  pin
                                   // WP       to no#8 Pin      (as defined above by ..... #define BOARD_WP 8)

#include <Wire.h>

// #define BLINK_PIN 13   // Unused.. Can be used to assist with debugging.

#define BOARD_POWER 9    // This can theoretically be used to power the multimeter/24c02 since the board draws a few miliamps.
                         // In the end, I just opted to power the board from 3v3 directly, as this makes manually resetting the multimeter only, easier.

#define BOARD_WP 8       // Pull down WP pin to allow us to write to the 24c02 - by default this is held high by a pullup resistor on the multimeter.

                         // ***Attach Meter WP (write protect) Wire to Pin 8 on Uno
void setup()
{
  // Allow the USB to re-enumerate before we attempt to talk. You can probably shorten this delay considerably. Default 30000 (30 Secs)
 
  delay(10000);
Serial.begin(9600);

    // Power up the multimeter if connected to the BOARD_POWER
  pinMode(BOARD_POWER, OUTPUT);
  digitalWrite(BOARD_POWER, HIGH);

  //Enable writing to the eeprom
  pinMode(BOARD_WP, OUTPUT);
  digitalWrite(BOARD_WP, LOW);
  Serial.println("\nDTM0660 EEPROM dumper and updater.");
  Wire.begin();
  Serial.println("Waiting for DTM0660 POST and  i2c Bus to settle.");
  delay(3000);
}

void loop()
{
  byte error, address;
  int nDevices;
  Serial.println("Scanning...");
  nDevices = 0;
  for (address = 1; address < 127; address++ )
  {
    // The i2c_scanner uses the return value of
    // the Write.endTransmisstion to see if
    // a device did acknowledge to the address.
    Wire.beginTransmission(address);
    error = Wire.endTransmission();
    if (error == 0)
    {
      Serial.print("\nI2C device found at address 0x");
      if (address < 16) {
        Serial.print("0");
      }
      Serial.print(address, HEX);
      Serial.println(" ");
     
      // Dump the current rom values, so we have somthing to fall back on if it all goes pear shaped.
      // NOTE: The 24c02 also contains calibration values, so should be unique to the meter, simply pasting the hexdump from
      //       one meter to another will screw up the calibration.
     
      dump24c02(address);
     
      // Enable serial.
      // NOTE: On some meters, this will break the button matrix, or screw up some other features.
      //       You do this entirely at your own risk.. magic smoke and a dead meter may result.
      //       If in doubt, check whether pin 20 on the DTM0660 looks to be connected to some other circuitry before attempting to enable serial output.
      //       It is however safe to do this on the version of Victor VC921 I have as the Tx pin pad is not connected to anything else.
     
     
      // *** Remove the Comment Marks (//) to enable the the following Options ***
     
       
      //enableRS232();

      // Set LCD bias to 3.3V by Removing the // below... Coutesy of FrozenFrog on EEVBlog
       
      //VLCD();
     
      //Select one of the following three modes by Removing the // in front of your choice
     
      //enable4000Count();
      //enable6000Count();
      //enable8000Count();
     
      //extendPowerOn();

      //extendBacklightOn();      // I just copied and renamed extendPowerOn();

      // ADD EXTRA CHANGES HERE  AND DEFINE THEM BELOW
           
      nDevices++;
    }
    else if (error == 4)
    {
      Serial.print("Unknow error at address 0x");
      if (address < 16)
        Serial.print("0");
      Serial.println(address, HEX);
    }
  }
  if (nDevices == 0)
    Serial.println("No I2C devices found\n");
  else
    Serial.println("\nDone.\n");

  // Put any changes to bytes immediately after the dump, since that will ensure they hit the found i2c device.
   
  delay(5000);           // Wait 5 seconds then re-scan.
}

void dump24c02(byte i2cAddress)
{
  int addrPointer = 0;
  int romLength = 0xff;    // 24c02 - 256x8 bits (256 bytes)
  byte b = 0;
  Serial.println("-- : 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F");
  while (addrPointer <= romLength)
  {
    if (!(addrPointer % 16)) {
      Serial.print("\n");
      if (addrPointer < 16) {
        Serial.print("0");
      }
      Serial.print(addrPointer, HEX);
      Serial.print(" : ");
    }
    b = i2c_eeprom_read_byte(i2cAddress, addrPointer);  // Read byte
    addrPointer++;                                      // increment address pointer
    if (b < 0x10) {
      Serial.print("0");
    }
    Serial.print(b, HEX);                               // Print byte
    Serial.print(" ");
  }
  Serial.println(" ");
}

byte i2c_eeprom_read_byte( int deviceaddress, unsigned int eeaddress ) {

  Wire.beginTransmission(deviceaddress);
  Wire.write((int)eeaddress);
  Wire.endTransmission();
  Wire.requestFrom(deviceaddress, 1);

  if (Wire.available()) {
    return Wire.read();
  } else {
    return 0xff;
  }
}

void i2c_eeprom_write_byte( int deviceaddress, unsigned int eeaddress, byte data ) {
  digitalWrite(BOARD_WP, LOW);
  delay(100);
  int rdata = data;
  Wire.beginTransmission(deviceaddress);
  Wire.write((int)(eeaddress)); //
  Wire.write(rdata);
  Wire.endTransmission();
  //digitalWrite(BOARD_WP, HIGH);
}

void enableRS232() {
  Serial.println("Enabling RS232");
  i2c_eeprom_write_byte(0x50, 0xFA, 0xCE);
  Serial.println("Done");
}

void extendPowerOn() {
  Serial.println("Extending Power On time");
  i2c_eeprom_write_byte(0x50, 0xFB, 0x1e);
  Serial.println("Done");
}

void extendBacklightOn() {
  Serial.println("Extending Backight On time");
  i2c_eeprom_write_byte(0x50, 0xFC, 0x1e);          // Copied and change Byte From extendPowerOn
  Serial.println("Done");
}

// COPY AND PASTE void settings here for your Other Byte Changes enabled above


void VLCD() {
  Serial.println("Setting LCD bias to 3.3V");
  i2c_eeprom_write_byte(0x50, 0xF9, 0xC3);
  Serial.println("Done");
}

void enable8000Count() {
  Serial.println("Enabling 8000 Count Mode");   
  // Enable 8000 Count - Values taken from - this thread. May require a little polishing, but do appear to work.
  // https://www.eevblog.com/forum/testgear/canadian-tire-mastercraft-dmm-new-and-old-revision-teardown/msg928377/#msg928377
  i2c_eeprom_write_byte(0x50, 0x10,  0x40); // Full Scale 0x1F40 - 8000
  i2c_eeprom_write_byte(0x50, 0x11,  0x1F); // Note: Little endian byte swap
  //
  i2c_eeprom_write_byte(0x50, 0x12,  0x41); // Range Up 0x1F41 - 8001
  i2c_eeprom_write_byte(0x50, 0x13,  0x1F); // Note: Little endian byte swap
  //
  i2c_eeprom_write_byte(0x50, 0x14,  0xEE); // Range down value, changed to 750 (0x02EE).
  i2c_eeprom_write_byte(0x50, 0x15,  0x02); // Note: Little endian byte swap
  Serial.println("Done");
}

void enable6000Count() {
  Serial.println("Enabling 6000 Count Mode");   
  // Enable 6000 Count - values similar to 8000 count mode, but based on Kerry Wong's ennoLogic eM860T dump
  i2c_eeprom_write_byte(0x50, 0x10,  0x70); // Full Scale 0x1710 - 5904
  i2c_eeprom_write_byte(0x50, 0x11,  0x17); // Note: Little endian byte swap
  //
  i2c_eeprom_write_byte(0x50, 0x12,  0x17); // Range Up 0x1838 - 6200
  i2c_eeprom_write_byte(0x50, 0x13,  0x71); // Note: Little endian byte swap
  //
  i2c_eeprom_write_byte(0x50, 0x14,  0x44); // Range down value, changed to 580 (0x0244).
  i2c_eeprom_write_byte(0x50, 0x15,  0x02); // Note: Little endian byte swap
  Serial.println("Done");
}


void enable4000Count() {
  Serial.println("Enabling 4000 Count Mode");   
  // Enable 4000 Count - these values are taken from the Victor VC921 unmodified dump.
  i2c_eeprom_write_byte(0x50, 0x10,  0xA0); // Full Scale 0x0FA0 - 4000
  i2c_eeprom_write_byte(0x50, 0x11,  0x0F); // Note: Little endian byte swap
  //
  i2c_eeprom_write_byte(0x50, 0x12,  0x68); // Range Up 0x1068 - 4200
  i2c_eeprom_write_byte(0x50, 0x13,  0x10); // Note: Little endian byte swap
  //
  i2c_eeprom_write_byte(0x50, 0x14,  0x7C); // Range down value, changed to 380 (0x017C).
  i2c_eeprom_write_byte(0x50, 0x15,  0x01); // Note: Little endian byte swap
  Serial.println("Done");
}


« Last Edit: April 14, 2017, 06:12:28 pm by Kbird »
Uni-T UT-139C
Uni-T UT-210E                  Electronics Noob....
MC-52-0055-6
 
The following users thanked this post: Falkra, frozenfrogz, Gabriel

Offline Fohdeesha

  • Contributor
  • Posts: 45
  • Country: us
Re: Uni-T UT139c LCD biasing and other mods
« Reply #19 on: April 12, 2017, 06:09:19 am »
I'd like to add a data point - just got done doing this myself using the example sketches above. I changed the LCD bias, and also changed the lcd timeout and power timeout to 0 (so neither ever turns off).

did so just by changing them to:

Code: [Select]
void extendBacklightOn() {
  Serial.println("Extending Backight On time");
  i2c_eeprom_write_byte(0x50, 0xFC, 0x0);          // Copied and change Byte From extendPowerOn
  Serial.println("Done");
}

(just changed the last byte to 0x0)

Using an arduino Uno R3 with the connections mentioned above (I wasn't having any trouble with the scl and sda pins however, they *should* be directly bonded to analog pins 4 and 5 so if they didn't work it could be a bad header). I was hoping I could get away with just holding a header up against the test pad, and that was seemingly working as the script never said "no devices found", however it acted strangely and just scanned forever with no dump output. So I reluctantly opened it up and soldered a header onto the test pad (was able to do it without lifting the lcd up, there's just enough room under there to get a solder tip in).

After doing that of course it worked first try, instantly dumped the eeprom contents. Saved that and then enabled the write subroutines, and they wrote no problem. Now my backlight stays on forever and my LCD is a little more readable. Thanks to all in this thread!

« Last Edit: April 12, 2017, 06:11:14 am by Fohdeesha »
 
The following users thanked this post: frozenfrogz

Offline dimkasta

  • Regular Contributor
  • *
  • Posts: 185
  • Country: gr
Re: Uni-T UT139c LCD biasing and other mods
« Reply #20 on: April 12, 2017, 08:15:57 pm »
I just did this to my two UTs using an old Arduino pro I had around (duemilanove generation). The pinout is the same as in the Uno (same chip)

I confirm that the boards need good voltage and good connections for the communication to work properly.
I thought I could do this using just a header stuck in the holes, but it would just not work.
It finally worked when I pushed the header sideways, forcing it to have a better connection with the programming holes.
I also noticed that it was easier to get a reading when the PW, GND and VCC where close together. Probably because there was less voltage loss in comparison to using the long ground traces on the other side of the board.

Finally, on my second DMM, I could not get a non-ticking connection. I kept moving things around, but no solid connection. But then the sketch started reporting the memory dump and programmed the changes while the main chip was ticking.
I guess we only need a solid connection with the eeprom. The functionality of the main chip is irrelevant, and if I had to guess, it is probably because of low voltage reaching it through the thin wires/traces.

By the way, the lcd mod was virtually worthless. The main problem is the useful viewing angle of the lcd. Even at 3.3V it looks pretty crappy looking it up front.
It would be cool if we could find a replacement :)

Here's a photo of my wiring

« Last Edit: April 12, 2017, 08:21:35 pm by dimkasta »
 

Offline Kbird

  • Regular Contributor
  • *
  • Posts: 60
  • Country: ca
Re: Uni-T UT139c LCD biasing and other mods
« Reply #21 on: April 14, 2017, 06:09:19 pm »
Mine only "ticked" or chirped constantly when it was wired incorrectly I found but I'm not sure which wire it was now... V- to ground perhaps?

SCL and SDA should be the same pinout physically as you say , and I can even with my DMM test they are connected , so I am unsure
why the broken out pins didn't work , unless it is something to do with the sketch programming or that I'm using a Clone not an Official Leo / Uno.


KB.

« Last Edit: April 14, 2017, 06:13:18 pm by Kbird »
Uni-T UT-139C
Uni-T UT-210E                  Electronics Noob....
MC-52-0055-6
 

Offline Nitec0re

  • Newbie
  • Posts: 3
  • Country: ch
Re: Uni-T UT139c LCD biasing and other mods
« Reply #22 on: September 16, 2017, 09:37:07 am »
Hello

My 139C does come next week and I would like to flash the DDM. But I have no skills with the Arduino Board and I dont understand the Code.

Is there someone who can edit the code from #18 for copy/paste for me (bought a original Arduino Uno only for this)? I need two Versions of the Code.

First: ONLY eeprom dump for saving and Backup

Second: A Code for reflash the DMM with 3.3V for the Display, 15min Auto-Off and NO auto-off for the Backlight


Why two separate Codes? Because its much easier for me to handle  8)
« Last Edit: September 16, 2017, 09:39:49 am by Nitec0re »
 

Offline Kbird

  • Regular Contributor
  • *
  • Posts: 60
  • Country: ca
Re: Uni-T UT139c LCD biasing and other mods
« Reply #23 on: September 16, 2017, 05:14:51 pm »
My modified Sketch in No#18 only reads the Eeprom and Dumps the eeprom to the Serial Monitor window on the 1st run, which you then copy and paste to Notepad, and save as your default Eeprom as a Backup. You then need to modify the sketch and uncomment ( // ...delete this) from the 2nd section,reupload the sketch and it will program the eeprom   All the instructions are actually in the Sketch if you read through it....I am no expert , so I tried to make it understandable for Newbies like me and you.

you could simply make two copies of the Sketch , one commented ( no edits) and the other altered and uncommented as needed.

you do need a SOIC Clip or be able to add pins to the PCB to do this as I did.....I soldered mine in and left them for further use.
Uni-T UT-139C
Uni-T UT-210E                  Electronics Noob....
MC-52-0055-6
 

Offline Nitec0re

  • Newbie
  • Posts: 3
  • Country: ch
Re: Uni-T UT139c LCD biasing and other mods
« Reply #24 on: September 17, 2017, 11:16:14 am »
Thank you for the reply.

For the first run I leave the code as it is. And for the second run I have to remove the // in line:

105 for the 3.3V
113 for the extendPowerOn
115 for the Backlight

and I have to change the hex value in line 199 and 205 from 0x1e to 0x0 for manual controlled Backlight and no auto power off - right?
« Last Edit: September 17, 2017, 01:52:53 pm by Nitec0re »
 


Share me

Digg  Facebook  SlashDot  Delicious  Technorati  Twitter  Google  Yahoo
Smf