Posts mit dem Label CNC werden angezeigt. Alle Posts anzeigen
Posts mit dem Label CNC werden angezeigt. Alle Posts anzeigen

2018-12-12

Rotacy CNC: That damn earthing again

Project history

  1. Previous project: TravelCNC
  2. previous step: Problem with optical input switches
  3. current posting
  4. next step
  5. Next project: designing a chain link tool library

When I assembled my newest DIY CNC mill on a piece of wooden OSB board... what could you possibly forget?
Right.
Wood is not conductive.

Everyhing is build super clean.
Crimped using the proper tools.
Signal power and signal ground distributed using proper DIN rail blocks.
Stepper drivers stronger then the actual power supply, steppers and forces needed.
...
Strangely enough I machined an entire part in perfect finish for a week before any issues showed up.
Then the A axis stepper starting moving on it's own and jittering. But only it it had already moved before. Not related to the spindle running or not.

Problem 1: wrong power supply

I had way too much power provided to my stepper drivers.
48V supply because the drivers where advertises as 8-50V input voltage.
Actually however where 8-42V with 50V being the absolute maximum rating.
The dealer overstated the capabilities of the driver.

Problem 2: Earthing

This did not solve my problem.
It needed a borrowed oscilloscope to figure out that I simply forgot to connect my giant A-axis gear box, sitting on the OSB base-plate to PE.
The power supplies (not the spindle) for the strong steppers seem to radiate a ton of EMI into the huge metal block that is the A axis. Static buildup from the gears inside and from machining plastic for days on end surely did not help either.
Since the power flowing from the motor to the motor driver caused the "work" LED on the driver to blink, I searched for hours where the supposed stray inputs to the driver came from. Not realizing that this came from the output of the drivers and not the inputs.

I had the same issues already with my Chinese 6040 CNC (all Aluminium but designed with no regard to earthing large metal parts and thus the steppers they connect to).
Seems I had to learn that lesson again.

Parts used

2018-07-08

Rotacy CNC: Problem with optical input switches

Project history 

  1. Previous project: TravelCNC
  2. previous step: Building a rotacy CNC milling machine
  3. current posting
  4. next step: That damn earthing again
  5. Next project: designing a chain link tool library

The situation:



I'm trying to replace my microswitches as end-stops + homing sensors with an optical sensor for homing. (and keep the mechanical switches as end stops.)

I'm using a TCST2103 photointerruptor.
On the Emiter-side I use a 220 Ohm resistor to my common +5V to limit the current.
On the Detector-output side I use a 10 KOhm pulldown.
Emiter and Detector -inputs are on +5V.
Between the Detector-output and the 10KOhm I get my signal.

I meassured my VCC to be between +4.78V and +4.80V with allother loads connected to it.

The signal goes into an AKZ250 USB motion card that works with MACH3 to run my CNC milling machine.

(The sketch also shows the internal logic from the schematics of the USB board. It uses a TLP521-1 photocoupler, a 330Ohm resistor, the mentioned LED and a 4.7Kohm resistor on each input pin.)

 The problem:

When I hit "reset" in MACH3 with the photointertutor not interrupted, everything is fine. The input-LED on the USB board is off and the diagnostics page in MACH3 says the input is not active (high).

When I interrups the photointerruptor, the input-LED goes off and MACH3 says the input is active (low).

HOWEVER: When  I chease to interrupt the photointerruptor, the LED goes on again BUT MACH3 says the input stays active.
Until I tell MACH3 to reset.

Links:



Update:
I found my 220 Ohm resistor on the (E)mitter side too low.
180Ohm should have been used to reach the nominal 20mA on the emitter LED. 
This way we only get 15mA.

The graph "Fig. 8 - Collector Current vs. Collector Emitter Voltage" in the TCST2103 data sheet shows that this means only about Ic=2mA instead of about 4mA on the (D)etector output side.
(Apparently enough to still light up the red status LED just as bright as the others. These red ones nominally want 16mA but do work with less.)

The TLP521-1 inputs recommends 16mA (max 25mA) but gets 4mA.
This means only 4 instead of more then 10mA on the TLP521-1 output. (The recommend 16mA input would result in 40mA)
So I *guess* from studying just the data sheets, that way too little current get to the digital input that is behind the optocoupler on the AKZ250 USB motion control board.

Update 2:
I found THIS mention and it seems that may pull down resistors may be too large.

Update 3:
Or my 10K pulldown may be too large (correct for 3.3V) for 5V.

2018-05-22

Building a rotacy CNC milling machine

Project history

  1. Previous project: TravelCNC
  2. current posting
  3. next step: Problem with optical input switches
  4. Next project: designing a chain link tool library

Before

At the moment I have a heavily modified Carving-CNC/OmioCNC 6040Z+S80 machine from 2012 with an automatic tool changer and an 80mm 4th axis.

However the 80mm chuck and the 150mm clearance below the gantry of the 600x400x150mm machine has proven to be quite a limitation.
Even if you could make your part just barely fit...the next largest standard size of stock material would not.
If the stock could fit, you would not be able to raise your cutter high enough to reach the outher diameter. At least not the electronic 3D touch probe (that is much longer then most cutters).

Idea

So the idea was to build a special purpose CNC mill just for parts on the rotary axis.
It does not need a Y axis at all but a chuck with a large diameter on the 4th axis.
I was inspired by the Rotary CNC (movable tailstock) and the Farm OX (horizontal spindle)

  • Use a chinese 130mm chuck with 1:20 gears as a 4th axis.
  • No automatic tool change needed because it doesn't do general purpose work.
  • Use Openbuilds C-Beam with trapezoidal spindles (you can't buy these with ball screws off te shelf).
  • paired with high powered stepper motors for acceleration.
  • Add some end-stops and an electric touch plate for tool-length.
  • Use the existing stepper drivers, Mach4 USB breakout board and power supply of my old, mobile 400x300mm CNC machine.
  • Use either the 2.2KW water cooled chinese spindle with RS485 controlled VFD (left over from the ATC upgrade) or a 200W DC spindle (lightweight and easy to accelerate).

Since the C-beam is trivial to assemble and all the other parts are already here,
this SHOULD be a fairly quick and straightforward build.

Photos


...more soon

Design


  1. The long X-axis uses a 1m C-beam ACME assembly with the XL gantry plate and a huge 4.2A stepper motor for maximum acceleration and thus direction-changes.
  2. There is no Y axis.
  3. The short Z-axis on top uses a 250mm C-beam ACME assembly with the extra-long gantry plate.
  4. A secondary X guide-rail in the front with a custom, 3D printed, extra-wide but not extra-long gantry plate stabilizes the Z axis and keeps it square to X.
  5. A 300W DC spindle with ER11 collets is enough for the soft materials this machine will encounter. It is also sufficiently silent. (a major consideration)
  6. Custom, 3d printed mounts for spindle, A-axis and tailstock complete the setup.

Lessons learned

  • Keep the oil-release screw accessible when designing a mount for a gearbox.
  • Openbuilds gantry plates can rotate slightly when presented with some force on a long, sideways lever. So a second, guiding rail and custom wide plates are needed to make the machine stiffer.
  • The Openbuilds ACME screws are performing surprisingly well compared to ballscrews.
  • The worm gear I used was of very bad casting quality and gets very loud in constant rotation. So instead of machining parallel to the A axis, I need to do it parallel to the X axis. This way X moves all the time but A only every few seconds for a short step.
  • Helical toolpathes in my version of Deskproto 7 seem to not render. The issue is being investigated and should be fixed soon.
  • I need to finish the custom mount for the tailstock quicker then I anticipated.
  • During an accidental plunge the modular Z axis proved surprisingly durable and very easy to dismantle, readjust and assemble again.
  • Always check for loose wires to your stepper drivers when things start to vibrate for the first time. ;)
  • My Z axis is too long but I could not get C-beam assemblies shorter then 250mm.

Next steps

I'm currently finishing the soundproof enclosure.

I'm currently adjusting my existing 4th axis, inductive homing sensor to the new 4th axis. At this time I only have home+limits on both linear axis.

I already ordered brushes to separate the axis from the machined parts and keep shavings out of the horizontal Z-axis.

I already ordered a proper guide-rail to replace that silver Openbuilds -contraption. This is fine for some first test-cuts but I don't want to re-tighten the wheels every few weeks.

Links:


2018-01-03

Fusion360 - you can NOT flip an axis in CAM

I just found out, that it is impossible in Fusion360 to have a single axis on your CNC be oriented differently.
All options to flip the direction of one axis in a CAM setup, also flip one of the others.

Looks like this will also never be fixed.

See: Fusion360 CAM support forum.

2017-11-19

ATC: MACH3 M06 tool change macro for USOVO

Project history

  1. Evaluating my choices in  back in February
  2. Decided on what ATC system to get in March. (posting contains MACH3 software references)
  3. The Usovo spindle and parts finally arrived in April
  4. Mounting spindle and cables in May
  5. Defining M06 tool change macro
  6. Next project: designing a chain link tool library

I managed to get my automated tool changer to work.
Due to a compressor failure and missing part to get the new compressor operational, this was delayed FOR A LONG TIME.
It was a few minuted before I had to leave, so sorry for the crappy cellphone video.
(Also the youtube "stabilize video" algorithm makes my feed drunk.)
It's also still in debugging mode with a very low feedrate and a "continue"/"abort" question at every step in case something doesn't fit.
I also haven't done any tool length probing yet.
The front side of the tool magazine is too low because it sits on a temporary mount for the 4th axis that I am about to replace with a thicker version machined from POM. However for that I need the ATC to work.

 

Discussions:




Sources:

Screens

First we need to place a new user-defined DRO "1212" on one of the screens. It holds the OLD TOOL. This can be done with the mach3screen.exe screen- editor.
It is assigned at the end of the last M6End.m1s macro.

Code

M6Start.m1s

'M6 start macro with auto tool touch off

'M6Start.m1s
'Check all axes referenced
If (GetOemLed(807) Or GetOemLed(808) Or GetOemLed(809)) Then
   Message(" Please Home Machine before Tool Change")

   'Cycle Stop
   ' Button 3 - select Toolpath screen
   DoButton(3)

   Exit Sub
End If


'--------------- CONFIGURATION

' the X+y+z position of tool #0 is stored in DRO 1200, 1201, 1202
' THESE USER-DEFINED DROS MUST BE DEFINED IN THE SCREEN SET
' distance of tools inside the magazine along the Y axis
TOOLDISTANCE = 33.5
TOOLDISTANCE_Z = (33.5-36.5)/5
TOOLCHANGE_FEEDRATE = 150

' safe absolute Z position
SafeZ = 0
SafeX = 65

' position of the tool height sensor (magazine must be open)
THS_POS_X = 0
THS_POS_Y = 0
THS_POS_Z = 0
THS_PROBE_FEEDRATE = 5

' Thickness of touch plate in the offset-screen
PlateThickness = GetOEMDRO(1001)


'--------------- CURRENT PARAMETERS TO RESTORE

' Save the current feedrate.
CurrentFeed = GetOemDRO(818)

' Save current coordinate mode to restore it later
oldCoordinateMode = GetOemLED(48)

' Set absolute coordinate mode and feedrate
Code "G90 F" & TOOLCHANGE_FEEDRATE

' Save the current position
' WARNING, THESE DROS ARE DEPRECATED SINCE MACH3 1.90
CurrentPosX = GetDro(0)
CurrentPosY = GetDro(1)
CurrentPosZ = GetDro(2)




'--------------- TOOL CHANGE

tool = GetselectedTool()
oldTool = GetCurrentTool() 'GetOEMDRO(1212)
If oldTool = tool Then
  Answer = MsgBox("old tool and new tool are identical", 0 + 16 )
  Exit Sub
End If

Answer = MsgBox("experimental tool change from tool " & oldTool  & " to new tool " & tool, 0)


DoSpinStop()

' use the user LED to store the state of coolant,
' so it can be restored in M6end.m1s
If getoemled(13) Then
   'OEM LED 13 = "Flood LED" thus coolant is on
   ' set user led on
   setuserled(1000,1)
   Code "M9"
Else
   'coolent is off
   ' set user led off
   setuserled(1000, 0)
End If

'Get the tool change pos from the settings page
ChangeX    = 24                             '=GetOEMDRO(1200)
ChangeYold = 35 + (oldTool * TOOLDISTANCE)  '=GetOEMDRO(1201) + (oldTool * TOOLDISTANCE)
ChangeYnew = 35 + (Tool    * TOOLDISTANCE)  '=GetOEMDRO(1201) + (tool * TOOLDISTANCE)
ChangeZold = -33 + (oldTool * TOOLDISTANCE_Z)                            '=GetOEMDRO(1202)
ChangeZnew = -33 + (Tool * TOOLDISTANCE_Z)

While IsMoving ()
Wend

'===== DEBUG====
Response = MsgBox ( "moving to Zsafe=" & SafeZ & " quickly", 1 )
If Response = 2 Then ' Cancel pressed
   End
End If
'===== DEBUG====

' G53 = Move in absolute machine coordinate system
Code("G00 G53 Z" & SafeZ)
While IsMoving ()
Wend

' open magazine
ActivateSignal(OUTPUT2)


If CurrentPosX < SafeX Then
     '===== DEBUG====
   Response = MsgBox ( "We are above the tool magazine, moving to SafeX=" & SafeX & " quickly" , 1 )
   If Response = 2 Then ' Cancel pressed
      Response = MsgBox ( "Aborting" , 1 + 16 )
      End
   End If
   '===== DEBUG====


   ' go to old tool position in Y
   Code("G00 G53 X" & Safex)
   While IsMoving ()
   Wend

     '===== DEBUG====
   Response = MsgBox ( "moving to y_oldtool=" & ChangeYold & " quickly", 1 )
   If Response = 2 Then ' Cancel pressed
      Response = MsgBox ( "Aborting" , 1 + 16 )
      End
   End If
   '===== DEBUG====


   ' go to old tool position in Y
   Code("G00 G53 Y" & ChangeYold)
   While IsMoving ()
   Wend

   
Else
  '===== DEBUG====
   Response = MsgBox ( "moving to y_oldtool=" & ChangeYold & " quickly", 1 )
   If Response = 2 Then ' Cancel pressed
      Response = MsgBox ( "Aborting" , 1 + 16 )
      End
   End If
   '===== DEBUG====


   ' go to old tool position in Y
   Code("G00 G53 Y" & ChangeYold)
   While IsMoving ()
   Wend

     '===== DEBUG====
   Response = MsgBox ( "moving to SafeX=" & SafeX & " quickly", 1 )
   If Response = 2 Then ' Cancel pressed
      Response = MsgBox ( "Aborting" , 1 + 16 )
      End
   End If
   '===== DEBUG====


   ' go to old tool position in X
   Code("G00 G53 X" & Safex)
   While IsMoving ()
   Wend

   
End If


'===== DEBUG====
Response = MsgBox ( "Moving down to ChangeZold=" & ChangeZold & " quickly" , 1 )
If Response = 2 Then ' Cancel pressed
   End
End If
'===== DEBUG====


' go to old tool position in Z
Code("G00 G53 Z" & ChangeZold)
While IsMoving ()
Wend



'===== DEBUG====
Response = MsgBox ( "Placing tool in X=" & ChangeX & " slowly" , 1 )
If Response = 2 Then ' Cancel pressed
   End
End If
'===== DEBUG====


' go to old tool position in X
Code("G01 G53 X" & ChangeX & " F" & TOOLCHANGE_FEEDRATE)
While IsMoving ()
Wend

'===== DEBUG====
Response = MsgBox ( "releasing the old tool" , 1 )
If Response = 2 Then ' Cancel pressed
   End
End If
'===== DEBUG====


' release the old tool
ActivateSignal(OUTPUT1)

'===== DEBUG====
Response = MsgBox ( "moving up to SafeZ slowly" , 1 )
If Response = 2 Then ' Cancel pressed
   End
End If
'===== DEBUG====

' move up
Code("G01 G53 Z" & SafeZ & " F" & TOOLCHANGE_FEEDRATE)
While IsMoving ()
Wend


'===== DEBUG====
Response = MsgBox ( "moving over to y=" & ChangeYnew & " quick", 1 )
If Response = 2 Then ' Cancel pressed
   End
End If
'===== DEBUG====


' go to old tool position in Y
Code("G00 G53 Y" & ChangeYnew)
While IsMoving ()
Wend

'===== DEBUG====
Response = MsgBox ( "lowering to Znew" & ChangeZnew & " slowly", 1 )
If Response = 2 Then ' Cancel pressed
   End
End If
'===== DEBUG====

' move up
Code("G01 G53 Z" & ChangeZnew & " F" & TOOLCHANGE_FEEDRATE)
While IsMoving ()
Wend

'===== DEBUG====
Response = MsgBox ( "grabbing the new tool" , 1 )
If Response = 2 Then ' Cancel pressed
   End
End If
'===== DEBUG====


' release the old tool
DeActivateSignal(OUTPUT1)


'===== DEBUG====
Response = MsgBox ( "moving to  SafeX=" & SafeX & " slowly", 1 )
If Response = 2 Then ' Cancel pressed
   End
End If
'===== DEBUG====


' carry the tool out
Code("G01 G53 X" & SafeX & " F" & TOOLCHANGE_FEEDRATE)
While IsMoving ()
Wend



'--------------- TOOL HEIGHT PROBE
Response = MsgBox ( "Would you like to set your Z height automatically? If so, click OK", 1 )
If Response = 1 Then
' TODO THIS HAS NOT BEEN TESTED YET


  ' go to tool height sensor position
  Code "G00 G53 X" & THS_POS_X & "Y" & THS_POS_Y
  While IsMoving ()
  Wend

  While GetOemLed (825)=0
      Message ("(Z-Plate is grounded, check connection and dismiss this dialog)")
  Wend

  Code "G31 Z-5 F" & THS_PROBE_FEEDRATE
  While IsMoving()
  Wend

  'dwell for 0.25 seconds 
  Sleep(250)

  ZProbePos = GetVar(2002)

  'Go back to touch position (G31 backs off after touch)
  Code "G0 Z" & ZProbePos
  While IsMoving ()
  Wend

  'Set Z axis position DRO to touch plate thickness
  ' WARNING, THIS DRO IS DEPRECATED SINCE MACH3 1.90
  Call SetDro (2, PlateThickness)

  'Pause 0.5 seconds for Dro to update.
  Sleep(500)

  ' go up again
  Code "G00 G53 Z" & SafeZ
  While IsMoving ()
  Wend

  Code "(Z axis is now zeroed)"
  ' restore the original feedrate
  Code "F" & CurrentFeed
End If

SetCurrentTool( tool )

' close magazine
DeActivateSignal(OUTPUT1)


'--------------- RESTORE ORIGINAL PARAMETERS

' Reset coordinate mode to original value
If AbsMode = 0 Then
   Code("G91")
End If

'===== DEBUG====
'Response = MsgBox ( "moving to back to " & CurrentPosX  & " - " & CurrentPosY &" , then Z=" & CurrentPosZ , 1 )
'If Response = 0 Then ' Cancel pressed
'   End
'End If
'===== DEBUG====

' go to old tool position
'Code("G00 G53 X" & CurrentPosX & "Y" & CurrentPosY)
'While IsMoving ()
'Wend
' go to old tool position
'Code("G00 G53 Z" & CurrentPosZ)
'While IsMoving ()
'Wend


' Reset feedrate to original value
Code("F" & CurrentFeed)            

M6End.m1s


'M6End.m1s
tool = GetDRO(24)
oldTool = GetOEMDRO(1212)

' check user led
If getuserled(1000) Then
   'coolant was on
   Code "M8"
End If

If (oldTool <>  tool) Then
   SetOEMDRO(1212, tool)
End If

2017-11-12

ER11 collet holder

With my current ATC upgrade to the CNC milling machine,
I have need for more then one collet per size.
So to keep all these small pieces organized, I designed myself some collet holders
that would keep them ordered by size and labeled.

...just a very quick 3d printed design.
 

Links:

2017-10-30

Need some help about getting 10V for my CNC spindle control

I need some help on the electrical side.
This is my CNC breakout board:
Purelogic PLCM-B1 english manual

Page 10
Connector XP79 (upper right) needs 10V and GND and outputs an opto-isolated 0-10V PWM signal to control the spindle RPM with.

From my USOVO STG104 spindle controller I only get 24V supply voltage and GND.
And it needs that 0-10V signal.

So I do a voltage-divider of 12Kohm and 16.8KOhm to get 10V.
As soon as I connect that to the PLCM-B1 breakout board my 10V drops down to 2.4V from the load.

What should I have done instead?

2017-10-17

Custom Deskproto strategy

Project history

  1. current posting
  2. next step: add command line arguments and extensively test the strategy
  3. Next project: subdivide rotary axis operations to keep toolpath-distance constant while getting near the center of rotation

Why?

I have two problems with CNC machining either wax, plastic or soft wood:
  1. I lack experience with how much surface finishing detail I need. So I want a finishing strategy that graducally gets finer (distance of parallel toolpathes) until I stop. Without however milling the same path serveral times (like every second path when I do a tpd=tool-diameter/4 and then a tpd=tool-diameter/8 parallel strategy or every 15th path if I do a tpd=tool-diameter/3 and then a tpd=tool-diameter/5 operation.)
  2. I cannot machine the same part of the surface for too long a time. It will eithrer melt (wax and plastic) or catch fire (wood). It needs time to cool down. Duering that time however, I can maching other parts of the geometry that are far away.

How?


Since the existing toolpathes did not offer such a strategy, I came up with a small Java program.
You would start with a Deskptoro CAM project containing one (e.g. "parallel along X") or two (e.g. "parallel along X", then "parallel along Y" or "along A")  FINISHING passes.
These would be marked by adding "REPLICATE" to their names.

The program will then make copies of these operations with the starting point offset by toolpath-distance / 2.
After these it will add copied operations with the starting point offset by toolpath-distance / 4 of the original and the copied operations.
Then it will do the same with toolpath-distance / 8.

The result is a finishing strategy that gradually increases surface quality and can be paused and aborted at any time.
At the same time it does not operate on the same part of the geometry until it has worked on all other parts.
Thus giving the part time to cool down where a simple parallel-strategy with a smaller toolpath-distance would mill over the same place dozens of times, thus heating up the surface and either melting plastic or wax or setting soft wood on fire.


Links:

2017-04-30

ATC: parts for my CNC arrived

Project history

  1. After evaluating my choices in  back in February
  2. I decided on what ATC system to get for my CNC mill in March. (posting contains MACH3 software references)
  3. Now the Usovo parts for my CNC finally arrived.
  4. next: mounting spindle and cables, improved mount for Z axis homig
  5. Defining M06 tool change macro (WIP)
  6. Next project: designing a chain link tool library

Too late to install them during the easter holidays but they arrived.

PROBLEM!!! - update: Solution in progress
The water-pump Usovo has shipped in the WZW105 kit,
does not fit the spindle and tubes they included. It has fittings for much larger tubes.
I may find out what thread they use and find fitting to fix this however it may mean that the water pump is not strong enough to push water (and more importantly: small air bubbles) through the smaller tubes.

Update: It'2 now 2 weeks with no answer from Usovo regarding both issues.

Update: I got an answer. The water pump fitting where an honnest mistake and apparently I got 5 SK15 tool holders for the ring system, not for this system and a single, DIFFERENTLY LOOKING SK15 holders also for the ring system. I'm making an adapter to use the top-system, pneumatic tool magazine with tool holders designed for the ring system.

References

I already have the Usovo Manual in German and English.
I also found this document with meassurements (page 9) for the tool magazines

Positions:
tool #1 X=0 Y=565 Z=0
tool #1 X=0 Y=530 Z=0
tool #1 X=0 Y=495 Z=0
tool #1 X=0 Y=460 Z=0
tool #1 X=0 Y=425 Z=0
tool #1 X=0 Y=390 Z=0
tool sensor X=18 Y=585 Z=0

Photos

Since there are so few detail photos of them
(especially of the backside and inside of the control box)
I made some photos for everyone who considers the same upgrade.

Photos - Unboxing

 

Photos - main box


 













Photos - Power supply 

Photos - water pump


 








Because the pump has no mounting holes, I designed a simple mount for it:



Photos - spindle and mount











2017-04-28

More jaws for the 4th axis chuck on the CNC

Design intent

This is my 4th axis.
A "K11, 100mm, 3 jaw chuck".
I already made a custom steady-rest for it but still, the existing jaws are not very good at gripping soft, cylindrical blanks to mill.
So I want to have either cylindrical chuck-jaws or base jaws that I can bolt any kind of custom jaw-geometry onto.

Existing hardware

Thanks to Jeremy Parton on Google+, who pointed me to this website ,
I know that:
  • K11 is grouped into K11 (1 jaw), K11A (3 centering jaws) and K11C (3 independend jaws)
  • meaning we have K11A here
  • K11A are ISO3442 standard clutches.
 K11 100mm is defined as
  • D1=72mm
  • D2=84mm (diameter between mounting-bolt center-points)
  • D3=22mm  (shaft diameter)
  • H=74.5mm (thickness of chuck with jaws)
  • H1=55mm (thickness of chuck)
  • H2=n/a
  • h=3.5mm
  • Z-d=3-M8 (bolts mounting the chuck to the face plate)
(Without a copy of the DIN/ISO3442 standard, I found this catalog of chucks and jaws containing a reference drawing. It shows where these measurements apply.)

Options considered

I'm currently investigating these 95mm jaws for turning machines.
The  chuck they come with is not compatible because it uses a thread to attach to the shaft.
This doesn't work when changing direction. So I need to use them with the existing chuck.

This chinese seller seems to sell K11-100mm chucks and the chucks I want. So he should be able to answer if they fit together.

What I actually did
In the end I now meassured the existing jaws and created a parametric CAD design.
The single design has 3 configurations for labeled Jaw #1, #2 and #3 .
After getting a single Jaw #2 to fit properly....

...I'm now printing Jaw #1 and #3

2017-04-02

4th axis improvements to the YOOCNC 6040Z+S80 CNC

Why?

I want to be able to machine larger diamter parts on the 4th axis of my 6040Z-S80 machine.
Because the space below the gantry was limited to about 110mm, the original plan was to machine larger side-plates that hold the gantry higher.

However that would mean making the entire machine less rigid.

What?

Closer inspection shows a much better path.
The bed of the machine consists of 4 plates, each 120mm in width.
They can be removed individually.
The 4th axis (a chinese build 100mm K11 chuck on a 50:1 harmonic drive) needs 110mm of width and has the center of rotation at 65mm above ground.



...

Without the T-slot plate it sits a -20mm and thus the center of rotation is at 55mm. Perfect.



I can mount it to the t-slot plates on the left and right.
The edge of one of them makes sure it is perfectly square and parallel to the X axis.


The only problem are the chucks.
They extend beyond the 100mm circle.
So I will have to cut slots into the T-slot plates left and right of it.
...
Luckily the traperoidal spindle that drives the Y-axis gantry has enough clearance to not collide witgh the chucks.
Mounting some plastic foil onto the t-slot sides will prevent them and the bearings to get covered in dust and shavings.




 This is what is looks from below the bed.

2017-03-21

I finally ordered an ATC spindle

Project history

  1. Evaluating my choices in  back in February
  2. Decided on what ATC system to get in March. 
  3. The Usovo spindle and parts finally arrived in April
  4. Mounting spindle and cables in May
  5. Defining M06 tool change macro
  6. Next project: designing a chain link tool library



For my CNC mill, I always wanted an automatic tool changer.
I was comparing options for ages now and evaluating in detail how to attach the Omron version to my MACH3 using RS485.

Now I made my purchase.


I ordered the Usovo WZW105 kit and not the Mechatron ATC spindle.
Why?

It's enough for my needs.
The update is much less complex because it's an all-in-one package.
It's much cheaper and I can't justify the expense.
  • The Mechatron option is about 5000€ while the Usovo is about 3000€.
  • The USOVO comes with a control unit with all pneumatic, inverter and solenoid valve parts included. Thus the upgrade is a much simpler process.
  • The USOVO comes with a really cool, pneumatically operated, tool magazine. Dust proof with a tool height  probe build in.
  • The more expensive Usovo SK15 tool holders (59€) compared to Chinese SK20 (28€) don't make up that price difference.
  • With the Mechatron I could use tools up to 16mm while SK15-ER11 is limited to my currence 8mm. That's good enough for me. It only makes a difference for the surface finish when milling flat surfaces and I hardly ever do that. The stiffness of the machine limits that already.
  • Calculating a number of Feed rated and tool deflections, the higher RPM make the Usovo +15% faster then my current spindle and the Mecatron +20% faster. 15% is enough for me.
  • The Usovo option has a bit more runout but it's within perfectly acceptable limits for the type of work I do on the machine and the tool lengthes I use.

Update:

Aparently with USOVO you can not use one version of the SK15 tool holders in the other tool magazine. Up to now I was under the impression that the 59eur tool holders would fit both kinds.
So I adapt my plan to get both tool holders.



The 6 position regular tool library with pneumatic cover and tool height sensor for the 6 most commonly used tools.


Next to it the 5 position ring-holder. This one is capable of holding my 3D touch probe.
Then add an extension to the pneumatic cover of the 6 position tool holder to also protect the tools in the 5 position holder from dust.

Later design an automatic, chain operated tool library using ring holders.

Update 2:

The spindle is waiting for me at home and I'll unbox it this weekend.
Festo air pressure fittings and adaptors needed to attach it to my workshop compressor are already on their way.

home switches

I need home switches for X, Y and Z on our machine.
Because the tool magazine is at a fixed location on the machine and I need to know how to get there.

The difference between Machine and work part -coordinates (and thus work part offsets) will be a concern from now on.

Software

Apparently you need to add a Visual Basic macro to MACH3 to handle the "M06 T" macro.
Here in an introduction to MACH3 scripting that specifically handles tool-change:

It seems to explain all or many relevant aspects in enough details for a software developer to understand. You need to replace the existing (empty) M06_start macro with a newly written one and in the crowded Mach3 setting dialog switch from "ignore tool change" to "auto tool change".

I made some notes:
Relevant tools and documentation:
Relevant system DROs
  • (System DRO list)
  • 0-5 - current location (we want this restored after a tool change)
  • 18 - current feed rate (we want this restored after a tool change)

Relevant OEM DROs
  • OEM DRO list 
  • 1200 - tool change location X (not used by default)
  • 1201 - tool change location Y (not used by default)
  • 1202 - tool change location Z (not used by default)
  • ...
  • 83, 84, 85,...88 - current location (we want to return there after a tool change)
  • 836 - current tool length
Relevant G-Code
  • G53 - move in absolute machine coordinates (G0 or G1 must be active and the current feed rate is used) so using "G00 G53 ... F300" is a better idea
  • G31 Z-10.0 F20 - you should already know this. Move at 20mm/min to Z-10 until the PROBE-input is triggered. Store position in DRO 2000,2001,2002
Relevant VB code
  • Code("...") - executed G-Code
  • GetOEMDRO(1200) - get the value of the DRO 1200
  • SetOEMDRO(1200, 0) - set the value of DRO 1200 to 0.00 
  • SetDRO(0, 0) - zero the X position (system DRO 0 = fixture offset set to value 0)
  • "X " & "1200" - concatenate the strings into "X 1200" 
  • ";" at line-endings should NOT be there
  • "While isMoving" + "Wend" - wait for move to be completed
  • "Response=MsgBox("okay?", 1) + "If (Response = 1) Then ..."  ask a yes/no question 
  • CurrentFeed = GetOemDRO(818) 'Get the current feedrate to return to later
    CurrentAbsInc = GetOemLED(48) 'Get the current G90/G91 state
    CurrentGmode = GetOemDRO(819) 'Get the current G0/G1 state
  • If CurrentAbsInc = 0 Then 'if G91 was in effect before then return to it
    Code "G91"
    End If
    If CurrentGMode = 0 Then 'if G0 was in effect before then return to it
    Code "G0"

future

After getting this to work, I'm really tempted to design my own carrousel tool magezin.

Links