I am trying to design a isolated AC current sensor.

I've chosen the AMC1106 Isolated Delta-Sigma Modulator. (change my mind if you think there is a better solution for 220V AC; 2A Max; 0.25%)

The output of this chip is digital signal with the frequency of 5-20MHz

enter image description here

Is there a simple way to decode this? I don't really want to overwhelm my MCU with so frequent interrupts. Should I use shift register to divide it? Should I choose different part altogether? Would it be viable to use I2C ADC and I2C isolator instead?

  • \$\begingroup\$ I think some microcontrollers have sigma delta demodulator peripherals. Does yours? Does RC filtering method work with a sigma delta signal to produce an analog voltage? It kind of looks like it would. \$\endgroup\$ – DKNguyen Apr 2 '20 at 19:01
  • \$\begingroup\$ I do not know if RC filtering can be used to generate analog signal back again, and if so, I am afraid it is going to degenerate the precision. My MCU (EPS32) does not have delta demodulator. \$\endgroup\$ – JacobV Apr 2 '20 at 19:03
  • 1
    \$\begingroup\$ Yeah, I imagine it would degrade the precision. And since it's so dependent on the voltage levels of the digital signal you might need to buffer it so the HI and LO output voltages are much more accurate. Maybe just get an external demodulator or an itty bitty FPGA/CPLD? \$\endgroup\$ – DKNguyen Apr 2 '20 at 19:05
  • \$\begingroup\$ ... tiny FPGA, I would find a use for it even in other parts of the circuit, I will think about it, that's actually interesting note, thanks! \$\endgroup\$ – JacobV Apr 2 '20 at 19:09
  • \$\begingroup\$ How are you powering the hot side? \$\endgroup\$ – Andy aka Apr 2 '20 at 19:45

The ideal way would be to use a digital decimator. From the datasheet, they say The MSP430F67x, TMS320F2807x, and TMS320F2837x microcontrollers, and the AMC1210 integrate these digital filters for seamless operation with the AMC1106.

As it's only a 2nd order modulator, you don't need a high order decimator, 3rd is ideal.

To minimise the MCU workload, set the input clock frequency to the minimum of 5MHz.

One option is to convert the delta sigma output to a voltage level using a 1-bit DAC (ie a buffer) and a lowpass filter to get a continuous voltage, and sample it with the MCU's ADC. Very easy for filtering, not so good for precision.

With a fast enough processor, or with suitable MCU peripherals, you could implement your own decimating digital filter. The fastest option would be to receive the digital data in an SPI interface, parallelise the data into 8 bit bytes, and convert each byte through lookup into a pre-computed partial output of an FIR decimation filter, so you'd need three lookup and two adds at a 5M/8 = 625kHz rate, which you might just manage with an 8MHz ESP32, and certainly with something rather faster, like an M4. An alternative would be direct implementation of a Hogenhaur (CIC) filter at 5MHz (adds at 15MHz)

  • \$\begingroup\$ Oh yeah. That's a good idea. Just use a SPI DMA or something like that. Much easier and larger than an external FIFO. \$\endgroup\$ – DKNguyen Apr 2 '20 at 21:06

One option is to use the AMC1100

It is from the same family of devices you are looking into using, but provides an isolated analogue output. It has an internal filter to reconstruct the pulse density signal enter image description here

if you do want to use that part, then some small CPLD or FPGA would be perfect to then implement a Sinc3 reconstruction filter

Below is a link to an application not from TI on how to interface to a SigmaDelta ADC and how to reconstruct the data (including VHDL)



Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.