A potential highly accurate sensor for levelling
-
I just came across a lengthy discussion on the PrintNC discord channel where a user is combining a webcam sensor without a lens and a laser level to accurately measure the variation in the surface of a steel beam that he's using in the construction of his CNC.
You can see a video explaining what he's doing here on his channel; https://www.youtube.com/watch?v=hnHjrz_inQU
And find the discussion of this method here; https://discordapp.com/channels/648972213734604807/1078447519517921392
And the webcam software can be found here; https://github.com/betzuka/laserlevel
This is all very intriguing to me, as I've built a CNC and I'd love to improve it's precision. And this should help, but I immediately wondered if these sensors could be combined with mesh bed levelling, to provide a highly accurate CNC, without the added steps of modifying the CNC gantry. Couldn't a CNC (or 3D printer) simply substitute a sensor like Duet's IR sensor for this webcam / laser level combo, run along the X and Y axis, while measuring the deviation, and then compensate?
Further; and this gets into even more intriguing territory for CNC's; couldn't the controller also measure deflection of the gantry in real time, along with a tool height sensor, to determine (and compensate for) spring forces?
-
@Jrow see my post here https://forum.duet3d.com/post/312935.
-
@dc42 should've used the search function!
-
@Jrow ok, so this isn't precisely what I'm suggesting. In the case of the CNC for instance, it's not about scanning a bed or work surface, but the variation along linear axis (X & Y primarily) in order to compensate for variation in travel.
The laser level would be mounted and collimated separately, and the machine levelled separately. The imaging sensor would likely be mounted on the Z axis, or the Y, and could be used for a wide variety of tests from measuring Z backlash, to measuring the amount of variation in Z along the X & Y rails.
A mesh could then be calculated from there.
-
-
@Jrow unfortunately, discord links dont work for people not on a given discord, can you maybe share the info inline here?
-
@oliof the discord conversation is in the PrintNC community, which is open to join, but it's pretty well condensed in the youtube link.
Basically; Discord user Byran ON is using a laser level common in the construction industry, and the PCB from a common webcam to detect differences in the level of the top surface of a steel beam. In his case, the steel beam is a mounting point for linear rails for a CNC, and the intention of his device is to manipulate the surface of the top of the steel beam so it's as flat as possible. The webcam PCB includes an imaging sensor with an array of pixels*, which the above linked Github software uses to detect the most illuminated point of the laser via sampling.
Another user has proposed a similar method, using a stretched wire, and an optical device that detects the center of the wire. He previously did this by eye to manually grind a lathe for someone.
- Image of the array of pixels to give an idea of how this produces such an accurate reading:
-
@Jrow my proposal would be to include the webcam PCB on the back of the Z axis of a CNC machine, and to mount the laser level permanently to the bed of the CNC.
The warm up routine would include a travel along X and also along Y, measuring the deviation in Z, then using that to build a grid of Z offset for mesh bed levelling. You could also measure Z backlash and compensate for it.