I want to share that I've been able to modify the EEPROM contents of my AN8008 meters (I have two) using the instructions posted by 12345 a couple posts above and the instructions from the Russian thread. I slightly modified them to use the equipment I have on hand.
I used this EEPROM mod to disable the auto off function and the display backlight timeout. I prefer my meters this way.
I have two AN8008 meters.
I got my first unit in 2017 from aliexpres, it has an 8 digit serial.
I got my second unit in 2018 from banggood, it has a 9 digit serial.
The second unit has a slightly different PCB from my first unit - it has exposed solder covered traces going from the 10A input jack to the fuse and from the fuse to the current shunt. The procedure worked equally well for both units.
Here's the steps I used to modify my EEPROM:
1) I connected the following 3 points on the PCB together: both points marked JP2 and the VPP point. (This step is only necessary if you want to write to the EEPROM. EEPROM reads can be performed if you skip this step.)
2) Then I connected my 3.3V arduino pro mini to the P24C02A EEPROM on the AN8008 using a SOIC clip. I only connected both I2C lines (SDA and SCL) and the GND line. I used 4.7k ohm pull up resistors on each of the I2C lines (the lines are pulled up to the voltage on the arduino's 3.3V pin). (The pull up resistors may not be necessary.)
3) Then I turned the meter on by moving the rotary knob on the multimeter to the voltage position. The batteries should be present in the meter from here on out or the procedure won't work.
4) I ran the following code on the connected arduino. This is a basic I2C EEPROM read and write code that can be used to read and write to a breadboarded EEPROM or to the EEPROM on the AN8008. When the code is run as is, it will simply read the EEPROM contents and dump them to the serial output for you to capture. It's recommended to save the contents of the EEPROM before you make any changes.
/* WIRING: use 3.3V arduino pro mini
*
* 24C02 GND - arduino GND
* 24C02 SDA - arduino SDA (A4) [this line is pulled to VCC (3.3V) using a 4.7k ohm resisor (10k can also work, or the it can be omitted)]
* 24C02 SCL - arduino SCL (A5) [this line is pulled to VCC (3.3V) using a 4.7k ohm resisor (10k can also work, or the it can be omitted)]
*
* the following 3 points should be bridged together on the an8008 for a successful write: both JP2 points and VPP (reading can be done without this)
*/
#include <Wire.h>
#define PRINTHEXORDEC // print the EEPROM in human readable format (for viewing in arduino serial monitor)
//#define PRINTBYTESTREAM // print raw byte data of the EEPROM (for realterm capture)
#define PRINTFORMAT HEX // put HEX or DEC here
#define PRINTSEPARATOR " "
const int myEEPROM = 0x50;
const int myEEPROMsize = 256;
void setup() {
// put your setup code here, to run once:
Wire.begin();
Serial.begin(9600);
delay(10);
//eepwrite(myEEPROM,0xFB,0x00); // disable an 8008 auto power off function
//eepwrite(myEEPROM,0xFC,0x00); // disable an 8008 backlight timeout
#ifdef PRINTHEXORDEC
for (int i=0; i<myEEPROMsize; i++) {
int readbyte = eepread(myEEPROM,i);
if (PRINTFORMAT == HEX) {
if (readbyte <= 0xF) {
Serial.print("0");
}
}
Serial.print(readbyte, PRINTFORMAT);
if ((i+1) % 16 == 0) {
Serial.println();
}
else {
Serial.print(PRINTSEPARATOR);
}
if ((i+1) % 256 == 0) {
Serial.println();
}
}
#endif
#ifdef PRINTBYTESTREAM
for (int i=0; i<myEEPROMsize; i++) {
int readbyte = eepread(myEEPROM,i);
Serial.write(readbyte);
}
#endif
}
void loop() {
// put your main code here, to run repeatedly:
}
int eepread(int deviceAddr, int dataAddr) {
Wire.beginTransmission(deviceAddr);
Wire.write(dataAddr);
Wire.endTransmission();
Wire.requestFrom(deviceAddr,1);
if (Wire.available()) {
return Wire.read();
}
else {
return -1;
}
}
int eepwrite(int deviceAddr, int dataAddr, byte data) {
Wire.beginTransmission(deviceAddr);
Wire.write(dataAddr);
Wire.write(data);
Wire.endTransmission();
delay(10);
}
5) To disable the meter auto off function and backlight timeout, simply uncomment the following two lines and run the sketch again.
//eepwrite(myEEPROM,0xFB,0x00); // disable an 8008 auto power off function
//eepwrite(myEEPROM,0xFC,0x00); // disable an 8008 backlight timeout
You can also set the auto power off and display timeout functions to a custom value.
The byte at address 0xFB defines how long will it take for the auto off function to trigger in minutes. 15min was the default. Set this to 0 to completely disable the function.
The byte at address 0xFC defines how long will it take for the display backlight to turn off after you turned it on in seconds. 120 sec was the default. Set this to 0 to completely disable the function.
You can also use the eeprwrite function in the sketch to write to any address on the EEPROM and perform other mods.
I'm attaching two pictures from the process and the original EEPROM contents from both meters (each once in a readable format and once in raw binary).