Milling CNC with DuetWifi ?


  • administrators

    Regarding arcs, I think all the slicers still output arcs as segments. It's a bit chicken and egg regarding firmware support for arcs and slicer support. Support for CNC milling gcode generation that already generates arc commands is a good reason to add G2/G3 to RepRapFirmware.

    @Jgrouse Can you add a firmware wishlist request for this support, and other CNC specific functionality that is currently not implemented.

    Once we have firmware that properly supports arcs we are one step closer to 3d printing with arcs rather than lots of straight lines. That said there is a lot more that would need to be done as far as a model file that represents arcs properly and slicers that support them


  • administrators

    @jgrouse:

    @dc42, is there something specific in the ending gcode you look for to know when the job is finished? I was comparing a regular Simplify3D gcode file with the one I have from Vetric Cut2D and apart from the ";" comments I cannot see anything different that you could be looking for? With the Cut2D job, even though the job is finished and the last move has been completed, the web interface does not refresh to show that the job is finished. If I manually refresh the page it shows that there are no jobs printing. Is there a gcode I can throw in at the end to refresh the web page status? Is it the lack of E axis movements?

    M0 or M1 says the job is finished. Reaching the end of the SD card file should have the same effect.


  • administrators

    I'll add CNC support to the firmware work list. Is it just G2 G3 and M3 that you need?



  • @dc42:

    M0 or M1 says the job is finished. Reaching the end of the SD card file should have the same effect.

    Gave that a shot as well without success. It just seems as though the web interface locks up after I start the print even though the axis are all doing their thing. Forcing a web page refresh then shows that the status is back to idle rather than just staying on a status of printing.

    Must be something else in the gcode it is expecting? I even slapped on a copy of all the preamble comments from a Simplify3D gcode file to see if that made any difference. Might need to pm the test file I have and the config.g I currently use to see what you make of it?


  • administrators

    Can you make the gcode file available?



  • @dc42:

    I'll add CNC support to the firmware work list. Is it just G2 G3 and M3 that you need?

    G2/G3 would be great for routing work. As I mentioned in my post it really was just for the sake of routing work as all the slicers still do not output arcs due to regular mesh objects for input.

    No real need in my case for the M3/M5 to drive a VFD as the spindle controller I have takes 5V PWM from one of the fan outputs anyhow. Others might want it though if they want to run with conventional spindle stop/start gcode? Guess you would also have to add a means of specifying which outputs drive the CW/CCW start/stop and speed control (usually analogue 0-10V into the VFD)? Personally I would leave it up to the user to find a way to map PWM out to an analogue voltage.

    Greatly appreciate the work you've already put into this fantastic firmware!



  • @T3P3Tony:

    Regarding arcs, I think all the slicers still output arcs as segments. It's a bit chicken and egg regarding firmware support for arcs and slicer support. Support for CNC milling gcode generation that already generates arc commands is a good reason to add G2/G3 to RepRapFirmware.

    @Jgrouse Can you add a firmware wishlist request for this support, and other CNC specific functionality that is currently not implemented.

    Once we have firmware that properly supports arcs we are one step closer to 3d printing with arcs rather than lots of straight lines. That said there is a lot more that would need to be done as far as a model file that represents arcs properly and slicers that support them

    Fairly sure the G2/G3 support was in DC42's wishlist already? I'll double check…



  • @dc42:

    Can you make the gcode file available?

    can do - https://app.box.com/s/kg2fn2stiia79w0r6noinav0zh4n12sg



  • As for probing, this is and has been part of the code for bed levelling for quite a while and I cannot foresee any other use for probing for what I will be doing. I also believe there is a gcode call to probe any point you want, although a serial interface may be in order to issue the probe and record the point to file.

    This is the probing I was referring to.
    https://www.youtube.com/watch?v=ZYJU1kwtzV4



  • I'm excited to read this. My next project is also going to be a CNC and I was hoping to be able to run a Duet WiFi on it.

    Thanks,
    Ian



  • I'm now on 1.16 with the 1.13 Web code and I still get the web interface locking up when I start a job which does not extrude or use hot ends/beds. I now get the following as soon as the job is started:
    Communication Error
    An AJAX error has been reported, so the current session has been terminated.
    Please check if your printer is still on and try to connect again.
    Error reason: SyntaxError: Unexpected token ] in JSON at position 446

    I can only reconnect to the web interface when the job is complete. Interestingly the emergency stop button still works, however I would like to get some form of feed back as well as the ability to press pause and adjust feedrates.

    Here is a very simple gcode file set up to laser cut a square using the first PWM port on the Duex5 board (M42 P3 S255) to set the Laser driver power - https://app.box.com/s/7h697i7c9qghmhw13rqwjwc34iun59f0

    Happy to add whatever is needed to the gcode to allow the web interface to give me some feedback and control over the job.

    Thanks Dave/Christian in advance if either of you can help me out?



  • Also, the M42 call is not in sync with the way the Duet is buffering the lines. When I run the job the laser switches off just before it starts the second last edge of the square. Is there any way to get the M42 to issue at the point in the gcode it is supposed to change?



  • Looks like inserting M400 just before the laser needs to switch off, do a rapid move and then start the next cut seems to resolve the sequencing issue in the buffer for M42.

    Oddly the laser driver requires an inverted PWM. What puzzles me though is that even though I issue M42 P3 S0 I1 just before the rapid moves it seems to still be getting a small amount of voltage leaving the laser in low power as it moves rather than completely switching off? At the end of the file the same command does in fact switch off the laser completely.



  • yeah, i have been doing similar, but using a servo control for a brushless control.

    https://www.youtube.com/watch?v=5nrd81MXiQE

    In that video i was using a controller but later got it working with the Servo outputs.
    https://www.youtube.com/watch?v=50i_HihgNto

    Next Up Laser!

    ill need to figure that one out, its just straight up 12VDc so i'm hoping i can use a Fan PWM output to drive a SSR of some kind…

    or i may be able to use a heater channel, will test the laser when i get it, 2.5W 80$, ebay, cheep so will see how well it works lol

    ~Russ


  • administrators

    One way to drive a laser cutter would be to set up the gcode to command extrusion where you want the laser on, then use the M571 command to set PWM on a pin whenever extrusion is taking place. This would keep it in sync. Currently the M571 command always uses the Fan0 pin but in the forthcoming 1.17dev8 release the pin is selectable.

    Does anyone know whether there is a standard way of using gcode to drive a laser cutter?



  • @dc42:

    One way to drive a laser cutter would be to set up the gcode to command extrusion where you want the laser on, then use the M571 command to set PWM on a pin whenever extrusion is taking place. This would keep it in sync. Currently the M571 command always uses the Fan0 pin but in the forthcoming 1.17dev8 release the pin is selectable.

    Does anyone know whether there is a standard way of using gcode to drive a laser cutter?

    In 1.16 this code is driving the laser rather well with perfect cutouts and no dwell with the laser on (not that the PWM needs to be inverted for my Simpledrive board) -

    ;laser off
    M42 P3 S0 I1
    ;go home
    G0 Z30.000 F1500
    G0 X0.000 Y0.000 F9000
    ;move to first cut
    G0 X32.092 Y123.544 Z2.100 F9000
    ;first cut depth
    G1 Z0.000 F1500.0
    ;laser on
    M42 P3 S255 I1
    G1 X31.690 Y123.540 F900.0
    G1 X31.286 Y123.531

    G1 X32.092 Y123.544
    ;complete buffer before commencing next line
    M400
    ;laser off
    M42 P3 S0 I1
    ;move to next outline
    G0 Z2.100 F9000
    G0 X78.278 Y94.219 F9000
    ;first cut depth
    G1 Z0.000 F1500.0
    etc.

    Have not tried using this method for pixel engraving and I suspect the need to issue the M400 is going to slow things down for each scanline pass.

    Reading up on M571 it does sound better suited to running the laser with 1.17. Will upgrade and test it out. Just a bit of a pain as Cut2D doesn't natively output E values. I can however customise a post-processor to put E values out on the G1 cut moves. Please note that my config.g does not have any defined extruders at the moment. Do I need to add the extruder setup back into the config to make M571 behave as intended?



  • Well, M571 did not invert the PWM when I tried the I1 option I was using with M42. Back to M42 for now…

    Also, these gcode files not only lock up the web interface, after the job is finished I can no longer issue any commands (after reconnecting) or start a new job without hitting the reset button.


  • administrators

    Can you give me an example of the code that Cut2D outputs, so I can look at supporting whatever gcode it uses to turn the laser on/off?



  • Posted a link further up the thread.
    @jgrouse:

    I'm now on 1.16 with the 1.13 Web code and I still get the web interface locking up when I start a job which does not extrude or use hot ends/beds. I now get the following as soon as the job is started:
    Communication Error
    An AJAX error has been reported, so the current session has been terminated.
    Please check if your printer is still on and try to connect again.
    Error reason: SyntaxError: Unexpected token ] in JSON at position 446

    I can only reconnect to the web interface when the job is complete. Interestingly the emergency stop button still works, however I would like to get some form of feed back as well as the ability to press pause and adjust feedrates.

    Here is a very simple gcode file set up to laser cut a square using the first PWM port on the Duex5 board (M42 P3 S255) to set the Laser driver power - https://app.box.com/s/7h697i7c9qghmhw13rqwjwc34iun59f0

    Happy to add whatever is needed to the gcode to allow the web interface to give me some feedback and control over the job.

    Thanks Dave/Christian in advance if either of you can help me out?

    Here is a newer file using the M400 call to clear the buffer - https://app.box.com/s/2pdgx6qogjhxvfp3se5te3xh04el453o. This one cuts a square out of 3mm ply using a 7W blue laser. Cut2D does let you define your own postprocessors so I do have quite a bit of control over what it puts out. The one thing that is not used as a variable in Cut2d is the extruder values (clearly). At this point I'm satisfied with the output I'm creating with my custom postprocessor for Cut2D and the only grief I'm having is the whole web interface crashing when I start a print. If that can get addressed then I'm sure quite a few people wanting to expand beyond just 3d printing with this hardware will be able to move forward in this direction.



  • @Russ:

    yeah, i have been doing similar, but using a servo control for a brushless control.

    Next Up Laser!

    ill need to figure that one out, its just straight up 12VDc so i'm hoping i can use a Fan PWM output to drive a SSR of some kind…

    or i may be able to use a heater channel, will test the laser when i get it, 2.5W 80$, ebay, cheep so will see how well it works lol

    ~Russ

    Great to see you're discovering the potential in utilising the mechanics of a 3D printer to route/laser as well. The fundamental difference I see is the rigidity and torque of a dedicated router (and much lower speeds). Your average belt driven setup is all about speed at the sacrifice of resolution and torque so at best the adoption of a laser is as far as most people go. The rig I built from scratch still uses belts however I've upped the resolution using the new Duet WiFi/Duex5 stepper drivers and the belt is pressed down into a toothed track so that the accelerations can be set quite high without the usual elasticity you get with stretched belts. The motors are also a little larger than normal without stretching the amps that these new drivers can deliver. The spindle I have is also on the small size however this rig is really just for cutting 3mm ply with laser or 6mm ply with the spindle and at 48V this little thing rips into 6mm ply with little effort. I also have a 1100 x 830 mm cut area on a regular 1200x900 sheet of ply.
    Once I have this thing doing laser/spindle routing nicely I'll finish it off with the 3D printer parts. This involves a case that has a large cavity below the table that the heat bed lowers down into via four lead screws a two steppers giving a 300x300x500mm build area. Having an abundance of stepper driver ports to hook up to allows me to just run with different config.g files for each setup. The only cable switching will be the wires that feed to either the spindle (2 wires), laser (4 wires) or extruder (4 wires + switch plug from z axis stepper to extruder stepper). At some point I will swap out the stupidly fat stepper cables Homann Designs sent me with narrower ones so I can have another stepper cable to the head. Note that a laser diode requires a driver board specifically designed to regulate the amps which is not what an SSR is designed for. Typically this just needs a PWM signal and 12V in. The Simpledrive board I have also has an NTC thermistor to ease off the power if it gets too hot and an interlock to fully disable the laser when short circuited (external safety switch). Also has pins to read the amps you are feeding the laser using a multimeter. http://www.ebay.com.au/itm/5A-analog-linear-PWM-laser-diode-driver-with-thermal-protection-/162291013120?hash=item25c94c5600:g:w7oAAOSwiYFXHE-T. Please don't think about purchasing from ebay seller Laserlands. The driver board they sent had a whopping great heatsink on it, however the MOSFET was not even touching it - the heatsink served no purpose at all.
    If you want a powerful laser without all the fuss with CO2 tube lasers the best place is DTR's Laser shop where I purchased my NUBM44 laser diode which dropped into the 12mm copper housing/heatsink I already had https://sites.google.com/site/dtrlpf/home/diodes/6w-nubm44-445nm-laser-diode. Beam is a bit wide on this one however the lens I had with the 3.5W laser worked really well at getting a nice 0.1-2mm spot out of it. Having a strong jet of air at the cut point is also a must as it really reduces the charring of the wood. Still designing the air jet head at the moment.

    Will take pictures/video soon of where I'm at with this thing.


Locked
 

Looks like your connection to Duet3D was lost, please wait while we try to reconnect.