Saturday, May 17, 2014

Project CNC - New Spindle - keep forgetting to post picture

After my last spindle failure (bearing freeze up with Harbour Freight Cutout Tool) I knew that I had to splurge and get a better quality tool.  I ended up deciding on a Porter Cable Laminate Trimmer.
PCLT 7310 with included mount
Bare PCLT 7310

It's a bit dirty in this picture but that's because I've been using it in my CNC mill.  It is single speed (30,000 rpm - with no load) but that is fine with me right now.  In the future I'll look at options for speed control.

My only issue with it has been that it only comes with a 1/4" collet (so it can only take bits/endmills with a 1/4" shank - my good endmills are all 1/8" shank).  After a lot of searching I found a company that sells a 1/8" collet for this specific tool: Elaire Corporation.  So far this collet has worked perfectly for my endmills.  For some reason I could not find mention of this collet or company on any of the CNC sites I have looked at.  Also it took looking 4-5 pages in on searches to find this company (when searching for collets for the Porter Cable Laminate Trimmer 7310).  The cost of the collet, with shipping, ended up being around $27, so the router plus the collet was close to $90 after taxes.  If I had gone with the Porter Cable Palm Router it would have been about $120 plus tax but would have included both collets.  It would be nice to know if Porter Cable uses the same specs for collet's for all their routers.

Project CNC - back up and a new computer

I cleaned old glue off of the motor axle and re-glued it after my last post.  Yesterday I mounted the motor/lead screw and spindle to the machine.

Brown area is where the Z-axis failed

Between pipe clamp and motor tubing came off
 When the tubing connecting the Z-axis to the lead screw separated the spindle dropped down to its lowest limit and the X-axis continued to drag the spindle (I watched it happen and it took me a few seconds to understand what happened and shut off the power).

The parts I was cutting were supports for the Y-axis guide rods for the 3D Printer I'm building.  Initially I designed and cut them out of a white HDPE (plastic) Kitchen cutting board but I did not take the stepper motor dimensions into account and they were to short.
Initial guide rod mounts

Mother's Day Present (still working on it...)
Prior to this equipment failure, and subsequent repair,  I was able to do a bit of glass etching with my desktop cnc.  My goal was to make an etched glass edge lit display/sign for my wife for her new Nut Free Bakery (Callie's Cuties).
  1. I did the initial design in Inskape converting image files of the logo etc. (to keep it simple I made sure to use inches for units in Inskape - more on this in step 5).  These then I resized and then used "Trace Bitmap", located under the "Path" tab.  After making sure that everything was converted to a "Path" I saved the file.
  2. After opening a web browser window I went to MakerCAM.  
  3. Before opening my Inkscape ".svg" file in MakerCAM I clicked in "Edit - Edit Preferences".
  4. In the "SVG Import Default Resolution Box" I changed it from "72" to "90"
  5. I then clicked on the "File - Open SVG" and selected the file I wanted on my computer (to keep it as simple and straightforward as possible keep the settings set to inch, in the upper right of the MakerCAM window - if you must use mm you will need a Python extension to truncate the measurements from Inkscape to 4 decimal places, this is automatic in inches, because GRBL cannot handle more decimal places than that).
  6. After my file was imported I did some additional editing (mainly cutting out unwanted parts).
  7. Time to select each object (left click/hold and drag) and then select "CAM - Follow Path"
  8. For each of these I set my depth to 0.01" with a pass depth of 0.01" and plunge and feed speeds at 14.  
  9. After it all looks good select "Calculate All" under the "CAM" menu.
  10. Now it is time to export the G-Code.  Select "Export G-Code" under the CAM tab and save your file.
  11. IMPORTANT: Open your exported file in a text editor and add "%" at the beginning and end of the file (this is not done by MakerCAM but is needed if you plan to use Universal GCode Sender)
  12. The bit I used was a diamond coated dremel bit for glass etching/engraving.  To keep things cool I used a spray bottle filled with water  and sprayed the bit as it cut.
First test piece
 On my first test piece (above), I was checking for an optimal depth with star, square, ellipse and circles for test shapes. The bottom cut was 0.01" one pass, next up was 0.02" in two passes and finally 0.03" in three passes (each pass was 0.01" deep).  In these tests I was using feed speed of 13.  The Cup Cake Character was my next test (using the same piece) and this was made initially from an image imported into Inkscape.  The depth was still jut 0.01" but each line was done with 10 passes, each slightly offset (Inkscape's "Trace Bitmap" has options that result in additional closely spaced lines).

After my initial tests I tried to cut my complete design:
Came out very well, a few traces in the lettering were a bit shallow.  So, testing how it came out with edge lighting I found that I need to etch the image on the BACKSIDE of the glass not the front.  This meant I needed to go back to the images in Inkscape, reverse/mirror them and then run them through MakerCAM again.

In an attempt to make things a little easier I tried building a clay dam around the area to be etched and filling this with water to keep the bit and the glass cool:

Below is my best run, which was messed up by my poor skill in glass cutting (I only taught myself  how to cut glass last week).
After these trials I decided to revert to using Lexan to cut the display out off, instead of glass (the glass never really got bright enough and Lexan is supposed to have better light transmission).

Thursday, May 15, 2014

Project CNC - Laptop is down - along with CNC mill

My laptop is no longer booting up.   Over the weekend it began responding slower and freezing up when it was bumped  or moved - requiring a complete reboot. Now it refuses to boot up at all so I'm posting this from my phone.

My CNC has been working perfectly...  up until last night.

While cutting some guide rod mounts, for my 3D printer build, the leadscrew attachment to the Z axis motor failed/detached.

Monday, May 5, 2014

Project CNC - More repairs and learning to adjust current limit of stepper drivers

Early last week I killed the driver board for the Z-axis stepper. Initially, it moved intermittently and then it just stopped moving entirely.  It occurred while I was trying some test cuts in acrylic (to try and find the best feed rate, and depth of cut for different plastics using different end mills/bits). After the Z-axis failed, touching the chip on the driver board I found that it was very hot. I allowed the board to cool (keeping my fingers crossed that it was just a thermal shutdown and would reset when it cooled) and then tried it again... it still didn't work but it did heat up even more.

I expected that I would have a printed circuit board (isolation routed by this very machine) to hold the micro-controller board, motor driver boards as well as plugs for all the connections to power supply, stepper motors, homing switches and control panel – completed by now. But, I don't. While I have finished the board design to plug all the components into – I was so anxious to make the board (a few weeks back) that I didn't wait until I had tested and calibrated everything to the degree that I have now. 
Eagle layout for board to plug Arduino nano, driver boards etc. into
So... initial attempts at making the board failed. As a result I have had to keep the whole deal on a breadboard. My concerns have been that it's way to easy to accidentally pull out a wire and the board is exposed to all the sawdust that is generated when cutting anything (might interfere with connections or even short circuit a connection).
Breadboard with Nano and stepper drivers
Well, early last week one of these possibilities came to light and the result was frying the stepper driver board for the Z-axis.

I have some other driver boards that I pulled and replaced while trying to determine why certain steppers seemed to be missing steps. Initially, replacing the board seemed to help and then the same problem returned. Further testing revealed that the main issue, at that time, was the “Seek” speed.  So, it is possible that some of these "failed" boards are actually Okay

Due to these prior issues I decided that I needed to test and adjust current regulation on all my stepper controller boards (A4988 breakout boards) to help prevent future failures:
  • adjusted all boards to limit current to 1A
    • logic supply to all boards is 5V (Arduino digital outputs)
      Testing and adjusting current limit pot
      • For these breakout boards (A4988) “Vref(in volts) = Current(in amps) / 2.5”
        • measuring Vref:
            • positive voltage measurement so need to take it at test point (using red lead on most VOM's) and reference to ground (black/common lead on most VOM's connected to “-” side of supply – ground pin on Arduino)
            • test point on Pololu board is marked separately
            • test point on other boards (StepStick) is the case of the potentiometer
      • calculating for a current limit of 1A (Current = 1A) we get
        • Vref = 1A/2.5
        • Vref=0.4volt
      • pots adjusted until Voltage read 0.4V
  • Tested all boards wired to a NEMA17 stepper using 18v PSU (cordless drill battery) and a super basic Arduino sketch
    • /* StepStick super basic code
      Runs stepper motor 1 revolution each direction

      Digital 3 Step
      Digital 2 Direction


      int Step = 3;
      int Direction = 2;

      void setup() {     
        pinMode(Direction, OUTPUT);
        pinMode(Step, OUTPUT);
        digitalWrite(Direction, LOW);
        digitalWrite(Step, LOW);

      void loop() {
        digitalWrite(Direction, LOW);
       for (int i = 0; i < 200; i++) {
          digitalWrite(Step, HIGH);
          digitalWrite(Step, LOW);
       digitalWrite(Direction, HIGH);
      for (int i=0; i<200; i++) {
         digitalWrite(Step, HIGH);
          digitalWrite(Step, LOW);
  • Determined that I do, indeed, have 4 dead driver boards (2 are from initial tests at the start of this build when I adjusted connections while board was still powered – I'm fairly certain that the most recent board failure occurred due to a connecting wire coming loose on the breadboard).
  • Should be good to go now but I did order an extra 5 boards just in case (I do need, at least, 1 of them for my 3D printer extruder - more on that build later...).

Thursday, May 1, 2014

CNC Mill - demise of another Rotary Tool

Tool Ready for Salvage

Frozen Bearing
In my last post I left off stating that my stepper motors were heating up, squealing and missing steps (what I found was that all this was happening during "Seeking:" movements - fast movements above the surface of the board).

All of this began after I swapped out a few of my stepper motors with ones I purchased for building a 3D Printer (I'll be documenting that build soon).  The newer steppers are also NEMA 17 but are a bit longer - my rational for swapping out the motors was that the new ones should be stronger and better able to handle the weight of the heavier spindle (compared to the weights that a 3D Printer has to deal with - much less).

I approached the issue systematically, looking at possible causes for motor heating, squealing and missed steps:
  • initially thought it must be driver failure
    • testing the the drivers on other motors as well as swapping drivers between steppers in current setup - all drivers seemed fine.
  • poor connections
    • between driver board and arduino - couldn't find any
    • between driver board and motor - nothing
    • between drivers and motor power supply - nothing
  • amperage to high
    • adjusting the current limiting on driver boards
      • this did decrease noise
      • also decreased stepper motor heat
      • Did Not – prevent steppers from freezing up during movements or missing steps
  • step pulse (GRBL firmware settings)
    • I put off testing this until I could look closer at the datasheets for the driver
  • default speeds (GRBL firmware settings)
    • decreasing seek speed seems to have fixed issue
      • decreased to 300 than increased up to 400 and no problems
    • lower current limit seems to be keeping motors (and driver boards) cool
      • 1/8th to ¼ turn clockwise for all motors
    • Other possible answers
      • could be max acceleration instead of max speed