New project : 5-axis CNC hotwire foam cutter running GRBL

Show off your FreeCAD projects here!
Forum rules
Be nice to others! Respect the FreeCAD code of conduct!
HardRock
Posts: 133
Joined: Tue Mar 13, 2018 5:50 am
Location: Russian Federation

New project : 5-axis CNC hotwire foam cutter running GRBL

Post by HardRock »

As mentioned in https://forum.freecadweb.org/viewtopic.php?f=24, most parts should be made from foam using hotwire foam cutter, so I need to make cutter first.
Coz we have FreeCAD and construction profile, this is not a problem :lol:

Image
Image
Image
Image
Image
Image

This machine will run under Grbl-Mega-5X with patches that I plan to do. GCODE generation software will be mine.
Hardware controller - MKS Gen 1.4 board.

Now all mechanical parts assembled. All axis running well without any backlash and locks. Also i have done test cut. Wire tensioner works well even on hot wire.
Next I need to screw controller board and power supply, and need to make "cable-management". Also table shoul be instaled, as well as acrylic case because cutter will have closed case and ventilation to make able usage at home.

As i said, GCODE generation will be made with new software, there are two variats:
1. Standalone generator
2. FreeCAD addon (workbench)

Second way is better in my opinion, but first much simpler for me because I'm not familar with FreeCAD internals and addon development.
I think i will ask some questions in development forum later.
User avatar
bitacovir
Veteran
Posts: 1570
Joined: Sat Apr 19, 2014 6:23 am
Contact:

Re: New project : 5-axis CNC hotwire foam cutter running GRBL

Post by bitacovir »

Very nice project!
Thanks for showing it.
::bitacovir::
==================
One must be absolutely modern.
Arthur Rimbaud (A Season in Hell -1873)

Canal Youtube Grupo Telegram de FreeCAD Español

My personal web site
My GitHub repository
Mini Airflow Tunnel Project
RDA
Posts: 34
Joined: Tue Oct 06, 2020 6:55 am

Re: New project : 5-axis CNC hotwire foam cutter running GRBL

Post by RDA »

HardRock wrote: Sun Feb 07, 2021 8:35 am As mentioned in https://forum.freecadweb.org/viewtopic.php?f=24, most parts should be made from foam using hotwire foam cutter, so I need to make cutter first.
Coz we have FreeCAD and construction profile, this is not a problem :lol:

Image
Image
Image
Image
Image
Image

This machine will run under Grbl-Mega-5X with patches that I plan to do. GCODE generation software will be mine.
Hardware controller - MKS Gen 1.4 board.

Now all mechanical parts assembled. All axis running well without any backlash and locks. Also i have done test cut. Wire tensioner works well even on hot wire.
Next I need to screw controller board and power supply, and need to make "cable-management". Also table shoul be instaled, as well as acrylic case because cutter will have closed case and ventilation to make able usage at home.

As i said, GCODE generation will be made with new software, there are two variats:
1. Standalone generator
2. FreeCAD addon (workbench)

Second way is better in my opinion, but first much simpler for me because I'm not familar with FreeCAD internals and addon development.
I think i will ask some questions in development forum later.
Cool, maybe check out the Path WB and contributing to that before making a new one?
User avatar
ebrahim raeyat
Posts: 619
Joined: Sun Sep 09, 2018 7:00 pm
Location: Iran
Contact:

Re: New project : 5-axis CNC hotwire foam cutter running GRBL

Post by ebrahim raeyat »

it is interesting.
HardRock
Posts: 133
Joined: Tue Mar 13, 2018 5:50 am
Location: Russian Federation

Re: New project : 5-axis CNC hotwire foam cutter running GRBL

Post by HardRock »

RDA wrote: Sun Feb 07, 2021 9:20 pm Cool, maybe check out the Path WB and contributing to that before making a new one?
Maybe) i think that it may be hard / long to add hot wire mode into PathWB because workflow completely different from milling machine workflow.
kisolre
Veteran
Posts: 4164
Joined: Wed Nov 21, 2018 1:13 pm

Re: New project : 5-axis CNC hotwire foam cutter running GRBL

Post by kisolre »

HardRock wrote: Mon Feb 08, 2021 7:05 am workflow completely different from milling machine workflow.
I just wrapped my head about how this actually works. And if I understand correctly you have a piece of foam, fix it on the table somehow then trace a contour with the hotwire around it, rotate the piece N degrees, trace next contour. I suppose Path is good at tracing contours and generating them also so why not reuse that? As always it is up to you to use whatever you feel comfortable with :)
By the way how is the extra cut foam removed? Because if it works as I understand it it will fall down and probably cause issues...
HardRock
Posts: 133
Joined: Tue Mar 13, 2018 5:50 am
Location: Russian Federation

Re: New project : 5-axis CNC hotwire foam cutter running GRBL

Post by HardRock »

kisolre wrote: Mon Feb 08, 2021 7:17 am
HardRock wrote: Mon Feb 08, 2021 7:05 am workflow completely different from milling machine workflow.
I just wrapped my head about how this actually works. And if I understand correctly you have a piece of foam, fix it on the table somehow then trace a contour with the hotwire around it, rotate the piece N degrees, trace next contour. I suppose Path is good at tracing contours and generating them also so why not reuse that? As always it is up to you to use whatever you feel comfortable with :)
By the way how is the extra cut foam removed? Because if it works as I understand it it will fall down and probably cause issues...
Algo is really simple. Assume that "build volume" of your foam cutter is a cube. Two opposite faces is a planes where hotwire ends moves - "working planes"
You placing piece of foam inside build volume - it will be "foam volume". Your part should be somewhere inside foam volume.
You need to split two opposite faces of your part into same number of points. More points - more accuracy. Lets take a pair of points, one from first face, and one from second one. Now draw line in 3D space through this points and extend it to cross working planes of build volume. Point of intersection will be coordinate for machine, i.e. position to use in GCODE. Repeat for each pair of points and it will give you a path for GCODE.

For 5-axis foam cutter there is an additional step to make precise side faces for your part.
Rotate part (using rotary table) to +-90 degrees and generate path to cut part by side projection of faces that was splitted into points before.

Also for 5-axis there are ability to use rotary table to decrease axes runout, it will make possible to cut big angles in small build volume by rotating part instead of moving X axis to far.

Take a look into sample project.
I don't know how to extend wire, but main concept should be clear.
Attachments
hotwire.FCStd
(211.96 KiB) Downloaded 327 times
HardRock
Posts: 133
Joined: Tue Mar 13, 2018 5:50 am
Location: Russian Federation

Re: New project : 5-axis CNC hotwire foam cutter running GRBL

Post by HardRock »

Thanks to Bance (https://forum.freecadweb.org/viewtopic.php?f=3&t=55345), who advices me to use datum plane / datum line / datum point.
Here is a simple test macro to make path for 4 axis.

Code: Select all

import FreeCAD, Draft
doc = FreeCAD.activeDocument()

profile_1 = doc.getObjectsByLabel('profile_1')[0]
profile_2 = doc.getObjectsByLabel('profile_2')[0]

body = doc.getObjectsByLabel('Body')[0]

wp_1  = doc.getObjectsByLabel('WP1')[0]
wp_2  = doc.getObjectsByLabel('WP2')[0]

points_1 = []
points_2 = []
points = [[], []]

for i in range(len(profile_1.Points)):
  line = body.newObject('PartDesign::Line','DatumLine_' + str(i))
  line.MapMode          = 'TwoPointLine'
  line.Support          = [(profile_1, 'Vertex' + str(i + 1)), (profile_2,  'Vertex' + str(i + 1))]
  line.MapPathParameter = 0
  line.MapReversed      = False
  line.AttachmentOffset = App.Placement(App.Vector(0.0000000000, 0.0000000000, 0.0000000000),  App.Rotation(0.0000000000, 0.0000000000, 0.0000000000))
  line.Visibility       = False
  # - Create point on first working plane
  point_1 = body.newObject('PartDesign::Point', 'DatumPoint')
  point_1.AttachmentOffset  = App.Placement(App.Vector(0.0000000000, 0.0000000000, 0.0000000000),  App.Rotation(0.0000000000, 0.0000000000, 0.0000000000))
  point_1.MapReversed       = False
  point_1.Support           = [(wp_1,''), (line,'')]
  point_1.MapPathParameter  = 0.000000
  point_1.MapMode           = 'ProximityPoint1'
  point_1.Visibility        = True
  points_1.append(point_1.Placement.Base)
  points[0].append(Draft.makePoint(point_1.Placement.Base.x, point_1.Placement.Base.y, point_1.Placement.Base.z, point_size=5))
  # - Create point on second working plane
  point_2 = body.newObject('PartDesign::Point', 'DatumPoint')
  point_2.AttachmentOffset  = App.Placement(App.Vector(0.0000000000, 0.0000000000, 0.0000000000),  App.Rotation(0.0000000000, 0.0000000000, 0.0000000000))
  point_2.MapReversed       = False
  point_2.Support           = [(wp_2,''), (line,'')]
  point_2.MapPathParameter  = 0.000000
  point_2.MapMode           = 'ProximityPoint1'
  point_2.Visibility        = True
  points_2.append(point_2.Placement.Base)
  points[1].append(Draft.makePoint(point_2.Placement.Base.x, point_2.Placement.Base.y, point_2.Placement.Base.z, point_size=5))
  # - Remove points
  doc.removeObject(point_1.Label)
  doc.removeObject(point_2.Label)
  doc.removeObject(line.Label)

obj = doc.addObject("Part::Feature", "Path_1")
obj.addProperty("App::PropertyVectorList", "Points")
obj.Points = points_1

obj = doc.addObject("Part::Feature", "Path_2")
obj.addProperty("App::PropertyVectorList", "Points")
obj.Points = points_2

obj = doc.addObject("Part::Compound","Projection_1")
obj.Links = points[0]
obj = doc.addObject("Part::Compound","Projection_2")
obj.Links = points[1]

#print (points_1)
#print (points_2)
doc.recompute()

Attachments
hotwire.FCStd
(222.9 KiB) Downloaded 247 times
HardRock
Posts: 133
Joined: Tue Mar 13, 2018 5:50 am
Location: Russian Federation

Re: New project : 5-axis CNC hotwire foam cutter running GRBL

Post by HardRock »

phpBB [video]

phpBB [video]
HardRock
Posts: 133
Joined: Tue Mar 13, 2018 5:50 am
Location: Russian Federation

Re: New project : 5-axis CNC hotwire foam cutter running GRBL

Post by HardRock »

Learning to programm for FreeCAD :lol:

Here is a set of macro for creating GCODE for my 5-axis foam cutter.
Later it will be separate workbench. Have a lot ideas that want to implement.

Video of usage FreeCAD to generate GCODE. Video in Russian, but i think it does not need comments, all shown )
phpBB [video]


And first parts:
Image Image Image Image Image
Post Reply