Reading from a CT Sensor pin affected by Seven Segment Displays switching on and off

It is becoming a bit clearer. The graphs show the calculated voltage in volts at the sensor, not the analog value. Odd that the scale hasn't adapted though.

You should not have the pull up resistor on the analog port. It will still be active for analog readings (I think on AVR at least).

Where did you see the value 0 to 200mV swing of the T12-100 when 48 watts pass through the current transformer ? The ADC (analog pin) will drop any negative part of it. If you haven't explicitly added bias to it and the current transformer consists of only a coil and a burden resistor, there will surely be a negative component to the voltage curve.

The samples should be synchronised to something to ensure an even distribution through out the wave. As it is, there is a risk that say a cluster of the samples are taken at the bottoms of the curves. For the energy measurement algorithms, this is critical.

You can use a timer Arduino Playground - Timer1 (or even millis() ) to ensure that the samples are taken at regular intervals. Maybe 20 samples per wave which, in the case of a 50Hz signal would be one sample per millisecond.

It is clear from the trace that the ZMCT103C output is not smoothed, which is good.

I've modified your code to demonstrate a (crude) method of timing the sample collection.

// CT Sensor Raw Data


int sensorTA12 = A5;
float ReadValue;

uint32_t oldMillis = 0 ;


void setup()
{
  Serial.begin(9600);
  // pinMode(sensorTA12, INPUT_PULLUP); // pinMode not required for analogRead() and no pullup wanted
}

void loop()
{
  if ( millis() != oldMillis )
  {
    // one sample per millisecond
    // ReadValue = ((analogRead(sensorTA12)) * 5.0) / 1024.0;
    ReadValue = ( analogRead(sensorTA12)) ;   // let's see the raw analog value
    Serial.print("ReadValue ...  "); Serial.println(ReadValue);
    oldMillis = millis() ;
  }
}