The bond quality measurements can be split into two categories: destructive and nondestructive. For destructive, we have measuring tensile and shear strength, and for nondestructive, we have gap distrance and mechanical quality. I am also currently searching for more ways to measure the strenght, but I am having a hard time finding any others.
Proposed method: based off of the traditional razor test, a blade will be systematically inserted into the gap. For a prototype, I used optical bread board components to hold the razor while a knob was slowly turned to push the razor forward. The knob had markings on it, which could be used to estimate the amount of force applied to the gap. The prototype was made for the larger glass slides, so it is too big and forceful for the silicon and smaller, more fragile glass slides. However, the principles of the protoype had potential to be adapated to be gentler.
Proposed method: a cord will be adhered to the outer sides of the sample such that one side will be hung to the ceiling while the other will have weight hanging from it. Weight us added to the latter cord until the bond breaks. This could pontentially be a little dangerous as it could shatter when the bond finally breaks, so a protective barrier of some sort will have to be set up.
Alternative: affix one outer surface to the table so that it cannot move. Attach the other surface to something that can spun/twisted. The more twists it takes to break the bond corresponds to the shear strenght.
Proposed method: use ellipsometry to find how big the gap is between the two bonded surfaces. I think this would be great to combine with one of the destructive methods since, if you could relate the nm thickness of the gap to, say, the tensile strength, then you could estimate the tensile strength of future bonds without having to destroy them. I read a lot about ellipsometry over winter break, and I know what components are needed for it.
Proposed method: this would be based around the paper which measured the ring down of an optically contacted tuning fork. My focus would be on varying the parameters to find the most precise and accurate dimensions of the fork. Although it sounds interesting, I am not sure how practical it would be to pursue as it requires a lot of modeling and building. However, given the application of these measurements (specifically, for Voyager, (if my understanding is correct) the use of optical contacting will resolve the issue of messy noise caused by unpredictable thermal vibration of adhesives), knowing the mechanical quality of the bond seems valuble.
MCT HgCdTe requirements: https://docs.google.com/spreadsheets/d/1lajp17yusbkacHEMSobChKepiqKYesHWIJ6L7fgr-yY/edit?usp=sharing
I have to question whether this passes a sanity test. Surely in the case of Stack 2, the 10um thick Ta2O5 will absorb the majority of the incident radiation before it reaches the SiO2 layer beneath. It should at least be similar to just absorption in Ta2O5 with some Fresnel reflection from the AIr-Ta2O5 interface.
For example, at around 18um, K~2, so the amplitude attenuation factor in a 10um thick layer is 160,000x or a gain of 6E-6. So whatever is under the Ta2O5 layer should be irrelevant - there is negligible reflection.
[Paco, Nina, Aidan]
We ran our stack emissivity calculation on different AR stacks to try and make a decision for the TM barrel coatings. This code has yet to be validated by cross checking against tmm as suggested by Chris. The proposed layer structures by Aidan and Nina are:
Attachments # 1-3 show the emissivity curves for these simple dielectric stacks. Attachment #4 shows the extinction coefficient data used for the three different materials. The next step is to validate these results with tmm, but so far it looks like TiO2 might be a good absorbing film option.
[I'm (once again) behind on data processing, but I'm creating an entry on the day I actually run the tests]
This was performed last Friday (7/8).
I secured a thermocouple perpendicular against the hotplate and recorded the maximum temperature the hotplate reached at Low, Medium, and High. It took about 5 minutes to reach a stable temperature, where stable means that the temperature stayed within +/- 0.5°C for a minute. The hotplate maintains a certain temperature by turning itself on and off, so the temperature would drop slightly (at most, a few °C) while the hotplate was off. The maximums were:
At the max temperature, I moved the perpendicular thermocouple around to roughly find the variation in tempearture at different locations on the hotplate. Facing the nob, the top right quadrant is about 10-20°C cooler than the other quadrants, which are within 5°C of eachother. Excluding the cooler quandrant, the center and the outer edge are within 5°C of eachother. The temperature increases as one approaches half the radius, with it being about 20-40°C greater than the center and outer edge. The highest recorded temparture was 289°C at half the radius in the bottom left quandrant. This was only meant to be a rough test to see how even the heating is.
Note that the slides have "GLOBE" printed on one side. I always bond the opposite using the opposite side without the text.
On Monday (7/11), I began experimenting with bonding, starting with "air-bonding," which is trying to make dry, gently cleaned slides stick. I achieved my first succesful optical contact with what I call "acidental water-assisted direct bonding" or "water-bonding," where I accidentally clasped two wet slides together while washing my dirty finger prints off them. After the accidental discovery, I repeated it by running water over the slides while there were clasped together and achieved the same result. After a few hours, I attempted partially sliding apart the second water-bonded sample. I could slowly push them apart by pressing my thumbs against the long edge, but it took quite a bit of force. I decided to let 4 samples sit overnight: 1 air-bonded, 1 air-bonded with the brass hunk on top of it, and 2 water-bonded. Neither time nor pressure improved the air-bonded samples as they still slid apart very easily. The first water-bonded sample slid apart easier, but one part remained stubornly attached until I began shaking it violently. The second water-bonded sample was much harder to slide apart than the last time I tested it. With all the force of my fingers, I could barely make it budge.
Note that I am just testing out different techniques, so I have not set up the thermocouples to precisely measure the temperatue.
On Tuesday, I developed a new method of putting water, isopropanol, or methanol on one slide then squishing the other slide on top of it to fill the gap with the afformentioned liquid. The slides are slippery at first, but as they dried, which took about 15 minutes, the bond forms. The bonds were strong enough that I could just barely push the slides appart by applying pressure to the side using my thumbs. I prepared 4 samples this way, 2 with iso and 2 with meth. I took one of each and heated them on Medium for 30 minutes under the brass hunk with the aluminum square on the bottom and copper foil on both sides of the samples. Earlier in the day, I tried heating them without the weight on top, but the heat just broke the bond. I took the remain two and set them aside as controls.
On Thursday, I returned to check the bonds. The heated samples had broken. I intented to check on Wednesday, but I was sick from food poisoning, so I do not know whether the bonds broke immediately after heating or due to sitting for an extra day. For the control samples, one also had a broken bond, but the other had become even stronger.
I noticed that, when the slides are successfully bonded, the shape and appearance of the Newton's rings change, which can be seen in the pictures. I speculate that the circles on the unbroken control are the bonded regions. Ideally, we want to see no Newton's rings.
I have found that, after cleaning the glass with methanol (or even sometimes with just a dry lense-cleaning cloth), I can get glass slides to bond by rappidly rubbing them together until something sticks. This was inspired by watching "Wizard of Vaz" perform bonds on YoutTube. While cleaning, I now use enough strength to make the glass squeak, as advised by him.
Upon heating, I encountered the same issue as when I bonded them by putting a liquid (water, methanol, etc.) in the gap, which leads me to now believe that the broken bond is not due to the expansion of a liquid. Further, even at the low temperature of 60°C, placing the liquid-less sample on the hotplate breaks the bond in seconds, which I caught on video. In the attached video*, you can see that, before the heat, the bond is strong enough that I cannot push it appart with my fingers, but after the heat, it slides easily. Note that, outside of taking the video, I always lay the entire slide on the center of the metal so the sample is evenly heated.
*This is my first time attaching a video. If it didn't attach properly, I'll add it on to a later log. I also want to record myself performing the rubbing bonding technique.
Yesterday, I did two rounds of slowly heating 4 samples to the maximum hot plate temperature. This was to formally test if my success with a single sample earlier in the week was a fluke. Note that the hot plate takes about 10-15 minutes to reach a stable temperature when it is turned up one notch.
I bonded 4 samples by putting methanol in the gap between the glass slides and letting it dry to create a gap.
Starting at room temperature, I heated the slides on each setting for roughly 15 minutes, then let them cool down naturally over the course of an hour. 3 broke broke at medium heat, and 1 survived the whole process. I belive these broke because the bonds were weaker and I heated them slightly too quickly. In previous tests, I would manually switch the hot plate on and off, but I wanted to see if the hot plate could heat up slow enough on its own.
I bonded 4 samples by scrubbing the slides with methanol, using a compressed air duster to blow off the fibers, rubbing them together with the pressure of my fingers, and repeating this whole procedure until they stuck (it took 2-4 repeats).
Starting at room temperature, I heated the slides on each setting for exactly 20 minutes, then let them cool down naturally over the course of an hour. All of them survived to the maximum temperature (the pictures show them at the start and end of the heating, note the temperature). I credit this to the stronger bonding proceedure and the extra 5 minutes for them to adjust to the temperature. I did not turn the hot plate on or off at any point, I just let it heat up at its own rate.
I cannot tell if the bonds are stronger. The size and shape of the Newtons rings did not change.
We succeeded in setting up an apparatus for quantifiying the razor blade test. After mounting the glass slides such that the razor edge rested against the gap, we slowly turned the knob to push the blade into the gap. We started with the knob at 0.111, and at 0.757, the bond between the glass slides failed. As we approached 0.757, the interference pattern in the glass shifted, foreshadowing the break.
(Edit by Koji. This 0.757 is 0.0757 I suppose...? And the unit is in inch)
Pictures of the razor test apparatus before and after disassembly, to make future reassembly easier.
While finalizing my work plan for the quarter, I decided to look at the Thor Lab slides. This was instructive because they highlighted the troubles I will have with working with silicone. They are fragile and their small, thin sizes makes cleaning and manipulating them (without contamination) much more difficult compared to the glass sides from before.
I tried cleaning and bonding them the same way as the larger slides. Rubbing them together did not work like with the larger sides, but that may also be a function of being more careful, as not to break them. Once I cleaned them, it only took a tap from my finger to get the center to bond, but the bonded surface area still did not spread out like it did in the YouTube videos (http://youtu.be/se3K_MWR488?t=80). By pressing down around the bonded area, I could expand it slighty. Note that I did crack one slide in the process of doing this, as shown in the pictures.
Because the slides are so thin, I think they will benefit greatly from being left under a heavy object, although it may be difficult to put the weight on the slides without them breaking.
Continuining with my casual exploration of the Thor Lab slides, I heated them from off --> low --> med --> high, with 10 minutes on each setting. The only pressure I applied was 3 larger glass slides, and that was only to flatten out the copper that the smaller, bonded slides sat on top of (so the contact with the heating plate was even).
The heat made the bonded area smaller, but it did not break. As the slides cooled, the bond area increased slightly but not back to the original size. Next I will try this with slower heating and additional pressure.
Given that these glass slides are much thinner than the ones I worked with prior, I suspected they would be more receptive to pressure. I decided to replicate the tests I performed with the larger slides: I prepared 8 samples, 4 by smushing the slides together with methanol in the middle and another 4 by cleaning the slides with methanol before pressing them together with my fingers. I put 2 of each type under the cylindrical weight, and 2 of each type under the rectangular weight with the addition of heating. The heating consisted of switching the temperature from off --> low --> med --> high with 15 minutes on each setting.
I will check the results in the morning. I need to wait until the rectangular weight is completely cooled, otherwise I cannot remove it from the hot plate in manner that does not risk cracking the glass.
The first sample picture shows the pressed slides on the top and the smushed slides on the bottom. For the second picture, this is reveresed. Correction: the order is the same for both samples.
These are the results from the previous log.
At long last, there was an improvement with pressure and heat! Pressure without heat and pressure with heat both showed a small improvement. Although the improvement was not major, it does show that pursuing this method of adding weight and heat are viable. Since this was a test, I put less weight on and heated it fast than intended, but now I feel confident to add more weight and slower/greater amounts of heat.
Before jumping to conclusions based on my previous results, I wanted to check that it was indeed heat and pressure, not time, that led to the bonds improving.
I prepared 4 samples, all with my standard pressing technique (which still leaves room for improvement). 2 samples will simply be left to sit undisturbed, and the other 2 will be left under both (rectangular and cylindrical) weights. I will check these in roughly 24 hours, just like the last test.
The 2 slides on the right are the ones under the weights.
I was unable to check the samples because I could not get access to Bridge, so they will be checked tomorrow and the results will be added as an edit to this log.
Given that I was unable to do work in the lab, I instead began a second attempt at writing code for the Arduino to use PWM to control the hot plate temperature.
As expected, the suface area of the bond only increased for the samples under the weights. I did notice something worrying: one of the non-weighted samples actually had its surface area decrease. It is unclear if this is a one-time thing or if all of the bonds deteriorate with time. Unrelated, but I also noticed that the bonded areas always have small dots that refuse to bond. It's unclear if that is due to imperfections or contamination (I suspect the latter).
I left all 4 samples under both weights out of curiosity to see if the bonded surface area would increase further (or possibly decrese further).
I wrote a program to control the heating rate of the hot plate using Pulse Width Modulation (PWM), and it was a great success!
For roughly 6 minutes, the hot plate was power cycled with a rate of 100 ms on followed by 900 ms off. Based on my calculations, this should correspond to a 0.08°C/sec temperature increase. In other terms, we expect a 24°C increase in the span of 5 minutes. For comparision, without PWM, the hot plate heats up roughly 100°C in that same timespan. I recorded the temperature by filming a thermometer and transcribing that video into a text file, which could be analyzed and graphed. I only transcribed the first 5 minutes of the 17 minute video (I also filmed part of the cool down) because 5 minutes was enough to show clear results.
At t=0, the hot plate was 21.4°C, and at t=300, the hot plate was 49.7°C. That is a 28.3°C increase in the span of 5 minutes, only 4.3°C higher than the predicted value. The rate, 0.094°C/sec, is only slightly faster than the desired 0.08°C/sec. Further, as shown in the graph, the temperature increase was almost perfectly linear, which is ideal. Overall, using an Arduino to PWM the hot plate is looking very promising.
I repeated the first test, but let the hot plate run longer. It revealed that the linearity for the lower temperatures completely falls apart at the higher temperatures. I think it should be fairly straightforward to modify the code to accommodate this.
The previous test was cycled with 0.3s on follwed by 0.7s off*. This test was 0.7s on followed by 0.3s off. I intended to let it run longer, but I accidetly knocked the thermocouple over while trying to move the cable father from the hot plate so the plastic would not risk melting.
Like before, we see that it starts out relatively linear. I noticed the heating light kind of fluttering around 200°C which appeared in the data as a small decrease around 450s on the graph. I do not know the source of this issue, but I fear it may be the hot plate overriding my cycling with its own built-in cycle; something left for future testing. This is the last data I will gather using v1 of my Arduino code, as am I now working on implementing what I have learned in a smarter v2 of the code. I included v1 of the code, and the txt files for the first three tests.
*I think. Could have been 0.1 on, 0.9 off. Note to self: double check this.
I had a little set back regarding the non-linear portion of the heating. After about 150°C, if the heating rate is kept constant, the heating graph transitions from linear to logarithmic. I was able to show graphically that, yes, it is indeed logarithmic, but I could not think of an algorithmic way to translate this logarithmic curve into the increase in heating rate to maintain a linear heating rate. I do have some ideas which I will test tomorrow.
I had some trouble with the code not working as intended (partially because it has been I while since I coded in C++). However, I was able to run two tests with the new code, although I ran out of time to type up the data for the 2nd. Graphing the 1st test's data, it appears that my improved code is an improvement, but the heating is still slowing down as it approaches 200°C. I need to re-run this test, but with v1 of the code, for better comparison.
The hot plate was supposed to increase 180°C in 10 minutes (so that I would reach 200°C), but due to an inscrutable bug, it did not exit the while loop, so it continued past 10 minutes.
For the following two graphs, I ram four tests: two using the the v1 of the PWM code and two using v2 of the PWM code. The graphs show the heating rate I was aiming for and the actual results. It turns out, my v2 does not work better than my v1. Before 150°C (which is where I believed that (assuming the rate is kept constantly) the heating rate shifted from linear to logarithmic), v1 is an overshoot and v2 is slightly less of an overshoot. The goal of v2 was to increase the rate after 150°C to compensate for this drop off, but it does not appear to have worked.
While I would still like to refine my code, I think it will be good enough to try using it to actually heat the samples.
Before trying the PWM on actual samples, I wanted to make one final attempt at improving my code (labled as v2.1). This change appears to have 1) broken the code regulating the basic heat cycling process 2) caused the hot plate to heat up far, far too quick. Since the thermometer strangely turned off halfway through, I only have two pictures as evidence that this test existed: a screenshot of the Arduino program telling me that the max cycle rate had been reached (which should have not happened) and a frame from the video filming the thermometer showing the peak temperature (which is 100°C high than expected). Somehow the hot plate reached over 300°C, which I thought was impossible because the hot plate's built-in heat cycle should have kicked in around 260°C. Unrelated, but I am performing this test in my dorm room because I was quarentined due to COVID exposure, and I like using my personal fan and the house's freezer to cool down the hot plate quicker.
I made some adjustments (labled as v2.2), and I had the same failure as v2.1, except I managed to capture it on camera.
Finally, with v2.3, I managed to fix all the issues. I ran out time today to transcribe the temperatures for graphing, but this itteration of the code managed to reach 200°C in 10 and 7 minutes for test #1 and #2, respectively. I also managed to fix the problem of the hot plate not turning off after the desired heating time. The real test will be trying a slower heating time, like 20 minutes, but I am glad I postponed using actual samples because this fix has given me code that appears to work exactly as I hoped.
Here are the graphed results from yesterday's tests, both by themselves and overlayed with the previous tests. I am satisfied with my code; it has given me the (roughly) linear heat increase that I desired. The only last thing I would like to test is heating over a signficantly slower time.
I tried increasing the temperature by 180°C over 20 minutes. As suspected, it did not quite reach the target temperature because the temperature started to drop off around 100°C instead of 150°C, as the program expected. This should be an easy adjustment, since it is just a matter of increasing the duration of the cycle at an earlier time.
My two corrections ended up being huge overshoots. The drop off time (100°C) is correct, but the default rate increase that worked in the other cases is not working at all here.
The goal of "v2.X test #3" is to heat the hot plate to 200°C over the course of 20 minutes, and with v2.6, I have effectively succeeded. There will likely be more issues once I try, for example, to heat the hot plate to 300°C over the course of 60 minutes, but for now, I want to stick with lower temps and shorter times while I work out the kinks. Now that I understand the difficulties of PWMing a hot plate, adapting the code to combat future issues should be straightforward.
To summarize my code, I control the heating rate by cycling the hot plate's power on and off for some % of 1000ms. In other words, the hot plate is on 300ms then off 700ms then on 300ms etc., where the relation between target heating rate and hot plate on time is based on previously gathered data. This produces a nice, linear(ish) temperature increase up until a certain temperature, at which point it plateaus. In the previous versions, the way I compensated for this was by increasing the on time by 5ms for every cycle after 150°C. This did not work for slower heating rates, so the newer versions changed this by making the 5ms and 150°C varry depending on the target heating rate. The exact value is a linear extrapoliation from previous data. This is imperfect, but I do not think perfection will ever be possible with the current equipent, and I think I have reached something good enough that now I can finally apply it to my optically contacted samples.
Since I have finished this "stage" of work, for completeness, I am including all of the code, data*, and graphs involved so far.
*the .txt data files are in the cycle_vX_graphs folders; these folders also have the Jupyter notebooks I used for graphing the data
I realized that, after changing so much from v2.3 to 6, I should check that my first two tests produce correct results with the latest version. This was good because all three tests turned out to be innaccurate, as they were all short roughly 10°C. However, they were very precise. For all three, the final temperature was 193.15±1.5°C.
Since I was focusing on the hot plate code and therefore did not need my weights, I decided to leave them on top of my samples for roughly 2 weeks.
It appears that an increased amount of time under pressure does not result in any noticable differences. A slight increase in surface area (SA) in two places, and a slight decrease in SA in another place, but overall no change. Note that "(initally)" in the picture below refers to http://nodus.ligo.caltech.edu:8081/Mariner/89.
Now that I have (relatively) good PWM code, I wanted to do my first real test with actual samples. Since everything went smoothly, I will now work on building the original set up for the project, which included attaching thermocouples to two plates so we could precisely measure the heat between them.
As you can see in the pictures below, I am running an Arduino off of my laptop which controls an AC/DC control replay that turns the AC power to the hot plate on and off.
Firstly, last night's heating did not change the contacted surface area greatly, but there is too many factors to speculate as to why that is the case. I leave that for future testing.
I attached the thermocouples by adhering them to the two aluminum plates. I was careful to make sure that the thermocouple was in the dead center of the aluminum plate. The other end of the thermocouples—exposed positive and negative wires—were screwed into the K Type connector so they can be plugged into the thermometer/multimeter. Taking the average between the top and bottom plate will give a more precise estimate of the temperature of the samples.
I intended to test the new thermocouple set up today, but when I plugged them in, both did not read a temperature. It took me a long time to figure out what went wrong: when installing the K Type thermocouple connector, the wires of the thermocouple need to be pushed in as far in as possible, otherwise the circuit would not be completed. It took a lot of trial and error to figure this out. I first created a test "circuit" with wire and a resistor to make sure that the connector itself was not broken. Then I carefully observed how moving the wires in different places affected the reading.
Once I did carefully reassemble the thermocouples, they worked perfectly, as indicated by the non-zero current. I ran tests with my three thermocouples and two devices to see how precise the temperature reading is. The results are below and pictures of the readings can be found in the zip file. I cannot explain why one of the adhered thermocouples is hotter than the other.
Plate #1 and 2 refers to the two different aluminum plates. T1 and T2 refers to the two ports on the Digital Thermometer 343. It cannot read two thermocouples simultaneously (as far as I can tell); it's so one can be used as a baseline/reference value for the other.
Since the two devices are giving different temperature readings, I would like to find out if this imprecision is linear (e.g. they are always 3°C off, so I just need to add/subtract 3°C after taking the measurements). If not, some sort of calibration is probably required. I decided to figure this out by running the heating tests I did before, but this time with the plates. This also serves as a test to see how the plates heat up.
Or rather, this is what I would have done, had I not realized that the thermometers were going down as the heat was increaing, meaning I had switched the polarity for both thermocouples. It turns out that this mix-up is a common mistake. I thought that I double checked that red was positive for thermocouples, but it is in fact not:
"red is the usual color for positive charges, whereas the red wire in thermocouple cables typically contains the negative signal. This coloration is ANSI standard for thermocouples, but it is not what most people expect."
I performed the same tests I have been doing prior (+180°C in 10 minutes) but now with the (correctly wired) thermocouples attached to the metal plates. The top plate is thermocouple #1 attached to the Fluke and the bottom plate is thermocouple #2 attached to the TPI (the lime green one).
The base heating rate for the new set up will require some tweaking to the code because the plates heat up much slower, but as I have mentioned previously, I do not think this will require a lot of extra work since I now know the tips and tricks to PWMing the hot plate. The only difficulty might come from the increase in hysteresis (i.e. the plates continue to increase in the temperature long after it turns off). For future tests, I need to remember to continue recording the temperature after program finishes its 10 min cycle.
On the positive, I think this test shows that taking the average of the two thermocouples to find the temperature in the center (where the optically contacted samples are) is a worthwhile endevor, considering how much the top plate lags behind the bottom plate in terms of heating speed.
With v3.0, I took a couple steps backwards by getting rid of the feature that increases the heating rate so I can isolate the base heating rate for the two plates. In my experience, the best way to figure out how to modify the program is to try a bunch of different target temperatures and heating times and look for correlations. I started with (attempting) to increase the plates by 280°C in 10 minutes.
For a future release, I am thinking of radically (relatively speaking) changing the function parameters: the user only inputs the target heating rate and how long the plates should be heated at this rate. This is to address the hysteresis in this new set-up, which I will elaborate on if I make the change.
I decided test how fast the plates would heat up if the heat was just on constantly on for 5 minutes. In general, these tests are raising a lot of questions in regards to controlling the temperature given the hysteresis in the system. It is also apparent that the bottom plate heats up signficantly faster than the top one, which means I need to heat the samples much longer than, say 10 minutes, if I want to avoid unevenly heating both parts of the optically contacted piece.
I also have to be conscientious that I am already half way through the quarter and ideally should be devoting time to bond strength testing rather than continuing to fiddle with the hot plate.
To combat the bottom plate heating up much faster than the top plate, I decided to try increasing the cycle period from 1000ms (1s) to 10000ms (10s). In other words, taking the test I today ran as an example, the hot plate will now be on for 1000ms then off for 9000ms then repeat. Hopefully this should give more time for the heat to transfer to the top plate, but even in this short test, it still appears to be a problem.
Due to the slower heating times, this will be a bit more challenging to test as each test could take hours to complete, but this is more in line with the final intended use anyways. Perhaps my cycle of 1000ms on is too much (e.g. I should do 100ms on then 9900ms off, although I think that might be so slow that it will never heat up; this also raising the question as to how I will deal with mantaining this slow heat up at the higher temperatures).
[I'm behind on data processing, but I'm creating an entry on the day I actually run the tests]
Somehow I never thought of this before, but instead of increasing the "on" time of the hot plate to account for the heating drop-off, I should keep that constant and instead decrease the "off" time. That feels more logical given that I am trying to keep the temperature of the two plates as close as possible.
I'm posting a summary of the work I've done on the Lagrangian analysis of the Mariner suspension design and a state space model of the actuator control loop. The whole feedback mechanism can be understood with reference to the block diagram in attachment 1.
The dynamics of the suspension are contained within the Plant block. To obtain these, I derived the system Lagrangian, solved the Euler-Lagrange equations for each generalised coordinate and solved the set of simultaneous equations to get the transfer functions from each input parameter to each generalised coordinate. From these, I can obtain the transfer functions from each input to each observable output. In this case, I inserted horizontal ground motion at the pivot point (top of suspension) and a generic horizontal force applied to at the intermediate mass. These two drives become the two inputs to the Plant block. The two observables are xi - the position of the intermediate mass, which is sensed and fed to the actuator servo, and xt - the test mass position that we are most interested in. I obtained the transfer functions from each input to each output using a symbolic solver in Python and then constructed a MIMO state space representation of these transfer functions in MATLAB. For this initial investigation, I've modelled the suspension in the Lagrangian as a lossless point-mass double pendulum with two degrees of freedom - the angle to the horizontal of the first mass and the angle to the horizontal of the second mass. The transfer functions are very similar to the more advanced treatment with elastic restoring forces and moments of inertia and the system can always be expanded in a later analysis.
For the sensor block I assumed a very simple model given by
where G_s is the conversion factor from the physical distance in metres to the electronic signal (in, for example, volts or ADC counts) and n_s is the added sensor noise. A more general sensor model can easily be added at a later date to account for, say, a diminishing sensor response over different frequency ranges.
The actuator block converts the measured displacement of the intermediate mass into an actuation force, with some added actuator noise. The servo transfer function can be tuned to whatever filter we find works best but for now I've made two quite basic suggestions: a simple servo that actuates on the velocity of the intermediate mass, given by
and an 'improved' servo, which includes a roll-off after the resonances, given by
where p is the pole frequency at which we want the roll-off to occur. Attachment 2 shows the two servo transfer functions for comparison.
The state space models can then be connected to close the loop and create a single state space model for the transfer functions of the ground and each noise source to the horizontal test mass displacement. Attachment 3 contains the transfer functions from xg to xt and shows the effect of closing the loop with the two servo choices compared to the transfer function through just the Plant alone. We can see that the closed loop system does damp away the resonances as we want for both servo choices. The basic servo, howerver, loses us a factor of 1/f^2 in suppression at high frequencies, as it approximates the effect of viscous damping. The improved servo gives us the damping but also recovers the original suppression at high frequencies due to the roll-off. I can now provide the ground and noise spectra and propagate them through to work out the fluctuations of the test mass position.
I've implemented a more extensive feedback model that uses proper conversions between metres, volts, counts etc. and includes all the (inverse) (de)whitening filters, driver, servo and noise injections in the correct places. I then closed the loop to obtain the transfer function from horizontal ground motion and each noise source to test mass displacement. I tuned the servo gain to reduce the Q of both resonances to ~20.
Our idea was then to compensate servo gain with the output resistance of the coil driver to raise the RMS of the DAC output signal in order to raise SNR and thus suppress DAC noise coupling. I found that raising the output resistor by a factor of 10 above the nominal suggestion 2.4 kOhm gave me a DAC output RMS of 0.3 V, so in line with our safety factor of 10 requirements. This also coincidentally made all the noise sources intersect at approximately the same frequency when these noises begin to dominate over the seismic noise. All these initial tests are subject to change, particularly depending on the design of the servo transfer function. I'm attaching the relevant plots as well as the MATLAB script I used and the two files required for the script to run.
Here's the DAC voltage spectrum with its associated RMS.
Also, for clarity, this model is for a lossless point-mass double pendulum system with equal masses and equal lengths of 20 cm.
I've ironed out the issues with my MATLAB model so that it now shows correct phase behaviour. The problem seems to arise from infinite Q poles where there is an ambiguity in choosing a shift of +/- 180 deg in phase. I've changed my state space model to include finite but very high Q poles to aid with the phase behaviour. The model has been uploaded to the GitLab project under mariner40 -> mariner_sus -> models -> lagrangian.
Now that I have correct phase and amplitude behaviour for my MIMO state space model of the suspension and the system is being correctly evaluated as stable, I'm uploading the useful plots from my analysis. File names should be fairly self-explanatory. The noise plots are for a total height of 550 mm, or wire lengths of 100 mm per stage. I've also attached a model showing the ground motion for different lengths of the suspension.
Here are the DAC and residual displacement spectra for different suspension heights ranging from 450 mm to 600 mm. I aimed to get the Q of the lower resonance close to 5 and the DAC output RMS close to 0.5 V but as this was just tweaking values by hand I didn't get to exactly these values so I'm adding the actual values for reference. The parameters are as follows:
I've been testing out the extended body lagrangian models and I'm trying to understand the ground motion and force coupling to the test mass displacement. I've compared the two point-mass model to the extended model and, as expected, I get very similar results for the ground coupling. Attachment 1 shows the comparison and asside from more agressive damping of the point-mass model making a small difference at high frequency, the two models look the same. If I look at the force coupling, I get a significantly different result (see attachment 2). I think this makes sense because in the point-mass model I am driving purely horizontal displacement as there is no moment of inertia. However, for the extended body I drive the horizontal position of the centre of mass, which then results in an induced rotation as the change propagates through the dynamics of the system. To obtain a consistent result with the point-mass model, I would need to apply a force through the CoM as well as a counteracting torque to maintain a purely horizontal displacement of the mass. What I am wondering now is, what's the correct/more convenient way to consider the system? Do I want my lagrangian model to (a) couple in pure forces through the CoM and torques around the CoM and then find the correct actuation matrix for driving each degree of freedom in isolation or (b) incorporate the actuation matrix into the lagrangian model so that the inputs to the plant model are a pure drive of the test mass position or tilt?
I've been having a look at the transfer functions for the translation and pitch of both masses. I'm attaching the plot of all input-to-output transfer functions of interest so far. Here I've identified the pitch resonances of the two masses (one each) as well as the two pendulum modes. I need to now investigate if they occur in the correct places. I have confirmed the DC response by directly solving the statics problem on paper.
I've checked the validity of my state space model in a couple of ways so that we have confidence in the results that it gives. I've checked the DC gain of the transfer functions where it is non-zero. I did this by solving the static balance of forces problem in the extended body model by hand to get the DC CoM position as well as the pitch angle of both masses. In the previous ELOG entry I didn't quite do this for all transfer functions so here I completed the check. My values agree with the model's values to within 10% at the worst end and to within 0.1% at the best end. I performed a second check to see if the frequencies occur in the correct places by considering the case of very low coupling between the different resonant modes. It's difficult to check this in the case where the modes are strongly coupled (for example length-pitch is strong or the two pitch modes are close together) but if I sufficiently separate them, I get very good agreement between my analytic approximation and the state space model.
The model can easily be converted from one that gives motion in X and RY into one that gives motion in Y and RX. Running the model for both directions gives the following list of resonances (note pendulum modes in X and Y direction are identical):
Given that I think the model seems to give sensible values, I've pushed the updated model to the GitLab repository. It is now possible to quickly change the parameters of the suspension and very quickly see the corresponding shift in the resonances. To change the parameters, open the plain text file called 'params' and change the values to the new ones. Afterwards, run the file 'ss_extended.py', which will solve the state space model, save the resulting ABCD matrices to a folder and print out the values of the resonances to terminal.
Today we looked at possible locations for where we will be setting up Mariner Suspension and Cryo chamber. The first option was the far left table in the CAML lab but it seems that there is going to be an issue with height clearance, so we have come up with another solution which takes a table from Koji's lab which is 3'x4' ft and moving it into CAML lab in the back right of the lab. To move the table we may need to call facilities to help us because we will most likely need to take the table apart to get it out of the lab. The aisle space in Koji's lab is about 43 inches, but the doorway, which is the tightest space, is 35 inches.
After we have set up the table in CAML we are planning on moving the Chamber in DOPO-lab to CAML. We plan to use skyhook with has a load limit of 500lbs/227kg this should be more than enough to move the chamber. We still need to get the wheeled base for skyhook we are in the works in doing so.
Also, We want to remove the previous setup from the chamber and leave it at DOPO-lab. Stephen is going to figure out how to keep it clean (sort of). Besides these transportation logistics, I am also working on the electronics as an immediate task and the electrical arrangement in the chamber.
to do list
- Check the table height
- Check the chamber height (base/cap)
- Check how much the chamber cap needs to be lifted (so that we can remove it)
- Is the weight capacity sufficient?