The real time system seems to be working properly, except for the excitations: we can't activate any excitation using awggui or diaggui
Eric rebuilt the workstation from scratch installing Debian 8.5. All CDS software seem to be working. We setup a ssh-key for ssh'ing into cymac3 and configured the automatic mount of the remote /opt/rtcds.
Small modifications to the optical setup:
We connected the analog output of the vacuum gauge controller to one of the ADC channels. The signal is calibrated so that the pressure is 10^(X3:CR1-PRESSURE_LOGTORR_OUT). Unfortunately the RTG does not know how to compute 10^x...
We can't generate any arbitary signal with the real time model, since awg is not working properly yet. For the moment being I added a uniform random number generator in the model (only option I found for noise) and send it into the ESD filter bank. In this way I can generate band-passed noise.
I plugged in the DAC output to the HV amplifier input, and I could send white noise to the electrostatic drive. Behold: I was able to excite quite a few modes. In the following trace blue is a reference and red is right after I sent white noise (3 V peak to peak) to the disk for a while (less than 1 minute). Excitation stopped at 4:56pm LT.
Using COMSOL and tuning the disk thickness at 1.018 mm I could hit the frequency of the first butterfly mode (1109 Hz) and get a reasobly good estimate of the other modes.
After about half a hour of ring down, most of the modes are gone but the two lowest are still going strong.
Note that the flattish background noise seems to be generated by some sort of glitches. I tried to swap the laser and the power supply, without change. More investigations are needed.
Note that the roughing pump was still on during the test.
The glitches I saw in the data happens roughly every second, even though not exactly on the second. They are suddend jumps on the signal values over one sample, so of clear digital origin
Not so sure anymore...
I was suspecting dust crossing the beam, so I build a very rough enclosure, that should help with dust. I don't think I saw any change in the glitches.
So one might conclude that the glictches are produced by the analog QPD electronics. However, I plugged in a scope and I couldn't see any in the analog signal. But I checked only before the DRV135 stages. I'll need some sort of breakout board to test the output of the DRV135.
Yesterday I could clearly see the glitches as jumps in the time domain plot of X and Y signals, and trace them to somewhat harder to see jumps in the quadrant signals.
One suspect was an intermittend oscillation of the transimpendance amplifier, so I looked into the schematics (D1600196) to see what could be the optimal value of the compensating capacitor C7. Following some useful notes online I computed the optimal value of C7 to be close to 2pF (instead of 10pF). I used 30-35 pF as the QPD capacitance, and 10 MHz has the gain-bandwidth product of the opamp. I swapped all 10pF capacitors with 2pF. After this I can still see the glitches in the spectra, but I can't find them anymore in the time domain. So things seem to have improved, although I still have annoying glitches.
Rich suggested to test the stability of the transimpendance stage by driving the output with a square wave and looking for the signal ringing. Here's his note:
I tried this for both the TI stage and the whitening stage, using 1k and 1uF and a square wave at 10 kHz. Here are the results, which look reasonable to me (firts is the TI, ringing at about 0.5 MHz, second is the whitening, almost no ringing):
So now I'm quite confident that the electronics is working. In the first trace you can see some intermittend background noise, due to the ambient light leaking into the QPD.
More investigations will follow.
So here's the final proof that the glitches I see are digital:
I swapped the ADC board with a second one in the new cymac, but no change: glitches are still there.
[Rolf, Ben, Rich, Gabriele]
Rolf couldn't find any good explanation on the software side for the signals jumps. He investigated a bit the reason why IOP takes a long execution time, without success. It's still mysterious why it ran with low time for a while.
One effect of Rolf activity is that now the signal jumps happen at ~0.8 seconds (after the start of each second) instead that ~0.45. This is suspiciously pointing to a software issue...
Ben and I spent a few hours trying to better understand the origin of the glitches. Finally, we plugged in a function generator to the four ADC channels, and we could find the glitches again, at the expected time. So we could rule out completely that it's a problem of the QPD analog electronics.
Some more ivnestigations:
On a bright side, Rolf recompiled the awgman software, and now excitation channels are working.
Here are two more tests I did this morning
So in conclusion: the problem is in the cymac3 computer, either software or hardware. I tend to excluse an I/O hardware problem, since I used two different ADCs and removed the DAC, without improving the situation.
I measured the properties of the beam on the QPD. The total power is 31 uW. The beam shape is not gaussian, since we are seeing the interference of the reflection from the two surfaces:
The X and Y diameters are 1400 and 1300 microns, so I take the average of the two as an estimate of the beam size: 1300 +- 100 um. I also estimated the lever arm length to be 1.03 +- 0.02 m.
This allows me to esitmate the response of the normalized QPD signal to a tilt of the disk surface:
Plugging in the numbers gives a gain of (1900 +- 300) /rad for the normalized signals. I implemented those numbers in the filter banks: now X_NORM and Y_NORM have units of radians, and measure the disk surface angular motion. I also calibrated the SUM channel in microwatts, using the nominal responsivity of 0.45 A/W and the transimpedance of 200k (gain 11.1 uW/V)
Here's teh calibrated spectrum: note that the background noise is much larger than the real one because of the signal jumps.
I measured the noise sources limiting the QPD sensitivity. Unfortunately, I had to do some MATLAB tricks to get rid of the glitches: basically I load the data directly from the raw frames (NDS access to data is not working yet) and remove all jumps in the signals that happen in one single sample and are larger than a manually tuned threshold. This is not perfect, but it's enough to give us a rough idea of the spectrum of the QPD signal. The following plot shows the QPD_X signal (in units of disk motion, radians) in a few situations:
The total power on the QPD is 30 uW, which correspond to a shot noise limited sensitivity of 4.3e-12 W/rHz. Considering that the signal is the quadrant asymmetry normalized by the total power, the shot noise limited sensitivity is sqrt(2) * SN / Power which once calibrated corresponds to 1.1e-10 rad/rHz.
The following plot shows that shot noise is the dominant source, followed closely by the electronics dark noise. The total agrees perfectly with the measured background noise above 2 kHz. Below that we have some leakage due to the large turbopump peak: this is due to FFT limitations but mostly to unsuppressed glitches.
From the QPD datasheet (Hamamatsu S5981) I learn that the noise equivalent power should be of the order of 2e-14 W/rHz at the sensitivity peak, so probably a factor of two or so worse at the HeNe frequency. It's still much lower than the measured dark noise.
This sensitivity is already pretty good, but we can improve it by increasing the power on the diode. Indeed, 30 uW corresponds to about 2.7 V after the transimpedance, so we could increase the power by a factor 4 and win a factor 2 in the shot noise to dark noise ratio. Probably not worth it, since it will give us only a 30% gain in high frequency noise.
Just to confirm that my noise estimates make sense, here's a plot of the not-normalized QPD signal that gives the X motion (sum and difference of all four quadrants):
This is the signal after compensating for the whitening filter. If I remove this compensation, the following plot gives the noises in terms of the voltage directly in input to the ADC (or in output of the analog board):
So the total "dark" electronic noise is about 13 uV/rHz.
I did a roughly estimate of the sources of electronic noise:
So the total noise at the outoput of the first stage is about 84 nV/rHz. The second stage adds a gain of 30 at high frequency, and negligible noise. So at the output of the whitening we have 2.5 uV/rHz. The DRV135 adds another gain of 2 and a neglegible output noise.
So the total electronic noise at the output of each quadrant is 5 uV/rHz. Since we are combining four of them, the total expected electronic noise is 10 uV/rHz, which is not too far from the measured value.
We are basically dominated equally by the Johnson-Nyquist noise of the TI resistor and by the input current noise of the LT1124. No gain to be obtained by changing the whitening.
The old channel X3:CR1-PRESSURE_LOGTORR does not exist anymore. The new channel is now directly in torr and it is called X3:CR1-PRESSURE_TORR.
I had to write a C function to compute the 10^x operation, since it is not included in the RCG routines. Also it's not possible to include library functions, so I had to write an ad-hoc function, which first compute the integer part of the exponent, and then approximate the fractional part with linear interpolation and a look-up table. Code is in /opt/rtcds/userapps/release/models/pow10.c
This plot shows a signal which is generated purely digitally inside a code that I was testing.
Jumps are present even in this case.
Another addition: I was testing some simple code I was writing. Forget about OUT1 and OUT2, but OUT3 and OUT4 should be simple counters. Here's what I get by running the code on cymac3:
Since it didn't make any sense, I ran the same code on cymac2. Here's the (correct) result:
So there's something wrong even when all-digital signals are generated.
11:25am LT: closed valve between roughing and turbo pumps, switched off both pumps. Turbo pump is slowing down
After lunch I opened the chamber and removed everything from the inside.
The chamber around the vacuum gauge is really dirty now, see picture:
In addition, the electrostatic driver shows some signs of "burn" even though it was still working quite well. Unfortunately, whatever happened contaminated our sample:
As decided at out Red Door meeting, we're going to clean the vacuum chamber and move it to the large table, which will be enclosed in a clean room.
So today we disassembled and packaged the vacuum chamber, which is now ready to be trasnspoted to be cleaned and baked.
Installed the ADC and DAC boards into a proper box. Also, swapped the temporary DAC board (with cale hack) with the final one. Schematics and PCB are in the DCC: D1600196 and D1600301
The box is sitting on top of the cymac computer, on the back, since I don't have any long cable to connect the ADC.
I wrote a C function to reconstruct the amlplitude and frequency of a line. It can be added as a block into a real time monitor. The idea is to use it to track in real time the frequency and amplitude of the disk modes, during the ring down. I did some tests and finally managed to get the function to compile and run on the cymac2 (the crackling lab cymac).
The following plot shows a simulation, since I can't run the code on the new cymac and I don't have the disk installed anymore. The top panel gives the amplitude of a decaying line, and the bottom panel the frequency offset from a reference local oscillator (more below). The nominal values are an initial amplitude of 1, frequency of 1109.375 Hz to be compared to a 1109.0 local oscillator. The fitted decay time is 10.005 seconds, to be comapred with 10 seconds nominal. There is some additive gaussian noise, that causes the ring down to be unmesurable after about 70 seconds of data.
This code will be used for real time estimation of the disk modes, once theot frequency has been roughly estimated with FFTs. The estimation of the frequency work remarkably well. In the first 20 seconds the mean value is 0.3747 Hz, with a standard deviation of 1.5 mHz. When the SNR gets worse (between t=30s and t=50s) the mean value is 0.3745 with a standard deviation of 20 mHz.
Because of the way it's built (see below) the code is sensitive to DC offsets, so the input signal must be high-passed.
The code is based on demodulation of the input signal with a reference local oscillator thta must have a frequency as close as possible to the line we want to track. The inputs to the block are: the signal to be monitored, sine of the local oscillator, cosine of the local oscillator. The outputs are: amplitude squared of the peak, frequency offset in Hz from the local oscillator.
Here's the math. Let's assume that the signal is
and the local oscillator has a frequency f0:
The code multiply the signal by the two local oscillators and average the result over 65kHz / 8 Hz samples. Therefore we get two output streams at 8 Hz which are
Then the sum of the two squared 8 Hz streams give an estimate of the amplitude squared. The code computes this every second
while the arctangent of the ratio gives a phase that varies linearly with time.
For each of the 8Hz samples the code computes the arctangent (using a home-brewed function based on a lookup table, since we can't import math.h in the RCG). It unwraps it, and then every second fit a line to the unwrapped arctangent, to estimate the frequency offset with respect to the local oscillator.
The C function has some parameters hard coded: the main sampling frequency (65536 Hz), the number of points per second to use for the frequency estimation (8 Hz), the fact that the output is computed every second. The first two parameters can be changed, the third one cannot for the moment being.
Today I populated four more QPD boards. All components are installed, except for the QPD themselves.
I finished populating the new four QPD boards, and fixed the first one I populated weeks ago. I tested all five new boards: the output of the transimpendance respond correctly to the ambient light; the output of the whitening also respond correctly and has increased high frequency noise; the differential driver stages are all functional and balanced.
In summary, we have six QPD circuits ready: serial 02 is installed into the box and it has been used for the previous tests. Serial number 01, 03, 04, 05, 06 are not yet into a box, but fully functional. Boxes are ready.
For testing purposed, I also built another ADC interface board: it's complete with the exception of the connector that goes to the ADC.
So I’m sending a 1.123 Hz sinusoid into the ADC, and generating 3.123 Hz sines and cosines in the model. Frequencies are reasonably incommensurable with one second.
I ran a set of COMSOL simulations to determine the dependency of the frequency of each eigenmode on the disk thickness and diameter, within the tolerances. I chose wide ranges: diameter 75.0 +- 0.1 mm and thickness 1.0 +- 0.1 mm, much more than the expected tolerances. It turns out that the frequencies depends almost exactly linearly on both variables: mostly on the thickness and negligibly on the diameter. The following plots shows: the mode shape and frequency (left), the frequency dependency on the two variables (center), the residual of a linear fit and the functional form of the fit (right).
I'm including only the modes that will be measurable by our system (no motion in the center, frequency below 32kHz. Since the disks in my simulation is completely round, I'm showing only one mode for each doublet.
Yesterday I cloned the cymac2 disk and installed it into the cymac3.
Jamie tweaked a few things (I can't really give more details) and now cymac3 is up an running with the same software as cymac2.
I compiled and installed the CR1 model, to readout the QPD. No more jumps in the signals!
To be able to access testpoints and have AWG working I had to follow the hack explained here: Cryo_Lab/781
I tested the following features:
The plot below shows the spectrum of the QPD. For the moment being I'm just sending a straight HeNe beam into the QPD, since the test setup with the disk is no more available. Units are arbitrary
Yesterday we received the prototype of the disk suspension and retain system. Everything looks good. I checked that the disk fits in the holder, and all dimensions are good. The coil holders are out for winding, so I couldn't test the movimentation yet.
I installed a dielectric laser line filter (Thorlabs FLH05633-5, center wavelength 633 nm, FWHM 5 nm) in front of the QPD. In this way we are no more affected by the room light. In the plot below blue is without filter, red with filter. A lot of peaks at high frequency are eliminated by the filter.
The plot below shows the QPD signal quadrant signals in a few different configurations: blue with the room light on and laser off, red with the room light off and laser off, green with the laser on. With the filter installed, when the laser is on we are dominated by its intensity noise, which shows a lot of peaks at high frequency. Those peaks are not completely eliminated by the difference of the quadrants.
Compiled and installed an updated real time model. It acquires the four QPD segments, compute sum and differences, and normalize. I also added three experimental peak tracking components, that will be used to track in real time the amplitude and frequency of the disk modes.
I also created a summary medm screen that can be used to control all the QPD readout. It can be opened from any terminal with the command 'cr1'. I haven't added the peak tracking parts yet.
The X_NORM_OUT and Y_NORM_OUT signals are high passed at 500 Hz, to get rid of low frequency stuff that can affect the peak tracking.
I cross checked the calibration of the sum channel with a power meter. Now all quadnant signals X3:Q?_OUT and the sum signal X3:CR1-SUM_OUT are correctly calibrated in microwatts.
Installed two new 2TB disks into the cymac3. Also, the main disk has a 1TB partition with the operating system, so I created a new 1TB partition. I created a logic volume that spans the three partitions, for a total of about 5TB. This partition is mounted in /mnt/data and linked to the /frames folder. Frames are written to this new logic volume.
Today I started programming part of the user interface that will be used to perform the measurements. Not much implemented so far, but you can get an idea of the look:
Buttons on the left sidebar will allow the user to perform some basic tasks. The main panel has a plot (which will show spectra or ring down measurements) and a log section.
Today I wrote some auxiliary functions that will be useful for the measurement system:
Some progress on writing the user interface:
Now the user can open a file that defines the nominal mode frequencies (from COMSOL simulations) and select which modes to search for:
The plan is that the automation will then inject band limited noise around each nominal frequency, to excite the mode, and then find the exact frequency. The user can set some additional parameters like
Here's how I imagine the mode search to proceed:
The cymac3 internal clock was off by about 10 seconds. When I tried to start the NTP service, I found out that the cymac3 couldn't reach any external server. It turned out that the gateway in /etc/network/interfaces was set to the wrong address. I fixed it and rebooted. Now NTP is working and the time is correct.
This fixed a small issue with diaggui, which always complained about a data receiving error when starting a measurement (although after the complian the measurement could continue)
I assembled the disk suspension sytem and installed into the chamber. Although I don't have the magnets and coils, I installed the movable retaining disk, and used it to center the disk.
I first aligned the input laser using the reflection off the black glass, which turns out to be quite bright and very well visible. Tomorrow I'm going to measure how much power we have in the black glass.
The reflection from the disk is slighlty separated from the reflection from the black glass, so I can block it using an iris.
At 6:50pm I closed the chamber and started the roughing pump. At 7:05pm pressure was below 1 Tor so I started the turbo pump. When leaving pressure is about 1.6e-5 Tor.
Everything is working pretty well. This morning the pressure was about 1.2e-6 Torr. I connected the high voltage amplifier and I could drive the disk without problems.
I measured the beam shape and size at the QPD. We have about 50 uW, we see a TEM01-like mode due to the interference of the two disk surfaces (this is normal). The beam is about 3 mm in diameter. using this information and the estimated optical lever length of 1.2 m, I calbrated the QPD NORM signals in units of angular motion of the disk surface. The computation posted in CRIME_Lab/60 is actually wrong. I'll post the correct one later.
Injecting broadband white noise I could excite all the modes that are visible up to about 30kHz. I tuned the COMSOL model, by changing the thickess of the disk to 1.017 mm, to fit the frequency of the first few modes. Here are the modes I could measure:
Take a look at the attached PDF file for the shape of all the modes, including all that are not visible. We see all the modes we expect to be able to excite with the central suspension of the disk.
The roughing pump is making a lot of non stationary low frequency noise. I turned it off, and the pressure stayed constant at 1.2e-6 Torr over about 1.5 hours. Here's the difference in the QPD spectrum:
It turned out that I have enough excitation authority to knock the disk out of the right place. So I had to vent to recover the situation. I'll open the chamber tomorrow and see what happened.
Here's a first bird eye look at the ring downs. We see beating of the two almost denegerate modes in some cases. Fits will follow, using the procedure I used for the LMA measurements.
Using the first ring down of the day (GPS 1155754513 + 3600 seconds), I computed the amplitude of each of the modes already identified, using a short FFT spectrogram (each FFT is 1 second long, overlap of 0.5 s).
Then I used the same code I developed at LMA to fit the ring down, including the beat between the unresolved mode pairs. The fit is versy sensitive to the initial conditions, so I had to fine tune them for each of the 20 modes. Still, all fits were successful with 30 minutes of work.
Here are all the fits:
And in summary all the measured Qs, which turned out to be larger than what I was expecting, considering that the disk is not annealed.
The analysis code in MATLAB is attached.
Vented the chamber. Installed a new disk (MO 03). The one I measured yesterday is now named MO 02 and it is the one with the "burnt mark" from the previous experiment (due to the electrostatic drive).
Startep roughing pump at 8:50am. Started turbo pump at 9.00am.
Excited the disk at 9:50:30am with white noise, amplitude 10 V. Pumps are still running, pressure is about 2e-6 Torr
At 11:10am I stopped the roughing pump, pressure is 1.4e-6 Torr. Exciting again the disk at 11:10:45am. At 12:25am I checked again the situation, since both measurements look quite weird, especially for the first couple of modes.
I think the reflection from the balck glass is interfering with the reflection from the disk. Probably I wasn't careful enough when I aligned the disk. At about 12:35 I stopped the turbo pump. I'm going to open the chamber and realign everything again.
The last two ring downs I measured today showed a weird behavior of the lowest modes:
Although I'm not 100% sure, I suspect this is related to the fact that the beam reflected from the black glass was so close to the beam reflected by the disk that I could see interference.
So I broke vacuum and improved the setup, adding a peek washer below one edge of the black glass, to wedge it. In this way the reflection from the black glass is largely separated: it misses the upper periscope mirror and it is dumped on a black panel (together with the viewport reflection).
I realigned everything, installed back the disk and started pumping down at 1:30pm.
Roughing pump stopped at about 3:30:30pm. HV amplifier on at 3:33:30pm, excitation at 3:35:30pm. Recentered QPD at 3:36pm
After fixing the setup, the measurement with the new disk looks great. After more than one hour the first two modes are still ringing down, meaning that the Q's are larger than 10 millions.
Here's the comparison of the spectrum before and after the excitation, with the identified modes:
I used about 4200 s of data to fit the ring downs. Most fits are good. In a couple of cases the peak splitting is large and the algorithm fails to fit the beats:
In summary, here are the Q values for all modes. Despite not being annealed, this disk shows very large Q's
I checked the status at about 5:20pm, the turbo pump was in error and spinning down, since the roughing pump has been off for about 1.5 hours.
I let the pump switch off.
Restarted roughing and turbo pump at about 8:10am.
Disk excited at 12:01pm. Exited the room at 12:03pm.
Opened the chamber at about 2:30pm, got the disk out for edge polishing, installed it back at 3:30pm, pumping down at 3:40pm.
Stopped the roughing pump at 4:44:00pm (+60 seconds clean data, GPS 1155944657). Switched on the HV amplifier, excitation at 4:47:30pm. Recentered QPD, clean data from 4:48:30pm (GPS 1155944927)
After a first look at the data, it seems that something went wrong. I restearted the roughing pump and will pump overnight. I found the QPD miscentered, so I centered it again.
Excited again at about 5:46:35pm. Clean data from 1155948460
MO03 - edge polished:
Turbo off, QPD centered, before excitation (60 seconds)
PDT: 2016-08-23 08:42:54.514987
PDT UTC: 2016-08-23 15:42:54.514987
UTC GPS: 1156002191.514987
Excitation (white uniform noise, amplitude 5 V)
PDT: 2016-08-23 08:45:01.007626 PDT
UTC: 2016-08-23 15:45:01.007626 UTC
Clean data for ring-down
PDT: 2016-08-23 08:45:46.448949 PDT
UTC: 2016-08-23 15:45:46.448949 UTC
Restarted roughing pump, QPD got misaligned
PDT: 2016-08-23 10:00:29.259345 PDT
UTC: 2016-08-23 17:00:29.259345 UTC
Band-limited noise, +-10Hz around eahc nominal frequency, amplitude scaled based on the inverse of the peak height obtained with white noise. See attached code and plot
from numpy import *
from noise import *
x = loadtxt('/home/controls/Measurements/2016_08_23/mo_02_laserpolished_frequencies.txt')
freqs = x[:,0]
ampl = x[:,1]
bw = 10
bands = map(lambda x: [x - bw, x + bw], freqs)
a = 1 / (ampl/max(ampl))
a[a>50] = 50.
x = multi_band_noise(bands, a, 10, fs=65536)
x = x / 30
Ring down after:
PDT: 2016-08-23 11:07:02.661145 PDT
UTC: 2016-08-23 18:07:02.661145 UTC
We initially received 20 disks (75 mm diameter, 1 mm thickness) from Mark Optics. Here's their status as of today
All the other disks have been sent back to Mark Optics to grind out flats.
Two good ring-downs measurements were performed on MO-02. The first one was already reported in a previous elog entry. I performed another measurement, and refined the mode identification. I think I had misidentified some modes in my previous analysis. The following plot shows the difference between the modes as predicted by COMSOL and as measured. A clean quadratic trend is visible and fitted:
Here's the spectrum with all the modes:
And the updated Q measurement plot:
A second ring down was measured on Monday morning . Here are the relevant plots:
This is the same disk as before, but almost all Q values are systematically higher. Here's a direct comparison:
I'm not sure what changed between the two measurements, except for a re-alignment of the QPD. The disk might have moved a bit...
Here are the nominal parameters of the disk with flats
A COMSOL simulation gives the frequencies and mode shapes shown in the attached PDF file. Following the list of frequencies and a classification of the mode family (numer of radial nodes, number of azimuthal nodes in a half turn):
I installed one of the new substrates (with flats) into the chamber, and started the pumpdown at about 9:45am LT.
Before that, I removed the retaining ring: tomorrow I'm going to glue the magnet to it.