I made a script to balance the coils with COILOUTF gains so that each coil creates the same amount of oplev yaw signal at given frequency.
It balances the coils within roughly 8 minutes with default setting.
The script lives in /users/Commissioning/scripts/diagonalization/balanceCOILOUTF.py.
I applied it for SRM.
It should also work for SR2, SR3, and BS but I haven't tested it yet.
It should also work for PRs (LOCKIN module is hidden from the MEDM screen, but they seem to have those in the model).
It does not work for ITMs and ETMs. They don't have LOCKIN modules, and their coils are arranged differently (+ instead of x).
I noticed that the signs of SRM coils are strange.
See this figure from klog #13732. H1_EXC to YAW_DIAG and H2_EXC to YAW_DIAG should have the same sign, but that's not the case.
How come??
Result:
For SRM it was updated with the measurement which has the standard deviation of ~5% with 10 seconds of integration time, 10 averages for each coil.
Demodulation amplitudes (mean): [-324.91433716 277.059198 327.8017395 -284.50724487]
Demodulation amplitudes (stdev in %): [-3.95467175 2.43225212 4.61708457 -3.49204953]
Current COILOUTF gain: [ 0.54900738 -1. 0.48986981 -1.03231169]
New COILOUTF gain: [ 0.46814661 -1. 0.41403971 -1.00528705]
I kept the signs the same as previous ones.
Usage:
usage: balanceCOILOUTF.py [-h] [-f FREQ] [-a AMP] [-d DURATION] [-r REPEAT] OPTIC
Balance the coils with COILOUTF gains by shaking each coil
e.g. balanceCOILOUTF.py SRM
balanceCOILOUTF.py SR2 -f 0.3 -a 5000 -d 10 -r 10
positional arguments:
OPTIC Optic you want to balance the coils (e.g. SRM)
optional arguments:
-h, --help show this help message and exit
-f FREQ Modulation frequency [default=0.3 Hz]
-a AMP Modulation amplitude [default=5000cnts]
-d DURATION Duration of each measurement [default=10sec]
-r REPEAT Number of averages [default=10]
Method:
1. Shakes the mirror by injecting excitation from VIS-%s_TM_LKIN_Y_OSC to each coil.
2. Opens ndscope to monitor coil output channels and oplev pitch/yaw signal.
3. Demodulate VIS-%s_TM_OPLEV_YAW_DIAG with VIS-%s_TM_COILOUTF_H%d_IN1.
4. Repeat the measurement by given number of averages, and take the average.
5. Calculate the gains by taking the ratio with H2.
6. If the user says yes, the script updates the COILOUTF gains.
7. If you noticed some mistakes, Ctrl-C will safely shut down the modulation.