Though there are many Instructables on some aspect of how to make circuit boards, this one is different. It's an instructable on how to make the things you need to make circuit boards, specifically, a flamboyant business card toy. Over the past six months I have set up fairly complete printed circuit board fabrication lab in my apartment, cheaply and safely, and I intend to cover all aspects of the process, from start to finish. Some of it you may have seen before, but here it is all in one place, with references.

All in all, I had to design and build an airtight etch tank out of laser cut acrylic, an SMD vacuum pickup tool, a reflow oven and temperature controller, refine the toner transfer process with a modified laminator, build a custom programming jig, and of course design, program and build from scratch every aspect of the thing I did all this for in the first place: my business card. In the end it was well worth the time to have the ability to make circuit boards appear in my hands in an evening.

The Business Card

The POV Business Card uses the classic persistence of vision  optical illusion to flash your name and number in midair as you wave the card. Based on the PIC12F508, an 8-pin 6 I/O ultra-low cost microcontroller, it is entirely surface mount and extremely thin- it uses PCB laminate that is as thin as a standard business card. And at roughly $2 apiece in parts, depending on how good you are at sourcing components, they are cheap enough to hand out (to the right people).

But why go to all this trouble simply to make something to give away to someone I just met? Why not just have them printed up in an afternoon for less than 10 bucks at Kinko's? Why, because I want  a card that would not get thrown out. A card that would embody exactly what I do, instead of clumsily trying to sum it up in an clever job title. A card that would get me places.

The Scenario

Picture the following scenario, if you will: you have just met someone who you need to know. In actual fact, they need to know you. Having exchanged introductions, "The Man," complete with dark suit and power tie, casually hands you his cloned, company-issue business card.

"Here's my card," he grins, knowing that you will impressed by his Ownership Of Card, or at least his Power Over Someone Who Owns An Embossing Machine .

Probably he expects to see you to scribble your number on a torn scrap of paper. But when you reach into your pocket and pull out your card certainly he doesn't expect to see... your name glowing in midair, floating before his very eyes!

"It's called persistence of vision," you say, as you hand him your card. "I make these in my basement. From scratch."

 You didn't even need to say another word; anything more would just be gloating. You can see the look in his eyes; he's already sold.

"Look at that subtle off-white coloring. The tasteful thickness of it. Oh my God, it even has a watermark."
Patrick Bateman, American Psycho

Disclaimer: I should note here that this Instructable involves a lot of things that could be dangerous if done without caution and informed planning, including fire hazards, risk of electrocution in various horrible ways, handling of nasty chemicals, and very toxic fumes. This one really has it all, folks. So be safe! 

Step 1: Design an Etch Tank

We'll start with the hard one: Build a leakproof, acid proof, and airtight etch tank, using no metal parts. Others have done this before, but I had to make it difficult for myself. I had built one before out of a plastic ammo can, but it was much too large. This time, I wanted to do it right. I designed it from scratch in illustrator and then had the parts laser cut out of acrylic to my specifications by a friend (laser cutter use number one!).

For those new to this, you need an etch tank to hold the acid you use to eat away the copper on your circuit board that is not covered in some kind of etch resist. It can be pretty nasty stuff, depending on the kind of acid you use, and you need to safely contain it if you plan on doing this both regularly and in the house that you live and breathe in. Or anywhere near your kitchen sink. This is doubly important if you plan on storing it for any amount of time, though to be sure this not a safe permanent storage container.

The Design

The tank should be airtight, with a secure lid, have an air inlet for a bubbler, to agitate and oxygenate the solution, and an air outlet to a house that will vent out the window. I also added a check valve to the air intake on the tank so that any exhaust gases stay out of the air pump. It should hold the board upright for the minimum amount of acid, and it should be opaque to light so that the solution does not degrade from exposure to the sun. However, I left one side clear so I can look at the board to see if it is done etching, and also because it looks cooler that way. 

I designed my tank for a total volume of roughly 2 Liters, planning on filling it to only 1.6L to leave room for the air bubbler and hose, the board itself, and a little extra for a safe lip on the top. The 1.6L value was determined with the figure of .016 liters per cm2 of board area as reported here. Assuming a a, 8x10in double sided PCB with 50% coverage of 36 μm ("1oz") copper. 

For reasons I'll elaborate on later, I chose to use Cupric Chloride (CuCl2) as my circuit board etchant. CuCl2 is corrosive to most metals, and a few plastics. 

When researching the materials you plan on using, datasheets abound under the search terms "xyz chemical resistance." Understanding the properties of materials is critical in engineering something like this, so plan ahead. Finding out that a hose melted in your acid bath and contaminated the solution, and then having to fish out each and every little tiny chunk is no fun.

Very few things will survive highly concentrated acids forever. We aren't using anything highly concentrated,as far as these things go, but the effect is the same; it's acid-resistant, not acid proof.

The following materials are generally safe to use for the construction of the tank:

  • Polyethylene (PE) and High Density Polyethylene (HDPE)
  • Polypropylene (PP)
  • Viton
  • EPDM
  • Teflon
  • Glass
  • Acrylic
  • Polycarbonate (especially mar-resistant polycarbonate)

The following are definitely NOT safe, and should be avoided anywhere directly exposed to the solution:
  • Any metal (except titanium!)
  • Nylon
  • Silicone
<p>It's been 4 years. I wonder if your solvent welded tank is still leakproof? And can I ask why you suggest silicone must not be used in direct contact with CuCl2?</p>
<p>Thanks for your sharing. It must be take care of safe in Making.</p><p>And this way may is good for simple circuit board. And there is no sold mask on it.</p><p>It is also a good way to choose a PCB fab to make it.</p><p>You can have a try with <a href="http://www.pcbway.com/e" rel="nofollow">www.pcbway.com</a>. Hope it would be useful for some people.</p>
Here's mine
I have a typo in the code, the second command in Iter2 should be movwf 13h
One more thing, if you add or subtract values from the Tables for your own version, don't forget to modify the jump values accordingly
<p>I rewrote the code from scratch in Assembly. I don't know how to properly share it, so if this is incorrect, I sincerely apologize. It didn't keep the format for the comments</p><p>If you keep the schematic in the same order, the hex values for output are as follows:</p><p>GP2 [ ] (Top LED) 04h</p><p>GP1 [ ] (Second Down) 02h</p><p>GP0 [ ] (Middle) 01h</p><p>GP4 [ ] (Fourth Down) 10h</p><p>GP5 [ ] (Bottom LED) 20h</p><p>Simply add them together to get your pattern :-)</p><p>; Code for POV Business Card<br>; Set up for the PIC12F508<br>; ASM source line config statements<br>; This SetUp works for both the '508 and 16F84A<br><br> __config 3FFAh ;_CP_OFF &amp; _PWRTE_OFF &amp; _WDT_OFF &amp; _RC_OSC<br><br> org 0<br> movlw 08h ; Put 0000 1000 into W<br> movwf 06 ; Load Tris file. Make GP3 input. Others output<br><br>Table1 addwf 02,1 ; Create jump for Table1<br> retlw 08h ; End of Table in Reverse, Doesn't output anything<br> retlw 30h ; going Forward<br> retlw 20h<br> retlw 37h ; J<br> retlw 00h ; Space<br> retlw 37h <br> retlw 25h<br> retlw 25h ; E<br> retlw 00h ; Space<br> retlw 37h<br> retlw 05h<br> retlw 27h ; R<br> retlw 00h ; Space<br> retlw 37h<br> retlw 25h<br> retlw 25h ; E<br> retlw 00h ; Space<br> retlw 37h<br> retlw 01h<br> retlw 37h ; M<br> retlw 00h ; Space<br> retlw 06h<br> retlw 01h<br> retlw 37h ; Y<br> retlw 00h ; Space<br> retlw 00h ; Space<br> retlw __h<br> retlw __h<br> retlw __h ; Omitted<br> retlw 00h ; Space<br> retlw __h<br> retlw __h<br> retlw __h ; Omitted<br> retlw 00h ; Space<br> retlw __h<br> retlw __h<br> retlw __h ; Omitted<br> retlw 00h ; Space<br> retlw __h<br> retlw __h<br> retlw __h ; Omitted<br> retlw 00h ; Space<br> retlw __h<br> retlw __h<br> retlw __h ; Omitted<br> retlw 00h ; Space<br> retlw __h<br> retlw __h<br> retlw __h ; Omitted<br> retlw 00h ; Space<br> retlw 0FFh ; End of Table<br><br>Table2 addwf 02,1 ; Create jump for Table<br> retlw 08h ; End of Table in Reverse, doesn't output anything<br> retlw __h ; going Forward<br> retlw __h<br> retlw __h ; Omitted<br> retlw 00h ; Space<br> retlw 24h<br> retlw 37h<br> retlw 20h ; 1<br> retlw 00h ; Space<br> retlw 37h<br> retlw 21h<br> retlw 31h ; 6<br> retlw 00h ; Space<br> retlw 25h<br> retlw 25h<br> retlw 37h ; 3<br> retlw 00h ; Space<br> retlw __h<br> retlw __h<br> retlw __h ; Omitted<br> retlw 00h ; Space<br> retlw __h<br> retlw __h<br> retlw __h ; Omitted<br> retlw 00h ; Space<br> retlw __h<br> retlw __h<br> retlw __h ; Omitted<br> retlw 00h ; Space<br> retlw 37h<br> retlw 24h<br> retlw 37h ; 0<br> retlw 00h ; Space<br> retlw __h<br> retlw __h<br> retlw __h ; Omitted<br> retlw 00h ; Space<br> retlw __h<br> retlw __h<br> retlw __h ; Omitted<br> retlw 00h ; Space<br> retlw 0FFh ; End of Table<br><br>Delay movlw 2Ah<br> movwf 0Dh<br>DelA decfsz 0Ch,1 ; Delay of 40,000 cycles<br> goto DelA ; Allows the entire name or phone number to be<br> decfsz 0Dh,1 ; displayed over a 2 sec wave. Play around with<br> goto DelA ; it for different timing<br> retlw 00h ; Adjusted in main part for different timing<br><br>Iter1 incf 10h,1 ; Increment table entry<br> movf 10h,0 ; Then put jump value into W<br> call Table1<br> xorlw 0FFh ; If end of table<br> btfss 03,2 ; Bit 2 of file 3 will be Set, won't output value<br> movwf 06h ; Output Table value to LEDs<br> btfsc 03,2 ; If bit 2 of file 3 set, with automatically return<br> retlw 00h<br> call Delay ; Pauses long enough to see it<br> decfsz 11h,1 ; Iteration, decrement file 11h<br> goto Iter1<br> decfsz 12h,1 ; Second part of iteration, decrement file 12h<br> goto Iter1 ; Not totally necessary but didn't want to mess<br> retlw 00h ; up file order lol<br><br>Iter2 movlw 32h ; Put last space jump value into W<br> movlw 13h<br>Sub2 movf 13h,0 ; Load value of file 13 into W for Table jump<br> call Table1<br> xorlw 08h ; If end of table<br> btfss 03,2 ; Bit 2 of file 3 will be Set, won't output value<br> movwf 06h ; Output Table value to LEDs<br> btfsc 03,2 ; Bit 2 of file 3 will be Set, will return<br> retlw 00h<br> decf 13h,1 ; Decrement down Table<br> call Delay ; Pauses long enough to see it<br> decfsz 14h,1 ; Iteration, decrement file 14h<br> goto Sub2<br> decfsz 15h,1 ; Second part of iteration, decrement file 15h<br> goto Sub2 ; Once again not totally necessary<br> retlw 00h<br><br>Iter3 incf 16h,1 ; Increment table entry<br> movf 16h,0 ; Put jump value into W<br> call Table2<br> xorlw 0FFh ; If end of table<br> btfss 03,2 ; Bit 2 of file 3 will be Set, won't output value<br> movwf 06h ; Output Table value to LEDs<br> btfsc 03,2 ; Bit 2 of file 3 will be Set, will return<br> retlw 00h<br> call Delay<br> decfsz 17h,1 ; Iteration, decrement file 17h<br> goto Iter3<br> decfsz 18h,1 ; Second part of iteration, decrement file 18h<br> goto Iter3<br> retlw 00h<br><br>Iter4 movlw 29h ; Put last space jump value into W<br> movwf 19h<br>Sub4 movf 19h,0 ; Load value of file 19h for Table jump<br> call Table2<br> xorlw 08h ; If end of table<br> btfss 03,2 ; Bit 2 of file 3 will be Set, won't output value<br> movwf 06h ; Output Table value to LEDs<br> btfsc 03,2 ; Bit 2 of file 3 will be Set, will return<br> retlw 00h<br> decf 19h,1 ; then decrement table entry<br> call Delay<br> decfsz 1Ah,1 ; Iteration, decrement file 1Ah<br> goto Sub4<br> decfsz 1Bh,1 ; Second part of iteration, decrement file 1Bh<br> goto Sub4<br> retlw 00h<br><br>Start bcf 03,2 ; Clear Bit 2 of file 3<br> btfss 06,4 ; If GP3 = 0<br> call Iter1 ; then call Iter1 for forward name<br> btfsc 06,4 ; If GP3 = 1<br> call Iter2 ; then call Iter2 for backward name<br> movlw 7Dh ; Load new timing value for delay<br> movwf 0Ch<br> call DelA<br> bcf 03,2 ; Clear Bit 2 of file 3<br> btfss 06,4 ; If GP3 = 0<br> call Iter3 ; then call Iter3 for forward number<br> btfsc 06,4 ; If GP3 = 1<br> call Iter4 ; then call Iter4 for backward number<br> movlw 7Dh ; Load new timing value for delay<br> movwf 0Ch<br> call DelA<br> goto Start<br> End</p>
<p>Most detailed instructable on POV. Thanks!</p>
<p>still no video?</p>
Plz upload the hex file for downloading it plz
There are controllers specially designed to transform domestic ovens into reflow ovens, you can find them in n_electronics (<a href="http://www.nelectronics.org" rel="nofollow">www.nelectronics.org</a>), adafruit (<a href="http://www.adafruit.com" rel="nofollow">www.adafruit.com</a>) or drotek (<a href="http://www.drotek.fr" rel="nofollow">www.drotek.fr</a>).
Saw those! Mine was an order of magnitude cheaper, though.
definitely the most comprehensive instructable ever
Really Cool! Complete end to end home based production! Well impressed. I think everyone have some that they can take away, even if they do not do home production. Well done!
Wow man, great instructable!!!
Hey, <br> <br>First of all, amazing -ible! <br> <br> Just curious as to where you sourced the bubbler wand; whether a standard pet shop aquarium wand will do or if you need something a bit more robust! Also, would there be anything stopping you from drilling a row of holes in a standard acrylic tube and chemically welding that in directly instead? <br> <br>again, great instructable! <br> <br>thanks! <br> <br>C.
Hey thanks!<br><br>I got that online, but I wouldn't recommend it. The acid embrittled the bubble wand I had pretty rapidly. Acrylic rod would would work great, certainly better. We just need aeration, so lots of fine holes drilled in a tube would be perfect. Good idea actually, I hadn't thought of that.
Hmm, I guess concentrated acid isn't a very popular substrate for aquarium fish ; -) <br> <br>I wonder if there is a non insidiously tedious way of drilling lots of tiny holes in acrylic round rod. Could it be done on a laser cuter with a small enough kerf somehow (I don't have much experience with them) ?
A drill press and a vice would do it better and faster.
May I suggest to use Liquid Tin instead of Tinnit.<br><br>I have found it much much easier to use, no mixing or heating needed.<br>Works faster too.<br>It is more expensive though, but has lasted me a while.<br><br>Great work, I am actually making a similar POV to teach others to make PCBs on their own.
That's a good tip. Tinnit has problems with oxidation, though it may be my neutralization procedure that is the problem, and not the plating composition itself.<br><br>Thanks and good luck!
I have been using an electric skillet set to 350-375 and just moving the boards off to a bit of wood as soon as the solder paste all melts. I think as long as your components sink heat at about the same rate that is an easier approach. I did have problems with some boards with large-ish surface mount caps. The LEDs might have melted before the caps were soldered. I solve that problem by using the hot plate in two passes.<br><br>Do you think there is a danger with my method of cooling too fast and having some ill effect? It sure is easier.
The ideal reflow lasts peaks only for a few seconds. Take a look at the reflow curve in step 11. Of course there's a danger; theoretically and practically, the lifetime of the components will be compromised. The question is, by how much, and is it worth your time?<br> <br> If you are making a thousand of something to tight tolerances, then the failure rate and inconsistency are unacceptable, and it's worth the time. If you are making 10 of a thing, and have the time to QA every one, then the skillet is probably easier. If it works, it works.<br> <br> My setup is probably overkill for most home SMD projects. I'd even say it was overkill for my projects. :) As it's been said before, overkill is a way of life.
That is just plain cool.
I find a zip top bag with a needle hole in the corner works great for applying solder paste. If you do big runs, a stencil probably saves time. For a few boards at a time I think I spent less total time and effort with the &quot;icing&quot; method. A suitably sized needle on a syringe is also said to work well.
<a href="http://www.instructables.com/id/Make-your-own-programmable-thermostat-with-Arduino/">http://www.instructables.com/id/Make-your-own-programmable-thermostat-with-Arduino/</a> You could also make your own PID controller. :)<br>
Hey vey nice project... just a question, why you set the Option Register to &quot;0b01000111&quot; ? <br>I took a look at the 12F508 Datasheet, but didn't get it. <br> <br>Thanks &amp; Congrats !
in the Pic12F508/509/16f505, you want page 24, section 4.5. The option register sets up the internal timer and &quot;wake up on pin change&quot; functions. They are useful functions, but not used in this application. In this case, these settings are mostly there just to disable those features.
all right then... thanks for your quick response !! <br> <br>Cheers,
p.s. thank you :)
I live in Ireland, and, for the most part, we don't have Toaster Ovens (Actually, when I saw the picture, I thought it was a Microwave, which could have ended badly). Could you recommend an equivalent appliance I could use? Cheers.
Hey, Argos do actually sell toaster ovens (search on their website), although they only go up to 230C (allegedly - the picture actually shows 400F as the max, so may not even be 230C). I am quite interested in picking up a cheap toaster oven for some SMT work, if you have found anything workable in Ireland please let me know!
That's a weird question! I have no idea what the equivalent is over there. Lots of things would work; it just needs a metal enclosure and some kind of heating element. The risk is always how safe you could make something that heats to up to 300 C. What we call a toaster oven is capable of that just as a matter of course, and so is very safe.<br><br>You might be able to take a regular vertical toaster with side heating elements and place it on it's side. I don't know how hot those can get, but it may be close. It would need to be sealed with a door somehow. And you'd need to find out what the regular operating temperature and wattage was so you didn't exceed that and start a fire.<br><br>Also, if you don't need your design in massive quantities, you can just go over the board with a hot air soldering gun and get similar results. Even a regular pen type soldering iron works, with practice. <br><br>Just don't do anything I wouldn't do!
that sounds like a &quot;oops - i kinda set the kitchen on fire making a business card,&quot; incident waiting to happen. <br><br>:)
I agree! This is kind of dangerous. :D
Thanks, you've been very helpful. I'll see what I can do with a regular toaster, and if not, like you said, just solder manually. Thanks!
Question:<br><br>How come you guys bake potatoes? make pizza, toast bread cheese and tomatoes, bake frozen chiken, pre-heat hotdog buns, broil a bunch of half garlic and olive oil, bake tomatoes, hot sandwich, etc?
You mean how do we? The magic of the oven grill. Same principle as the above, only attached to an oven and a hob, which would make the whole thing terribly awkward and expensive to use as a reflow solder oven. Basically, the Toaster Oven above is to the Double Oven, what the Hotplate is to the hob.
Interesting. Here in USA we can buy one oven toaster like that in hundreds of department stores, like WalMart, Target, etc. They ALL are manufactured in China and you can buy then from 10 to 40 US Dollars. If you have electric stove, probably you may have available to sell the heating elements. Here we use a coiled resistance, electrically isolated, that heat to a point (if you want) to get really red and heat the pan over it. The pan really sits over the element. There 3 or 4 sizes of those heating elements, the second size, the most common around, is for 900W, if I remember well. They feed on 220Vac. In the past I build a SMD reflow solder oven using a toaster, but I was thinking to build another from scratch, stainless steel box, thermal insulation another box inside, fans, a sliding tray for the SMD boards, may be even a metalic belt for automation. Using those stove elements is easy, just one on top, another on bottom, the PCB in middle, 20 to 30mm distant from the heaters. The oven I build 3 to 4 years ago, you may find it at http://www.ustr.net/smt/oven.htm and http://www.ustr.net/smt/ . My process is much simpler than the posted here, since I use a microcontroller already programmed with the temperature profiles and the temperature is captures from a real small circuit board inside the oven, so it is not &quot;air temperature&quot;, is an electronic circuit board temperature. Cost much less, since all the electronic control is made with less than $10. One day I need to publish that circuit and software.
cool cool now make mine to fit in my body so i wont lose it - but then again it the way it looks it would be a crime to set down.
I am working on my own card and encountered a problem with Hi-Tech C version 9.81. For some reason they do not have a declaration for &quot;TRIS&quot; in the header files. They will probably fix soon but in the meantime you just add this declaration before the main body of the code:<br><br>&quot;volatile control unsigned char TRIS @ 0x006;&quot;<br><br>Thanks for the instructable. Great Idea!!
There's always something... Yes, I forgot to mention that the default device specific header files are sometimes lacking. I also had some problems when they changed their formatting on legacy devices for the PIC12F508/509 in the latest version of MPLAB. Thanks for catching that!
This is very cool. You've got some serious creative skills thinking of and making a such a uniquely awesome business card.
That is INOVATION!<br>Really great idea for a vacuum pen!
Wow that is plain wicked!
Nice one on the laminator. Going to try that myself.<br>Been using water + iron for ages. Not exactly the safest method but gets the job done.
Out-friggin'-standing! This is the most detailed, best-written instructable I've read so far, and now my undisputed favorite. <br> <br>I've never done any surface mount work myself, but you've inspired me to rescue my electronics stuff from the yard sale pile and give it a shot. I'd maybe like to make a card that has a snap-off portion that will reveal a tinned connector that plugs into a USB port and has some digitally stored goodies, like a copy of my resume and some pics and videos of me doing my stuff. Probably too expensive and complicated to be practical, but it would sure be slick if I could pull it off. <br> <br>Honestly, this instructable could be a book if you wanted to flesh it out a little. Anyway, great job!
Thank you!<br><br>Adding USB capability is a feature many have recommended and I will certainly add in future variants of this thing; it would be so much more versatile if it could be programmed by anyone with a computer.<br><br>Alternately, your idea of what amounts to a flash drive on a board could be easily accomplished simply by buying up cheap 256 MB USB flash drives from five years ago. I bet you could get them for under a dollar if you found old stock. The work would all be done for you! Then just pull them out of their housing and cut out a slot for it to fit into out of card stock with your name and logo.
Beautiful sir!!
totally awesome. do you take orders? id buy a set quantity. like 200? if your price is right for me.

About This Instructable


623 favorites


More by sponges: Complete Circuit Board Lab & POV Business Card
Add instructable to: