How about for electrical power system protection using streaming data?

A simple case would be to have a load that is pulling a current. The power is AC, so both the voltage and current would be sinusoidal at about 60 Hz (+/- 0.1 Hz).

The data would be a stream of 16-bit values from an ADC (analog to digital converter) that sampled at 1,000 Hz. If this was saved to a CSV, each row would represent a unique time and contain 2 values (columns) – the current and voltage readings.

Nominal conditions would be:

Steady-state voltage with no current (load is in the off state).

No voltage and no current (load is unplugged).

The startup condition (load on) would be voltage with a momentary current impulse and then the current would level out.

Fault condition could be a short (line to ground) occurs in the load and the current starts to quickly increase and the voltage starts to collapse.

It would be beneficial to detect this as it happens (less than 4 milliseconds would be good) and then cause the circuit breaker to open to minimize damage.

Would this be feasible? How fast might this system respond?

Hi @cpetras,

This is a very interesting project that is definitely feasible using some Neural Network + Anomaly Detection. Adding some DSP functionality beforehand may also be valuable to extract some spectral features or filter out the data (like noisy high frequencies on the line).

Regarding the speed/latency, this will depend on the MCU and also on the window required to classify the data, for instance how long is the startup condition?
As an example if you use a window of 100ms, you have 100 datapoints (1kHz signal) that will be feed into Spectral Analysis block + Neural Network. In this case inferencing on device would take roughly 12ms on an Arduino BLE board, and as low as 3ms on a Cortex-M7.

You can also read more about performances metrics here:

Let me know if that clears things up.