I ran overnight PIDAutoTune with following parameters:
RelayAmplitude = 0.75 W
Offset = 0.25 W (So Differential Heater switches between -0.5W to 1W)
Setpoint = 34 MHz
Initial Differential Heater (Actuator) = 0 W
Common Heater = 0.5 W
Runtime = 15 hrs
This gave the following results:
Critical Gain, Kc = -12.27416
Critical Time Period = 84.3s (Note the reduction in time from the last measurement)
PID constants: Kp = -2.4548, Ki = -0.05824, Kd = -68.98078
Today, I manually brought the frequency to near 27.3 MHz and switched on the PID with the estimated parameters. It looked like it was doing a good job except for momentary jumps in the actuation. This might be readout error or simply that we need some sort of LPF on the actuation calculation. Even 0.1s actuation on South heater causes a big problem because of huge change in current and because the south heater is a much more effective heater than north.
Just to check my hypothesis, I modified the PIDLocker_beta.py code to create a condition that actuation will be changed only if it is changing by less than 0.5 or if it has been asked to change in last two timesteps. I see that this successful in avoiding the harsh jumps. Now I'm running it to see how it works with an initial error of about 5 MHz. It is much more than I would like to start this PID (for reasons stated below) but I need to go for the weekend now.