I was hoping for something more exhilarating to report, but despite extensive and systematic efforts to align every single mirror in my setup (as systematic as someone untrained in optics can be), I’m once again stuck in a situation where the dispersed light hits the sensor as shown in the image to the right:


As usual, I failed to read the stuff in the fine print. In Schieffer’s article they specifically mention that the CCD should be mounted on a rotary stage. I guess I now know why.

However, I can’t do that.

First, rotary stages are wicked expensive. Second, a rotary stage would interfere with my brilliant thermoelectric cooling setup. So it’s back to the drawing board, to find a solution that allows for efficient cooling and rotational freedom. I already have an idea, so that half the work done already, right?

Oh wait, there’s the sawing in metal, filing it pretty, anodising it black, tapping holes and probably stuff I forgot since last.

On the upside, I have a new and better peltier-element that I can make sure will fit in the new arrangement. The old peltier was running more or less at full capacity, which actually isn’t a good thing.

It’s been a while but if my memory serves me right, the cause was that my voltage regulator couldn’t sustain a drop of more than 1 V (with the cooling I could provide).

This time I’m not making that mistake. The new peltier is a TEC1-7108, which has a max-voltage of 8.4 V, but I will feed it 5 V straight from the ATX-PSU, so it should run cooler (haha) than the TEC1-03506. We’ll see how that will play out..

I’m not touching those mirrors ever again, but an unexpected problem arose. My grating holder needs more rotational freedom. That’s as simple as sawing off a few cm² of aluminium, I’m just to lazy to do right now (also I forgot to eat anything today).

btw here’s a small reward for reading about my frustrations. an .stl file with the locations of all the mirrors:


OAPs and mirrors.stl


Mirror alignment (II)

So I’ve been struggling to figure out how to align the mirrors in the spectrograph. The schematic looks like this:


Schieffer et al. APPLIED OPTICS, Vol. 46, No. 16, p 3095-3101

In my spectrograph this translates to:


Where P1 and P2 are 152.4 mm 90° off-axis parabolic mirrors (top right). M1, M2 and M3 are elliptical mirrors with an effective diameter of 25.4 mm (M1 is far left, M2 and M3 are in the center). The grating is not shown, but is positioned 152 mm “south” of P1 and P2 (at the end of the pencil line).

According to Schieffer the two parabolic mirrors should be arranged so that the slit is reflected onto itself. This is easier said than done (at least me for it was), as they have rotational freedom around their axis towards the grating, as well as rotational freedom along their off-axis focal point. So where do you start?

Well I started with removing M1 and M2.

A friend of mine who works at the Niels Bohr institute keeps telling me that 90° angles are my best friends, so I started with that: Having P1 and P2 oriented in horizontally along the aforementioned pencil line. P1 and P3 were then illuminated with an LED torch directed at the mirrors in a horizontal bee-line from the far end of my flat (that’s 7 m, I live in a studio appartment).

A block of aluminium with a cross to mark the height of the fiber port was placed at the focal point of P1, which was rotated until the focal point coincided with the cross. This was repeated for P2. So now I had something like this:


Two off-axis parabolic mirrors, one spot.

The two mirrors won’t stay parallel as they must be rotated so their principal axes (I’m not sure about the terminology here: the axes towards the grating) have an angle between them of 2α ie. 10.6° in my setup. This will introduce the first (small, I hope) error.

I’ve been trying to get my head around the magnitude of the error. I’m not an optical engineer, so I’ve made no attempts at further analysis than this:

P1 and P2 before 1st adjustment. Ok, so it’s not superclear. In the center we have the two mirrors. The two lines ending in nothing are the mirrors axes towards the grating. The two lines the form the radii of the circles are the focal points of the mirrors. Btw the mirrors are 28 mm apart in the z-axis.


With the 1st adjustment show in the photo (two mirrors, one spot), the situation is now this:


So all that’s left is to bring the end points of the two axes towards the grating meet, ie. to rotate around the axes formerly defined by the focal points:


All is bliss, except that if you look at focal points from a different angle, there’s a small off-set:


hmm. Now that I’ve looked at it through the eyes of openscad, I guess there isn’t an issue, or it’s so small that it doesn’t help fretting over it. I could have sworn that on good old paper it wasn’t nothing.

I apologize for the long story (but I’m not erasing it), I’m only used to rotate molecules with my brain, not focal points and lines and circles.

So now that that’s in order, we can procede to the next step: Installing and aligning M1 and the fiber port:


This was fairly straight-forward. I am a little concerned that I couldn’t manage getting a spot as well defined as on the aluminium target on the previous photograph.

With the fiber and M1 in place, the 2nd step for P1 and P2 was ready to be completed. Before 2nd aligment step it looks like this


520 nm laser light from the fiber, collimated by the two off-axis parabolic mirrors and projected onto an ersatz-grating made out of paper.

Pretty cool right, but this next one has me really stoked:


White light from a fiber, collimated by the two OAP’s and projected onto the same spot on the dummy-grating.

I never thought I would feel this way about a pale colourless circle. I’m in love. Notice how beautiful it is. It must be the most beautiful one in the whole world. Other peoples circles can just go home.

Ok, discrimination aside, the reason I’m so pleased with this, is that I’ve spent HOURS trying to get to this, but the two overlapping circles were just never very circular, leaving me with butterflyish patches of light. Btw pretty clever of nature to drug us with oxytocin, so we don’t throw away babies that were obviously riddled with beginner mistakes and just keep going until we finally get it right..

Ok, it’s obviously getting late for me. But here’s another beatiful circle. It’s my greasy fingers on a piece of glass.


I’ll post some more tmrw.

Not quite dead yet

It’s been quite a while since I’ve posted anything, so just to convince anyone reading along: the rumors of my death are greatly exaggerated

I’m still working on the project, albeit not very intensely, or regularly for that matter.

On paper, the Raman spectrometer is close to completion. In reality, aligning a few mirrors is not as straight forward as I imagined. I’m probably overthinking it. In fact I’m sure I am, and it keeps me from working (if I can come up with other excuses that sound better than too much TV, I’ll be sure to include them).

So far I’ve been trying to do the alignments using laser light (because it’s the easiest way to get light with enough intensity that I can actually see what I’m doing). However, I really need a line (to make sure the entire spectrum actually hits the sensor), and with laser light I of course only get a spot.

I realize the description above might be a bit under-explained, but it’s difficult to take pictures in very low light, to support what I’m trying to say. The sensor is positioned vertically relative to the spectrometer floor, so the Raman radiation should be dispersed vertically. However, when the parabolic mirrors are not properly aligned, the light arrives at the sensor at an angle. Something like this:

On the left: What I want. On the right: What I have.

So in line with my usual self, I’ve been trying to come up with a cheap and excellent way to couple lots of white light into a fiber. I’ll spare you the details of not-quite failed, but not-quite successful solutions and get right to the point:

The best I could do was simply to shove the fiber right up against a very bright, naked LED (an Osram Duris E5 4000K, if you must know). And it looks like this:

Not quite as intense a green 532 nm laser pointer pointed into the fiber, but not unacceptably far off.

The LED PSU is a very simple constant current source, someone on the internet Dan Goldwater had made a pencil diagram of:

One doesn’t need to populate all R2-R5, but it does leave some flexibility and since all the current flowing through the LED also flows through R2-R5 it’s nice/necessary to be able to spread out the heat on several resistors.

It ended up looking like this:

I made a whole bunch, because¹ I need drivers for cyanotype-UV-LED-exposure-boxes for my students, as well as a driver for a 340 nm LED that I’m still looking for a purpose for, and few other things.

[1] The real reason is that I was compelled to use the entire copper clad board. You see Denmark is a pig-country. We have 25 million living pigs (that’s 5 living pigs pr citizen ..and roughly 20 dead ones). And we use EVERYTHING from the pig. We’re like the eskimoes, only with pigs. And this cultural heritage sometimes seeps through to other aspects of our lives.


Last year, a colleague and I made a small spectrophotometer-workshop for kids in my school’s science classes. In brief they had to assemble something like this:


The “optical table” is a 15x20x0,8 cm aluminium plate covered with 0,6 mm self-adhesive ferrofoil and all the optical components have magnetic feet.

The students were first asked to characterize the DVD-grating using 532 nm laser pointers and a bit of trigonometry. Then we had them calculate the geometry of the spectrophotometer and finally they were asked to place all the components according to their calculations.

(Ok, it wasn’t that brief, the students spent 4x 90min in the lab, and they received a bit more wisdom than what’s outlined here, I’m just to lazy to do a full write-up)

It was fun (and I hope the kids thought so too, if nothing else they were bribed with cake during each lab-session), but I had underestimated the problems we’d encounter setting up their computers to work with the linear CCD module – Windows was particularly hard to play with.

This year we’re redoing it, and during the holidays I’ve been trying to learn enough python 3 to write a platform-independent graphical user interface for the CCD, so hopefully we can concentrate on the fun stuff next time.

Anyway, the new GUI looks like this:


I’ve only scratched the surface of matplotlib, so I expect to add more features, for now it can do just the basic stuff.

Get it here: python interface for the TCD1304

I will create stand-alone executables for macOS and windows in the coming days.


Mirror-alignment on a shoestring

I don’t have the right tools for this, so how do I then proceed?

The spectrograph looks like this:


The light enters from a fiber port near the top left corner and is reflected of off a mirror (not installed at the time the photo was taken). The beam from the fiber is horizontal and must be turned 90° in the xy-plane, and 6,6° upwards in the xz-plane (x being left-right, y being top-bottom and z orthogonal to the baseplate).

The distance from the mirror to the center of the 1st parabolic mirror, which is where the two pencil-lines in the photo cross each other is 111,5 mm in the xy-plane and 112,3 mm in space. It will be impossible to align the first mirror with a ruler – which is all I have.

The precision of my ruler is around 1/4 of a mm, which is around 2% on a distance of 11 cm. However, if I “extend” the spectrograph to 2 m, this number decreases to less than 0,1%.

This is shown in this next photo:


The laser beam comes in from the top right and is reflected by the mirror on a 3D-printed kinematic mount. At a distance of 11,5 cm from the mirror the laser beam must be 13 mm higher on the z-axis, but at 2 m from the mirror this translates to 23,2 cm.

Obviously it’s much easier to achieve an elevation of 23,1 cm with acceptable tolerance compared to 1,3 cm, when all you have is a ruler..


Morbo’s good friend, the Compass 115M-5

With my girlfriend out of the flat for a few days (I know, I know, this has come to be the standard opening of my posts), it was time to play with a new toy:

Coherent Compass 115M-5 laser, lighting up some nicotine vapors (ok, so it’s mostly glycerin and propylene glycol).

Or in fact new old toy: I managed to get my greasy paws on two Compass 115M-5 lasers some time ago. These are apparently not as nice a the other lasers in the Compass-series, but at least they were very cheap. The heatsink comes from another ebay-adventure, I think it came with the PSU for my single frequency laser (the coherent 115M is not SLM) but right now I simply cannot remember for sure.

Continue reading

USB-firmware complete

The USB-enabled STM32F405RG firmware for driving the TCD1304 is complete. The firmware is written for this custom board:

which has high speed rail-to-rail opamps on four analog inputs.

The STM32F4 MCU is identified as a virtual com port (VCP) when connected to a PC. On linux it’s attached as a ttyACM-device, just as the ST-link on a nucleo board. Unlike the nucleo’s St-link (which is setup as a USART-bridge) that has a maximum bit-rate of 115.2 kbps, the STM32F405RG  is working in full speed mode (12 Mbps).

Of course high speed is also possible, but the HS-USB-OTG core of the STM32F405 is on different pins, and so require a different layout of the board, and 12 Mbps is fast enough that the real bottleneck becomes the read-out time of the CCD.

Using essentially the same VCP framework as the UART-FW, there’s not a lot of difference in the source code (except for the large USB-stack of course). so the CLI and GUI for UART work just as well for the USB-fw.

This whole ordeal was an attempt to lower noise, and here’s how that’s going:

With the good old nucleo board I would see fluctuations of about 8 mV ..and at first glance there’s no real improvement with the new board, I still see the same 8 mV. However, since the opamp on the analog input has a gain of ~2, the noise is actually down 50% 🙂

That still makes for a slightly fuzzy line though:

The CCD at close to full saturation. The opamp has inverted and scaled the signal to match the 12-bit ADC’s input range.

However the CCD’s register imbalance is now quite obvious, and subtracting 10 from the signal of every odd pixel, it looks like this:

The same data as in the previous figure, but the CCD’s register imbalance has been taken into account yielding a much cleaner signal.

So mission accomplished. I will update the tcd1304.wordpress site someday in the near future.