Spectrometer Resurrector Build Updates

This is the update log for the Spectrometer Resurrector project: A project to replace the electronics in old spectrophotometers with modern open hardware and software while re-using the high quality optics, detectors and light source.

I’ve been bad about actually posting updates (other than to git) but I finally sat down and loaded the photos off my phone so here we go. I’m just gonna dump my backlogged updates in one post and then reply to this thread with future updates.

Friday September 13th

Last night we had a successful hacknight at sudo room. Several people came by and helped move the project forward.

We focused on the power supply for the deuterium arc lamp. This had so far been a missing piece of the puzzle. The hope was that we could either re-use the power supply from the original electronics or replace the power supply with something off-the-shelf but the power supply proved to be deeply integrated into the rest of the electronics and also fairly complicated, requiring three different voltages, including one high voltage of at least 190 but possibly up to about 400 V and the ability to change output voltage dynamically over a wide range. Used power supplies of this type on ebay are fairly expensive often costing over $200.

I have documented all of our findings in the readme in the git repository under the section “Light source”.

Thanks to Kent for his insights into the deuterium arc lamp. Kent is a local expert in vacuum tube technology who was visiting us from the Radio History Museum in Alameda and it turns out arc lamps are basically just vacuum tubes. Also thanks to Jake for his assistance in sketching out a rough design for an open hardware arc lamp power supply.

Here are a bunch of photos from the hacknight including photos of the deuterium arc lamp and the internal optics of the spectrometer.

Open Hardware deuterium arc lamp power supply

I added a bunch of info on the deuterium arc lamp to the readme in the git repository but the short story is that a power supply will have to generate 2.5 V (DC or AC) at 4 A during startup, then at least 190 VDC to start the arc and about 72 VDC to run the arc. It may be that up to 400 VDC will be required to start the bulb in case non-original bulbs are used.

If we assume a 24 VDC power supply for the entire system (which is reasonable given the 24 V stepper motor) then a simple design could be to use a simple buck converter for the 2.5 V and a simple boost converter for the 72 to 400 VDC. This module could be controlled using PWM pins from the same ESP32 module that runs the rest of the system or it could be completely separate. Maybe a design that allows either option would be simple, where the code for the buck/boost control is a module that can be run either with the other spectrometer code on a single module or separately on its own ESP32. This would allow the use of the deuterium arc lamp power supply in stand-alone mode.

Lower cost light source

There are other potential options for lower cost light sources. One is a xenon HID bulb with the cesium-doped outer glass removed. This will not go quite as deep into UVC and won’t have quite the same output power in the deep UVC range in general, but should be fine down to at least 260 nm and probably lower. There are also types of mercury vapor lamps that have reasonable UVC output. LEDs in the UVC range have also become more affordable but covering the entire desired spectrum still seems infeasible on a budget. If someone is only interested in e.g. 260 and 280 nm + visible then the LED option is probably viable.

The stability over time of these light sources will have to be analyzed before making any recommendations.

Kent, Cere and myself investigating the light source

The deuterium arc lamp

The spectrometer without its case from above. You can see that about half of it is the legacy electronics and the other half is a separate module containing the light source, optics and detectors.

The optical assembly:

Here’s a video showing the mirror that switches between the tungsten (visible light) and deuterium arc lamp (UV light)

And a bunch of teardown photos showing the optical unit and its internals:

Tuesday September 16th

Today I went through the original node.js code and updated it based on changes in the node.js ecosystem since this project was started.

Even though it’s only been about three years, and most of that was the pandemic, the node.js didn’t work anymore. I couldn’t even install the dependencies without errors using latest LTS node.js and npm.

The original codebase used browserify and gulp as its build system, which I had picked both because the browserify author (substack) was an important part of our hackerspace (sudo room) for years and because both browserify and gulp share design principles that are based around Unix philosophy, meaning small modules that each solve one well-specified problem but can be composed to solve complex custom problems. This, in my opinion, is an elegant and flexible way of building complex systems. Unfortunately the node.js community has been moving toward large integrated enterprise-like solutions that make things easy for new developers, but only if you develop things in the same way as everyone else.

Unfortunately Browserify and Gulp are barely or not at all maintained anymore.

To make a very long story slightly shorter: I have grudgingly moved this project to Parcel as a replacement for both Browserify and Gulp. Parcel’s documentation is lacking and erronous, it makes too many assumptions about your codebase and it has too much “magic” that tries to guess what you want, going so far as to add dependencies to your project without asking based on these guesses, but… at least it isn’t developed by Facebook.

At the same time I have removed ecstatic as a dependency as it also isn’t maintained anymore and I have moved to a combo of serve-static + finalhandler as a replacement as these are actively maintained by the express developer.

I also updated all node packages to their latest versions.

The project now builds and runs on latest node.js without any issues.

Tuesday September 20th

Tonight at the open sudo room hacknight we tore down another identical spectrometer, or at least we tore down what we thought was an identical spectrometer. I hadn’t even noticed that one of the ones I bought was missing the knob that lets you switch between UV and visible. It turns out that one of the three spectrometers had an upgrade that combines the light from the UV and visible light sources so no switching is needed. If you are looking to pick up one of these used then definitely try to find one without the extra switching knob on the front.

The teardown was used as an opportunity to explain how this type of spectrometer works and we did a little tour over to Counter Culture Labs in order to point at, and talk about, how a so-called DADS (Diode Array Detector Spectrometer) differs in its use of a linear CCD to read all wavelengths simultaneously instead of single detector and a stepper motor that can only read one wavelength at a time. We also had a look at a nanodrop and plate reader, as well as a cuvette-based spectrometer vs the HPLC flow cell spectrometer to explain how these are all very similar pieces of equipment.

Wednesday September 21st

Based on the investigations of previous sudo room hacknight (see previous update) the best solution to get the UV light source working quickly is to simply fool the original spectrometer electronics into powering it on. The power supply portion of the circuitry is unfortunately too deeply integrated into the rest of the electronics to easily separate them, so for now that means keeping the bulky original electronics. The long term plan will be to create an open hardware power supply capable of powering a deuterium arc lamp and tungsten lamp simultaneously.

Fooling the electronics into turning on the lights

The original electronics does a little startup self-calibration jig with the stepper motor. Fortunately this is very simple, in that it tries to move the stepper motor until it sees a signal from one of the little LED light detector assemblies. Fooling it is as simple as outputting a voltage on the correct two pins after a short startup delay. Another option is to simply route all of the LED sensor and stepper motor control pins to both the original electronics and spectrometer-ressurector board and waiting for the self-calibration to finish before using the spectrometer.

Friday September 30th

I finished the Kicad schematic and Wrote a bunch of documentation on setup and usage. The project should be ready for someone else to replicate but unless you want to help with development I don’t recommend it until we spin a PCB which will hopefully happen soon. However, before making the custom PCB I’d like to do some testing of the linearity of the photodiode output and accuracy of the ESP32 ADCs. It has been pointed out to me that this project may need more sophisticated calibration and external ADCs if it wants to “compete” with commercial offerings. I need to make a set of calibration liquids with a range of absorption patterns in varying concentrations and compare readings against an unmodified Shimadzu spectrometer (I still have one I haven’t touched) and ideally also a modern DADS spectrometer.

This project has been funded in part by GOSH’s 2022 Collaborative Development Program which in turn was funded by the Alfred P. Sloan Foundation