My little homebrew Arduino

I was fooling with some Amega 328P's today and buggered up one of the legs pulling it off the breadboard :fearful: The legs on these are REALLY flimsy and one broke off while straightening it out... Lesson learned.

I figured since it was screwed up I'd attempt to make a clone using the info here: http://arduino.cc/en/Tutorial/ArduinoToBreadboard

So I soldered a pin onto the broken leg and put this together:

It's a little wacky but it works. It's easy to see why folks make their own PCB's :stuck_out_tongue:

I still need to finish connecting the pins but it works with the blink sketch. The red LED is just a power indicator and the green is a reset light. The red LED is REALLY bright. I used a 10K resistor on the ground leg of the LED. I guess I should have checked it first...

Always good to see another kindred spirit who is willing to spend six hours trying to salvage a two dollar component... I can't throw them away till they are totally fried!

You are really not nuts till you start de-soldering 1/4 watt resistors from old PC boards!

6 hours? Man, you're FAST!

And it was $2.50 for the chip...

:stuck_out_tongue:

I'm was checking everything out with an 8XAA setup and I noticed that the reset light wasn't working. I have the green LED to #13. Soooo, I checked it with 5V to it bypassing the regulator and all was well. I then hooked the batteries back up and got about 9.5V input and 2.9V on the right side of the regulator. No reset light. I then figured WTH and hooked 12V to the regulator and now the reset light seems to be working but I'm still getting about 3V out of the regulator.

I've never really looked at these things when entire circuits are working so any input on this would be great.

What's the next step, what are you going to do with it?

florinc:
What's the next step, what are you going to do with it?

I want to use it to run this little guy:

I got the pins broken out. (I'll only be using 5) But I've got a little weirdness going on...

I figured I'd test all the pins by "blinking" from each one but as soon as I put a load on the board the voltage drops :frowning: If I have a pin blinking without an LED the meter shows 0 and then up to 4 or so volts and then 0. If I hook up an LED I only get 2 or so volts and it's real dim. Pin 13 seems to be OK and I'm going through the others. They do blink but the voltage is low.

wiring with 28 or 30 gauge wire makes it easier.
This wire is often called wire-wrap wire.

I was fooling with some Amega 328P's today and buggered up one of the legs pulling it off the breadboard smiley-eek-blue The legs on these are REALLY flimsy and one broke off while straightening it out... Lesson learned.

A little tip for straightening out DIP chip legs: don't try and do it all at once.

Straighten the leg in tiny increments, pausing between each increment. As you bend the leg, heat is generated in the bend. This heat is what causes the breakdown in the integrity of the metal.

By only moving it a tiny amount at a time and then pausing you are firstly reducing the amount of heat generated, and secondly allowing that heat to bleed away into the rest of the leg.

Thanks for the tips! I'll have to get some smaller wire next time if I want to keep what's left of my sanity :stuck_out_tongue: Plus spend some time planning before just throwing stuff on a board.

I did some checking and noticed that I had omitted "pinMode" in setup :roll_eyes: I was just altering the blink sketch to test each pin one by one and left that out. Kind of weird that it was sort of working without that in the code.

But all is well now! I have 5 pins broken out because that's all my little project needs but I think I have room to break out 3-4 more.

This is the concept of my robot controller:

The regulator with the heat sink is for the servo power. I'm planning on putting some breakout pins on the lower board for the 3 servos to plug into.

I did some checking and noticed that I had omitted "pinMode" in setup smiley-roll-blue I was just altering the blink sketch to test each pin one by one and left that out. Kind of weird that it was sort of working without that in the code.

Not really. When a pin is set to INPUT and you write a HIGH to it you turn on the internal pull-up resistor. This will cause a little bit of current to come out of the pin. Writing a LOW then turns that pull-up off, and so no current comes out.

Thanks! That one had me chasing my tail. When I've built the hardware I always assume it's a hardware problem. Usually is :roll_eyes: :roll_eyes:

majenko:
Straighten the leg in tiny increments, pausing between each increment. As you bend the leg, heat is generated in the bend. This heat is what causes the breakdown in the integrity of the metal.

By only moving it a tiny amount at a time and then pausing you are firstly reducing the amount of heat generated, and secondly allowing that heat to bleed away into the rest of the leg.

Majenko, allow me to respectfully disagree. The legs do not develop significant heat while being bent. Rather the issue is that the metal is being work-hardened as it gets bent and hence snaps after being bent enough. The amount that you can bend metal is a function of the purity and the underlying atomic structure. For example, today's soda cans are made from two Al alloys, one for the cap, one for the body. The Al for the body allows extreme drawing, hence the very thin wall thickness that is achievable without bursting under pressure.

In the past when alloys were not as pure, manufacturers would have to go through annealing steps where cold-worked metals were re-heated to a high temperature in order to remove the work-hardening. I seem to recall early Bentley hoods (i.e. 1920's) requiring literally hundreds of annealing steps. Even with todays great alloys, annealing is not unusual - see this motor sport site as an example.

Now, could one attempt to anneal the legs on a chip? Sure. But chances are, the integrated circuits on the inside would be toast long before you can remove any work hardening. My suggestion hence would be to follow in the footsteps of the Arduino, i.e. use a DIP socket for the CPU. They cost less than the CPU and usually have more durable legs for breadboard use.

I'm no metalurgist - all I can do is speak from experience. Bend a leg too fast, and it snaps. Bend it slow, in little increments, and it doesn't snap.

Get a piece of thick wire (garden wire kind of thing), bend it back and forwards lots of times, and it gets really really hot before it snaps.

Just don't bend a leg :stuck_out_tongue:

I think you really need a DIP socket or a ZIF when breadboarding these more than once. I pulled the chip out of my UNO and noticed that the legs seem thicker than the one's I got from Sparkfun. Maybe spec'd differently? I'd have to put a mic on them to be sure.

A breadboard grips these things REALLY WELL so I don't think you could get away with pulling/reinstalling them much unless you were REALLY CAREFUL. I thought I was being careful when I borked mine :roll_eyes:

majenko:
I'm no metalurgist - all I can do is speak from experience. Bend a leg too fast, and it snaps. Bend it slow, in little increments, and it doesn't snap.

Get a piece of thick wire (garden wire kind of thing), bend it back and forwards lots of times, and it gets really really hot before it snaps.

Majenko, I'm not a metallurgist either - just a manufacturing engineer who has had the pleasure of working metal from time to time. The heat you're experiencing has to do with the friction of the part as an acute bend is being applied. However, it is not the primary reason that a part will snap - that would be work hardening. For a better explanation, take a look at the Wikipedia entry on work hardening.

As for slow vs. fast bends making a difference, I suspect that the speed has less to do with it than any jerking that may occur as you try to bend more quickly. That is, typically one has less control over the process while trying to do it quickly, rather than slowly. For example, while bending slowly you may end up with a bend over a longer area (with less resultant strain per unit length of material) than if you bend quickly and perhaps over a smaller rea. So it may not be the speed that is the underlying cause here but rather the strain per unit area you are imparting on the part. But I'm happy to be wrong.

hoff70:
I think you really need a DIP socket or a ZIF when breadboarding these more than once. I pulled the chip out of my UNO and noticed that the legs seem thicker than the one's I got from Sparkfun. Maybe spec'd differently? I'd have to put a mic on them to be sure.

Something else to keep in mind is that, fresh from the vendor/factory, the legs of DIP ICs are spread apart a bit - it can make getting them to fit into a breadboard or a socket quite an exercise. Sometimes, if you press too hard or unevenly, you'll bend a leg that way. What I've done in the past is to carefully lay the chip on it's side on a flat surface (legs on the surface), and very carefully "roll" the chip to bend all the legs slightly inward. Flip and do the other side the same way. You don't need much - just bare fractions of an angle. Generally you can seat the IC easier then into the socket.

If you look around, you should be able to find (I think they are still made?) DIP IC pin straightening tools. They used to be fairly common, at least.

Also - if you plan on doing any kind of re-programming of the ATMega (bootloaded or otherwise) on a constant basis (perhaps to build your own standalone boards or something), you don't want to plug and unplug the ICs from the Arduino board. Instead, use a ZIF socket; in fact, there are shields available designed just for this purpose. If this is something you do often (say, for adding an Arduino HEX dump to pre-bootloaded ATMegas for small-scale production or something), you might just want to construct a dedicated Arduino and ZIF socket shield for this purpose.

ZIF sockets are great, but they sure can be pricey, especially if you're looking at non-DIP form factors. 'Bespoke', I guess!

cr0sh:
Also - if you plan on doing any kind of re-programming of the ATMega (bootloaded or otherwise) on a constant basis (perhaps to build your own standalone boards or something), you don't want to plug and unplug the ICs from the Arduino board. Instead, use a ZIF socket; in fact, there are shields available designed just for this purpose. If this is something you do often (say, for adding an Arduino HEX dump to pre-bootloaded ATMegas for small-scale production or something), you might just want to construct a dedicated Arduino and ZIF socket shield for this purpose.

That's what I was planning on doing when I ran into this project. I even picked up an Arduino protoshield and a few ZIF's for the project. I then learned that you can't upload sketches to a bare 328 without removing the chip in the Arduino. I've been looking at a way of making a shield that will allow burning the bootloader and uploading a sketch without a bunch of fiddling.

I should probably just get a dedicated programmer or cable.

I know this is probably nonsensical:

But it's something I was sort of, a little bit, thinking about. Maybe 28 pins from the protoshield running down to the chip socket from one of the ZIFs for normal Arduino operation and burning bootloaders to a bare chip which would be mounted in the 2n'd ZIF. Then for uploading sketches you could just remove the "normal" chip and load directly to the other (Abnormal?) one.

I know that the wiring is different when burning the bootloader vs uploading sketches so that could make it un workable.

Any input on this or is it the dumbest post ever :stuck_out_tongue:

I thought about mounting a ZIF on the board in place of the holder but you'd still be stuck pulling the shield, pulling the chip/ reverse, etc everytime you wanted to burn a chip.

I added a DB9 socket and MAX232 chip to my programming shield so I can program the chip through a standard RS-232 connector.

majenko:
I added a DB9 socket and MAX232 chip to my programming shield so I can program the chip through a standard RS-232 connector.

Pretty old school aint' it? Sounds pretty cool though 8)

hoff70:

majenko:
I added a DB9 socket and MAX232 chip to my programming shield so I can program the chip through a standard RS-232 connector.

Pretty old school aint' it? Sounds pretty cool though 8)

Nah - I have USB RS-232 cables coming out of my ears (it's quite painful actually).

I could have added an FT-232 or a MCP2222, but I didn't have any of the former, and I didn't want to waste a crystal on the latter. So I added one of my many many many MAX232 chips (actually an ADM232 this one)