ATtiny Fuse Resetter
Anyone who has tried messing with micro-controller clock frequencies and fuse bits knows how easy it is to accidentally “brick” one of these things. I’m currently developing a ATtiny85 based PID fan speed controller, and had to start messing with pwm/clock frequencies. After a few mistakes, my non-programmable AVRs started piling up. Now there are a million “High Voltage Fuse Reset” or “Fuse Doctor” tutorials out there, but this project’s focus was building a simple Arduino shield PCB from scratch to pair nicely with my existing programmer shield.
I’ve started developing a workflow for creating one-off pcbs. Sure, with companies like JLCPCB offering $2 for 5 professionally made boards with a short turn around, it’s almost not worth the effort. When you only need just 1 board, especially single layer PCB with no SMD parts, sometimes making it yourself can be cheaper and quicker while prototyping. Plus it looks a lot better than a protoboard solder blob.
- Design the schematic and PCB
- Create an SVG of the layers and silkscreen
- Cleanup paths and shapes in Illustrator
- Import SVG into Fusion 360 and generate tool paths
- Use a 3D printer with a pen attachment to draw the PCB on the copper clad board
- Etch the board in a solution of Cupric Chloride
- Protect board with a coat of Polyurethane
- Populate and test the board
I acquired an Arduino ATtiny programming shield from an awesome Instructables contest (Thanks Randy!) 8+ years ago… I’ve used it religiously any time a project calls for a tiny version of it’s big brothers. My goal was to make a matching shield that I could swap out whenever I need to do a high voltage fuse reset. Taking inspiration from his design, I made a matching PCB. EasyEDA is my current PCB designer of choice for two reasons, one it’s browser based so I can load it up anywhere; two, it’s editor is SVG based, so with a quick dev-tools selection you can get the SVG without running the exported Gerber through some converter.
The SVG needs some cleanup to play nicely with Fusion 360. Luckily if you grab the SVG from the Gerber export menu, everything is grouped already for you, so in Illustrator I simply combine copper fills into as few paths as possible, and convert the traces and text to paths so they can be drawn with a single stoke of the pen. In this case the copper is on the bottom of the board and the silk screen is on top, so the traces will be mirrored.
Next we need to create the pen tool paths in Fusion 360. The first issue you might run into is scaling. When you export your SVG from Illustrator, even if your document units are set to mm, the SVG will be defined in screen units (ie. points/pixels). The size of the point is device and application dependent, but in our case it roughly works out to 96/dpi or rather 96/72 = 133.333%. You can scale before or after you import into Fusion 360, but I find it easier to just do it in Illustrator, that way you simply import and place it in Fusion 360. The easiest way to test this is make a 100mm square and scale it by 133.33% and import and measure it to double check your scale value.
I like to extrude the SVG and make a mock up of the board so that you can visualize it easier in Fusion 360 and use a 2D pocket to fill in your paths. Tech2C on Youtube has a great series of videos covering this so I won’t bore you with the details here. Essentially you just have to set it up so your paths overlap enough to fill in the large areas with the marker. He also links a Fusion 360 post-processor used for generating the g-code .
3D Printer as a Plotter
You’ll need a way to mount a marker to your 3D printer or plotter. Preferably something with a spring to account for the unevenness of the copper board, or be able to do mesh grid leveling with a z-probe. I’ve created a few prototype mounts of my own and found ideally it only has free movement axially. I do however love the simplicity and functionality of this fully 3D printed design. Through quite a bit of testing, I’ve had the best luck with the black Ultra Fine Point Sharpie. They are cheap, consistent, and seem to resist washing away in the acid bath best.
For etchant, I use Cupric Chloride. It can be made at home and is practically everlasting and a little more eco-friendly than the standard Ferric Chloride. I store mine in a glass container with a glass topper, but be sure to treat this as hazardous waste. Always wear gloves, eye protection, and a mask any time you open the bottle.
Once the board is etched, you can simply wash away the marker with some acetone. Then we can flip it over and run the silkscreen gcode. I like to draw the outline of the board first, so you can match the board up and tape it in place.
Protecting & Finishing
You’ll also need to drill out all the component holes which is a little easier after etching because the drill bit self-centers in the through hole dots. To prevent the copper from oxidizing, I use a quick coat of Polyurethane. Not quite as effective as a true solder mask, but it does the job and burns away when you go to solder your components.
This board only has a few easy to solder, through hole components.
- DIP8 socket
- (6) 1K resistors
- 2P screw terminal block
- 2N3904 transistor
- Female stackable 2.54mm headers.
I also included a few pin breakouts for GND, 3.3V and 5V for convenience. All that’s left is to hookup a 12V power supply to the screw terminals and run the code found here.
In no way is the process fully optimized yet. Using software like FlatCAM eliminates half the steps which is the direction I’m moving. I’ve already started experimenting with a small drill attachment and some v-bits and end-mills to eliminate the etching process all together, but I’ll save that for a future write up. Especially if you need a two sided board which ads further complexity with possible alignment issues. Ultimately you are balancing time, and ordering through a PCB service will save a lot of it for you. When you need something quick and dirty however, or even just want to make a test board before you order a full batch, this technique can certainly come in handy.
PCBCircuitElectronicsFusion 360IllustratorSVGATtinyATTiny85ArduinoProgramming3D PrinterPlotterGcodeCode