AnsweredAssumed Answered

Can MPR121 sensor be used with ITO PET film touchpads?

Question asked by Kursat Uvez on Apr 23, 2015
Latest reply on May 10, 2015 by Kursat Uvez


It has higher resistance and I am not sure if mpr121 can handle it.

I can't get it to work well, key gets stuck and misses touches frequently.


Here is more info


- The touchpad has about upto 10K resistance on the pads.

- It seems to comply with their ... AN3747.pdf

- Mechanically etched using a plotter


- The baseline and filter values seems to be around 20-70, which is low. Here is the debug info

Filt: 62 25 39 21 24

Base: 72 24 36 20 24

- The current (CDC) is 63uA, CDT 32 usec

I've tried many things and ended up reading all the datasheet and application notes.

Tried autoconfig feature and original Adafruit code , none of them worked well.

It works well with silver ink touchpads that I have made. But they have around 1 ohm resistance.

Below is the modified Arduino code. Uses the default values from quick start quide ... AN3944.pdf


boolean Adafruit_MPR121::begin(uint8_t i2caddr) {



_i2caddr = i2caddr;


writeRegister(MPR121_SOFTRESET, 0x63);



writeRegister(MPR121_ECR, 0x0);


uint8_t c = readRegister8(MPR121_CONFIG2);


if (c != 0x24) return false;


setThreshholds(2, 1, 5);

writeRegister(MPR121_MHDR, 0x01);

writeRegister(MPR121_NHDR, 0x01);

writeRegister(MPR121_NCLR, 0x00);

writeRegister(MPR121_FDLR, 0x00);


writeRegister(MPR121_MHDF, 0x01);

writeRegister(MPR121_NHDF, 0x01);


writeRegister(MPR121_NCLF, 0xFF);

writeRegister(MPR121_FDLF, 0x02);


writeRegister(MPR121_NHDT, 0x00);

writeRegister(MPR121_NCLT, 0x00);

writeRegister(MPR121_FDLT, 0x00);


writeRegister(MPR121_DEBOUNCE, 0);


writeRegister(MPR121_CONFIG1, 0b11111111); // FFI:2 34 samples, CDC:6 63uA

writeRegister(MPR121_CONFIG2, 0b11111110); // CDT:3 32us , SFI:2 18 samples, ESI:3 64 ms


writeRegister(MPR121_ECR, 0b11000101); //CL:2 , ELEPROX_EN:2, ELE_EN:4 Electrodes 0-4 enabled

pinMode(irq, INPUT_PULLUP);


return true;