EM34 Emulator

The availability of the big, round Magic Eyes has become problematic. NOS (New Old Stock) eyes are now sold for over EUR100. While LM3914-based designs with green LEDs are a worthy effort, the image fidelity is lacking. When I stumbled across the 4D systems uOLED-128-G2 module I knew I had to have a go at it.

The uOLED module features a 27x27mm OLED screen with a 128x128 pixel resolution. It is driven by a Goldelox graphics controller which also interfaces with the onboard micro SD holding all images. The module has an A/D converter which is used to measure the ACG voltage via a small interface that also provides the power to the module.

Support for these devices is good. There's an IDE (Integrated Development Environment) to create 4DGL programs as well as various tools. There's also an extensive library of application notes which enables me as a hobbyist software developer to write my code and also have it actually work. 4DGL (4D Graphics Language) is a mix of C and BASIC so getting familiar with the language is easy with even a little experience in either.

But first I started with the source material, photos of my NOS EM4 (CV1434) that I purchased many years ago but was never used. I set up my digicam (everything manual) on a tripod with remote control, hooked up a power supply to the EM4 and used a second PSU to adjust the grid voltage to get the different displays. The resulting images were batch cropped and resized with Irfanview. This is the result for the first eight steps:

Every step the eye closes more until it's fully illuminated:

This is at -25 V at the control grid. At the A/D input IO1 of the module this corresponds to 3.32 V or the value 255 which is the maximum for 8-bit mode of the A/D converter. The conversion is done with a single CMOS rail-to-rail opamp running off the 3V3 output of the uOLED module:

The opamp was sitting in my SMD parts tray (luckily I mark those clearly!) but can be anything as long as it will run off 3.3 V and will sense at VSS with rail-to-rail output capability. A simple uA741 will not work. Power is drawn from the filament voltage using a Schottky diode and low drop regulator. The capacitor at the g1 input is a film type, the two others regular bypass capacitors. I kludged together a piggy-back board with a socket plugging onto the display:

With the hardware completed it was time to tackle the software. I used the Visi application from the IDE. While this worked fine displaying a single image putting 128 images (that's 2^7) into code was unworkable. I ended up using another tool (Graphics Composer) to create the SD card data and used Notepad++ to create the links to each image on the card. These links I copied into the code and then I built my horrible if-then-else-endif tree. Because the sensitivity of the eye decreases at higher voltages the steps become larger and I cannot just copy/paste the steps. But the tree ensures I have only seven iterations to get to the right image. In the end I had all the bugs ironed out and my code worked. Phew!

Time to put the eye to the test. As the display is flat it wouldn't fit in the space the EM34 had been in my Philips BX700A. So the mounting bracket had to go. Now the module could be screwed onto the wood. The cable was soldered to the interface board. Then the radio was switched on:

While the bracket only came off with some damage it can be reinstalled to make the radio original again.

So. Do I have a sellable product? Not really. The life expectancy of an OLED display is much better than an EM34 but even at EUR100+ prices for a NOS eye building this emulator will end up at similar price levels. The uOLED-128 sells at EUR43(ex VAT) at Mouser and building the interface board adds more cost and hassle. Then an SD card must be programmed (another EUR6 or so). Still, it's a nice thing to have in my radio. I can have it play without having to worry about my precious magic eye!


9 June 2014