Welcome! Log In Create A New Profile

Advanced

Segment Free firmware test

Posted by nebbian 
Segment Free firmware test
March 04, 2017 07:38AM
Let's say you have a printer, and you're not sure if the firmware is segment-free.

How would you go about testing it? Can anyone point me to a good test to figure this out please?
Re: Segment Free firmware test
March 04, 2017 02:48PM
Would you mind explaining what segment free means? I never came upon the term in all the years i do 3D printing.


[www.bonkers.de]
[merlin-hotend.de]
[www.hackerspace-ffm.de]
Re: Segment Free firmware test
March 04, 2017 11:17PM
DC42's version of RepRapFirmware claims to be "Segment Free".

What this means is that in other firmwares, when moving between two points, the moves will be chopped up into about 100 moves per second, and the head will move in that many straight lines. In segment free movement, the head will move as precisely as the microstepping will allow.

What I'm trying to figure out is a good test to see whether a particular firmware is segment free.

The best I can come up with is to print some very small diameter circles, printed very fast, and see if the corners of each layer line up with each other. If so, then it's segment free. If the layers look more like bricks, with semi random start and end points, then it uses segments. I think you have to be very careful to have a model with more than 100 facets per unit circumference, where that circumference is printed in a second. So printing at 60mm/s, you need a lot more than 100 facets per 60mm. Of course you also need to ensure that acceleration is set high, and the minimum layer time is also set very low. Perhaps printing in PLA, in vase mode, might be the way to test it.
Re: Segment Free firmware test
March 05, 2017 05:06AM
Ok, so this is about the use of linear approximation. This might not be as easy as you think it is since gcode (except for the arc command which to the best of my knowledge is not implemented in RepRapFirmware) completely relies on linear approxiamation to deliver the printing data. In theory you could derive a function from the segmented data gcode delivers, but i don't think this is something that can be done in real timer on a printer controller.
Maybe ask for clarification on what exactly they mean, to me it sounds a bit like marketing fluff.


[www.bonkers.de]
[merlin-hotend.de]
[www.hackerspace-ffm.de]
Re: Segment Free firmware test
March 05, 2017 06:19AM
I'm pretty sure it's really happening, not just marketing. Also it seems to be mostly done for deltas, which are not linear in how the motor movements map to the nozzle movement.

DC42 seems mention it quite often, so it must be important. I'm just trying to figure out a good test to demonstrate what difference it makes.
Re: Segment Free firmware test
March 05, 2017 09:46AM
As well as the error you get due to approximating quadratic movements by linear of ones, with segmentation you also get an error due to the rounding of the carriage position to the nearest microstep at the segment boundaries. This might be visible as an irregularity of the moire pattern on the side faces of a cube.

People often say that their print quality improved when upgrading electronics to Duet and RepRapFirmware. However, it may be that the use of the Bresenham approximation by most other firmwares is a more significant contributor to lower print quality than segmentation is. What would be really interesting is to print the same pieces on the same hardware with both RepRapFirmware and Smoothieware, but I'm not aware of anyone having done this and photographed the results up close.

Edited 1 time(s). Last edit at 03/05/2017 09:47AM by dc42.



Large delta printer [miscsolutions.wordpress.com], E3D tool changer, Robotdigg SCARA printer, Crane Quad and Ormerod

Disclosure: I design Duet electronics and work on RepRapFirmware, [duet3d.com].
Re: Segment Free firmware test
March 06, 2017 05:52PM
Thanks for that, DC42.

What would be a good model to print, to demonstrate the issue?
Re: Segment Free firmware test
March 07, 2017 02:43AM
A cube printed in spiral vase mode would be quite a good test, then you can examine the moire pattern on the sides. When I was comparing 1.8 and 0.9deg motors I used a 50mm cube.



Large delta printer [miscsolutions.wordpress.com], E3D tool changer, Robotdigg SCARA printer, Crane Quad and Ormerod

Disclosure: I design Duet electronics and work on RepRapFirmware, [duet3d.com].
Re: Segment Free firmware test
March 07, 2017 03:01AM
Thanks DC42, I'll try that.

Any suggestions on speed? The faster the better? Also I assume a reflective filament would make it easier to see the moire pattern?

Also I assume this test is only valid for deltas, not cartesian printers?
Re: Segment Free firmware test
March 07, 2017 08:37PM
Here are some tests. This is a 50mm cube. All were done in spiral vase mode, in the same roll of black PLA, at 50 mm/s. I had to lower the minimum time per layer to 4 seconds to get the speed up to 50 mm/s.

The first picture is from a Kossel XL, using Repetier / Ramps / 1.8 degree steppers / DRV8825 at 32 microsteps. Steps/mm on this printer is 200. The moire pattern is very obvious, and drowns out any segments. I haven't modded these drivers to change their decay mode.



The second picture is from a Kossel Mini, using Repetier / Ramps / 0.9 degree steppers / TMC2100 in stealthchop at 16 / 256 microsteps. Steps/mm on this printer is 161. There is no moire pattern, although there is a strange rippling on the surface. At first I thought that the rippling might be to do with segmentation, but the numbers don't stack up. The segments per second on this printer is 120, so there should be 120 ripples.



Looking closer at the print, I can see a fine pattern, which I think might be a fingerprint of the elusive segments. Or maybe this is to do with extruder pulses? The extruder here uses the A4988, connected to a Titan, with steps/mm at 418.5 using 1.75mm filament. Extrusion width is 0.45, with a 0.4mm nozzle.



The very fine pattern is not obvious at all, whereas the vertical stripes are noticeable to the naked eye. I don't understand why those vertical stripes aren't contiguous.

What do you think?
Re: Segment Free firmware test
March 07, 2017 08:40PM
Here's the STL if anyone's keen to try to replicate this. Probably more applicable to deltas than anything else.
Attachments:
open | download - 50x50x50.stl (684 bytes)
Re: Segment Free firmware test
March 08, 2017 05:00AM
My delta is out of action for a major upgrade so I can't print that right now, however I have photos from August 2015:

With 1.8deg motors:


With 0.9deg motors:


These were printed using RRF on a Duet 0.8.5 (A4982 drivers). The cube was 50mm and I used spiral vase mode. If I have identified the correct file on my SD card, the layer height was 0.25mm and the speed was 25mm/sec. I used a low speed because at that time I was interested in the change in moire pattern when moving to 0.9deg motors. The delta had 20-tooth pulleys so the steps/mm @ x16 microstepping was 80 using 1.8deg motors and 160 using 0.9deg motors. The extruder was an Ormerod extruder with about 3:1 gearing and 420 steps/mm.

Edited 6 time(s). Last edit at 03/08/2017 05:09AM by dc42.



Large delta printer [miscsolutions.wordpress.com], E3D tool changer, Robotdigg SCARA printer, Crane Quad and Ormerod

Disclosure: I design Duet electronics and work on RepRapFirmware, [duet3d.com].

Re: Segment Free firmware test
March 08, 2017 05:45AM
Thanks for that DC.

I assume the firmware was segment free at that stage?

It looks like the larger stripes on my print might be the segments at play. Your print has the same micro stippling pattern, possibly to do with the extruder motor.

I'll have a bit more of a play around with some settings.
Re: Segment Free firmware test
March 08, 2017 07:27AM
The delta support in RRF has always been segment-free. When I implemented delta support in RRF, I considered that segmentation was a nasty hack and I decided to do the kinematics properly.

Using an extrusion width of 0.45mm and layer height of 0.25mm, the steps/mm for extruded filament out of the nozzle is about ((0.45 * 0.25) / (1.75^2)) * extruder_steps_per_mm, which for my printer is about 15 steps per mm. I would be surprised if that is visible, especially as it will get smoothed out a lot by the extrusion process. I think the residual pattern on my prints is probably moire from the individual microsteps of the motors. When my delta is working again, I'll reprint the cube with higher microstepping.



Large delta printer [miscsolutions.wordpress.com], E3D tool changer, Robotdigg SCARA printer, Crane Quad and Ormerod

Disclosure: I design Duet electronics and work on RepRapFirmware, [duet3d.com].
Re: Segment Free firmware test
March 08, 2017 08:28AM
Quote
dc42
The delta support in RRF has always been segment-free. When I implemented delta support in RRF, I considered that segmentation was a nasty hack and I decided to do the kinematics properly.

Using an extrusion width of 0.45mm and layer height of 0.25mm, the steps/mm for extruded filament out of the nozzle is about ((0.45 * 0.25) / (1.75^2)) * extruder_steps_per_mm, which for my printer is about 15 steps per mm. I would be surprised if that is visible, especially as it will get smoothed out a lot by the extrusion process. I think the residual pattern on my prints is probably moire from the individual microsteps of the motors. When my delta is working again, I'll reprint the cube with higher microstepping.

Thanks DC.

Are you sure the formula isn't more like:

((0.45 * 0.25) / (((1.75/2)^2) *π)) * extruder_steps_per_mm

I used 0.2mm layer height, and this formula gives me 49 steps/mm for my 418.5 extruder steps/mm. You're right about the extrusion process smoothing out the peaks from the extruder motor. I wonder what those stipples are. They are so minute that it's really not much of a big deal.

Looking at this further, I think those stipples must be related to the microsteps of the motors.

I think the vertical banding has to be related to the segments. Assuming that each segment goes from the peak of one stripe to the next trough, I'm measuring 10 segments in 4.53mm, which works out to 110 segments/second, pretty close to the 120 that the firmware says it's using. I'll try changing the segments/second and seeing how it affects the print.

Edited 1 time(s). Last edit at 03/08/2017 08:32AM by nebbian.
Re: Segment Free firmware test
March 08, 2017 10:02AM
OK we have our smoking gun.

The only difference between these two images was setting the segments/second to be 120 and 60 respectively. Funnily enough I prefer the look of the 60 segments/second print. Perhaps this is due to, as you say, having to round off the microsteps at the segment boundary.





I think I've reached the limits of how far I can push this RAMPS board. It's been fun, and I've really got some nice prints out of it. The TMC2100 drivers have made a large difference to the quality as well.

Now to try the Re-Arm I have in front of me.
Re: Segment Free firmware test
March 08, 2017 04:37PM
Sorry brain fade, you are right about the formula.

The fact that different amounts of segments/sec makes a difference to the print quality even at only 50mm/sec does suggest that segmentation is having an adverse effect.



Large delta printer [miscsolutions.wordpress.com], E3D tool changer, Robotdigg SCARA printer, Crane Quad and Ormerod

Disclosure: I design Duet electronics and work on RepRapFirmware, [duet3d.com].
Re: Segment Free firmware test
March 11, 2017 03:50AM
This one printed on large kossel (duetwifi/RRF) in black pla 0.2mm layers, it still warped after it cooled, might need a thicker walled object, or try it in my enclosed machine.



I cant see any segments in it.

I did try some in ABS they looked almost spherical after cooling, they were so bad my 3 year old took them off the printer and ripped them up.


Simon Khoury

Co-founder of [www.precisionpiezo.co.uk] Accurate, repeatable, versatile Z-Probes
Published:Inventions

Sorry, only registered users may post in this forum.

Click here to login