In order to dissever the Michelson error signal and the noise of spectrum analyzer more, I entered the Michelson signal into a high path filter (10Hz, gain=1000) and measured the output by spectrum analyzer. (Graph: limitnoise0905.png)
From the graph, I think it is enough to dissever.
From now, when we measure the Michelson signal, we should use the high pass filter (10Hz, gain=1000).
I will attach the transfer function of the filter. (Graph: hpftf0905.png)
I measured the PD noise and laser intensity noise again.
The same measurement on Thu Sep 1st looks odd around 500Hz.
The beam may be clipping on the PD when we measured. (Comment from Valera on Sat Sep 03 )
The measurement of today looks good. (Graph: noisespectrum0906.png)
From this graph, we can know that the laser noise limits the sensitivity between 100Hz and 200Hz.
And there are limits above 200Hz because of PD noise.
We made two circuits for summing two signals and one band path filter.
We use the former to add control signal and driving signal for coil.
The latter is for pick up the signal between 150Hz and 200Hz from the Michelson signal.
We will obtain the data tomorrow.
We could lock the Michelson with the blades moving (~10um).
I will attach a figure of this configuration. (Fig: config2.png)
We used SR830 to apply drive voltage (f=0.2Hz, 1V) into coils.
Today we used the attached configuration to demodulate the Michelson signal. (Fig: config.png)
We passed the Michelson signal through the band-path (150-200Hz), after that passed through AD734 to square the signal.
We used SR830 to demodulate the signal with 2f, 4f.
The result is the following.
2f demodulation: ~0.6mV
4f demodulation: ~0.3mV
Summary in August
I will attach the data from this elog (Wed Sep 07):
->micerror090502.data: Michelson error signal (Through a high pass filter:10Hz, gain=1000.)
->spenoise0905.data: The noise of spectrum analyzer (The input connects to ground through 50 ohm.)
->sr5noise0905.data: The noise of SR560 (high pass filter: 10Hz, gain=1000. The input connects to ground through 50 ohm. The output connects to spectrum analyzer.)
->gnuspe.plt: Gnuplot script file
In these data files, the first sequence is frequency, and the second sequence is the output voltage.
->michnoisem.data: Michelson error signal.
->pdnoisem.data: The signal from PD with laser off.
->lasernoisem.data: The intensity noise of laser.
->gnuspe.plt: Gnuplot script file
In these data files, the first sequence is frequency, the second sequence is the calibrated value [mater], the third sequence is the value before calibration [volt], and the fourth sequence is just the number.
1. Measurement of seismic noise
We used a seismometer(Geotech Instruments GS-13) to measure the seismic noise on the optical flat plate.
There are peaks at 20Hz, 40Hz, 60Hz.
These seismic noises will influence Michelson interferometer about 10^(-7)*300=10^(-5)[m] if Q~300.
* About the seismometer
The calibration fuctor is 2150 V/(m/s)
I used the following equation to calibrate.
M = V / 2150 / (2*pi*f)
2. Mass dumping
We used many small magnets to dumping the masses (see the picture)
We put the magnets on 3 points around the smaller mass, 4 points around the bigger one.
We calculated the coefficient from the demodulated value measured yesterday.
When we calculate, we used the following parameters.
1) Spring constant = 300, 450 [m/N]
2) Driving frequency = 0.2 [Hz]
3) Displacement amplitude = 15 [um]
4) Data frequency range : 150-200 [Hz]
5) Michelson sensitivity = 1e6 [V/m]
6) The total gain before squaring = 6e5
7) Squaring gain = 0.1
Alpha: Amplitude of the relative change of the spring constant due to the stress crackling.
Beta: Amplitude of the relative change of the spring constant due to the jerk crackling.
the calculation reproduce the measured values.
The predicted Stress and Jerk crackling noise level is about 2e-14 m/sqrt(Hz).
Calculation result figure is attached.
Sometimes people don't know how to handle seismometers like STS-2 and GS-13. We got a GS-13 from LLO (broken in several ways). The first thing that got fixed was a broken leg (this had happened already a while ago). Then the next problem was to substitute the cheap flexures that you get when you buy the GS-13. They can bend when people forget to lock the mass as you can see in the next picture:
Luckily Brian Lantz et al have designed a more robust flexure that you can use to substitute the standard GS-13 flexures. There are two types of LIGO flexures, one type for the three top flexures, one type for the three bottom flexures. Unfortunately, Celine Ramet mailed us plenty of bottom flexures and only one top flexure. So we could make all substitutions at the bottom, but only one at the top (luckily there was only one bent flexure at the top). Eventually, we should get more top flexures from Celine.
The SS-1 Ranger has a new frame now that allows us to access the parts "during runtime" and operate it as a prototype.
For more details about the original design, search the e-log for entries about 1 year old. The original SS-1 design has a coil readout. We want to substitute it by capacitive readouts. In any case, it turns out that the tiny coil wire was damaged and that the coil readout does not work anymore anyway.
Now we thought about how to implement the capacitive readout. We certainly won't start with the electronically most sophisticated way, but it is already a mechanical design problem. So what seemed most clever to us is to use the conducting flexure rings as part of the capacitors. Their location also makes it easier to build additional capacitor plates around them. So we will probably start with a simple differential capacitive readout using three plates like the STS-2 or T240 have. Once the mechanical design is good, we can copy it as many times we like to other positions around the two flexures at the top and bottom of the mass. Then it won't be difficult to implement a more sophisticated readout. Luckily the calibration coil is still good, and we will eventually (try to) use it for force feedback operation.
We built a Low Noise Preamplifier (D060205), and added voltage regulators for external power supply, so one can switch between battery and external supply. Some may know this one as the Ray Rai box (which it is once you put it inside a box...). The heart of the 100x amplifier is a high-gain, low-noise FET amplifier from InterFET (IF3602) that can have voltage noise as low as 0.3nV/rtHz. First a picture of the amplifier:
Terminating the preamp input with 50 Ohm, and using another 100x amplification from an SR560 (in battery mode) and AC-Coupling, we measured the following spectral noise density recorded with one of the DAQ systems that was designed by Vladimir:
As one can see, the (single-sided) noise spectrum is below 2 nV/sqrt(Hz), and there is almost no difference between the two cases in which the preamp has external and battery supply. The 60Hz lines are unusually strong. We already saw spectra that only had one weak 120Hz line. So our guess is that this is picked up by the cables that we rearranged recently. Anyway, it is good news that no significant noise seems to couple in from the external power supply to the preamp output.
We were wondering a little about the high noise. The specs promise something that should be weaker by a factor 5 or so. In fact, measuring the preamp noise with the network analyzer, we got noise spectra that were weaker by more than a factor 2. It is quite tricky to pin this down to some specific problem. Calibration seems to be fine since signals from the frequency generator show up with the correct amplitude in the time series. One thing that we still need to look at is some C code used to read out data from the DAQ. Some simple data averaging happens there without anti-aliasing filter, and this could cause extra noise.
We should soon have new FETs to be able to make more preamps. Also, if someone wants to have this amplifier, you can get the parts from us. Only the FETs are missing and you could nicely ask Peter King to get a FET from him. We also have a complete digikey parts list for the preamp in case you prefer to buy parts yourself. Unfortunately, we don't have a suitable box yet for the amplifiers.
As mentioned in th epost from Aug 22nd, we biult a Low Noise Preamplifier (D060205). When we measured its noise level, we did not use any anti-aliasing filter and therefore the noise level of the amplifier laid above its specs.
For better measurents, we have now implemented this filter in the data acquisition process (written in C): We use an inverse chebyshev filter with variable order, attenuation and stopband frequency. For the following results, we used the filter with an order of 10 ( which for numerical reasons is the highest stable order we achieved), a stopband frequency of 2048 Hz and an attenuation of 80 dB, which leads to a 3 dB-cutoff frequency of 1340 Hz.
This new noise spectrum comes very close to the specification, as the noise level now is about or below 1 nV/rtHz. Unfortunatly, you can still see the 60 Hz lines and its harmonics.
We tried to measure the instrumental noise of the GS-13, amplified with our low noise preamp and an SR560 in unity gain mode. Therefore we locked the test mass. As it turned out, environmental influences still coupled into the signal.
Not only jumping causes peaks in the signal, but magnetic fields did that as well (e.g. typing on a keyboard), which we proved by moving a magnet near the GS-13. To verify that the magnetic signal is not induced only by the movements we made to move the magnet, we did the same movements without the magnet and could not see that signal again.
Having realised that, it somehow explains the odd spectrum we got from the GS-13 with locked mass even without some bigger disturbances from jumps or magnets, as there are probably still vibrations coupling into the signal.
Before beginning to run measurement of acoustic emissions in maraging steel blades in earnest, one goal of my summer project is to calibrate the microphones’ output to the energy released in the blade, a more useful output for the sake of the experiment. The most straightforward way to calibrate the microphones it to compare their output with the known energy release of a simple system – in this case, dropping a steel ball onto the blade. By comparing the height of the ball initially with its height after one bounce I can approximate the energy released into the blade and use it to calibrate the microphone.
I began with simple ball drop experiments in the West Bridge Offices. The earliest iteration consisted of a GR textbook, a binder clip, and a pen spring. The pen spring was later replaced with a 2 mm diameter steel ball and smaller balls of various sizes were ordered from McMaster-Carr. I tested a free online tracking software, tracker, with cell phone videos of the test experimental set up. The program could track the ball decently but could not export the data as a csv file.
Consequently, I decided to use MatLab directly for both the motion tracking and analysis. After researching different algorithms, I decided to use a Kalman filtering algorithm for motion tracking. After trying a few prewritten programs, I decided to use a script written by Vibhutesh Kumar Singh for digital iVision Lab. I some code to the program which adds a scale to the video, plots the motion of the ball, fits a parabola to it, and finds the maximum height of the ball.
I am attaching the MatLab code to this elog along with a sample plot outputed by the script.
% I am using the base of this code courtesy of
% Vibhutesh Kumar Singh for digital iVision Lab
% I added comments to any of my own code added to
% the original.
% Set empty matrices for storing motion data
I went into the lab briefly today to work on the microphone calibration experiment. I was going to obtain a mass estimate for the steel balls ordered from McMaster-Carr, but could not find a power source for the scale. For the ball drop mechanism, I marked off places on aluminum sheets that need holes drilled into them. The aluminum sheets will be used as an adjustable base to hold the ball release electromagnet and will sit on top of the simple mounts I screwed into the table last week. Additionally, I began work on the mount for the camera, but will wait on continuing until I can test the focal length needed for the experiment. Finally, I ran into a challenge when designing the electromagnet release mechanism. The stainless steel screws do not magnetize, so I used another screw that seems to be steel. However, the screw stays slightly magnetized even after current stops running and does not always drop the ball. I will try to make the electromagnet again with different materials or with a weaker electromagnet to see if I can combat this issue.
I finished setting up the ball drop experiment for microphone calibration. This consisted mainly of setting up a mount for the camera and re-soldering a wire that has come loose on the electromagnet.
We then loaded the blade with a mass in order to better simulate the actual experiment. I then tested a few initial ball drop videos, and everything seems to be working as hoped.
Next week I will work on setting up a more monochromatic background and running the calibration experiment in earnest.
Because MATLAB could not successfully motion track with the everyday lab background or a white paper background, a black mat from a tool cart in the lab was employed as a monochromatic background for the microphone calibration experiment. The improved videos were then used to improve the MATLAB script employed for data analysis. A video of the motion-tracking script being applied to this new setup is attached. Link to Ball13_track1.mov
Now that the experimental setup is nearly complete, the MATLAB script can be further tailored for the specific experiment. In a typical video, the ball drops and completes the first bounce within the video frame. By analyzing the when the velocity of the ball switches from positive to negative, the first bounce is isolated within the code. A parabola is then fit to the bounce and a maximum height is approximated.
Additionally, the MATLAB script now plots velocity over time for the ball. A least squares regression line is fit to the data from the first bounce and the slope is used to approximate acceleration due to gravity. The current estimate from the sample video taken with the new experimental setup is -8.962 m/s^2, a relatively close approximation of acceleration due to gravity considering the scale of the video is estimated and not accurately measured.
Two issues arose in the implementation of these features. First, there was a discrepancy with the specification for the camera. Online, the frames per seconds (fps) for a Samsung Galaxy Note 5 slow motion video is 120 fps. However, upon testing this rate experimentally (by recording a slow motion video of a clock ticking for one second), the investigation revealed a rate of 240 fps. This factor of two yielded seemingly more accurate results.
Additionally, initial plots of velocity showed two strong trend lines rather than one as expected. This seemed to be a result of the motion-tracking algorithm bunching data in groups of two. By calculating velocity using the displacement averaged across every other point. This discrepancy is normalized out.
% Calculate velocity
vel(i) = (ycent(i)-ycent(i-2))/(2/240);
The MATLAB script is attached to this elog.
To improve the accuracy of the data obtained, a ruler was added for scale in the plane of the ball bouncing. A white ruler was used but interfered with the motion-tracking analysis and was later replaced with a silver ruler. With the improved scale, the acceleration due to gravity is measured between -9.880 m/s^2 and -9.676 m/s^2. This falls between a 0.1% error and an 8% error on the measured acceleration due to gravity in Los Angeles: -9.796 m/s^2.
Additionally, the MATLAB code was further developed by adding plots of acceleration over time and plots of the residuals from the parabolic fits for the initial drop and first bounce. The plot of the residuals seems randomly distributed for the first drop meanwhile there is a clear pattern in the residuals for the first bounce. However, both have low standard errors. The standard error on the parabolic fit for the first bounce in one video is 6.3847 x 10^-04. Time permitting, I can run a chi-squares goodness of fit test on the models to see if the parabola is an acceptable model. Additionally, an important next step is to factor in expected losses due to friction and see how this influences the model.
Rough initial calculations estimate the energy lost in the first bounce to be about one third of the initial potential energy. More specifically, the ball was dropped with an initial potential energy of about 6.12 x 10^-3 Joules and lost about 2.87 x 10^-3 Joules in the first bounce where loss is calculated from the change in kinetic energy. I will repeat these calculations more rigorously as a next step.
The newest, and incresingly long, MATLAB script is attached.
Because nothing appeared to be inherently wrong with the code, another Kalman filtering code was written using some built-in MATLAB functions (attached). Even after implementing the new code, the same problem still arose. In the original implementation of motion-tracking the pairs of data points were grouped but offset slightly within the motion of the path and in the second implementation the points were offset by a constant.
The problem originated due to the processing of slow motion videos. Playing videos frame by frame revealed that the slow motion videos are created with a 120 fps video with duplicates of each frame inserted, resulting in a 240 fps video. Isolating every other data point seems to solve this problem in the second implementation. The first is still skewed due to how the code is written. Consequently, the second implementation of Kalman filtering was used to replace the first. Additionally, even though only half the data points are left, the error in the residuals improves by a factor of two.
However, there is still a clear pattern to the residuals and the error could be lower. Consequently, a non-polynomial fit was placed on the data based on the differential equation:
dv/dt = g – cv^2
with the solution
v(t) = √g tanh(√c√g x t)/√c
With the value of c = 0.0065 m^-1 (for a baseball in air this fit is worse than the polynomial fit. The next step is to find a better constant for a steel ball in air and improve the model.
Additionally, the new MATLAB code is attached.
% Clear previous data and figures.
% Open video player
videoReader = vision.VideoFileReader('ball17.mp4');
% Initialize MATLAB functions to video
videoPlayer = vision.VideoPlayer('Position',[100,100,500,400]);
Due to the relatively high uncertainty with the polynomial fit, a least squares curve fit was fit to the velocity and position data for the initial drop and first bounce. For velocity, the following solution to the differential equation dv/dt = g – cv^2 was employed:
v(t) = √g tanh(√c√g(k + t))/√c
and for position:
s(t) = (1/c)(log(cos(√c√g(k1 + t))) +k2
Plotting the residuals from each fit revealed the least squares curve fit to be a worse fit for almost every video analyzed. A different solution for the fit may need to be employed.
An analysis of the ball’s energy in one of the latest videos revealed the ball started with about 6.845 x 10^-3 J for potential energy, had about 6.589 x 10^-3 J of kinetic energy before the first bounce (losing about 4% of energy in the fall), and lost 3.008 x 10^-3 J of energy in the first bounce. The analysis of this video fits with the energy analyzed in previous videos. The latest MATLAB code is attached.
% Clear previous data and figures.
% Open video player
videoReader = vision.VideoFileReader('ball15.4.mp4');
% Initialize MATLAB functions to video
videoPlayer = vision.VideoPlayer('Position',[100,100,500,400]);
The Cymac computer used for data acquisition in the microphone calibration has a maximum sampling rate of 64kHz. This limits the analysis of the microphone output to the 30kHz Nyquist frequency. In order to counteract this limitation, a few techniques are used to down-convert the high-frequency signals in the microphone output.
(The loaded blade with two microphones attached)
A 5MHz quartz Local Oscillator (L.O.) was used to output a square wave. The system was powered by about 18 V from a DC power supply and two counters (five count and two count) were used to obtain a 100kHz wave from the 5MHz L.O. An oscilloscope was employed to check the output wave from the L.O. and the signal was the wrong frequency and shape. After replacing the L.O. and oscilloscope with alternates, we concluded discrepancy came from the oscilloscope’s settings and, once reset, the square wave was recorded at the correct frequency and shape.
(The DC power supply)
(The Local Oscillator with two counters)
Each microphone signal was passed through a ferrite bead to prevent the addition of extraneous signals and amplified 10 times by a preamplifier. The signal is then derived from two AESmart302A conditioners, which produce a broadband output.
Two HP1053A mixers were then used to multiply the broadband output from the microphones with the output of the L.O. The multiplied signal is sent to a Stanford Research Systems low-noise preamplifier to be low-pass filtered (0-100kHz) and amplified 100 times.
(Stanford Research Systems low-noise preamplifier)
The amplified signal was then sent from the amplifier to the Cymac computer and an oscilloscope, in order to analyze and visually check the output respectively. The Cymac computer is a real time digital system with ADC and DAC 16 bit channels. Channels 28 and 29 were used for microphones 1 and 2 respectively, and channel 30 will be used later for the shadow sensor.
(The entire electronics setup before being sent to the Cymac computer)
The digital signal can be viewed with dataviewer. We are interested in the two demodulated outputs of the microphones, sampled at 65kHz, and the RMS of each signal, saved at 4kHz and low pass filtered. The signal is recorded in units of volts and the RMS in units of volts squared. The RMS is useful for analyzing electrical power and will ultimately be used to analyze the microphones’ relationship with the energy input in the blade.
Using ligoDV in MATLAB, the data was plotted in real time. Small test stimulations were placed on the blade and corresponding excitations were plotted both on the computer and in the oscilloscope. Some of the stimulations saturated the signal, which has a limit of pm 10 V. Going forward in the experiment, it will be important to input signals below this saturation level.
The next steps will be testing the experimental setup to make sure the bouncing balls do not hit the microphones or saturate the signal. After that, we should hopefully begin collecting data.
Initial tests found that a ball dropping on the blade oversaturated the microphones. Consequently, for the sake of the calibration experiment, the preamplifier was set to a lower amplification and a correction factor will be added to the calculations. Tests found a 20 times amplification, versus the original 100 times amplification, was the best balance between maximizing sensitivity and avoiding saturation.
The electromagnet used for dropping balls broke a few times in the testing process. New wires and newly soldered connections temporarily fixed the problem.
The first ball drop trials were run on the microphone calibration experiment. Energy data was analyzed with the MATLAB script and voltage data from the microphone was analyzed with ligoDV. Plots of the data analyzed so far indicate a potential relationship between energy input to blades, distance of ball drop from the microphone, and the ultimate voltage output in the microphone. The energy versus voltage graph especially indicates a correlation. The plots below separate energy and distance as influencing factors for the data, which is not the best representation of the system. I will work on a better way to plot, represent, and analyze the data.
Thus far, most of the data collected has been from ball drops at the end of the blade and, ideally, data should be collected from all locations in the blade. However, posts holding up the experiment block too much of the camera’s shot for data analysis. An alternative camera angle was tried (below) but upon data analysis the ball could not be resolved and not data was successfully collected.
Throughout the data collection process thus far, the electromagnetic ball drop system has been functioning inconsistently. A few alternatives were made that also did not function, despite all components appearing functional when tested with the multimeter. The latest iteration is functioning consistently, despite not changing the design at all. This indicates that the flaw may have been in the wires (e.g. a break within the insulation), the connections, or something else.
There are multiple problems with the data collection and analysis conducted thus far. The primary issue with data collection is that the ball drop saturates the microphones. Using the oscilloscope to test the broadband output for microphone 1 revealed a saturation limit of 14.5 to -14.7 volts. This limit was reached when inputting a large energy into the blade, when dropping the 1/64” diameter steel balls about 15 mm from the blade, and when dropping the balls about 3 mm from the blade.
Consequently, for the experiment to produce useful data, I need to find a way to input less initial energy. I will work on finding smaller balls, dropping them from shorter distances, and/or find another solution. Dropping balls from shorter distances shortens the duration of each bounce and may limit how many data points my 120 fps camera can collect to model each bounce. I will run a few test trials of very short bounces through the MATLAB script to see if this is a significant problem.
Additionally, an alternative ball drop mechanism may need to be tested. During some trials, the ball does not drop without outside force but rather stays magnetically bound to the nail. I believe this is occurring because the iron screw stays slightly magnetized even after current is switched off. Replacing the screw seems to fix the problem for now.
Finally, the data analysis I had posted about yesterday is incorrect, in addition to the data being saturated. I analyzed the time series plots by taking the maximum of each peak in the RMS voltage data with MATLAB and plotted that against energy input and distance. First, the maximum of RMS voltage does not actually yield the data desired in this case. Instead, it would be more useful to analyze the energy output in the microphone. Energy can be obtained by isolating the when the signal of the event (each bounce) is distinct from the background noise and integrating under the curve. Second, I have two variables that I am changing which influence the signal in the microphone: distance to the microphone and energy from the bounce (which is related to the height of the ball drop). I had tried varying both the height and distance in each trial and then find a relationship between height, distance, and the microphone output. However, it makes more sense to isolate height and distance as separate experiments and to analyze the data separately.
One source of uncertainty in the microphone calibration experiment is the ability of the MATLAB script to motion track the ball accurately. A small experiment was set up in order to test the precision of the code based on the fact that no change in position should be measured in a stationary ball. Because the code will not motion track an object that is stationary for the entire video, each trial consisted of a ball rolling until it stops, and only the stop is analyzed.
The uncertainty in position is calculated by finding the RMS of the data from the average position, which approximates the actual position. For the trial shown above, the RMS is 4.358 x 10^-5 m. Three trials have been analyzed so far, all with RMS values on the order of 10^-5 m. I will take more trials and average them to get an estimate for this source of uncertainty.
Because the steel balls used in the previous microphone calibration experiment saturated the microphones, we ordered even smaller steel balls. The new balls are 1/64" in diameter.
Initial tests with the oscilloscope showed no saturation in the microphones. The highest signal read in the oscilloscope when dropping the balls from any of the experimental heights was 2.5 V, a significantly smaller reading than the 14 V saturation limit.
However, there are new challenges associated with the smaller balls. First, the balls do not always drop after the electromagnet is shut off. The weight of the small ball is not enough to counteract whatever magnetic field is left in the screw. Consequently, I am working on an alternative mechanism for dropping the ball. Right now I have a simple prototype where the ball falls out of a small hole in a piece of paper. However, this mechanism requires some initial energy to nudge the ball towards the hole. This may not be a problem for the first set of experiments, where the ball is dropped from different heights on the same spot, but might cause uncertainty in a second experiment where the ball is dropped from the same height at different locations on the blade, as the energy input needs to be consistent. I will continue to work on other ideas.
(An example of the ball being stuck on the screw (upper right corner) even after the circuit is turned off. This is also an example of a video attempted with the flash on.)
Additionally, due to the small size of the balls, the MATLAB script can no longer track them with the same success. I tried a few solutions. First, placing the camera closer puts the balls out of focus and did not ultimately help. Second, I tried different background colors to see if I could increase contrast. This did not prove successful. Finally, I tried taking the videos with the flash on; however, the black background was too reflective. Next, I will try to repeat the experiment with the flash on and a non-reflective background.
(Two examples of alternatively colored backgrounds)
I ran further tests today to see if I could resolve the 1/64" diameter balls on my cell phone camera. My camera can record 120 fps at 720p. I ran various trials of the ball drop with different backgrounds and levels of flash. At best, the MATLAB script can motion track part of the motion, but not all of it and not consistently.
I borrowed a camera from the 40m to test if I could resolve the balls with a better camera. The Canon EOS t3i can record 60 fps at 1080p. I could only borrow the camera for half an hour and ran a few trials. On those trials, MATLAB could not resolve the balls at all. I will continue to work on a solution.
Update: the videos work, sometimes, with an iphone 6S or 6+, which can record 240fps. I do not have one of these phones but am working on borrowing one.
The steel balls used in the microphone calibration experiment were either too small to motion track or too large and saturated the microphones. Consequently, aluminum balls were ordered from Macmaster-Carr because they are light but still have a high elasticity.
Additionally, I fixed the uncertainty calculations on the plots produced in MATLAB. Previously, I was using a measurement error of 1mm for all position measurements. Instead, it makes more sense to use percent errors. For example, in a video spanning 8 cm in height, a 1 mm error is a 1.26 percent error. By just changing this one calculation on one source of error, the uncertainty on the plots was much more reasonable.
Three types of balls came in from McMaster-Carr late this afternoon. Initial tests found the 3/32" diameter glass balls and the 5/64" diameter aluminum balls saturate the microphones, even from a close distance. However, the 1/32" diameter aluminum balls do not saturate the microphones.
I ran two quick video trials through MATLAB and the ball was motion tracked with limited success. I will work on improving the experimental setup so it runs with increased success and hopefully I can collect data for analysis.
Background: The design of the DAC noise monitor is in the PCB design stage - I am trying to put the circuit on the PCB board in Altium. We use three power voltages to drive the op amps in the circuit: -15 V. +15 V. We also need power ground and signal ground. This circuit is going to replace a part of a big PCB board with other existing circuits.
Question: What are the layers used by the existing design? The DAC noise monitor needs to fit with other parts, so they have to share the same layers. Is there a PCB layout file for the existing design?
In case of absence, I will start with a signal layer, a -15V power layer, a +15V power layer, a power ground, and a signal ground. I googled a bit and they say the cost will be high and five layers might be more than what we want. Besides, I am not sure about the sequence of the layers either. I will start with this in order to proceed in Altium before we figure out what we need to do:
How much sense does it make?
I proceeded as described below. The routing is completed. All the signal routing is completed. One thing worries me is that I am afraid the signal ground and power ground is yet separated. I do have two internal planes for signal ground and power ground. Should they be connected to the same power input (so that they are just two planes with the same source)? Altium treats all the ground as one net GND. If the answer to the question is yes, I need to figure out how to get Altium separate them. In Altium, you can specifiy which net you connect to, but I did not figure out how to specify which layer. (Maybe I need to create a separated GND net, like PGND/SGND for that?)
Here is a summary file with the schematics and PCB design: NoiseMonitor.pdf
Also, this is the link to the Wiki page, with more details about this work: https://wiki-40m.ligo.caltech.edu/Electronics/NoiseMonitor
As per Chris's suggestions, I replaced the capacitors with surface mount ceramic capacitors, doubled the trace width to 0.5mm and adjusted the routings accordingly. New PCB layout is attached.
I forgot to connect the outputs of U1 and U2. It is fixed. I also run the design rule check and verified that all the connections are made. I separated the power ground and signal ground as well. The summary PDF is updated below.
Progress: the board and components arrived and assembled. Some obvious mistakes are fixed on the next version in Altium.
Next: how to test the board? i.e. How to connect the test instruments (such as spectrum analyzer, DC power supply) to the board? We need connector converters (from BNC to headers female & from BNC to 9 pin D shape male). Or do we have better ways to test it?
Note: Altium footprints for WIMA capacitors are created. Altium test point component is created. These might be useful in the future.
Progress: The reason why the board from oshpark did not work is found. The board has 6 layers, but Oshpark only make 2 or 4 layer boards. They just ignored two layers (the two ground layers) so there is no ground at all on the board.
Some known issues is fixed in the new board (capacitor footprint, connector in the wrong direction). The new board will arrive next Wednesday.
Some good quality connectors are made - next board will be ready to test once arrived.
Next: I plan to put other components into Altium by Wednesday.
The new board arrived this afternoon. I tried the connections - it has enough layers and is grounded. I will assemble the board tomorrow.
In the meanwhile, I have put other unchanged components on the board into Altium, not quite finished (put them in schematics but not PCB, gives me error when importing changes). I will prioritize assembling the new board.
A picture of the board is attached.
1. Board assembled
2. One design error found and fixed in the instrumental amplifier. Now the instrumental amplifier is working
Noise above 100Hz (pass band 20-100Hz), as shown in the transfer function in the picture.
The noise comes from the last stage of the circuit: the low pass sallen key filter. The first two high pass stages works well.
(structure of the circuit: differential input - passive filter - instrumental amplifier - high pass - high pass - low pass - output)
I have tried
1. Checking the connections - the connections are good
2. Replacing the opamp - did not work
Here is a full version of the noisemon, with four channels and the power regulator. I did the routing again since the previous routing 1) did not leave enough space for connectors/other components; 2) Altium does not transfer properly from the schematics to the PCB layout when expanding to 4 channels.
The reason for this problem was found. The gain of the sallen key filters was too high. There is an intrinsic limit of the sallen key filters - they cannot have a gain more than a certain value. Otherwise, they will be unstable. See this TI document for details.
Photo attached in attachment 1.
The times series output is shown in attachment 2 (Attached picture since I cannot get data from the oscilliscope, which requires floppy disk data transfer). There is an 87mV/rtHz oscillation at about 1.4MHz (op amp oscillation?).
I tested the noise with SR785, both time and frequency domains, in attachment 4 and 5. In time domain, I only see the 60Hz noise, not the 1.4MHz one (maybe because SR785 does not reach that high frequency). In frequency domain, noise in the passband is generally less than 10uVrms/rtHz. With a gain of 125, 10uV/rtHz corresponds to roughly 100nV/rtHz.
Attachment 3 is the transfer function, which is as we wanted, with a gain 2.5 less since this version does not have the last stage.
Internal saturation: what input do we use to test it?
Note: the noise FFT measurement has a lot of time dependence. It fluctuates a lot. Also sometimes (just a few hours before this measurement), I cannot reproduce the noise measurement mysteriously - it gives me much higher noise.
It seems there can be multiple reasons for an op amp to oscillate. I wanted to identify the nature of the oscillation.
I want to isolate one stage and see what is going on. I used the extra empty board and assembled the last stage on it. Putting in nothing at all (the input is GND), I get a signal of 5.792MHz, 321mV at the output.
Now that the problem is even more clear, I will keep looking into this.
After a few days of struggling (and essential help from Chris), mystery is resolved. Fortunately, the oscillation does not have much to do with my circuit design. It is caused by the RLC resonance formed by 1) the inductance of the parallel wires + 2) capacitance of the signal ground plane and the power ground plane.
As is seen in the picture, I twisted the two grounding wires together (reduce the inductance) and the oscillation is gone.
You can also connect the planes on the board (removing the capacitance) and the oscillation will disappear as well.
Two more oscillations problems are resolved, and there is no more oscillations. In the time series (the inputs are terminated), we see only the 60Hz noise.
- Some big bypass capacitors are used to regulate the power.
- A small capacitor is attached to the negative feedback loop in the second HP filter.
New board/components arrived. I will assemble and test them immediately.
# SR785 Measurement - Timestamp: Jan 20 2019 - 15:50:18
#---------- Measurement Setup ------------
# Start frequency (Hz) = 5.000000
# Stop frequency (Hz) = 1000.000000
# Number of frequency points = 200
# Excitation amplitude (mV) = 10.000000
# Settling cycles = 1
# Integration cycles = 10
#---------- Measurement Parameters ----------
# Measurement Group: "Swept Sine" "Swept Sine"
# SR785 Measurement - Timestamp: Jan 20 2019 - 15:04:29
#---------- Measurement Setup ------------
# Start Frequency (Hz): 0.000000
# Frequency Span (Hz): 1600.000000
# Frequency Resolution: 400
# Number of Averages: 100
# Averaging Mode: RMS
# Window function: BMH
#---------- Measurement Parameters ----------
# Measurement Group: "FFT" "FFT"
Based on the test results posted, I did the following analysis:
1. Compared measured transfer function to the LISO calculations. Attachment 4 and 6. The transfer functions match well with LISO.
2. Compared measured noise at the output to the LISO calculations. Attachment 1 and 3. The noise is more than LISO calculations by roughly a factor of 2, but I think it is expected - there is coil driver noises (amplified more than 300 times). Also, LISO uses ideal resistors, considering that the noise here is dominated by resistor noise. We also have plots of the noise spectrum with DAC noises injected. In this case, the noise in the passband (20 - 100Hz) is much more, suggesting that the board noise is dominated by the DAC noise.
3. Compared input-referenced measured noise to DAC noise. Attachment 2 and 5. We divided the noise by the transfer function and compare it directly with the DAC noise model. We can see that, in the passband, the board noise is about a factor of 10 less than the DAC noise (channel 2 and 4 has more noise; the signal is polluted by the ADC).
4. A simple calculation based on the transfer function comparing the ADC noise and the amplified DAC noise.
DAC noise > 300nV/rtHz. Passband amplification > 50dB > 300. Amplified DAC noise in the passband > 90uV/rtHz, compared to ADC noise 4uV/rtHz.
FYI: 1. I cannot attachment PDF plots directly since it will stuck the elog server. I put some PNG plots, but PDF plots can still be found in the compressed files.
2. Also, channel 2 is more noisey. It comes from ADC not the noisemon.
Some clean up work on the noisemon is done.
1. Added compensate capacitor.
2. Added mounting holes.
3. Added DCC number. https://dcc.ligo.org/LIGO-D1900052
4. Renumbered the components.
5. Added 0 ohm resistor between power ground and signal ground.
6. Added more test points for the voltage monitor and current monitor.
7. Increased schematics font size.
Next I will create the Bill Of Materials. I need to assemble the manufacturer information and put meaningful and consistent descriptions for the components.
Attachment: new PCB schematics with all the changes made.
We (Chris and I) had a conversation with Rich last week and the following work on the noisemon board has been suggested:
1. Name of power nets: +VCC to +15, -VCC to -15. +V to +18; -V to -18, making it clearer what the power is.
2. Fix the off-grid problems of the schematics.
3. Draw the circuits on the schematics in the standard way. (Rich gave me a bunch of snippets that shows the standard way to draw the circuits, like how to draw a sallen key filter)
4. Ground the shells of the D connectors.
5. Add 1 Ohm resistors at the inputs of the power regulators
6. Use polymer tantalum with at least 35V rating. Previously we are not using polymer ones. Rich said the ones (non-polymer ones) we were using burn and explode sometimes.
7. Add "No error checking" for those pins not being used (e.g. unused op amp pins)
8. Disassemble the "repeat()" in the sheet symbol. Making four sheet symbols and connect them directly to the connectors.
9. Change the outputs of the current monitor, noise monitor and the voltage monitor to differential. Previously we had one of the pins of the D connectors pairs grounded. Now we add a differential driver at the end. It doubles the gain and the range.
Rich said my PCB routing was OK, so all the changes can be reflected on the schematics. I have made all the changes on the schematics (I do have the previous version). The current schematics is attached.
However, "#9 change the outputs to differential" requires a lot more space and the current PCB routing does not have enough free space between the components. Thus, this requires routing the whole PCB again, which is what I am working on now.
We added differential drivers at the outputs of all the monitors. After that the routing becomes impossible at the output connectors.
I replaced the signal ground with an additional signal layer, and reversed the order of the channels on the layout.
Having exhausted all the possible routing tricks, I finally managed to connect the whole board.
We ordered the board from Screaming Circuits and chose to provide the component ourselves. However, the parcel we ordered from Verical was lost by Fedex on its way to Screaming Circuits. The original delivery date was delay from late May to June 13.
Once the board arrives, we will test the board - TF, noise etc. Any others?
1. Transfer functions of 1-4 channels, compare with simulations.
2. Noise of 1-4 channels, compare with simulations.
3. If feasible, nonlinearity.
4. Functionality of fast current, slow current and voltage monitor channels.
All test results will reply to this post.
I connected the DAC to ADC direclty (picture 1) and send a sine signal into the DAC. However, I did not get the sine signal back from the ADC. I sent the signal in X1:CRY-DITHER_W_MOD_EXC, channel 9 of DAC and expect the signal from X1:CRY-E_REFLDC_IN1, channel 16 of ADC. However, picture 2 shows what I get: a constant signal around 4400 counts.