Showing posts with label Mill. Show all posts
Showing posts with label Mill. Show all posts

Sunday, March 28, 2010

Mill: lessons learned on milling circuit boards...

In one of my last posts I broke out some reoccurring problems I was experiencing on a consistent basis while trying to mill circuit boards. These six problems that I identified have all been solved. Here are some pictures of the finished board.




I also prepared a video last week of the whole process.

Now, on to how these problems were solved, in order of simplicity.

5) Drifting Hole


This was easily fixed by enabling the tapping feature of pcb-gcode.

2) Bad Motor Coupling


Here is an exaggerated image of the problem I was dealing with.


Because the coupling was off by only a small amount I decided to just take a file to it, which removed most of the symptoms and only took half an hour.

3) Not Round

4) Incomplete / Grounded Pad

6) Inconsistent Traces


All of these problems can be attributed to the part that connects the y axis threaded rod to the bed.


After closely examining the entire machine while running small quick movements I noticed it wobbling. I doubled the size of the part and the number of screws. Now it doesn't move.



1) PCB Thickness Tolerance


I am releasing the beta software I am using to add probing routines to the gcode produced through pcb-gcode. I'm calling it PcbSubtraction. I hope to extend it and add more documentation over time.

Tuesday, March 9, 2010

Mill: preview of problems solved...

When I have more time I will be writing in depth on the solution to each of the problems identified in the last post. As a preview, here is an image of my latest go.


Sunday, February 28, 2010

Mill: new bed, new spindle, new problems...

I did end up getting an aluminium plate to increase hight consistency and a spindle to eliminate runout. Here's a picture of both installed:



They did their job. Hight is much more consistent now and runout is nonexistent. Also, the new spindle is sooooo quiet! Here is a closeup of a 39mm by 17mm circuit outline done with this setup.



As you can see, the bit consistently took the copper off without leaving burrs and the bit never went deep enough to dig into the glass fiber / epoxy, which dulls the bit. Another reason why you don't want to dig past the copper layer is because the bits for this kind of work are V shaped and would make the traces thinner the deeper they went. Also, when you dig in it just looks ugly. Anyways, I thought all my problems were solved... but it turns out I just got lucky. I have now identified a lot more problems.

First, let me explain my experiment setup. In order to waste as little material as possible I wanted to try something a lot smaller than I have tried in the past. I settled on an opto end-stop that I use on my mill and printer (thanks Zack). I can now say that choosing this board was brave. The traces are 16mil (0.4064mm) and the pads are 10mil (0.254mm) from each hole's edge to the edge of the pad. Still, this board should be obtainable and prove I will have no issues with SMT moving forward.




I attempted this board five times, using different settings. Six problems consistently surfaced, of which I will describe below.

1) PCB Thickness Tolerance


Problem:

I am still experiencing depth issues! I was under the impression that blank PCBs had a consistent thickness. I was wrong. The board I am working with varies in thickness from 1.49mm to 1.52mm randomly. This is enough to make the bit dig in, in some areas.

Solution:

Poul-Henning Kamp, a FreeBSD developer who dabbles in milling PCBs has considered this problem and has a solution. His solution entails grounding the board, turning off the spindle, and probing the board with the milling bit in a 4mm X 4mm grid. He then parses new Z values into the GCode based on this hight information. His unique solution cannot be directly used by me, but the concept could be applied.

I estimate it would take me 20 hours to write and test software / firmware to automate this task.

2) Bad Motor Coupling


Problem:

Refer to the following image.



What you are looking at is a diagonal trace, enhanced and sharpened. As you can see, every 1.41mm the Y axis seems to slow and then speed up, resulting in a wave type effect. Inconsistencies like this can be really bad if they are in certain places of the design. They could result in an incomplete circuit, or a circuit that will fail. The cause is a bad motor coupling that is causing the motor to wobble, storing up energy and then releasing it once per revolution. The motor also looks a little off axis, or it could be that the drive-shaft is slightly bent.

Solution:

I need to redesign the part and print a new one. I also need to make sure the motor is being held in the right position and that the shaft is straight.

It may take me a few prints to get the coupling right, so I will estimate it taking me 3 hours not counting printing time.

3) Not Round




Problem:

These pads are suppose to be perfectly round and they're not. I double-checked the gcode through NCPlot and the code looks fine.

Solution: ??

I'm not sure on this one. Either this will be fixed when I fix the Y axis or there is something else at play.

4) Incomplete / Grounded Pad




Problem:

Two of the pads have a little bridge connecting them to the rest of the copper. Again, I checked the gcode and this should not have happened. What's odd is it's the same two pads on all five goes. If this was the aforementioned Y axis issue then I should have seen some randomness.

Solution: ??

Again, not sure. I think it may have to do with play from starting and stopping quickly in a small area. I am planning on running a few tests to eliminate possibilities.

5) Drifting Hole




Problem:

When drilling after milling I'm finding that the holes work their way to a milled groove.

Solution:

Pcb-gcode has a feature to tap the holes with the milling bit after milling. I think that will eliminate this issue.

6) Inconsistent Traces




Problem:

As you can see, the trace on the left is thinner than the trace on the right. This should not be because they are both 16mil traces. Again, I double-checked the gcode.

Solution: ??

I'm crossing my fingers that this is the Y axis again. I will just have to see.


So... it looks like it will take me +25 hours to solve these problems. I mention this because I want to make it clear that if you are planning on milling PCBs then plan on spending a lot of time getting it to work. Granted, some of these problems would not be faced if I had just bought a mill, but there are still a lot of things to get right.

Saturday, January 2, 2010

Mill: milling PCBs with a Rockcliff CNC...

My vision for the direction of my research requires me to be able to rapidly prototype PCBs. I started working towards this goal way back in March of 2009 when I attempted milling on a darwin. This is why I am building a mill. Through trial and error and a lot of reading I am realizing just how precise my manufacturing techniques need to be. I am also hitting a lot of obstacles.

I found that bolting down the circuit board on my grooved bed causes the corners to be further from the milling head than the middle of the board by 0.1mm. It is absolutely essential that the board is perfectly flat. Otherwise the V shaped bit will mill away more than it should in the highest areas of the board, making the traces too thin. I stumbled upon http://millpcbs.com this week which promotes a very elegant solution to this problem. They suggest mounting an aluminum plate to a leveled bed and then gluing the copper board to the aluminum plate with super glue. I didn't have a piece of aluminum plate, but I did have some aluminum exit foil sheets from think tinker. First, I scored and drilled the board.



Then I mounted the aluminum sheets and glued the board down. I used reference pins to make sure the alignment was correct.



I then milled the traces using a 60 degree bit from think tinker and the pcbgcode extension of Eagle.



I learned two things from this experiment. I learned that I should buy a precision 3mm bit because my reference holes were off by 0.5mm on one side. I also learned that I need an aluminum plate because two sheets of aluminum exit foil still bubbles up and gives an inconsistent bed. I will order it right away.

I am also considering purchasing a 3Speed Spindle from http://www.cnconabudget.com/. If you pay close attention to the traces on the above image you will notice copper burrs caused by runout from my dremel. Using a more precise spindle should get rid of the burrs and allow for a higher resolution.

One final obstacle has been occupying the back of my mind for several weeks. Once I get the drills and traces PERFECT and reproducible the final obstacle is hole plating. The above board is a redesign of Zack's Sanguino for my spider robot. I chose to use all through-hole components on a double sided board. This means that hole plating is essential. I've only been able to find one through-hole at home experiment without much documentation. I am weary of trying it. Another option I am considering was suggested on the millpcps forum. Their suggestion is to simply use SMT wherever possible and strategically place vias to keep them accessible for soldering in a thin piece of wire. Why solve a problem when you can step around it? Haha. I don't know what I am going to do yet. I may try both. I may stumble on another solution. More to come...

Tuesday, December 29, 2009

Mill: servo switch relay...

I've been using my mill quite a bit in an attempt to make a circuit board. I've finally gotten annoyed with having to turn my dremel on and off manually and decided it was time to upgrade to automation. The first step was to come up with a simple way to control a high powered device through my arduino. I thought about using a relay board. However, I went with something I thought would be a lot more fun to assemble.



All the household switch parts cost about $4. The servo was just one I had lying around. I'm sure a $12 servo would do the trick.

Next, I did a little research on G-Code, knowing the commands were already standardized. It turns out M03 is the standard command for "Turn Clockwise" and M05 is the standard for "Stop Turning". I updated my firmware and added a servo library. Here it is installed:



I am happy with the result. I did a quick search on thingiverse to see if others have done this and found a much more elegant solution: Servo Controlled Switch by oomlout

Sunday, November 29, 2009

Mill: electronics, end-stops, bed, and vacuum...

I've been adding to my mill related to-do list for several weeks and am happy to say that I finally made some progress. First, I finished installing my electronics. I was planning on borrowing my stepper driver boards from my 3d printer in order to mill another set but finally got too annoyed by switching machines so I went ahead and bought them from MakerBot.



Next, I installed the x, y, and z end-stops respectively.





I then started working on my bed. I wanted some kind of setup that would allow me to screw on the material I was milling in any orientation or size. I settled on this approach. Thankfully I was able to mill all the grooves and drill all the holes right no my mill. To accomplish this I screwed down a 1 X 3 inch board and milled down the surface so that it was level. I then pinched these 1 X 1 inch pieces of wood between two screws and milled a groove. I Flipped and repeated. I then turned and drilled the holes in the pieces of wood. I then drilled corresponding holes in my base MDF bed.





A washer will now fit in the grooves and so I have a lot of flexibility in how I screw down my milling material. I also zip-tied a Husky Wet/Dry Vac to the mill. I should have done this a long time ago. I am now in the process of milling down and leveling my new bed.

Sunday, November 1, 2009

Mill: bigger steppers and carbide bits...

When testing my mill out for the first time went ahead and borrowed my steppers from my 3d printer. They sell for $26 and have 156 oz-in torque. Here is a picture of one on my printer (Kelling, KL23H251-24-8B).



They worked fine for the tests but I quickly realized I needed something bigger. I went ahead and ordered some of these (Kelling, KL23H2100-30-4BM):



They are $59 a piece with 495 oz-in torque. I will be using one for each of me x and y axes and the smaller stepper for my Z axis. What these bigger steppers provide me is more speed and power. I am able to run the mill twice as fast with these steppers without skipping a single step.

I also got some new pure carbide bits in the mail for milling PCBs from Think & Tinker. I have yet to try them out, though I have complete confidence that they are up for the task.



I also ordered some carbide drill bits.



I'm looking forward to giving these a go soon.

Monday, October 5, 2009

Mill: starting yet another project...

Every once in a while I get the chance to re-evaluate my vision and the direction my research is going. Every time I get the chance to do so I identify a gaping hole in my current tool set. For the last six months I have had a working 3d printer at my disposal. However, when I started working on my first robotics project I found that it wasn't enough. I am missing an easy and accurate way to fabricate PCBs. Of course I could purchase the chemicals required to etch, but I have a small apartment and I haven't seen much precision out of people who have gone down this route. Since I started building a RepRap I have been aware of CNCs capable of milling PCBs and have even given this a try on my Darwin. I quickly found out that milling on a Darwin isn't the best idea.

Thus, a new project is formed. I don't have a lot of time or motivation these days and so I wanted to be smart about getting a cheap solution up and running with minimal time / resources. I decided to go with a time tested design called the Rockcliff. It's not an open source design, but the plans only cost $20. They are well worth it! Here is an animation of the design I went with:



It is mostly made out of 3/4 inch MDF and 5/8 inch steel rod, which cost $60. You will also need some bearings, motor couplings, stepper motors, and driver boards costing upwards of $400. However, considering I have a 3d printer I was able to print the bearings and couplings. Here is video of what the printed bearings look like:


CNC parts printed on a RepStrap from gavilan on Vimeo.


I am also borrowing the driver boards from my printer while I mill another set.

In total, I think this CNC will cost me around $240. Not bad for 0.003mm precision.

Here is a picture of the mill as it stands.



More to come on my goes at milling PCBs on this Rockcliff.