AdV-TCS (CO2 laser projector)swinkels, rocchi - 17:50 Friday 20 August 2021 (52930)
Print this reportNew PyALP process to stabilize CO2 power with rotatorThe power of the CO2 lasers shows some small long-term fluctuations, which might be big enough to change the thermal lens of the input mirrors. To get rid of this effect, we implemented a servo using a new PyALP process called PyTCS, which is located in the DAQ chain between FbmMain and FbmAlp. The latter was modified to accept data from the new process. The servo acts on the rotators on the TCS benches via the TCSAgilisRot process. This is similar to what was done in the past using ALP for the rotator on the EIB and on some of the TCS benches many years ago.
For now, we only implemented a simple loop to stabilize the power of the outer DAS ring of the NI (TCS_NI_CO2_PWROUT), which is currently still blocked by a shutter. We will leave it running for the weekend to as a test. The time constant of the loop was set to about 100 seconds, see attached figure.
In the next weeks, we will add similar loops for the other TCS beams. Also still to be done is adding protection against the loop spinning out of control (when you go 'over the top of the fringe) and avoiding useless changes of just a few steps due to the noise of the sensor.
Images attached to this report
Comments to this report:
rocchi, swinkels - 14:34 Monday 23 August 2021 (52937)
Print this report
Checked the behavior of the loop over the weekend (See figure): everything seems ok.
Images attached to this comment
swinkels - 13:32 Friday 31 December 2021 (54367)
Print this reportI upgraded the algorithm so that it can handle the rotators of all 6 CO2 beams on the TCS benches (central heating/inner ring/outer ring for both NI and WI). For each of these, there are 4 new channels stored in the DAQ: XX_MEAN: 10 second running average of the power on the relevant photodiode XX_SET: set-point in Watt XX_ON: on/off switch of the loop, set to 0 or 1 XX_GAIN: servo gain in step/(Watt*second) where XX is TCS_{NI/WI}_CO2_{CH/IN/OUT}. Buttons have been added to VPM to switch the loops on/off and change offset and gain.
On the DAQ side, I had to add the key FDOUT_CONVERT_SERDATA to the config file, since dataDisplay didn't like the fact that two different processes had the same SMS prefix "TCS".
To tune the gain: change the rotator by a decent amount (say 1000 steps) and measure the change in output power to obtain the slope in Watt/step. The gain must then be set to gain = - 1 / (slope * tau), with tau the time constant of the loop (100 second seems to work fine).
Since TCS people were working on the WI bench, I only tuned the gain of the 3 NI loops so far. They have been on since this afternoon and seem to run fine, see attached figure. I will do the WI loops in the next days when possible. I am leaving the 3 loops on for the night, but these should be monitored in the next days, since the algorithm doesn't implement a lot of safety checks yet.
Images attached to this comment
swinkels - 22:03 Wednesday 05 January 2022 (54401)
Print this reportThis afternoon, I managed to also tune the gain of the 3 loops of the WI. Since calibrating the slope takes a bit of time, I wrote a helper script (standard Python, not PyALP) that moves the rotator a bit backwards and forwards to calculate the optimal gain. The servos were working fine for some hours, see fig 1.
Around 18:45 UTC, however, the central heating beam somehow lost so much power that the rotator could no longer compensate, so the loop went crazy and took the waveplate for a few spins, see fig 2. When I discovered the issue, I stopped the loop and put the rotator close to the top of the fringe, to keep the thermal situation closest to how it was. Note that the loop was stabilized at 12.69 Watt (close to where I found it) and during the calibrations went close to 13 W without effort, but the maximum during the full rotations was only 12 Watt, so it seems that at least a Watt was somehow lost. Note that at the same time the issue with the CH started, the rotator of the DAS outer ring also started moving, but in this case the actuator appeared to have enough range to compensate.
I switched off all loops for the night, but we clearly need to think about some safety that switches the loop off in case things go crazy.
Images attached to this comment
swinkels - 22:57 Friday 07 January 2022 (54425)
Print this reportI improved the algorithm a bit, it now has a safety check that switches off a loop it it has an error of more than 0.5 W for longer than 10 minutes. To avoid excess wear on the rotators, I also slow down the loop by a factor 10 (to a time constant of 1000 seconds) when the measured power is within 0.02 Watt of the setpoint. The state of the loop can be seen in the channel TCS_{NI/WI}_CO2_{CH/IN/OUT}_ON, which is 1 when the loop is in fast mode, 2 when it is in slow mode, 0 when it is off and -1 when it is in error.
I am leaving all 3 loops of the NI switched on for the weekend at the same power I found them at.