Multimeter Uni-T UT210E ima čip DTM0660, ki ima objavljeno dokumentacijo o konfiguraciji preko eeproma.
Posledično se da ta multimeter in tiste z enakim čipom (UNI-T 139C, Velleman DV4100, Tekpower TP40, Victor VC921,ennoLogic eM860T) nadgraditi z določenimi opcijami, ki so sicer na voljo samo v veliko dražjih modelih.
Par stvari, ki jih spodnji postopek pofixa:
- Count 6200
- Power off po30min
- Backlight čas 3min
- Alarmi onemogočeni
- NCV prikaz v mV
- DC kot privzet način
Postopek je precej enostaven; rabimo samo en arduino in par žičk.
Najprej je potrebno odstraniti baterije in preklopiti vrteč gumb na "~V".
Potem lahko odstraniš zadnjo stranico.
Nato povežeš vezje z (izklopljenim) arduinotom takole:
Vštekaš arduinota v usb, odpreš serial port monitor v arduino IDE in poženeš kodo:
Izpiše se ti vsebina eeproma (2x). Shrani si jo nekam na varno za backup...
Npr pri meni je bilo:
Nato 1 in 2 byte v 6 vrstici vneseš v 9 in 10 vrtico kode v arduinotu.
Npr moj primer:
Na teh lokacijah imam "1B" in "8B", kar sem dal v arduino kodo takole:
writeByte(I2C_ADDR, 0x56, (byte) 0x1B);
writeByte(I2C_ADDR, 0x57, (byte) 0x8B);
Nato v 69 vrstici odkomentiraš //MODeeprom(); da postane: MODeeprom();
Sedaj ponovno poženeš kodo in arduino bo zapisal nove vrednosti v eeprom.
To je to.
Par fotk (uporabil sem diy pogo pins pripomoček, da mi ni bilo treba nič lotati...)
(pini so zviti namenoma, ker je 1.27mm razmika)
Več o tem hacku: http://www.eevblog.com/forum/testgear/a-look-at-the-uni-t-ut210e/
Posledično se da ta multimeter in tiste z enakim čipom (UNI-T 139C, Velleman DV4100, Tekpower TP40, Victor VC921,ennoLogic eM860T) nadgraditi z določenimi opcijami, ki so sicer na voljo samo v veliko dražjih modelih.
Par stvari, ki jih spodnji postopek pofixa:
- Count 6200
- Power off po30min
- Backlight čas 3min
- Alarmi onemogočeni
- NCV prikaz v mV
- DC kot privzet način
Postopek je precej enostaven; rabimo samo en arduino in par žičk.
Najprej je potrebno odstraniti baterije in preklopiti vrteč gumb na "~V".
Potem lahko odstraniš zadnjo stranico.
Nato povežeš vezje z (izklopljenim) arduinotom takole:
Vštekaš arduinota v usb, odpreš serial port monitor v arduino IDE in poženeš kodo:
Koda:
#include <Wire.h>
const int I2C_ADDR = 0x50;
void MODeeprom() {
Serial.print("\n...Flashing EEPROM...\n");
//Dotless mode calibration data, copied from 0x50, 0x51
writeByte(I2C_ADDR, 0x56, (byte) 0x00);
writeByte(I2C_ADDR, 0x57, (byte) 0x00);
writeByte(I2C_ADDR, 0xFB, (byte) 0x1E); //Power off after 30min
writeByte(I2C_ADDR, 0xFC, (byte) 0xB4); //Backlight time 3min
//Count 6200
writeByte(I2C_ADDR, 0x12, (byte) 0x38);
writeByte(I2C_ADDR, 0x13, (byte) 0x18);
//Alarms disabled
writeByte(I2C_ADDR, 0x16, (byte) 0xFF);
writeByte(I2C_ADDR, 0x17, (byte) 0xFF);
writeByte(I2C_ADDR, 0x18, (byte) 0xFF);
writeByte(I2C_ADDR, 0x19, (byte) 0xFF);
writeByte(I2C_ADDR, 0x1C, (byte) 0xFF);
//With selector in 2A order:
writeByte(I2C_ADDR, 0x87, (byte) 0x1C); //Dotless DCA
writeByte(I2C_ADDR, 0x97, (byte) 0x1D); //Dotless ACA
writeByte(I2C_ADDR, 0xA7, (byte) 0x1C); //Dot DCA
writeByte(I2C_ADDR, 0xB7, (byte) 0x1D); //Dot ACA
//With selector in 20A order:
writeByte(I2C_ADDR, 0x8B, (byte) 0x18); //Dot DCA
writeByte(I2C_ADDR, 0x9B, (byte) 0x19); //Dot ACA
//With selector in NCV Display in mV
writeByte(I2C_ADDR, 0x9C, (byte) 0x02);
writeByte(I2C_ADDR, 0xAC, (byte) 0x1D);
//With selector in 100A order is: (DC)A - (AC)A
writeByte(I2C_ADDR, 0x8D, (byte) 0x1A);
writeByte(I2C_ADDR, 0x9D, (byte) 0x1B);
//With selector in V range order is: V(DC) - V(AC) - V(DC mV) - V(AC mV)
writeByte(I2C_ADDR, 0x8E, (byte) 0x03);
writeByte(I2C_ADDR, 0x9E, (byte) 0x04);
writeByte(I2C_ADDR, 0xAE, (byte) 0x05);
writeByte(I2C_ADDR, 0xBE, (byte) 0x06);
}
void printHex(int num, int precision) {
char tmp[16];
char format[128];
sprintf(format, "%%.%dX", precision);
sprintf(tmp, format, num);
Serial.print(tmp);
}
void setup() {
Serial.begin(9600);
Wire.begin();
Serial.print("\n...Before EEPROM Dump...\n");
dumpEEPROM();
delay(10);
//MODeeprom();
delay(10);
Serial.print("\n...After EEPROM Dump...\n");
dumpEEPROM();
}
void loop() {}
void dumpEEPROM()
{
for (int i = 0; i < 256; i++) {
byte b = readByte(I2C_ADDR, i);
//Serial.print(b, HEX); Serial.print(" ");
printHex(b, 2); Serial.print(" ");
if ((i + 1) % 16 == 0) Serial.println();
}
Serial.println();
}
void writeByte(int i2cAddr, unsigned int addr, byte data) {
Wire.beginTransmission(i2cAddr);
Wire.write(addr);
Wire.write(data);
Wire.endTransmission();
delay(5);
}
byte readByte(int i2cAddr, unsigned int addr) {
byte data = 0x00;
Wire.beginTransmission(i2cAddr);
Wire.write(addr);
Wire.endTransmission();
Wire.requestFrom(i2cAddr, 1);
while (!Wire.available()) ;
data = Wire.read();
return data;
}
Izpiše se ti vsebina eeproma (2x). Shrani si jo nekam na varno za backup...
Npr pri meni je bilo:
Nato 1 in 2 byte v 6 vrstici vneseš v 9 in 10 vrtico kode v arduinotu.
Npr moj primer:
Na teh lokacijah imam "1B" in "8B", kar sem dal v arduino kodo takole:
writeByte(I2C_ADDR, 0x56, (byte) 0x1B);
writeByte(I2C_ADDR, 0x57, (byte) 0x8B);
Nato v 69 vrstici odkomentiraš //MODeeprom(); da postane: MODeeprom();
Sedaj ponovno poženeš kodo in arduino bo zapisal nove vrednosti v eeprom.
To je to.
Par fotk (uporabil sem diy pogo pins pripomoček, da mi ni bilo treba nič lotati...)
(pini so zviti namenoma, ker je 1.27mm razmika)
Več o tem hacku: http://www.eevblog.com/forum/testgear/a-look-at-the-uni-t-ut210e/