Brilliant Cupric Chloride (CuCl2)

H2O2 + HCl + H20 + Cu = AWESOME!

Ok, I’m not a chemist. In school, I was a bit of a chemistry nerd, but, I’ve forgotten everything. However, as stated in my previous post, I’m not excited about the trace results from milling PCBs. So, etchant is in order. But, who wants to use ferric chloride to etch PCBs? The stuff is nasty and has to be disposed in a controlled environment. So, what is the solution? GOOGLE TO THE RESCUE!

I ran across this Instructible:!–A-better-etc/.

It describes how to make a reusable and renewable etchant, cupric chloride. A trip to Walmart by Julie for hydrogen peroxide and a trip to the hardware store for hydrochloric acid is really all it takes, if you have enough other stuff saved at home. (Chugs, you can show this to Pam to illustrate the importance of holding onto things). I had a couple of unused plastic paint trays for mixing and used an old glass for measuring.

I used a 2:1 ratio for making the etchant, H2O2 to HCl. I detected no fumes from this process, but chlorine gas while etching is quite possible, so this should be done in a well ventilated area, i.e. outside for me.

After mixing, throw in some copper clad and let it work. Hey, looky there. It works! WHOA, Sharpie works as a resist (as well as super glue remnants from gluing to the fixture). Neat, it’s green! In other words, this works. I had a bath of baking soda water to neutralize the boards when they came out (sweet, I love bubbled).

To make a long story short, I made two batches — the second was observed by Cat, who apparently, also loves bubbles. She screamed in joy, every time I made some for her to see :) The peroxide bottle was only $.88, so the rest of the peroxide went away so I could store the resulting etchant. It doesn’t allow light to enter, keeping the etchant pristine, and is easily sharpied with skull and crossbone symbols, and ominous words such as, ETCHANT and POISON!

From here on out, I’ll be drilling and milling the boards on the CNC. However, traces will be done with etchant. Sharpies will be used to secure up the vias, so no etchant eats copper away. This process will be documented later, once I’m ready. I hope to design some kind of oxygenation-agitator to go in the etch tank. Perhaps, this will connect to my Nitrox bottles at home to increase the oxygen concentration, keeping my etchant pristine for longer.

PCBs: My steps

Don’t get me wrong. I LOVE this process. I’m just less that thrilled with the quality of traces, so from here on, will be testing etching instead. However, I told Chugs I would document this process, so I am. Perhaps later, I’ll try a 45 degree spade bit. I’ve read they are “more forgiving.” It doesn’t take much movement for the boards to become ineffective. Just .001″ can ruin a trace.

Here are my steps to milling PCBs. The images in the gallery are in order. It’s just too much time to link each file independently, so here’s the gallery:

1. The board is designed in Eagle. PCB-GCode is run to create the machining code. Also, credit where credit is due. Since this was my first major electronics project, I went in search of schematics to learn from. This board is based on this wonderful schematic: Thank you. I’ve learned so much! However, I did add some stuff ;)

2. The PCB fixture is cleaned and board removed from box.

3. Router is zeroed to fixture.

4. PCB taped to fixture for index hole drilling for flipping in the registry system. The fixture has drill holes at zero, every inch (-6 to 0 to +6). This ensure the board is level to routing when flipped. Clips from paper clips act as my pins.

5. The bit used for drilling index holes is slightly smaller than the paperclip diameter, so the holes are enlarged with the paper clip.

6. Board is super glued to the fixture to hold it as flat as possible. This particular PCB was unusually warpy.

7. Y-axis is moved +.2 inches away from the index holes. This gives plenty of room for the 1/8″ bit to cutout the board.

8. A bit index hole is drilled at the new x0,y0 point. This ensures you don’t loose steps and your bits are where they should be during changes and milling.

9. Vias are drilled. There are several bit size changes. Mach3 is set to stop for tool changes. Tedious, but quite enjoyable, I think.

10. Top engraving of traces is now done.

11. Acetone and a razor blade are used to remove the board. The board and fixture are cleaned with the same tools, ready to be flipped.

12. Other side of board is glued to the fixture.

13. Tired of watching etching now, so time to take some photos of the lakes in front of the house. Will this raise the property value? Man, I need about $4000 worth of gravel. It’s getting pretty muddy here :)

14. Bottom engraving continues.

15. The board’s dimensions are milled.

16. Again, acetone and a razor blade remove the PCB and the newly built board.

17. Clean up the board and solder parts.

A bit of video on the etching process:

Mac OSX, Arduino Uno, and ATMega328p-pu Bootloading Solution

It’s been reported that you can’t bootload new 328pu chips with the Uno. This is complete horse-pucky. I’ve successfully done this with a 120k resistor (or series) on the reset pin to 5v. There were no problems bootloading with Windows and the Arduino-0022/0023 IDEs.

However, this was not the case in the Mac environment. What was the problem? I finally decided to WATCH the LEDs on the Arduino. This is usually a good indicator of what’s going on. Once you finally move from one frustration to the next, I’ve noticed in my life, that the myopic window begins to open up to other possibilities. Well, for some reason, in the Windows environment with the earlier IDEs, it didn’t care that the Uno was still resetting, even with the 120k resistor in place. I “assumed” the board wasn’t resetting. Clearly, from the LEDs, it was.

I ran across a great example for the proper breakpoints to set in avrdude using GDB here: Sweet success. It IS possible to bootload from the Mac environment. A simple command allowed this to be done from terminal:

sudo gdb –args ./avrdude -P /dev/tty.usbmodemfa131 -b 19200 -c stk500v1 -p m328p -v -e -U flash:w:/Applications/ -U lock:w:0x0F:m

However, even though I thought I could move on, I’m lazy, and still want to use the IDE to do the bootloading. One final test made all things possible. I placed a 6v 47uF cap from the reset pin to ground, leaving the 5v running through the 120k resistor. What did I find? The Uno stopped resetting and bootloading from the new Arduino V.1 IDE went off without a hitch.

This has been a great exercise in furthering my knowledge of the Uno and bootloading. Why settle with one operating system that works, when you should be able to do it from any? Hopefully, ol’ Chugs will get some time to test this from his Linux environment pretty soon, since that’s his primary operating environment. (I suppose I could quit being lazy and get a Debian VM running to test, but I want to move on!)

Attached is the circuit I used on the reset pin. It worked for me. Hopefully, it’ll work for you.

Also, here is the AVRDude error sequence I was getting, for reference. Hopefully, if you’re doing a Google search for this problem, this post will pop-up and provide enough information for you to get to Uno bootloading in a Mac environment.

avrdude: stk500_getparm(): (a) protocol error, expect=0x14, resp=0x14

avrdude: stk500_getparm(): (a) protocol error, expect=0x14, resp=0x01
avrdude: stk500_initialize(): (a) protocol error, expect=0x14, resp=0x10
avrdude: initialization failed, rc=-1
Double check connections and try again, or use -F to override
this check.

avrdude: stk500_disable(): unknown response=0x12