I cleaned a clamp and clamped the seeder and amplifier sled to the shelf. This should prevent it from moving.
I ran the attached CNC code on the Haas VF-2 to add 37 tapped 1/4-20 holes with 1" spacing (a breadboard hole pattern) to a 10" CF Flange. I added a 0.0156" deep groove for venting so that we can cover a hole and not have a virtual leak.
The "pipeline" was to design the part in SolidWorks (CAD), give some CAM commands (tell it what holes to drill, how deep, etc), then "post" the G Code. I then copy the G Code into .txt file adn import it into the python script. This python script adds a custom cycle call (M97) to remove chips and allow me to visually confirm this. I then copy the code's output into a new .nc file. I then add the custom cycles at the bottom of the code. I can then read this G Code in the Haas.
I attached the flange the same as this post. Because the part and tool are flooded with coolant, the masking tape didn't do a great job at holding the flange to the knife edge and some chips got under the copper gasket. Luckily, these chips did not scratch the knife edge. I think the flange helped.
I used the 4 following tools: this #4 Cobalt Steel drill bit with a TiN coating, a 3/8" diameter 90° chamfer tool, this 1/4-20 steel bottom tap with 3 flutes and a black oxide coating, and a 1/8" diameter carbide end mill with 4 flutes and a TiAlN coating.
The tools did not appear to be too worn out after this cycle. There is a bit of wear on the tap and end mill, possibly due to earlier use.
After machining, I carefully removed the chips and used a stone and WD 40 to remove burrs from end mill.
I am going to machine another flange tomorrow and clean these Friday so that they can be baked out over the weekend.
This should probably be in the "Vacuum Systems" section not "GQuEST General"
This should probably be in the "Vacuum Systems" section not "GQuEST General"
The parameters in this post are mostly good, but the #4 carbide drill bit chipped after seemingly everything was done right. I could increase the spindle speed or decrease the plunge feed rate by ~10% each, but I have gotten frustrated trying to get the parameters for this drill bit dialed in. The issue is a combination of carbide's sensitivity to parameters, the four facet (narrower spiral) point, or the 118° point angle.
Instead, I used this #4 Cobalt Steel drill bit with a TiN coating to make 4 test holes. This drill bit has a split point and 135° point angle to hopefully prevent chipping of the bit. I used a spindle speed of 506 rpm and a feed rate of 1.68 in/min, what FSWizard recommended.
Separately to figuring out these parameters, I also wrote some Python code to edit my G-Code so that the spindle reverses to clear chips, stops coolant and dwells above the part so that I can visually make sure the chips are gone, and then resumes the cutting cycle. This works very well.
Tomorrow, I will finally machine the 10" flange.
In the post after I've made the flange, I will post the CAD, CAM, G-Code, and python script.
I've transfered most of the contents of the B102 cabinet to the Lista cabinet in B111B and done some semblance of reorganization. See attached photo.
I have added "Escort Required" signs to the doors of B110, B102, and B111. Hopefully this will prevent unknown lab access a problem that we have been dealing with. I have attached the signs so they can be edited
I have placed the new computer on one of the tables on the east wall of B111B. I cloned the disk of the NUC in B102 onto an external hard drive using clonezilla, but was unable to copy this onto the new machine becasue the NUC drive is 1TB and the new machine's drive is 500GB. A clone may still be possible using a partition strategy, but I also expect that Lee's plan to use virtual machines will make this a moot point. As of now the new machine is running windows and I have installed no additional software.
Would it be possible to start work on the disconected ssh idea. We should get a rack mounted computer to have all of the small Nuc's tunnel into. Do we have that already?
I designed some parts to secure the 1550 nm Amplifier to the breadboard. The amplifier has some slots made for a 2U 19" Electronics Rack, so I used these to attach to the parts I made.
I decided to try to use the water jet since tolerance was not too important, the parts I designed were the same thickness, and slots are annoying to make in the mill. This worked very well. The 1/4-20 pilot holes were a bit oversized (0.209" instead of 0.201" diamter) but this is well within spec. I had to tap the parts myself and then drill another hole on the mill.
See attached files and photos.
Our plan to have the laser amplifier above the optics tables on breadboards seemed like a safety risk. As seen here or here, the output connection to the amplifier is at risk of snagging on something. Since we expect watts of power coming out of this amplifier, we need to make sure we can't accident smack this fiber and cause it to come loose. I've made a first draft of a solution for this. Half inch post system and using zip ties to secure the fiber to the rigid metal. See this or this. Note that the shelf above the optics tables was moved about a foot forward to accommodate this.
Daniel is working on a solution to secure the breadboard to the shelf.
Thank you for identifying the snag potential. Please consider how exposed the fiber is, even if fastened to a rigid support. Could something whack into it and sever it? Could it be inside a short piece of metal or PVC conduit?
It definitely is still exposed. I'm looking for the flexible metal tubing the LIGO sights use to move fibers across rooms.
[Ian, Daniel, Jeff, Torrey]
Moving of the optics sleds has been completed without any hiccups. Particle count pre moving was 0/0/0 and 20 minutes after things have settled 0/0/0. The mylar is still over the cavities, we will unwrap when we plan on turning on lasers. Pictures attached.
Please note that the fans in the mobil cleans rooms in B111 should never be turned off now.
Looks great. Can you remind me what the units are on the particle counter? What are the three particle sizes, and is it calibrated in terms of particles per volume?
x/x/x is the 0.3 um, 0.5 um, and 1.0 um cumulative count over 1 minute.
Simulations in vhdlSandbox/biquad/TDF2_llcooly,ipynb plot the values of register values for the transformed direct form II difference equations and confirm that the registers S10 and S20 need not more bits thatn the input/output values. As a function of the critical frequency of a low pass filter (sampling frequency 10 MHz) is flat. A 16-bit integer is 15 integer bits plus one sign bit is "nbits.png"
Using then 15 bits in the fractional part gives good noise performance when fLo=1E4, but that degrades for lower values of fLo. Here in psd.png the x-axis is frequency/fLo for different
I've equiped Sander with a Red Pitaya to take back to California; it contains a working biquad filter bank running at 16 bits and 125MHz, using Direct Form 1 with the Scattered Look-Ahead technique. I'll continue to tease performance out of the other implementations, specifically DF2T and BQF for higher bit counts, and I'll provide firmware updates when possible. Hopefully the current version will at least allow you to get some latency baselines. The board runs Pynq so installing the newer versions should be a breeze.
The Red Pitaya is set to use a single channel, and you can program via Pynq how many filters in series you would like to put in the signal path, up to 6. Each one can be programmed independently, so in this way you can run an arbitrary filter designed with SOS stages. Do keep in mind the current limitation of 16 bits, however. Also, I didn't include a gain stage so this is probably an obvious addition to the next version.
I've set up a Github organization with all of my work on this thus far. It's set to private so if anyone wants to take a look please comment your emails in the comments. Chris told me there was a Gitlab instance so maybe I can migrate this there eventually.
I am definitely interested in checking out your repos, jeffwack111@gmail.com
Link is possibly broken or I don't have access.
Hi Ian, just sent you an invite to macmillan@caltech.edu
Following this tutorial: Laser Locking With Closed-Loop Transfer Function Measurement (liquidinstruments.com), here's a summary of useful points in measuring the transfer function of the plant, open loop system, etc, which can be useful in the design choices for the laser PID controller (like determining how good the gain parameters are). This was done with just the slow controller enabled. It would be a little more complicated if both slow and fast controllers are enabled because you would have to divide out the fast controller TF (from the Moku configuration, Out A of the LLB would not be the pure error signal).
Note: there is an error in Figure 1 of the linked tutorial. Noise should be injected AFTER the plant for the subsequent math to be correct.
Basic idea: To test how good your plant can deal with disturbances, you inject some disturbance and measure the system response. A way to measure these responses is shown here: sys_tf.jpg (we combined the sensing S into the plant P, but the same math applies to the tutorial). Essentially, the math suggests that if we inject disturbances and measure their corresponding output, we can get the open and closed loop transfer function of the system, which informs us about the stability of our controller.
We need to split up the feedback loop into the following components to do this: schematic.jpg. We rigged up the Moku in this configuration to measure all these parameters: Mokuconfig.jpg, using the Laser Lock Box (LLB), Lock In Amplifier (LIA), PID, and Frequency Response Analyzer (FRA). You move the demodulation process into the Lock-In Amplifier (LIA) and perform the injection using a PID as an adder. Then, you use a Frequency Response Analyzer to get the bode plots for the different transfer functions (open loop, plant, etc). In the FRA, you apply a frequency scan to measure the transfer functions.
We locked the laser first using the following controller: slowcontroller.png. We measure the open loop transfer function (corrected for the phase going beyond 360 degrees), where we find unity gain (0 dB) occurs at 1.85 Hz with a phase margin of 65 deg: OpenLoopGainTransferFunction.pdf. This means that the system is reasonably stable (a large phase shift is needed to reach instability so the system is robust) and can control below 1.85Hz (can't suppress noise effectively above this).
This open loop TF is given by CP. We can divide CP by the controller transfer function (C) that we applied (dividing the gain and the phase) to get the plant transfer function, which is shown as a Bode plot here: PlantTransferFunction.pdf. A few notes:
Knowing the plant TF, you can use these functions to find potential resonant peaks or bandwidth limits in the system. This is useful because you want to make sure your controller won't start to amplify those peaks and drive the system out of stable lock. The plant transfer function bode plot has a generally flat magnitude, which is expected because it should not be amplifying any particular frequency. The slight bump at ~4 Hz may be some slight resonance in the system, it shows up in the final noise spectrum as well interestingly enough (NoiseSpectra.pdf), although this is with the slow and fast controller. Ideally, you want the range of your open loop phase margin to be between -90 and 90 degrees for as large of a controller bandwidth as possible. We would be able to model the system fully if we could sum the noise spectra (inside closed loop) and plant transfer function.
We can also check the goodness of our controller by looking at the disturbance rejection, which is the response put on a disturbance going through the system. You would want the bode plot of the disturbance rejection to be at low magnitude (e.g. negative dB) to suppress the disturbance. To ensure that the perturbations are suppressed enough and you can hold the lock with less noise, the magnitude of the disturbance rejection should not increase beyond 0 dB after the unity gain frequency because then, noise will be amplified in the system (i.e. (1/(1+CP))*N = disturbance rejection TF * Noise --> increased noise in the output). I don't really understand the last sentence of this article where the low frequency gain of the open loop TF matching the disturbance rejection magnitude suggests there is adequate noise suppression: I would think that as long as the magnitude of 1/(1+CP) is small, the magnitude of CP should not matter.
Plant transfer function pdf didn't work, here's the actual thing.