Channels ▼

Al Williams

Dr. Dobb's Bloggers

Keep it Simple Stupid

December 11, 2010

I've often said that two things are simple: the truly simple (of course) and the massively complex. For example, consider water transportation. A log in the river is about as simple as you can get. A modern vessel with an autopilot and a GPS is pretty simple to operate too. But an 18th century tall ship required great skill (and lots of manpower) to operate.

I've spent a lot of time lately with friends and colleagues stamping out the use of things like 555 timers when you could just put a cheap CPU in to do the same job. To me, the 555 is like a sailing ship. Complex, lots of parts, but it does the job. A little 8-pin 8-bit CPU is more complex to get started using, but you can easily program any kind behavior you want.

There is an old story (apparently, though, not a true story) that NASA spent a huge amount of money developing the pressurized pen so astronauts could write in space. The Russians just sent men up with pencils. So sometimes really simple is really better.

What brought this to mind was a laser printer -- well, more specifically a toner cartridge for a laser printer. The printer had been warning me for some time it was low on toner, but it was clearly just counting pages since it was still printing. This went on for awhile and eventually I had to shake the toner to get the print quality back.

Removing the toner and replacing it didn't fool the printer, though. It still knew it was low on toner. Some kind of sensor, right? Maybe. I guess a full cartridge weighs more than an empty cartridge. Or you could store a page count on the cartridge somewhere -- a EEPROM with the page count. That way the printer couldn't be fooled (and would make it hard to refill, too).

Take a minute and think about how you'd solve that problem. How do you figure out that an old cartridge is in rather than a brand new cartridge? Remember, it needs to be cheap per cartridge since you'll make a lot of them and price counts. So off hand I'd think a EEPROM in the toner would not rate as high as a sensor in the printer. Go ahead. Think about it. I'll wait.

Ok, so do you have some ideas? I'll continue.

Finally the toner really ran out. I put a new cartridge in, but the printer still thought I was low on toner! Uh oh. Whatever this sensor was, it wasn't working. My first thought was some kind of dirty or damaged contact points so I started examining the toner.

There was a little plastic clip holding what looked like a normal cylindrical fuse (the kind you found in old cars). What's more, it didn't just look like a fuse. It was a fuse. But there was nothing connected to it. What's more it was blown. Apparently the fuse gets connected inside the printer. If the printer notices a short circuit it figures out that it has a new load of ink and then blows the fuse!

How cheap is that? A one bit fuseable link PROM! A quick Google shows that 5 fuses like that cost about US$1 and that's just for buying 5. If you were picking up a few hundred thousand, I'm guessing you'd get a much better price! I was a little embarrassed that I was picturing a EEPROM or a sophisticated sensor.

Related Reading

More Insights

Currently we allow the following HTML tags in comments:

Single tags


<br> Defines a single line break

<hr> Defines a horizontal line

Matching tags


<a> Defines an anchor

<b> Defines bold text

<big> Defines big text

<blockquote> Defines a long quotation

<caption> Defines a table caption

<cite> Defines a citation

<code> Defines computer code text

<em> Defines emphasized text

<fieldset> Defines a border around elements in a form

<h1> This is heading 1

<h2> This is heading 2

<h3> This is heading 3

<h4> This is heading 4

<h5> This is heading 5

<h6> This is heading 6

<i> Defines italic text

<p> Defines a paragraph

<pre> Defines preformatted text

<q> Defines a short quotation

<samp> Defines sample computer code text

<small> Defines small text

<span> Defines a section in a document

<s> Defines strikethrough text

<strike> Defines strikethrough text

<strong> Defines strong text

<sub> Defines subscripted text

<sup> Defines superscripted text

<u> Defines underlined text

