I checked that the QPD electronics works as expected, and that I can acquire the signals using the ADCs. A new model (x3cr1) is up and running. It acquires the four quadrants, convert them from counts to volts, and compensate for the analog whitening filter. The four quadrant signals are X3:CR1-Q1_OUT, X3:CR1-Q2_OUT, X3:CR1-Q3_OUT, X3:CR1-Q4_OUT.
A matrix is used to compute the X and Y signals, defined as X = (Q1+Q4-Q2-Q3) and Y = (Q2+Q4-Q1-Q3). The SUM signal is also computed as SUM = (Q1+Q2+Q3+Q4).
Finally, the X and Y signals are normalized with the sum to produce X3:CR1-X_NORM_OUT and X3:CR2-Y_NORM_OUT.
A filter bank (ESD) is connected to the DAC channel #0 to produce the excitation that will be sent to the high voltage amplifier. I checked that the DAC is working properly (adding offsets). The input to the ESD filter bank is in volts.
The normalized X and Y signals, the sum of all four quadrants and the output of the ESD driver filter bank are saved to frames. The model runs at 65kHz.
Here's the first spectrum of the QPD X and Y signals, acquired with the digital system. Roughing and turbo pumps are still on.
The noise floor seems quite non stationary. To be investigated.
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.
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.
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.
Cleaned the chamber in the washing machine at 40m and started 48 baking at 120 C
Ordered the clean room (hardware+hepa filters) and vacuum gauges
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.
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.
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
Some progress on the cleam room: bar fixed to the wall, some more structure built, filters in place. We had to (literally) work around a corner of the low ceiling that we haven't noticed before. More contruction will follow tomorrow. We also had to order some additional parts (more extrusions, brackets, screws, etc...)
The clean room frame is built and secured to the floor and wall. Panels are being installed on the ceiling and back. Also, the optical table has been leveled.
Ceiling, back and side panels are installed. The air filters have been cabled and connected to the power supply.
This morning we installed the clean room curtains and washed them. It turns out that the air filters are supposed to be powered at 277V (?) instead of 115V. So right now the flux is quite low. We are looking into the problem: either replace them with 115V modules or install a small transformer.
We also installed the vacuum chamber on the table and connected all the pumps and gauges. There are no leaks and we could pump down easily the empty chamber. We left for lunch when the pressure was at a few 1e-6 Tor and still going down.
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.
We set up a test facility for laser polishing the disk edges, using the CO2 laser in the TCS laboratory. We focused the beam with a 10" focal length lens, and installed the disk on a "rotation stage" that we motorized with a hand drill. We used a HeNe optical lever and a small container with water to define the horizontal plane and adjusted the disk as well as we could.
We first tested the procedure on the MO02 disk, which is the one already scared with the electrostatic drive burn mark. This disk is now definitely in bad shape. However, we felt confident in our procedure, so we took out the MO03 disk that was into the measurement system and proceeded to laser polish the edges. Things went quite smothly. Unfortunately we added some small damages to the disk surface in a couple of spots where the CO2 laser went out of alignment and melted the fused silica support of the disk. The edge however looks quite good now.
Q measurement is on-going at the timw of writing
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
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.
I finished the first version of the automation software to measure the ring down of the disk modes. I tested it with the new substrate that was installed yesterday. Here are some screenshots and a brief explanation of how it works.
It is based on a Python/Tk GUI, that can be launched on the workstation with the command ~/CRIME/crime.py
The main screen is similar to the following. Once a baseline spectrum is acquired, it is shown in the main panel:
The user should specify the folder and prefix of the result files, and other parameters related to the excitation. The when the "Excite and ring down..." button is pressed, here's what happens
At this point the amplitude of the peaks are continuosly monitored (every second) and thei amplitude shown in a new window. The user can select a subset of the modes for the plotting.
There are some wandering peaks in the spectrum, so some of the peaks aren't actually modes that get excited. This is easily fixed in the post processing of the results.
All peak amplitudes are saved to files in real time, so if you stop the GUI you'll have some partial results.
Improve the optical setup, by increasing the response of the QPD to disk motion.
In all my previous measurement the optical lever was as simple as possible: no lenses were used, and therefore the beam was free to expand over all its path. The estimated arm lever from the disk to the QPD was 1030 mm.
The response of the QPD can be characterized with its optical gain in 1/rad, which is how much the normalized signal (difference / sum) changes for one radians of motion of the disk. This is the product of two parts:
In the case of the old configuration, the beam spot size on the QPD was measured to be about 1.5 mm in radius, so the optical gain is of the order of 1900 /rad.
Since I wanted to improve the optical setup, I first needed to measure the beam coming out of the HeNe laser. I used the WinCam beam profile and a Newport rail to measure the beam X and Y sizes at different positions.
The measurements are not the best ever, but I can still get a fit for the evolution of the gaussian beam, as shown in the plot below. The beam waist is 254 um, located 340 mm behind the laser output (inside the laser tube).
I decided to try a brute force algorithmic optimization for the optical gain. I allow two lenses between the laser and the disk and two lenses between the disk and the QPD. I wrote a MATLAB script that picks the four lenses from a list of all those available (I have a Thorlabs LSB02-A lens kit). For each combination of lenses, MATLAB moves them around into pre-defined ranges, and try to find the maximum value of the QPD total optical gain, which is the product of the factor g above and of the B element of the ray tracing matrix.
It turned out that the best optical gains could almost always be obtained by making the beam huge on the disk (5-10 mm radius) and tiny on the QPD (tens of microns). This is not a good solution. So I decided that the beam on the disk must be smaller than 2mm in radius and the beam on the QPD must be larger than 200 microns. I enforced those limits into the optimization code by weighting the gain with a function which is one in the allowed range, and then quickly drops to zero when either of the beam sizes fall out of the allowed range.
The script ran for about half hour and gave me a lot of possible options. After some inspections, I decided to use the following one, which uses only one lens between laser and disk, and two between the disk and the QPD. Distances and focal lengths are shown below. Note that the first distance (laser to first lens) is from the laser beam waist to the lens, so the actual distance must take into account that the waist is estimated to be 340mm into the laser.
With this configuration the optical gain is computed to be 17000 /rad, or about 9 times larger than the original setup. The beam radius on the disk is 1 mm and on the QPD is 0.23 mm.
First of all I measured some distances:
Using these distanced I build the designed optical setup. Some remarks on the procedure
Here's a picture of the setup, with the optical path highlighted.
In brief, it doesn't work. The magnets and coils are strong enough to push up the ring with a sample inside, but the friction with the three alignment pins is too large and random, so when the current to the coils is increased slowly, the ring doesn't move up smoothly (see first attached video). On the other hand, if the current is switched on abruptly, the ring shoot to the top and stays there. However, if a disk is placed on the support, it is ejected out (see second video). When the current is cut (smoothly or abruptly) the ring doesn't alway comes back to the bottom, but sometimes it stays stuck inclinded.
On the positive side, we probably don't need such a complicated system:
Links to the two videos:
We have a few motorized mounts (with New Focus picomotors) and one controller (an old New Focus 8753, six axis total) that I connected with a makeshift null modem cable to the laboratory workstation (better cabling and power supply coming soon).
I wrote a couple of python scripts that can be used to continuosly read out the QPD values and move the picomotors if needed. It's wortking quite well, so we should be able to use it in the future to keep the QPD centered during the measurement.
The scripts are in the ~/CRIME directory. Launch the function center() in the autocenter.py script.
Samples #433 (annealed and cleaned) and #438 (as received from Mark Optics) are now with GariLynn for deep cleaning.
Sample #438 was broken during annealing.
The parts all fit as expected. They're mounted on the stages.
Yesterday we assembled the lase polishing system. The Co2 laser power can be controlled using a waveplate, so we can turn on the laser at maximum power and let it stabilize, before actually turning up the power sent to the disk.
The beam is focused with a 10" focal length lens, and sent to the disk edge, poiting slightly upward to avoid hitting any other part of the disk.
The disk is moved with a combination of a linear and rotation stage, controlled with a MATLAB script. We tuned the translation and rotation speed so that the edge always moves at about 0.5 mm/s. Some refinement of the movimentation procedure will follow.
We tried the setup with one of the damaged samples, and the results are quite good.
More work this afternoon
Cleaning and baking (200 C air foe SS and 120 for Al) parts for the new vacuum chamber
Today I installed and aligned part of the optical components for the optical lever of the new setup. For the moment being I installed only the input components, and aligned the beams into the vacuum chamber. Since I don't have any in-vacuum optics yet, there's nothing more that can be done now.
Today I cabled and installed the four QPD, in a temporary position. I also assembled four picomotor mounts that will be used for the auto-centering.
This morning I installed in the clean room the high voltage amplifier and the high voltage relays. Everything is cabled as planned. No way to test it yet, since there's nothing in the chamber!
Today I installed the four GeNS systems into the chamber, connected the ESD to the HV feedthrough and put the periscopes in place.
Note 1: the lens holders have been remachined to solve a dimension problem, by removing completely the two lips against which the lens was supposed to be sitting. To recover a reasonable centering of the lens, I added two small shims inside each holder. They are made out of wrapped aluminum foil.
Note 2: I added some small shims (again made of wrapped aluminum foil) below the base plate, to make it as close to horizontal as possible
Finally, I managed to align the optical level beam for the QPD1, using as usual a small container with water to get the horizontal reference.
Some pictures below.
The four optical levers are completely installed and aligned to a horizontal reference.