PCB Rocker


Another quick and easy project, this time focused toward a simple robot that rocks a tank full of PCB etchant.

Anyone that fabricates their own Printed Circuit Boards (PCB's) at home will either have a commercial etching tank, or manually rock their etchant solution until the process is complete. Given the price of commercial models are anywhere between $70 and $150, I thought some DIY was in order here. For less than $20 in parts you can make your own PCB Rocker like this one that does the job just fine.

I know there is someone out there who is going to ask "Why?" (most likely they have not made their own PCB's). Without agitating the etchant solution, the PCB will most likely not etch evenly, and it will take a significantly longer time.



  • Timber ($5 from hardware store)
    • 1.5 meters of 20*40mm
    • Piece of ply backing
  • Servo Motor (less than $10 from electronic/hobby shop)
  • PIC and associated hardware (less than $5)
  • Some wood glue/nails/screws


The End Result

Here's a video of the project being simulated with water (did not want to spill etchant while testing limits!). Sorry as the project has not been sanded down in the video, rather its one of the first trial runs to ensure correct operation;




There is no right or wrong way to build your own PCB Rocker, simply use what you have to get the job done. There are some points of interest that I discovered.

The servo motor should be a metal geared type with decent torque. A plastic variant will not last long with this sort of use. I made a cutout in some timber to house the servo motor. The timber I used was slightly to thick to insert the servo motor due to the lead extruding the way it does. The timber was thinned down as shown below, and a snug fit was the result;


A major issue in terms of operation was the servo appearing to jitter instead of smooth transitions from one deflection to the other. The dynamic forces created by both the weight of the rocker and the moving liquid were to substantial for the poor servo, and the result was a rather jumpy ride from one side to the other. This was countered by applying a static force to assist dampening the dynamics forces, achieved by employing a rubber band as shown below;


The rubber band did the trick, though there was still a noticeable jump here and there (to be expected with water rushing around the way it does).The rubber band actually has two purposes, static friction and known start state. The later (known start state), is important as the servo controller will not inadvertently drive the servo in the opposite direction on power application, instead, start moving the rocker from the start state toward the opposite direction.

It's also important to note that careful alignment of both the servo and rear pivot point will ensure smooth operation throughout the complete range of movement. The rear pivot point (shown above) simply has a 5mm cylindracal piece of plastic placed between drilled holes.


The Program

What a servo is and how one works can be found in other articles on this site. The below program controls a servo to move from one direction to the other, and offers a lot of flexibility to the end user (to match their servo/speed requirements)

PCB Rocker
Device = 18F2620
Clock = 8
Config OSC = INTIO67,
       MCLRE = Off
Include "INTOSC8PLL.bas"
// user definable constants
Const Servo_Min = 1440,
      Servo_Max = 1770,
      Increments = 9
// servo signal output      
Dim Servo As PORTB.0
// sub routine to control the servo movement    
Sub Move_Servo(ByVal Start, Finish As Word, Direction As Bit)
    Dim sPos As Word
    If Direction = 1 Then
        For sPos = Start To Finish Step Increments      
        For sPos = Start To Finish Step -Increments         
End Sub
// start of program..
While True
    // move from max to min
    // move from max to min

The program can be customised with the following options/configurations;

  • Servo_Min - minimum servo angle signal
  • Servo_Max - maximum servo angle signal
  • Increments - defines how many increments to step for each servo rotation change.

If for example, you wanted to increase the speed of rotation, simply increase Increments. Do the opposite to slow down the speed of rotation.



This schematic is by no means complete, you still need a 5V power supply to drive the servo and the PIC circuit. No connection is needed for MCLR as it has been disabled in the program.



Posted: 8 years 8 months ago by Mosaic #5734
Mosaic's Avatar
Graham, I don't think a servo/mcu system is really req'd for this.

I'd have done it with a 555 timer driving a PFet/Nfet package to control 2 solenoids. Have the Etchant tank flat on some 'bic pen rollers' or low friction pads like those used for furniture feet. Each solenoid 'pulls at opposing ends of the tank. The solenoids alternately pull thus making 'waves' , adjust the timer so that the pull occurs as the wave 'reflects' off the opposing end of the tank, creating a simple harmonic motion. Job done. Minimal fabrication, no programming.
Posted: 8 years 8 months ago by Graham Mitchell #5740
Graham Mitchell's Avatar
Nice work Mosaic, I bet its made DIY PCBs a lot easier (and faster)!
Posted: 8 years 2 months ago by Jon Chandler #8664
Jon Chandler's Avatar
Here's a clever alternative via Hack-A-Day. The approach uses a CD drive, using the eject mechanism to drive a tray of etchant back and forth.

Posted: 8 years 1 month ago by bitfogav #8672
Posted: 8 years 1 month ago by Jon Chandler #8677
Jon Chandler's Avatar

Opps...typo on my part. Thanks for catching it. The link has been fixed.
Posted: 7 years 1 month ago by eee1001 #11285
eee1001's Avatar
I am new to this website and I found it through Electronics-Lab link. Can you tell me what the exact servo motor you used for this one? Thanks!
Posted: 7 years 1 month ago by Graham Mitchell #11287
Graham Mitchell's Avatar
Hi eee1001,

It was an elcheap servo from eBay. I recently had to replace the servo, I got a fair number of boards made so no great loss.

http://www.ebay.com.au/sch/i.html?_from ... Categories
Posted: 7 years 1 month ago by bitfogav #11291
bitfogav's Avatar
I guess any servo would do for this aslong has it is rated High Torque?

Forum Activity

Member Access