Optical Attenuator Update

Optical Attenuator Update

Right now I have several projects on the go. It seems I keep starting things and getting distracted. But one of them is the Photodyne 1975XQ optical attenuator. I thought I should update you on progress…

This is definately a worthwhile repair – a few pounds to get a high value precision device – just don’t mention the effort completely rewriting the firmware!

I sadly discovered that the LCD modules were broken, which inconveniently is on a board that also handles the keypad encoding. Also the processor board was missing half of the ROM. I tried to get hold of replacements but no luck.

So I found a large Alphanumeric LCD module that I had recovered from a scrap device and got started by fitting that. It just needs a vinyl mask cutting to make it look pretty.

Next the processor board – a complete remake using a PSOC 4 module and borrowing the old keyboard encoder chip. A lot smaller than the old one and of course with a remote interface and a programing header. This is a microcontroller not a microprocessor so that means nice stable control signals instead of rapidly changing address and data lines. That will impact on other parts of the device that are filled with address decoding and latches. Of course my new processor board needs to communicate with the rest of the system via a difficult to obtain (expensive) connector onto the back-plane (a lot of careful desoldering resolved that problem!).

Next the motor drive board, intended to be driven from a microprocessor this has some slightly messy logic and latches. I’ve stripped all that back, inserted a few links and I can now drive it from the microcontroller latched output ports.

And 50% through the firware is where I stalled. I have the architecure planned, and have written all the low-level device drivers, like stepping the motors, outputting to the display and reading the key pressed. But now I’m ready to start doing the higher level programing where keypad sequences or SCPI command actually have to do something meaningful.
To get to grips with that higher level functionality I’ve drafted the manual.

TOP TIP!
Writing a manual nice an early really helps you understand what needs doing in terms of the user interface code, the command structure and clarifies issues like relative/absolute readings and setting.

The next stage then is to enable a power-on function to run the attenuator between the limits and record the number of steps. Next to allow the relative attenuation of both ends to be input for each different wavelength suported (linear calibration slopes). Then to allow the input, validation and movement to a given position. After that we get to the messy work of doing offsets, absolute vs. relative attenuations, switching wavelengths, programmable sequences, triggered sequences, writing a SCPI interface…. The keypad in particular is quite tricky because what the keys mean changes depending on the state of the instrument and there is a pesky shift key to give every button 2 meanings.

What next

I’m quite keen to get this finished in the first few months of 2026. It really means writing a whole lot of C code. But that can be done in a nice warm office over winter.


Leave a Reply

Your email address will not be published. Required fields are marked *