Hello all,I wrote a driver and device class for controlling the Mai Tai laser. It works and it integrates with the general Laser class. However, the Laser class and the device interface require some changes to adapt to the Mai Tai :- GDD does not make sense with the Mai Tai.
- I want to add an indicators showing whether the laser is pulsing or nor and the internal humidity (a filter needs to be changed if the humidity gets too high).
- Also, as I mentioned in an earlier email, I would like to take this occasion to implement a more general calibration, based on manual measurements.
On Thu, Mar 17, 2016 at 11:51 PM, Michael Graupner <graupner...@gmail.com> wrote:Hello all,I wrote a driver and device class for controlling the Mai Tai laser. It works and it integrates with the general Laser class. However, the Laser class and the device interface require some changes to adapt to the Mai Tai :- GDD does not make sense with the Mai Tai.The base Laser class doesn't know anything about dispersion correction, so you can just remove any reference to it in the MaiTai code (I assume you are starting from the Coherent implementation?)- I want to add an indicators showing whether the laser is pulsing or nor and the internal humidity (a filter needs to be changed if the humidity gets too high).Create a subclass of LaserDevGui called MaiTaiDevGui and modify the user interface as you like. Probably you will create a few extra widgets and insert them into the top-level layout defined by devices/Laser/devTemplate.py. Then in your MaiTaiLaser class, override the deviceInterface() method to return an instance of your new MaiTaiDevGui class.
- Also, as I mentioned in an earlier email, I would like to take this occasion to implement a more general calibration, based on manual measurements.Right now, LaserDevGui has a "calibrate" button that is supposed to automatically generate a calibration table, a list of the existing calibrations, and a panel of options that determine how an automatic calibration should be executed. What if we rework the interface like this:* "Calibrate" button goes away and is replaced with "new calibration" and "edit calibration" buttons.* Clicking "new calibration" opens a window where the user can manually enter the wavelength and a table of (voltage, power) pairs. Edits to the table can be automatically saved or perhaps manually saved by clicking a button. This will add a new entry to the list of calibrations in the main window.* Clicking "edit calibration" brings up the same window but saves its changes to whichever calibration was initially selected, rather than creating a new one.* The automatic calibration control panel is moved to the bottom of the new calibration window, along with a new button that says "auto calibrate". Clicking this new button causes the old auto-calibration routine to run and populate the table with its (voltage, power) pairs.Thoughts? The new/edit buttons have a logic issue that I haven't quite worked out: what if you create a new calibration that uses the same optics and wavelength as a previous calibration?Also, is it really necessary for us to calibrate the laser on a per-wavelength basis? Right now the power-at-sample is calculated asPsample = Plaser * attenuation_factor(optics, wavelength, pcell_voltage)..and we need a complete calibration curve for each combination of (optics, wavelength). But perhaps this can be simplified. There are two attenuation factors I am after: 1) the attenuation of the pockels cell as a function of voltage, and 2) the attenuation of the entire optical train as a function of wavelength. I assume these two factors are independent, so we can measure them independently and just multiply the two factors together to determine the final sample power, like:Psample = Plaser * attenuation_factor1(optics, wavelength) * attenuation_factor2(pcell_voltage)This way we only need two calibration curves to cover the entire two-dimensional space of possible wavelengths and pcell voltages (but if there is any interaction between these two parameters, then the calibration would be incorrect).
--Luke
You received this message because you are subscribed to the Google Groups "ACQ4" group.
To unsubscribe from this group and stop receiving emails from it, send an email to acq4+uns...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/acq4/CACZXET8raJqHO6FXdgFnwSfaArRYruSYAqNmh1Yz1ZPxvYESQQ%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.
--
You received this message because you are subscribed to the Google Groups "ACQ4" group.
To unsubscribe from this group and stop receiving emails from it, send an email to acq4+unsubscribe@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/acq4/8177fcf8-49e9-473d-b506-368ef033fef5%40googlegroups.com.