I've made the following changes to the Hartmann sensor code and to the machine running the HWS.
GPSTIME1 = floor(GPSTIME/4E4)*4E4
GPSTIME2 = floor(GPSTIME/2E2)*2E2
I had to add a line in the run_acquire_auto.m script to accommodate this new function and I had to add a function that calculates the peak intensities to the HS_Centroids.m class.
The Hartmann sensor is running continuously and is now recording data to file. The formatting has changed slightly with the data now stored in structures called store_measurement every 200s in files in the following way:
The files are stored in ~/Hartmann_Sensor_Data/centroids/<GPSTIME rounded to nearest 4E4 seconds>/<GPSTIME rounded to nearest 2E2 seconds>_<subname>.mat
~/Hartmann_Sensor_Data/centroids/<GPSTIME rounded to nearest 4E4 seconds>/<GPSTIME rounded to nearest 2E2 seconds>_<subname>.mat
See attached delivery note ...
30mm T-junctions, grounding straps and T-slot covers have arrived
I've set up a quick experiment to modulate the angle of the Hartmann sensor probe beam at 10mHz and to monitor the measured prism. The beam from the SLED is collimated by a lens and this is incident on a galvo mirror. The reflection travels around 19" and is incident on the HWS. When the galvo mirror is sent a 1.1Vpp sine wave, then beam moves around +/- 0.5" on the surface of the Hartmann sensor, giving around 50mrad per Vpp.
The galvo is currently being sent a 0.02Vpp sine wave at 10mHz.
I changed the drive amplitude on the function generator to 0.05Vpp and have measured the angle of deflection by bouncing a laser off the laser mirror and projecting it 5.23m onto the wall. The total displacement of the spot was ~3.3mm +/- 0.4mm, so the amplitude of the angular signal is 1.6mm/5.23m ~ 3.1E-4 radians. The Hartmann Sensor should measure a prism of corresponding magnitude.
The frequency is still 10mHz.
I analyzed the results from the prism experiment. The time series and spectra of the prism are attached.
Conclusions to follow ...
I restarted the Athena box and created an MEDM screen that shows the 8 differential input voltages next to their corresponding inputs on the breakout terminal strip. See the attached image. The MEDM screen is located at /home/controls/TCS_athena01_input_screen.adl on tcs_daq.
Channel 1 in the Athena is taking the output from the first channel in the temperature sensing box. That is connect to an RTD in the Hartmann sensor. The three other resistors in the Wheatstone bridge that the RTD is connected to have resistances of 1130 Ohms. There is 7V across the bridge and it has 100x gain afterwards (50x gain stage + 2x gain in single to differential output). The thermistor has temperature dependence K = 0.00385 Ohms/Ohm/degree K for 1000Ohms at 0 degrees.
R = 1000*EXP(K *delta T)
delta T = LOG(R/1000)/K
I have configured some EPICS channels on the softIoc on the Athena box to display the voltage across the thermistor, calculate its resistance and then calculate the temperature in a linear and exponential fashion. These are stored in /target/TCS_westbridge.db on tcs_daq.
The calibration of DEGREES_LOG is incorrect (or at least, the sign is). Fix this please.
Added the following to the frame builder in /cvs/cds/caltech/chans/daq/C4HWS.ini and restarted daqd as per instructions in http://nodus.ligo.caltech.edu:8080/TCS_Lab/29
I've set up an experiment to test the HWS intensity distribution displacement measurement code. Basically the beam from a SLED is just reflecting off a galvo mirror onto the HWS. The mirror is being fed a 0.02Vpp *10 gain, 10mHz sinewave from the function generator.
The experimental setup is shown below.
I hacked the HWS code to export the Gaussian X and Y centers to Seidel Alpha and Beta channels in EPICS (C4:TCS-HWSX_PSC_ALPHA, C4:TCS-HWSX_PSC_BETA)
I added the four Athena DAC channels to the second BNC patch panel in the rack. At the moment there are only two EPICS channels in the database:
Given that the HWS requires several 2" optics to handle the big beam size, I've ordered the following items from Newport:
I installed the pyepics package on princess_sparkle since this is much easier under Ubuntu than under CentOS.
sudo apt-get install python-dateutil python-setuptools
Then I started the following python script ~/start_test_channels.py in the background on princess_sparkle. The EPICS channels are actually in an IOC on tcs_daq. They are all acquired by the frame builder at 16Hz.
Under edit ...
I added the names of the network machines to the /etc/hosts file on princess_sparkle, tcs_daq and tcs_ws.
I also added the /cvs drive on fb1 to the /etc/fstab file on princess_sparkle so that can be accessed from those machines.
I labelled and strung 8 of the 16 custom 40' BNC cables from L-Com between the HWS table and the BNC feed-through on the rack. Each cable is labelled HWS TABLE CHxx where 01<= xx <= 08. I'm going to leave the other 8 until we have room in the BNC feedthrough on the rack.
I changed the ownership of /opt/EDTpdv to controls with the command:
controls@princess_sparkle:/opt/EDTpdv$ sudo chown controls EDTpdv/
From Won: (the zip file is also on the SVN /users/won/compiled_code/test_HS.zip)
Attached is test_HS.zip file, that contains
- test_HS.prj: project file created by Matlab Compiler. This file is not
required to run the application but I included it just in case someone's
- test_HS folder contains two subfolders src and distrib, each of which
contains the standalone application test_HS.
Usage: test_HS <path to the image folder>, for example
Make sure you create the folder prior to running the application, and the
folder name ends with "/". Running test_HS will take and save 10 images
using the camera (provided the frame grabber applications are installed in
/opt/EDTpdv), averages those 10 images and find centroids, then plots the
As I put in the eLOG, one needs MCRInstaller.bin and run it to install MCR
(probably 2008b 64bit version to test my files). If there are difficulties
getting MCRInstaller, let me know.
I located the MCRInstaller on our distribution of MATLAB on the Ubuntu machine (/MATLAB_R2009b/toolbox/compiler/deploy/glnxa64/MCRInstaller.bin). I ran the installer, as root,and followed the default options to install it. Next I updated the .bashrc file to include the necessary pointers to various libraries:
I've downloaded the test_HS binary from the SVN and added the ~/test_images/ directory as recommended by Won. I then ran the code by entering ./test_HS ~/test_images/
The code ran successfully through the serial_cmd access and the image acquisition process and only crashed when it tried to access the variable mes_message. This indicates a run-time error, not a compilation error. If you examine lines 751 and 752 of HS_Camera.m you can see the typo (mes_meesage vs mes_message) in the code that is the source of the error:
mes_meesage = ['Intensity too high: ',fobj.name];
Here's the output:
:~/Hartmann_Sensor_SVN/users/won/compiled_code/test_HS/test_HS/distrib$ ./test_HS ~/test_images/
The camera is accessible.
G E N E R A L C A M E R A S E T T I N G S:
Camera Model No.: DS-22-01M60-11E
Camera Serial No.: 04437062
Sensor Serial No.: 0411218
Tap 1 Gain: 0
Tap 2 Gain: 0
Firmware Design Rev.: 03-81-00070-03 Sep 30 2004
DSP Design Rev.: 17.3
Video Mode: Normal Operating Mode
Data Mode: 12 bit
Binning Mode: 1x1
Gain Mode: 1x Output Gain Mode
Output Configuration: 2 Tap
Exposure Control: enabled
Exposure Mode: 2
SYNC Frequency: 8 Hz
Exposure Time: 123646.66 uSec
executing /opt/EDTpdv/take -s 1 -l 10 -f /home/controls/test_images/test ...
??? Undefined function or variable "mes_message".
Error in ==> HS_Camera>HS_Camera.read_raw at 752
Error in ==> HS_Camera>HS_Camera.read_from_folder at 668
Error in ==> HS_Camera>HS_Camera.read_from_fg at 721
Error in ==> HS_Camera>HS_Camera.read_images at 590
Error in ==> test_HS at 9
Build an application that uses HS classes
I wrote a simple script test_HS.m that takes and saves 10 images using the camera, averages the images and finds centroids. Thus the script requires the class files HS_Base, HS_Camera, HS_Image, and HS_Centroids.
I added those four class files by right-clicking Other Files (found below Main function) then choosing Add File, then clicked the build icon.
The attached file shows the output of the command. The maximum average frame rate is 57.2Hz when the nominal frame rate was 58Hz:
/opt/EDTpdv/take -f max_frame_rate_image -l 120 -N 4 -d > max_frame_rate_data.txt
I measured the prism and displacement of the Gaussian beam on the Hartmann sensor. The beam pointing was modulated at 10mHz using a galvo mirror as illustrated in Attachment 1. The galvo was around 680mm from the Hartmann sensor. The amplitude of the prism modulation was approximately 1E-5 radians. The displacement of the beam was measured using a new algorithm that tries to fit a parabola to the logarithm of the intensity of each Hartmann spot. The amplitude of the displacement modulation was measured at around 42 microns: corresponding to around 6E-5 radians (=42um/680mm).
To resolve the discrepancy between the prism and displacement measurements, I removed the Hartmann plate to simply get a Gaussian beam on the CCD (bottom right image in Figures 2 & 3 - the beam is slightly clipped and there is a ghost beam in the center - I'm not yet certain where this is coming from). I measured the Gaussian beam displacement directly by fitting a Gaussian to the mean horizontal cross-section of the intensity distribution (top right plot in Figures 2 & 3). Using this technique the measured displacement on the CCD had an amplitude of around 0.7 +/- 0.05 pixels = 8.4 +/- 0.6 microns, corresponding to a prism of 12.5E-6 radians (seen in top left plot in Figures 2 and 3). This indicates that there is an error in the Gaussian fitting algorithm using the Hartmann sensor data.
The second plot simply shows the position modulation of the beam as I increased the amplitude of the signal going to the galvo.
This measurement was made with the Thorlabs DCC1545M-GL camera with an RG850 3mm long-pass filter over the CCD.
The beam radius (w) is 191 pixels, where the beam intensity = exp[-2 (x/w)^2 ]
The pixel size is 5.2um. Hence the beam size is 993.2um, which is basically near enough to 1mm radius.
I've had the output from a fiber projected about 400mm onto the Hartmann sensor for around 5 days now. (The divergence angle from the fiber is around 86 mrad).
I played around with the temperature of the lab to induce some defocus changes in the Hartmann sensor. The system is mostly linear, but there are relatively frequent jumps in the defocus of the order of 1E-4 m^-1. This may be due to a number of things - the Hartmann plate may be moving, the fiber holder may be shifting back and forth, there may be some issue with the source wavelength shifting.
Sun 30th May 2011 - 11:40AM - the z-axis control on the NewFocus 9091 fiber coupling mount was not tightened. I tightened that to secure the control.
I ran through the procedure to calibrate the lever arm of the Hartmann sensor. The beam from a 632.8nm HeNe laser was expanded to approximately 12mm diameter and injected into a Michelson interferometer. The Hartmann sensor was placed at the output port of the Michelson.
The 50W Access Laser is now in the lab. We need to wire up the interlock to the laser, plumb the chiller lines to the power supply and to the laser head and also wire up all the electrical and electronics cables. Additionally, we will need to plumb the flow meter and attach a circuit to it that triggers the interlock if the flow falls too low.
I ran a test of the HWS with the QFLD-950-3S for 5 days. The test was terminated as we need to disconnect all the cabling and tidy up all the computers in the lab.
9:40PM PDT - I've just restarted the long term measurement of the Hartmann sensor noise with the QFLD-950-3S.
These settings work to get a computer onto the TCS/ATF network.
Spelt out in a searchable fashion:
iface <portname> inet static
dns-nameservers 10.0.1.1 18.104.22.168 22.214.171.124
I've started a long-term measurement of the HWS fiber-launcher. I'm interested in seeing how stable the output is. The HWS is currently running in the following configuration:
The HWS is currently running at 57Hz. The HWS code is running on HWS (10.0.1.167). It is the same as the site code with some modifications to determine information about the Gaussian beam envelope. The following data is written to file on the HWS machine in files containing 10,000 cycles. Each cycle (or row) the following data is recorded:
These are saved to files on the HWS machine: ~/framearchive/C4/HWSlongterm/<GPSTIME>_CIT_HWS.txt
I noticed that the TCS lab temperature sensor batteries died. Apparently they died two days ago. I swapped in some new batteries this morning.
The data from the long-term measurement of the HWS is presented here. The beam envelope moves by, at most, about 0.3 pixels, or around 3.6 microns. The fiber-launcher is about 5" away from the HWS. Therefore, the motion corresponds to around 30 micro-radians (if it is a tilt). The beam displacement is around 4 microns.
The optical properties change very little over the full 38 days (about 2 micro-radians for tilt and around 2 micro-diopters for spherical power).
The glitches are from when the SLED drivers were turned off temporarily for other use (with the 2004nm laser).
I measured the reflectivity of a possible HWS replacement mirror at 532nm. Thorlabs BB2-EO3
Incident power = 1.28mW
Reflected power = 0.73mW
R = 56% at 45 degrees AOI.
I've added a softIoc to TCS-WS to capture the beam size from the MAKO camera. The IOC is run using ...
controls@tcs-ws:~$ softIoc -S EPICS_IOC/iocBoot/iocfirst/st.cmd &
The st.cmd contains the following text:
controls@tcs-ws:~$ more EPICS_IOC/iocBoot/iocfirst/st.cmd
The db file is:
controls@tcs-ws:~$ more EPICS_IOC/db/beamSize.db
These are also being written to frames on FB4.
See attached photo for how data is written to frames ...
I set up an Acromag DAC today with the fixed IP address 10.0.1.56. Last Friday Andrew and Antonio set up an ADC unit with fixed IP address 10.0.1.55. The former is for outputting a control voltager that goes to the driver for the heater on composite mirror we are testing. The latter is used to read the temperature of the thermocouple on the composite mirror. The thermocouple to voltage conversion is achieved with a Type K Thermocouple Amplifier unit from The Sensor Connection.
The temperature sensor channel is C4:AWC-TEMPMON_C. We took a couple of different measurements of temperature and calibrated the conversion from volts to Celsius as: C = 122.06*V -0.67
The new temperature sensor channel is now being recorded in the frames.
We've had trouble logging into FB4. I access the computer directly in the AWC lab and found that the IP address had changed from 10.0.1.156 to 10.0.1.161.
I'm not sure how this happened. It's possible that the IP address is not set to a static value and FB4 was rebooted. I'm not familar with Debian so I don't know where to look to find whether the IP address is static or not.
The DAQD is still running.
The framebuilder on FB4 thinks the current time is 26-Jan-2018 6:18AM UTC. The date command on FB4 yields the correct date and time (5-Feb-2018 15:17 PST).
There is a major error with the framebuilder clock.
I did a beam size/beam propagation measurement of the low power CO2 laser (Access Laser L3, SN:154507-154935)
We tested the output of the fiber launcher D1800125-v3. We were using a 6mm spacer in the SM1 lens tube and 11mm spacer in the SM05 lens tube and the 50 micron core fiber.
The output of the fiber launcher was projected directly onto the CCD. Images of these are attached (coordinates are in pixels where 100 pixels = 1.2mm)
There is a lot of high-spatial frequency light on the output. It looks like there is core and cladding modes in addition to a more uniform background. There was an indication that we could clear up these annular modes with an iris immediately after the fiber launcher but I didn't get any images. We're going to test this next week when we get an SM1 mountable iris.
And here's the output of the fiber launcher when I fixed it at 313mm from the camera, attached an iris to the front and slowly reduced the aperture of the iris.
The titles reflect the calculated second moment of the intensity profiles (an estimate of the equivalent Gaussian beam radius). The iris is successful in spatially filtering the central annular mode at first and then the outer annular mode.
We'll need to determine the optimum diameter to get good transmission spatially without sacrificing too much power.
Here is the output from D1800125-v5_SN01.
Title was wrong - this is actually config [12,2,4,125]
I'm considering the 86-711 2" 532nm PBS from Edmund Optics for the ETM HWS at the sites.
The effect on the transmission through the system, compared to the THorlabs PBS, is shown in the attached plot.
Conclusion: it looks almost as effective as the Thorlabs PBS with the added benefit of being 2" in diameter.
Restored work done in http://nodus.ligo.caltech.edu:8080/TCS_Lab/201