New Module IDEAS

Sorry that I went home yesterday. The R&D team is so busy having meetings this week. Since we have not made a prototype of A500, I will update the issue here after our holiday.

Cheers
Edwin

@Snapmaker-Edwin Any confirmation on if there will be an upgrade kit? I’d imagine it’s quite possible. Base plate, platform, rails and beds. I don’t see a reason why it wouldn’t use the same controller, touchscreen, PSU (maybe) and heads (excluding the more powerful laser of course). The PSU might need a power upgrade for the larger heated bed.

Going back to the new-module-ideas, this got me thinking:
CNC Surface Probe from digital dial indicator

I had seen a surface mapper based on the Taig CNC mill, maybe ten years ago (bookmarked as https://www.deepgroove1.com/probe/probe.htm - but the link is dead and archive.org missed it), using a ruby probe. Looks like good ol’ Alan has a recent writeup: Taig Mill 3D Digitizing

Anyways, a surface mapper seems like an easy add-on to the Snapmaker. I had thought of connecting a digital dial indicator to one of the toolheads (I modified the 3DP print head to provide an indicator mount awhile back) and just running gcode to incrementally move the toolhead over an object. The serial port for the indicstor would be connected to a laptop sampling data points. The problem, of course, is when to sample: the gcode could pause for 50ms, and the sampling be performed every 50ms, but the travel time would eventually compound into error, even with very short moves. So the tool head would have to coordinate with the linear modules: move, sample, move, sample.

All of which indicates that a firmware mod is needed to provide a trigger after move (might exist, haven’t checked), and of course a toolhead which acts on the trigger. The existing toolheads all seem to be designed as “continuously-running tool is moved around workpiece” instead of “tool is activated at specific coordinates”, so this is a bit of a change, but could be handled by reacting to GCodes like M2-4, M300, or M42 (which seems designed for this).

The output would have to be saved somewhere, so maybe an SD card in the toolhead. Something as simple as a newline-delimited list of points, with a header line stating the dimensions of the sampling grid (X by Y).

I’ve had a very similar idea at some point but never got round to actually implementing it. I would approach it slightly different though. I would just drive the SM using external gcode.

  • Get a dial indicator that can be read out using a serial connection + Have some software to do the readout
  • Move the toolhead using gcode over the serial connection of the SM.
  • Write a small program that traverses the object and on every point read out the value of the dial indicator.

Not too complex, doesn’t require any firmware change either.

An even "simpler approach could be to have something like the fifix, but add a pointy extrusion to the bottom (similar the point part of your dial indicator) and then you can do it completely in gcode (G30 command) using the readout of the bed level sensor used for bed calibration.

2 Likes

That’s true, I was forgetting that the controller supports a standard serial connection via USB, not just the wifi-via-touchscreen. That would certainly make things a lot more simple: send the gcode to move, do a read from the indicator, send the next gcode.

I think I’ll whip up a quick serial utility to test out the idea. As you noted, if you’ve got the indicator there’s really not much else to it. Will start a thread when/if I get something kicked out.

Bed-level sensor … eh, too complicated :slight_smile:

I did do a little test to read out the dial indicator some time ago. This is a small code sample for an esp32 device or something like an arduino. This works with the cheap Chinese dial indicators: Arduino code to read out digital dial indicator with data output port · GitHub

Usually if you want a communication cable for those they cost 5 times more than the actual dial indicator. (the same code will work with similar calipers as well, some minor changes might be needed )

I even have a 3d model for the connector and small pcb to go with it so you can easily connect it. If you are interested I can dig them up and publish it.

But I honestly believe that the fifix like approach is much simpler and just as good.

1 Like

I made a dial indicator cable awhile back, cranked out some sample code to talk to the SM2 the other night. Bog standard 8-1-NONE at 115200 baud. Gotta write something to talk to the indicator, but I’m a bit behind after a couple of busy-but-unproductive days - what else is new, eh? Might get to it tonight.

EDIT: Probably not. Looks like these indicators need a device to drive them, so something like an Arduino has to be pressed into service (Yuri has a good writeup on the 21-bit protocol, though alexw reports that the calipers use a rotary encoder, so either the zero-pin has to be pulsed, or the zero maintained in software). Not a big deal, got scads of ESP32s I could use, but not something I have time for this weekend. The official cables, ignoring the price point, are useless - they require a button press to record the value. I would be better off fixing an ESP32-CAM to the indicator and taking photos for OCR :wink:

That’s exactly what that little code sample I posted does :wink: I’ve used it with an ESP32 to test and it works fine. Currently just prints out the result. My intention was to make a minimal rest webservice out of it or just open a serial connection to the ESP32 and read it.

At least the indicator I have just continuously sends out its value as soon as it’s turned on and you have to read the incoming signals. Maybe yours uses a different protocol.

(But if I ever pick it up again, I’ll probably go with the fifix-like solution and use the bed level sensor.)

Yeah, I misunderstood because I thought these devices had a UART in them before I started to look into it, thought it was just going to be arduino code to do the serial comms. But nope! No UART.

I downloaded the fifix stuff back in spring but never got around to playing with it. I guess I should go read those posts to determine if the sensor has that sort of resolution. Some day; I still have Friday’s shop work to catch up on and the day’s almost over.

I think FiFix had repeatability down to like .02 or something, as good as you’re going to get on this machine’s linear modules: For all who want level on glass - #13 by brent113

A wireless probe that can mount on the toolholder would serve a similar purpose, and could communicate with the machine in the same way the laser camera currently does. This would be similar to the one in makera’s carvera machine.
This would allow the user to map the surface and probe anything in a much easier way and in the “standard” one for cnc machines at that!
One big improvement that could be done to the carvera design is to make the probe an XYZ probe, like this Paciente8159's CNC probe by Paciente8159 - Thingiverse , which could also allow for all kinds of macros with probing workpieces.

For this a probing gcode would be needed though