Fault-finding breadboarded circuits - a tale from the trenches

Yesterday I destroyed an Atmel ATMega328 chip. (That's the chip at the heart of the Arduino.)

The Atmel chips are very well designed, and it's really hard to damage them, but I've managed it twice in the last decade. Yesterday's episode was due to a mistake in wiring up an Arduino clone that I've been building on a breadboard.

The clone is a descendant of Cefn Hoyle's excellent Shrimp design. I decided to build an alternative version which could be programmed using an FTDI cable and made permanent using an Adafruit perma-proto board.

The correct layout (shown above) is easy to follow, but my ageing eyes led me to connect two of the power wires to the wrong pins. When I powered up the board using an FTDI cable the LED didn't blink and I knew something was wrong.

But what?

A simple approach to problem-solving

When something stops working, you focus on what's changed. When you have two versions of something, only one of which works, you focus on the difference.

In my case I had a working version of the design on an Adafruit permo-proto board. When I compared the bread-boarded version with the board that worked I realised the mistake I'd made. I fixed the wiring and tried again.

The bread-boarded version still didn't work.

I rechecked the wiring and convinced myself that there were only minor differences between the bread-boarded and soldered versions. The bread-boarded version uses a crystal and I'd omitted a couple of tiny capacitors that aren't normally necessary, so I added them. Still no joy.

By now the only significant difference between the circuits was the physical chips.

I swapped the chip from the known-good board into the breadboard, powered it up, and...


The board worked!

Here's the perma-proto version blinking as it should.

Clearly, my earlier wiring mistake had fried the ATMega chip.  Once I'd replaced it both versions worked.

I'm documenting the breadboard version for use in an updated version of my e-book Making the Shrimp. I'm using a neat piece of software called breadboarder.

Breadboarder lets you describe a circuit using a simple Python-based DSL (Domain Specific Language). It generates an SVG diagram and step-by-step instructions in plain English.

I'll describe breadboarder in a bit more detail in my next post.


Popular posts from this blog

Controlling a Raspberry Pi Pico remotely using PySerial

Five steps to connect Jetson Nano and Arduino

Raspberry Pi Pico project 2 - MCP3008