Duet3D Logo Duet3D
    • Tags
    • Documentation
    • Order
    • Register
    • Login
    1. Home
    2. markz
    • Profile
    • Following 0
    • Followers 0
    • Topics 28
    • Posts 207
    • Best 54
    • Controversial 0
    • Groups 0

    markz

    @markz

    78
    Reputation
    27
    Profile views
    207
    Posts
    0
    Followers
    0
    Following
    Joined Last Online

    markz Unfollow Follow

    Best posts made by markz

    • Building a CNC Pendant

      I guess I have too much time on my hands because I'm designing and building a CNC pendant. I have three Duet3d-based systems in-house (a CNC, a 3d printer, a milling machine) and I really need a portable pendant.

      Now that it's nearly finished I thought it might be time for some feedback 🙂

      6f534720-36da-4ac7-9b35-021efaba4378-image.png

      Here's a quick view of what I'm building.

      e042b55f-f4d0-43f9-b4a2-7c6aea8568db-image.png

      The case is 3d printed so pretty malleable. Each grid box is 1/2" (sorry not-metric) so the case is about 3.5"x4"x2".

      935d6cee-3dd2-49eb-a6a5-e503e653aa24-image.png

      Here's a quick view of the board (V1.00).

      The board is designed to fit onto this 3.5" touchscreen display -> https://www.waveshare.com/wiki/Pico-ResTouch-LCD-3.5 but it should work with most any display, just not as well-mounted. The carrier board holes fit the display.

      The WaveShare display has a socket for a Raspberry Pi Pico. The carrier board has two Pico 'sockets'. The center socket is to flush-mount or pin-mount a Raspberry Pi Pico W, the other just has pins mounted for the display board.

      There is a LiPo battery charger and voltage source circuit, as well as 7 input sockets: 1 digital input, 3 analog inputs (for potentiometers or ladder switches), and 3 multi-inputs for standard arduino rotary encoders or just usable as 3 digital i/o's per input. There are three different optional battery connectors in parallel - a 1mm JST, a 2mm JST, and a molex 2-pin. In addition there's a primitive current test pin.

      The sample image of the pendant shows it with three rotary encoders - which I think will be my first attempt. By default they'll do X,Y,Z positioning.

      I build these at JLCPCB in China, where the cost per board is tiny (<$5) but the setup+mail costs are close to $40/order. The first run was 5 boards which may be the last run if they work.

      For software I'm planning to use MicroPython and have it talk to the Duet boards via the REST api. If this fails (so far it looks good) I'll switch to C++.

      Mark

      posted in CNC
      markzundefined
      markz
    • RE: Building a CNC Pendant

      The first batch has shown up and I've adequately (good word) soldered the ic socket left. The center I've stuck a real plugin socket for testing (not shown). The mounting holes need to be moved left about 2.5mm but otherwise so far so good. I deliberately don't populate BAT2 or BAT3.

      Strangely I've found out that my port-switchable USB hub apparently doesn't turn off the data lines since, with battery, this communicates with my PC USB even with the port off 😞 That's a useful feature for testing but still...

      PicoPendant_A.jpg PicoPendant_B.jpg

      posted in CNC
      markzundefined
      markz
    • RE: Building a CNC Pendant

      Here's a pointer to a Youtube video showing a very very very early demo.

      Update:: I connected the CNC (a 6XD) direct to ethernet instead of a wonky forwarder and slightly tweaked the code and it's looking way better for lag.

      https://youtu.be/eynj0Mf17kE

      PicoPendantBack.jpg

      posted in CNC
      markzundefined
      markz
    • RE: CNC Screw Mapping

      @dc42 I've forked and updated the github repo. You can see the code changes at: https://github.com/MZachmann/RepRapFirmware/tree/v3.2-screwmap

      and it forks from the 3.02-dev branch (3.2 retail).

      Let me know where you'd like to go from here. Implement (pull request)? Move to M-codes? Change syntax?

      The only thing I couldn't yet figure out from the code base was how to correctly have the ui update the user position when the screw map definition changes.

      Mark

      posted in Firmware developers
      markzundefined
      markz
    • RE: Does RRF support 3d arcs?

      Well, that came out just great - smooth and all the detail showed up. Thanks. For scale the nearer lizard is about 1.5" long.

      Lizard_Crop.gif

      posted in CNC
      markzundefined
      markz
    • RE: CNC Gui Thoughts

      @chimaeragh Here's my mill GUI. Three decimal places on coordinates, one on speed, and an inches display. Plus a skinnier Sensors bar.

      837e6410-cd0f-4e06-bd11-73939c4b2684-image.png

      options:
      e316bc2e-b659-40fc-b1fc-226914344959-image.png

      posted in CNC
      markzundefined
      markz
    • RE: Custom CNC Pendant Application

      @MadewithMayo I've got a pendant I've been working on; to contrast the design... the pendant uses a Raspberry Pi Pico W with WiFi, a 3.5" touchscreen LCD, and the RRF Rest interface to communicate. I've got a board being made (2 weeks) that adds Lipo battery support to the Pico so the pendant can be wireless handheld.

      I'm planning to put two rotary switches (axis and speed) on the unit as well as one indicator dial for movement - much like a conventional pendant - see here -> https://www.amazon.com/RATTM-MOTOR-Handwheel-Emergency-MITSUBISHI/dp/B07CZ7F3Y3

      I'm writing it in MicroPython - but their Pico W port is not quite stable yet.

      I've written plenty in Arduino and in my personal opinion it's not a production OS.

      Why do it this way?

      a) I have three Duet3d systems that I'd like to control and having a wifi pendant lets me walk it around.

      b) I hate cables. They get caught on things and have finite lengths and physical failures.

      c) Writing a small amount of easily maintained Micropython seems easier than negotiating changes to a PanelDue set of code that's really not designed for my applications (such as a CNC router).

      My 2c.

      Mark

      posted in General Discussion
      markzundefined
      markz
    • RE: CNC Screw Mapping

      I'm going to keep working on this, and here's why... I'm including 4 photos.

      Two of them show my current CNC X axis and the camera, to understand the context. The other two show a scan of the camera looking at a ruler as I move the CNC manually in inch increments.

      Looking at the problems, what is happening is that the X rails are deformed slightly in the center. The X dimension error increases then decreases (and then increases near the right edge). And .. at maximum X error there's also a Y error that's significant.

      Using my last controller (WinCNC) I automatically created a multi-axis screwmap using the camera (which takes under 15 minutes) and the positioning error dropped from a max of .03" to .003".

      PreCalibrationInches_A.jpgPreCalibrationInches_B.jpg CameraHolder_A.jpg
      XMovement.jpg

      posted in Firmware developers
      markzundefined
      markz
    • RE: Getting Started

      @timothyz It's a little hard to tell what you both are experiencing. I'd split this into a few questions/comments.

      It's not a big deal if you run in CNC or printer mode. I wouldn't, for now, worry about it too much. Mainly it affects some G code interpretation.

      First, does the CNC work as is? Ignoring if it can run jobs does it move the axes the way you expect and find the limit switches etc? If so, then you're pretty much in great shape and you just need to get jobs running well. If not, then your config is probably not set up right.

      If everything seems to be working on the CNC the first thing is to get homing going. These are macro files that you can write and my preference is to make them work independent of CNC/non-CNC mode - which is pretty easy. Until the machine is homed the motors won't move (see G0,G1 doc about bypassing homing).

      Once you have it homing then it's a matter of getting your application to work correctly with it. I don't know carbide create at all, but given that it's intended for carbide3d machines I'd worry about using it elsewhere.

      On my milling machine I use Fusion360, which you can run a free license for. The free license is very useful albeit annoying because it won't rapid. It has a huge startup cost (it's hard to figure out) but once you learn a few tricks it is a great manufacturing app.

      On my CNC I run VCarve Pro for sheet goods. VCarve pro is not expensive and is easy to use. I use Fusion360 for 3d carving.

      So I'd probably start with a known entity (such as fusion with a working postprocessor), get it running, then worry about Carbide Create.

      MPCNC.cps - fusion postprocessor

      duet3d_rrf_arc_mm.pp.txt - vcarve postprocessor with txt suffix

      posted in CNC
      markzundefined
      markz
    • RE: CNC Screw Mapping

      The mapping seems to be working quite well.

      Here's a video clip showing it in use : https://youtu.be/uTqUBrUHinU

      I'll write it up in the next week or so. Note that with minor mods this could do backlash compensation.
      Here's the input file:
      Screenshot 2021-01-23 155900.jpg

      Here's the script I run to set the screwmap
      Screenshot 2021-01-23 181650.jpg

      Here's the result:
      ScrewMapFinal.jpg

      Mark

      posted in Firmware developers
      markzundefined
      markz

    Latest posts made by markz

    • RE: Stop during stepper motor operation

      @T3P3Tony Whoa my apologies. I just assumed it extended.

      posted in Gcode meta commands
      markzundefined
      markz
    • RE: Stop during stepper motor operation

      @Dennis_kim The simplest approach is to define the stepper motor as a spindle and then you can set the spindle to a specific speed (and cw or ccw). On my CNC (a Duet3d 6xd) I use the fan2 port because I'm driving a relay, but the 6HC will drive a stepper just fine. The following code sets up the spindle (yours will differ).

      ; Spindle definition
      M950 R0 C"out7" L1000			; use the fan2 port for spindle, 
      M563 P0 S"Spindle 0" R0			; create a spindle #0 named spindle 0
      

      Then, in CNC mode the user interface will add a spindle control like this:

      e0aed3d6-9ebf-408a-9539-0c93d7c57995-image.png

      and check out the M3, M4, and M5 GCode commands. Also, see here: https://docs.duet3d.com/en/User_manual/Machine_configuration/Configuration_CNC

      posted in Gcode meta commands
      markzundefined
      markz
    • RE: Software for Duet3 6XD

      @jimakron The Duet3d boards all support RRF (rep-rap firmware) - which comes free with the board. This is similar to Mach3 with a web-based user interface. All of the g-code processing is done on the 6XD internal processor. See https://docs.duet3d.com/en/User_manual/Reference/Gcodes

      posted in CNC
      markzundefined
      markz
    • RE: Building a CNC Pendant

      For anyone who's interested in building/using one of these, the documentation, source, schematics, ... is in On Github

      The schematic+pcb+bom is designed for Jlcpcb using their EasyEda application so it's trivial (one click) to have one built.

      The current state is: the unit works effectively, the Pico has a tiny Wifi antenna so a nearby router is a good thing, and MicroPython for the Pico W is still beta so the wifi code uses blocking I/O which can be a bit laggy.

      I also haven't yet written the extra wifi support for Duet3d SBC since only my printer uses that.

      posted in CNC
      markzundefined
      markz
    • RE: Changed ISP

      @Exerqtor Huh, thanks. I took a look and in their usual clever fashion they display the m550 name but elide the space when setting the hostname.

      posted in General Discussion
      markzundefined
      markz
    • RE: Changed ISP

      @Dizzwold Generally you can't set a computer name with a space character in it. Have you tried using M550 P"Duet3" ?

      Also I'm confused by that .xxx - are you not showing it? That needs to be number like @Exerqtor shows.

      posted in General Discussion
      markzundefined
      markz
    • RE: table router with Duet 2 wifi

      @an-andrew If I understand this your fence is two boards that might move independently - like the two ends of a jointer - but on their side. If so...

      I would probably define the fence as an axis with both motors. Then, RRF Gcode supports G1 H2 which moves an individual motor and you could fairly easily change the dashboard source or add a custom button screen (see https://plugins.duet3d.com/plugins/BtnCmd.html) that does conventional G1 moves along with G1 H2 for that second half of the fence.

      posted in CNC
      markzundefined
      markz
    • RE: Changed ISP

      @Dizzwold Your subnet mask means the router will only use 192.168.0.xxx and you won't see anything at 192.168.1.xxx.

      Here's what I would do.

      Keep the router IP address and subnet mask as is

      Starting IP Adddress -> 192.168.0.50
      Ending IP Address -> 192.168.0.254

      Set the Duet address to 192.168.0.25 (or anything between 2 and 49)

      You may need to restart any other devices on your network to ensure they move to the new router available dynamic address range.

      posted in General Discussion
      markzundefined
      markz
    • RE: table router with Duet 2 wifi

      @an-andrew I'm not sure I understand what you are doing.

      How many motors are there? Is there one motor for Z and two motors for the fence?

      Do you want to drive Y independently in order to angle the fence but usually will run the two (X,Y) motors to move the fence parallel?

      posted in CNC
      markzundefined
      markz
    • RE: Changed ISP

      @Dizzwold Generally you don't want a static address between start and end or your router might assign it to a different device dynamically. So, use the same subnet but start after or before the static address.

      So, my router uses 192.168.0.xxx subnet and I reserve the <100 folks for static addresses and the >100 for dynamic. I let it deliver 192.168.0.100-192.168.0.250 dynamically.

      posted in General Discussion
      markzundefined
      markz