I’m not familiar with the Adafruit product but I am a big fan of the STM32 line of processors. While using them for non energy monitoring related projects, I’ve often thought what a kick-arse processor they’d make for energy monitoring. The STM32F205 used in that Adafruit product actually has 3 high speed ADCs, each capable of synchronised 0.5usec 12-bit conversions (subject to source impedance).
That means you could do synchronised simultaneous sampling of 1xV and 2xI channels with none of the typical firmware delays associated with starting the ADC conversion. In addition, you can leave it free-running and DMA-ing the results straight into your C array, so you can set things up such that you get a single interrupt to tell you that your 3 big arrays have been loaded with the 3 x thousands of 12-bit samples you requested. It’ll immediately and autonomously go onto to work on the next batch of 3 leaving you with a 120MHz ARM processor to work on the last batch. There is zero CPU involvement in doing the conversions and loading them into your C datastructures.
That’s the theory anyway, and I’ve got one doing just that in an unrelated project. In reality you’ll be limited by:
- which pins Adafruit have chosen to break out for use
- how flexible/powerful Adafruit’s runtime environment is
Almost all of these environments have a tendency to dumb things right down to the simple block-until-complete analogRead() model carried forward from the Arduino world. If you’re prepared to break away from that you can get some stunning performance out of these modern micro-controllers.