
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.
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.
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)
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 High(Servo) DelayUS(sPos) Low(Servo) DelayUS(20000-sPos) Next Else For sPos = Start To Finish Step -Increments High(Servo) DelayUS(sPos) Low(Servo) DelayUS(20000-sPos) Next EndIf End Sub // start of program.. While True // move from max to min Move_Servo(Servo_Min,Servo_Max,1) // move from max to min Move_Servo(Servo_Max,Servo_Min,0) Wend
The program can be customised with the following options/configurations;
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.
