Welcome! Log In Create A New Profile


Hangprinter version 2

Posted by tobben 
Re: Hangprinter version 2
October 11, 2017 12:09PM
Yup, I also long for not having to babysit the printer. Slowly but surely getting there winking smiley

Oh, those errors are quite large. I had smaller errors even before I made the buildup compensation, anchors location errors might play a role in here as well. Anyways, let's calibrate the buildup compensation =)

For each axis, measure how much line is on each spool when the printer is in origo. If you have 2 m from action point to anchor point on all axes, and each of your nine lines are 3 m long, then 1 m of each line is on the spool when the printer is in origo. In that case, the numbers you want to put into line_on_spool_origo is {2000.0, 2000.0, 2000, 3000.0}. (Sorry to have made this process so elaborate for now...)

Estimate your spool buildup factor. If line has a diameter of 0.39 mm, I estimate the buildup factor like 0.39*0.39/(pi*4.6) = 0.010525. Insert your value on line 456 of Calibration.h. I sometimes find that this estimation is too big or small.

Now, try retracting 1m of line on each axis. For the A axis, the procedure will be
Place printer in origo
Tighten A-line, keeping printer in origo
Detatch A-lines from anchors
G92 X0 Y0 Z0
G8 A-1000 ; Keep line tight as printer rolls in A-line
Now, make a mark on the line (I recommend tape, not ink) where it enters the fish ring.
G8 A0 ; Keep line tight as printer rolls out A-line
Now, measure the distance between your fish ring and your mark.

If it's < ca 996 mm, then your printer rolls in less line than it should. Decrease the spool buldup factor by ~0.002 and try again. You can set a new spool buildup factor temporarily with
M92 Syour new factor here
That value won't be saved. To keep a buildup factor across power cycles, put it into Configuration.h and re-flash firmware.

The above process is very elaborate. If we find working buildup factors for a few different line diameters, and I make slight changes in the firmware, we can let others have the same calibration by just specifying line diameter and total line lengths (which they probably measure anyways before tying them to spools). Hard coding these values is the price we currently pay to avoid having to deal with encoders along the lines.

Edited 3 time(s). Last edit at 10/11/2017 12:14PM by tobben.

Re: Hangprinter version 2
October 12, 2017 11:50AM
Is the 2000,2000,2000,3000 representing A B C and D, or is the 3000 total length?
Re: Hangprinter version 2
October 12, 2017 02:03PM
They are representing the amount of line on the spools A, B C, and D.

Oh, I made mistake in the example, sorry. The three D-lines would have to be 4 m long to even reach up to the ceiling and back to the printer (2 m each way). In the example, I said they were only 3 m long eye rolling smiley

If the D-lines are 10 m long, then we have 3x(10-2x2) = 18 m of line on the D-spool in origo. So LINE_ON_SPOOL_ORIGO = {2000.0, 2000.0, 2000.0, 18000.0}.

Re: Hangprinter version 2
October 12, 2017 02:14PM
Origo, meaning 0, the center on the print bed? Because my D spool has almost no line on it at 0. Maybe I missed something, I will re-read it.
Re: Hangprinter version 2
October 12, 2017 02:42PM
Yes. Almost no line on the spool in origo sound like good planning =) The 10 m number in the example would be overkill in real life winking smiley

Edited 1 time(s). Last edit at 10/12/2017 02:42PM by tobben.

Re: Hangprinter version 2
October 13, 2017 02:46PM
It's getting better, I am able to print about 150mm now before it starts to slack. Still tuning.
Re: Hangprinter version 2
October 13, 2017 06:54PM
Nice nice. What line diameter are you using? Just curious.

Re: Hangprinter version 2
October 13, 2017 07:02PM
I am still playing with it, I had it up to .022xxxx now I am brining it back down. Still some inconsistencies I can't figure out, but I am getting closer.
Re: Hangprinter version 2
October 17, 2017 07:38PM
I am not sure what is going on. After many many measurements and tests I have tried .0099xxxx all the way to .060 for my diameter settings. It doesn't seem to really affect the model or the line slack at all. Still starts going slack enough to make things look bad around 100mm of Z. More testing tomorrow.
Re: Hangprinter version 2
October 18, 2017 05:47AM
Ok, well done, nice to have buildup compensation out of the way.

I still suspect that either some rapid Z-lifts makes the D-motor loose steps, or that anchor locations are not perfectly calibrated, or a combination of both factors...

If you place the printer in origo, tighten lines and move to Z100 like this:

G1 Z100 F150 ; F150 sets a low speed of 150 mm/min so no steps will be skipped

Does it still result in slack lines?
If it doesn't, then skipped steps during print time is probably the issue.
If it does, then anchor positioning is the issue.

Re: Hangprinter version 2
October 18, 2017 09:59AM
When I move to 100 it does slack the lines, then when I move back to zero the lines are tight again. Is there anyway to troubleshoot anchor position?
Re: Hangprinter version 2
October 18, 2017 10:49AM
I'm afraid I haven't come up with a procedure to iteratively improve anchor positions. It should be possible to make such a procedure...

The best thing I can give you for now is the following illustration:

... and the info in the calibration manual.

Re: Hangprinter version 2
October 18, 2017 12:27PM
I am not sure how much more accurate I can get. I will think on it and see what I can come up with. It seems like the compensation lets the A, B and C line out to fast as it moves up. No matter what changes I make in the firmware doesn't seem to slow the compensation down.
Re: Hangprinter version 2
October 18, 2017 02:32PM
check to see if the diameter of your spools matches what the system thinks they are, if they are slightly larger than the software things, that could cause the problem you are seing.
Re: Hangprinter version 2
October 18, 2017 05:16PM
In origo, try
G92 X0 Y0 Z0
G8 A50

If this releases 50 mm of line, then your machine has control of how much line it's letting out, and buildup compensation works (at least on the A-axis). Its equivalent to what we did with G8 before. If buildup compensation works when used with G8, it also works during print.

It is correct that a wrong spool radius will have much the same effect as a mistuned buildup compensation. The above test also accounts for erronous spool dimensions. An erronous spool radius can even be perfectly compensated by tuning the LINE_ON_SPOOL_ORIGO values smiling smiley

There's always the option to disable buildup compensation by commenting out line 435. I'm a bit curious of what happens if you disable buildup compensation, reflash firmware and try the G1 Z100-movement again.

Factors that could mess up anchor location calibration a little bit:
  • D-lines not perfectly vertical when printer in origo.
  • Paralellograms not perfectly paralell (like one A-line being longer than the other, or one A-lamp hook being placed closer to origo than the other).

Did you use the online calibration calculator, or did you measure ANCHOR_ABC_XYZ directly, or both?

Re: Hangprinter version 2
October 18, 2017 06:29PM
A8 measures out, mine is currently set to 0.018, but all 3 axis compensate the 1000mm correctly.

Next I commented out the line compensation. It doesn't change anything, the A B and C still feed out line on the way up and retract it on the way down. Not sure how that has happened.


I have made sure all the D lines are the same and all the A B and C lines are equal.

I have been using the calc.
Re: Hangprinter version 2
October 19, 2017 02:40AM
Hi Chris,

do you use the EEPROM?
If your answer is "Yes": Are you using M502 to load the Firmware defaults after uploading your edited firmware?
After that you should use M500 to store that new values.

If your answer is "No": Sorry, i can't help you sad smiley


Geeetech I3 Pro B 8mm Acryl - Mega 2560 - Ramps 1.4 - TMC2100 - MK42 - E3DV6-Clone 0,4 - SSR 522-1dd60-40 (A-Senco) - Marlin RC8Bugfix 26.12.2016 - Repetier Host - Windows 7 64 Bit
Vulcanus mit Linearschienen
Anycubic i3 Mega
Re: Hangprinter version 2
October 19, 2017 03:43AM

Thanks for the reply. I have eeprom commented out.

Re: Hangprinter version 2
October 19, 2017 06:14AM
Ok, then I guess there are some assumption in the calc (it contains quite a few assumptions) that doesn't work with your setup.

The only way to find out is to double check the values you got from the calc by doing manual measurements along the xyz-axes individually, like in the image above. Based on the large amount of slack you are getting, I think you will find an > 1 cm error somewhere (or everywhere).

The calc has defined your y-axis to go straight through your A-anchor.
Measure the y-distance along one suspended A-line first (when printer is in origo and all lines are tight).
For measuring y-distances and x-distances along your B- and C-lines, I recommend using a big 90 degree ruler and drawing lines with pencil or tape on the floor if your floor and all its users are ok with it.

While this process can teach users a bit about how Pythagoras' theorem is used inside the firmware, I really wish users (and myself) didn't have to go through it.
Robust one-click anchor calibration is possible in theory.
Most of the possible ways to implement it also gives us automatic homing almost for free.

Re: Hangprinter version 2
October 19, 2017 10:23AM
Would it be possible to probe the print surface and use the height errors to do a least-squares fit of the anchor position corrections, in a similar way to how delta printers can be calibrated? I think this ought to be possible if changing the anchor positions affects how the height varies with XY position.

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: Hangprinter version 2
October 19, 2017 11:10AM
I think you would have to have some way to know when if lines are tight or not. I also think that the you'd get an ill-conditioned system from probing only along the print surface. But yes, in a general sense, I agree that least squares fit should work.

See fsr branch of auto-calibration-for-hangprinter repo (particularly in simulation.py) for the my lastest attempt at doing this using force sensing resistors to sense tightness of lines. The script can also be used to test if keeping the probing points in a plane would actually create an ill-conditioned system (by simulating those data points and trying to solve).

Re: Hangprinter version 2
October 21, 2017 01:39PM
I finally got a chance to look at your hangprinter v3 post, and one thing that jumped out at me is to ask why you are doing two lines of each side rather than just one line off each point? two lines adds more chances of calibration problems.

Another option to consider is to simplify the math a bit by changing the mountings so that the lines are always pointing at the extruder (or at least at the axis of the extruder). On the maslow CNC project, we were suspending the sled holding the router from two chains at fixed points, and as we move around, the sled tilts. the math to calculate this is a nightmare. We are now trying a couple different approches (one attaching lines to bearings on a ring, and the other with pantograph arms, and that is drastically improving our accuracy as well as simplifying the math.

If you were able to do a 3D version of something like this [lang.hm] you would make it so that the lines are always pointing at the end of the extruder.
(the links make it so that the small hole in the arms is always a constant distance from the center of the bit, and a line extended from the chains will always point at the bit)
Re: Hangprinter version 2
October 21, 2017 04:49PM
Hello dlang!

Cool that you're working on the Maslow! I've been wanting to try one for ages.

The extra lines on each axis are there to constrain the rotational degrees of freedom. Jonas Forsell's Hangaround design uses 1 line on ABC. It works, but it always wobbles around Z.

The math is really not complicated since the mover never rotates. Forward kinematics is simply Pythagoras'. The moving part is treated like a point mass in the firmware.

Re: Hangprinter version 2
October 22, 2017 05:55PM
I am struggling with my measurements. I don't think I understand fully how it works. I get Pythagoras, but why would I need to figure out the angle? If the two lines are the same length, shouldn't that mean my mount is parallel with the axis? I am sure I am missing something. It would probably be easier for me to move my mounts to follow the calculators assumptions then to find the manual measurement. Still confused, but I am working on it. Thanks for the repeated help. smiling smiley
Re: Hangprinter version 2
October 23, 2017 04:40AM
If you get Pythagoras I think you've got it all. There is no angle to figure out during anchor calibration, only x, y and z-components of line lengths along the suspended part of the line.

How long are your A-lines when your printer is in origo?

Re: Hangprinter version 2
October 23, 2017 11:19AM
My A lines are 1710mm, but can easily be made shorter.
Re: Hangprinter version 2
October 23, 2017 05:44PM
Ok, nice. Longer is better =)

Do you know the vertical distance between the starts and the ends of your suspended A-lines?

Re: Hangprinter version 2
November 07, 2017 09:15AM
I have moved my printer to a new location. I am having a different set of problems now, but I am still working on it. I am not sure what you mean by vertical distance.
Re: Hangprinter version 2
November 07, 2017 02:38PM
Good to hear you're still on it =)

With vertical distance, I mean the distance that is marked C_Z in this picture:

You must imagine a cartesian (xyz) coordinate system and measure along the X-, Y-, and Z-axes separately.
The direction of the Z-axis can be found by using an aiming plumb or any other object hanging in a line.
The "vertical" direction, or the Z-direction, is the direction of gravity.

The Y-direction is the same as the (horizontal part of the) direction of your A-lines when your printer is in origo.

When you calibrate anchors, you must first place your printer in origo.
Then imagine a translated cartesian coordinate system which has its (0,0,0) fixated in a fish ring.
With this new coordinate system, describe the position of the other end of that line (the end fixated at the anchor point), using x, y, and z-coordinates.

Here's a picture of me taken yesterday, where I measure along X and Y to find distances marked ANCHOR_C_X and ANCHOR_C_Y in the image above:
(The table is there to help me get a 90 degree angle between my X-measurement tape and my Y-measurement tape.)

This is hard to explain in a forum post and I can imagine that it's even harder to understand via forum post.
Please ask questions where you get stuck.

Re: Hangprinter version 2
November 07, 2017 08:37PM
Very nice, this makes a lot more since. That gives some ideas on how I can make the measuring easier.
Sorry, only registered users may post in this forum.

Click here to login