This page consists of a brief look at some of the interesting projects I have had the pleasure of working on over the years. My current project with the MMB32 is not here as it is discussed in the main blog area. Unfortunately, much of that work is confidential and I cannot discuss it here. Still there are a quite few things I’m allowed to talk about and here are a few of my favorites:
Freezer Protector – with Bret Walters
Way back in the bad old days, putting together an embedded microcontroller system was a very big deal. For starters, the CPU was a large, expensive 40 pin device that required three (+5v, +12v and -5v) well regulated power supplies; a crystal and a special clock generating chip; a bus signal decoder chip; numerous bus buffer chips; complex address decoder chips; peripheral chips; EPROM chips for program storage; RAM chips for data storage; and a multitude of capacitors and other support parts.
Slowly, things got better though. Three power supplies soon gave way to one and the need for tight regulation slowly went away. Data storage, then program storage and eventually peripherals and address decoding all migrated onto the main chip. Strange clock chips were replaced by a simple crystal oscillator circuit, and then even that became just a crystal connected to the processor. Then, for many applications, even the crystal was no longer needed.
And yet, in spite of this long road of advancements, when a microcontroller finally fit entirely in an eight pin package, it stirred up quite a bit of excitement. Thus it was that when Microchip came out with their line of 12C50x, eight pin PICs, they decided to hold a contest. The Freezer Protector (F.P.) was the entry cooked up by myself and Bret Walters.
The idea behind the F.P. is quite simple: If a freezer is running and there is a brief power interruption, when power is restored the electric motor tries to restart from a stop against a compressor with full pressure on it. This presents a considerable strain on the motor and it is not uncommon for it to stall, overheat, and trip the overheat relay. This is a great strain on the freezer and a source of wear and failure.
The F.P. get’s around this in a very simple way. When power is applied, the connected load (in this case the freezer) is kept powered off until five minutes have elapsed. In this way, the excess compressor pressure will have time to bleed off through the condenser array and when the motor starts the strain will not be excessive.
Well we got an honorable mention in the contest and our article was published in a number of magazines including NIKKEI ELECTRONICS ASIA. Here it is (click to enlarge):
The simple circuit uses a PIC to count out five minutes worth of 60 Hz power cycles before switching on the load through an optically isolated TRIAC device. The only really trick part was figuring out how to power the PIC without using a bulky power transformer. The solution we arrived at works quite well, but is not as efficient as I would like it to be.
Oh, and one other thing. When publishing our article, the editors took the time to change the schematic and introduce a defect. The corrected schematic is found below (click to enlarge):
Sultran – CP Rail System – with special thanks to Ron Hipfner
I wanted to start by thanking Ron. Without his help, the red tape, petty empires, and other failure oriented machinery of modern business would have almost certainly doomed this effort. His brilliance in motivation, strategy and management made success possible.
Sultran was probably the largest embedded system I’ve ever worked on. Literally! I was responsible for the overall design and creating the software for integrating the customer’s massive sulfur loading facility with data from the railroad’s mainframe. Were the systems compatible? Not in the slightest! The results of my efforts: Enormous 110 hopper car trains with six locomotive engines are accurately loaded up with roughly 10,450 metric tonnes of refined sulfur for market. All with no wasteful under-filling or hazardous over-filling of hoppers. The process looks something like this (Click on the pictures to enlarge):
I am not bragging when I say that we raised a lot of eye brows when we delivered the working system. Yes, it did bring in a lot of new business and land an exclusive contract with a big customer, but that’s not the reason so many were surprised. It seems that a competitor had been trying to install a similar system for over two years, only their system did not work at all. It was widely expected that we too would not succeed. Lucky for me, I didn’t know any of that that as I worked on the project. So I guess that I failed to fail because I didn’t know any better. I can probably thank Ron for that too!
Vending Machine Controller – Mars Electronics International (MEI)
I started out at MEI as a contractor for four and a half years before switching to full time status. This project was part of a line of business that was dropped when the company was reorganized. Since there is no economic value or trade secrets involved, I think I can discuss this one. It’s an embedded controller for a soda pop vending machine. When I started this effort, my initial thoughts were “How complex can it be?”. In a word VERY! The specification produced by a famous soda pop manufacturer was over three inches (7.62cm) thick and was very dense with details. In brief summary, the controller was responsible for:
- Polling and operating multiple payment devices including a coin changer, a bill validator, and a credit card reader. The specification for these devices explicitly stated that “hot plugging” was not supported. Our controller had to support it anyway.
- A user interface consisting of hard-wired buttons, a four character seven segment display, an optional alphanumeric display, and optional multicolored LEDs for each selection. Multiple languages needed to be supported.
- It had to run the motors to dispense the product, while dispensing change. An aggressive anti-jam procedure was also specified.
- A full, menu driven service mode was required for machine configuration, sales data query and diagnostics.
- And finally it had to maintain a complex series of configuration and audit data with a complex protocol to both query and set this data.
- Plus: all of this had to be done with at least 25% of the program memory space unused and available for future expansion. We settled on 256 K-Bytes of flash memory.
Now to do all this, you might expect we used a powerful and capable CPU and you would be WRONG. All of that work was accomplished by a vanilla 8051 variant running at less than 1 MIPS (11.0592Mhz/12). The required performance was achieved with careful tuning of the tasks in the RTOS and load balancing. Almost all of the code was in Keil “C”. There was less than a page of assembly code in the parts that were developed in house (a lot more in the “C” run time library and the RTOS, but those parts were not my responsibility). I designed a bank switching scheme to extend the processors reach beyond the normal 64K to 256K plus and additional 32K of data memory. This bank switching scheme had to be integrated into the RTOS.
Here is the controller board with no vending machine attached. A few years after the project’s end, we powered up one of the prototypes and took this picture. About all it can do is blink its little “heartbeat” LED to indicate that it is running. You can see it glowing bright red in the top-left corner of the system.
Updates will be announced in the main blog area.