Bosslike electroplating on a budget

Process tank and Reverse Pulse Current power supply

Similar projects worth following
Plated vias and through holes remain one of the last frontiers in home PCB production. This project intends to provide a means to cross this frontier safely, with cheap and readily available materials.
People tend to think it's not feasible as there are rather nasty/proprietary/expensive/hard to come by chemicals involved, which used to be the case, at least for the proprietary/expensive part. The nastiness is (at least IMHO) a bit overrated, since the main chemicals involved are copper sulphate and dilute sulphuric acid, which is no more or less nasty than your usual etching chemistry.
To overcome the expensive/proprietary part, Reverse Pulse Current is used. The idea being that if the plating current is pulsed and/or reversed, the same (or even better) results as with traditional chemical additive systems (brighteners, levellers and carriers) can be achieved.

The project consists of two parts, the process tank and the power supply.

The process tank is made with an off the shelf "Lock'n'Lock" brand food container, a few laser cut acrylic parts, a piece of copper heating pipe and a bit of PVC aquarium tube.

The power supply is a hybrid of a AVR controlled constant current source and an H-Bridge. It's powered by an ATX power supply, as these are ubiquitous and capable of providing a lot of current on the 5V rail.

  • 1 × Lock'nLock brand HPL829 food container I am not affiliated with this company in any way.These are just good containers and I've tested them to be sufficiently resistant to the chemicals involved.
  • 1 × 1m 15mm (or close) copper heating pipe cut to 8 pieces of 125mm length
  • 1 × 1m 4/6mm PVC aquarium airtube
  • 3 × 200mmx300mmx3mm arcylic sheets and access to a laser cutter
  • 1 × 1082ml Sulphuric Acid 37%

View all 12 components

  • The results are in!

    Alexander Tuxen09/23/2015 at 22:04 0 comments

    The first successfully plated board was done with the following parameters:

    • Plating bath: Original Thinktink recipe w/o any additives (just distilled water, H2SO4, CuSO4 and a drop of HCl), at room temperature with bubble agitation.
    • Pulse current: 19/1ms pulse duration, 1/3 pulse amplitude, 2A/dm² average current density (roughly 20ASF)
    • Anodes: Copper heating pipes (I might even have grabbed phosphorized copper pipes by accident)
    • Plating time: ~3h
    • Added copper thickness: ~50µm
    • Copper surface: bright and dull

    I made a few cross sections by cutting off a slice of a test board and sanding it down with 600 grit sandpaper. Here is the result:

    The two leftmost holes are 0.3mm, then a pair of .4, then two .7s and finally a .8 at the right. Apart from the right .3 hole, which is clogged with paint, all the holes are plated beautifully. The right .4 hole looks a bit iffy, but that's because I poked around in there with a knife. And that dark spot in the rightmost hole is just a shadow. Also, the copper on the top seems to be much thicker than on the bottom, but that's just an optical illusion from the lighting.

    This is a close up of a 0.3 hole I made with an improvised usb microscope. No Idea what magnification this is.

    It's clearly visible that the copper on the hole walls is at least as thick as on the surface, which supports the theory that pulsed reverse current improves throwing power. If you look closely and with a bit of imagination, you can even see the thin black layer of conductive ink between the copper and the substrate.

    Here is another one showing the whole barrel:

    It's a bit blurry, but here you can see the carbon paint on the hole walls even better. And it nicely illustrates the aspect ratio of the hole. That's a 0.3mm hole in a 1.6mm board. Plated in a home lab. With tools and materials for less than a hundred Euros.

    Well, that's it, I'm done. I could muck around with additives like PEG and try to get a shiny surface, but why bother? Plating holes works amazingly well, and the following process steps don't care about looks. In retrospect, I must say the trickiest part was getting the conductive ink right. The conductive screen printing paint from Peters is definitely the right tool for the job, but might be hard to get in some parts of the world. But then, there might be other things available, like Higgins Black Magic ink, which I hear works very well, also. The PCB for the current source only took that long because I was experimenting with other process steps which screwed up a few tries.

    The code, schematics and layout for the current source are in my github, as well as the CAD files for the guts of the process tank. So go and buy a PE food container, copper sulphate and a bottle of battery acid, fire up your hackerspace's laser cutter, throw together a current source, and plate your own boards!

  • First test board etched

    Alexander Tuxen09/19/2015 at 23:47 0 comments

    First things first, all the .3 to .7mm vias have no measurable resistance (measured with my cheapo multimeter). Other than that, there are a few things wrong with this board: The CNC router shut itself down in the middle of a drilling cycle, and after that, the Y axis was slightly off, so the .8 and 1mm holes are all in the wrong place. Also, I printed the film the wrong way around, but I didn't even notice until the board was etched.

    This is a 1.6mm board, which makes the aspect ratio of the 0.3mm holes roughly 1:5. I'll have to figure out how to make a clean cross section of one of those holes to look at the wall thickness, but still, that's quite impressive for a bottle of battery acid and an old PC power supply.

  • Uploaded a video and linked sources.

    Alexander Tuxen09/19/2015 at 10:31 0 comments

  • It actually works!

    Alexander Tuxen09/19/2015 at 00:11 0 comments

    The conductive ink arrived and I gave it a try. I forgot to thin it, so it clogged most of the 0.3 and 0.4mm holes, but the bigger ones mostly turned out beautifully. From left to right the holes are 0.3, 0.4, 0.7, 0.8, and 1.0mm, in rows of two.

  • The current source is up and running!

    Alexander Tuxen09/06/2015 at 22:23 0 comments

    I finally finished the current source (uploaded a picture). Now I just need the conductive ink to arrive and prepare a few test boards.

  • Conductive ink sample on the way

    Alexander Tuxen09/03/2015 at 15:24 0 comments

    I asked Lackwerke Peters for a sample of their SD 2843 HAL conductive screen printing paint, after reading on the EEVBlog forum, it has been successfully used for holewall activation. Well, today I got the answer: They'll send me 250g as a free sample! I don't think I'll ever have to buy any of the stuff now!

    THANK YOU, Lackwerke Peters, for your outstanding generosity! You are awesome!

  • Current source still not assembled..

    Alexander Tuxen09/03/2015 at 15:08 0 comments

    But the soldermask is now properly UV- and heat cured. And my reflowing/annealing/curing-toasteroven has a new profile now, for curing soldermask.

  • Finally, a PCB I can live with!

    Alexander Tuxen09/02/2015 at 09:58 0 comments

    The PCB for the current supply is done. Finally. I hope I'll find the time to assemble it tonight.

  • PCBs etched, but with many defects

    Alexander Tuxen08/27/2015 at 08:31 0 comments

    I'm still tweaking my process, so I tried to laminate the photoresist at a lower temperature, which seemed to have an adverse effect on adhesion, plus I tested my new horizontal bubble etching tank design, which still needs a lot of refinement. How many tries will it take me to get this right?

  • New PCBs drilled.

    Alexander Tuxen08/21/2015 at 10:28 0 comments

    With the right size holes, this time. I didn't even break any endmills!

View all 16 project logs

Enjoy this project?



phuongmusic001 wrote 10/28/2018 at 19:02 point

I need compile project but I recive error 

In file included from display.cpp:1:0:

display.h:4: error: variable 'menu_strings' must be const in order to be put into read-only section by means of '__attribute__((progmem))'

 extern PGM_P menu_strings[] PROGMEM;


display.h:9: error: variable 'settings_strings' must be const in order to be put into read-only section by means of '__attribute__((progmem))'

 extern PGM_P settings_strings[] PROGMEM;


display.cpp:35: error: variable 'menu_strings' must be const in order to be put into read-only section by means of '__attribute__((progmem))'

 PGM_P menu_strings[] PROGMEM = {


display.cpp:54: error: variable 'settings_strings' must be const in order to be put into read-only section by means of '__attribute__((progmem))'

 PGM_P settings_strings[] PROGMEM = {


display.cpp:73: error: variable 'misc_strings' must be const in order to be put into read-only section by means of '__attribute__((progmem))'

 PGM_P misc_strings[] PROGMEM = {

Please help me compile your code.


  Are you sure? yes | no

Sergio wrote 07/15/2017 at 14:27 point

Hi, Alexander!

Check your private messages.

  Are you sure? yes | no

Sergio wrote 11/19/2016 at 23:07 point

Hi, Alexander!
Tell me please:

What nominal quartz resonator (Y1) in the diagram constant current source? (

  Are you sure? yes | no

Alexander Tuxen wrote 11/21/2016 at 08:54 point

should be e16MHz

  Are you sure? yes | no

Sergio wrote 08/11/2016 at 12:33 point
Hi Alexander.
You have the photograph shows the old version of the board.
Do you still have the source code for KiCad?

  Are you sure? yes | no

Sergio wrote 07/29/2016 at 09:48 point
I am interested in your project. I want to repeat it.
I wanted to see how the menu works. Which sections of the menu. As regulated.
Sorry for my English. This is Google translator. :)

  Are you sure? yes | no

Sergio wrote 07/28/2016 at 23:25 point

Hi Alexander,
Thank you for the file.
I wanted to create .hex himself, but received an error "variable 'settings_strings' must be const in order to be put into read-only section by means of '__attribute __ ((progmem))'"
I'm not good at programming and was not able to fix the error.

  Are you sure? yes | no

Sergio wrote 07/24/2016 at 16:28 point

Hello Alexander!
I can not compile a file for the project. Do you have a a ready .hex?

  Are you sure? yes | no

Alexander Tuxen wrote 07/27/2016 at 15:48 point

Hi Sergio,
I've uploaded a hex file here:

Have you actually built the hardware? Also, what seems to be the problem
with building the software? Note that you probably wont be able to build the project
with the Arduino IDE. You'd have to use my Makefile instead. There's
another project here that will help you with that:

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates