New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Feature request - Adjust layer heights based on Z step quanta #1827
Comments
I agree with that. |
When doing this, you want to make sure that your layer height is a multiple of the full-step distance, so that inaccuracies of microstepping can't cause banding (there pictures and illustrations of what this looks like in my article here: https://www.evernote.com/shard/s211/sh/701c36c4-ddd5-4669-a482-953d8924c71d/1ef992988295487c98c268dcdd2d687e). Of course, a belt driven axis might not have enough full-steps per mm. The full step length on my bots with a 1mm Z screw pitch is 5 microns, but for a belt-driven axis it is likely to be 160 microns or more, so there are far fewer options unless microstep values are chosen. The TR8_8(2P) threaded rods that RobotDigg and OpenBuilds are selling give a full-step length between these, at 40 microns. This is all assuming 1.8-degree steppers are used. It should certainly *strongly_ prefer to use multiples of the full-step length if possible, then half-step, etc. |
Uhm @whosawhatsis, in that case is it enough to just rotate by multiples of a full step, even if the positions themselves are offset from the full step positions? In that case, user could just input the number of full steps/mm instead of microsteps/mm, and no special logic would be required on Slic3r's side. |
Yes, I suppose it could be handled by instructing the user to use their full-step length (or their steps/mm setting divided by microstepping ratio), unless their full-step length is too large. Seems like it would be easier to program the logic than explain it to people (I get blue in the face attempting to do so on a semi-regular basis). |
For best accuracy you want to move in steps of four times the full step. On 17 March 2014 09:24, whosawhatsis notifications@github.com wrote:
|
@nophead if a "step" is the distance from when phase A is energized and phase B is off to where phase A is off and phase B is energized (or from where both are energized equally to the next point where both are energized equally, but one has the reversed its polarity), then only the "full step" and "half step" positions are accurate. That would mean that there are only two consistent points, not four, unless I'm misunderstanding something. But you can't rely on having a consistent step every half-step because you don't know which microstep you are on at any given moment. If you know that you are on the full-step position, you know that the half-step position is 1/400 of a rotation away, but if you're in the 1/8 step position, the 5/8 step position will not be exactly 1/400 step away. Since you can only know whether you're on one of the full-step or half-step positions or not (because you are always on one of the two) when you're in half-step mode, you can't use a half step as a reliable unit of measurement when you're using a greater number of microsteps/step, so all that you can know is that the positions one full step away in either direction will be 1/200 of a rotation away. |
@nophead Oh, I understand what you're saying now. Yes, if you don't assume that the two phases are of equal strength, then you need to go in multiples of four full steps (I thought you were referring to quarter steps), not just one. If the phases of your motor can be safely assumed to be of equal strength, then what I said above is true. |
Not only the balance of the motor but also the driver. With 0.05R sense On 17 March 2014 09:58, whosawhatsis notifications@github.com wrote:
|
@nophead The step quanta should be user adjustable. If you're talking about a screw drive, then 4x the step height would be quite reasonable - If you're talking about a belt drive, then 4x the step height would most likely be > than your layer height. |
Say Men, A question about belt resolution just to make it clear in my mind. The belt resolution would be dependent on the two pulley diameters and then exactly what the motor can attain Right? Meaning - resolution is fully dependent on the ratio of the two pulleys. ??? |
@alexrj The printer i'm working with has a step quanta of .08mm, so my current solution is to set my layer height to .24mm (rather than the .25mm I usually would use). It's great for print quality, but kinda sucks from a precision standpoint, since my models are all designed in millimeters. This would pretty much be the same as having slic3r compensate by adjusting the layer height to fit the step quanta. Ideally, I'd like slic3r to compensate the flow rate instead of the layer height, as this could produce better precision in the height of the object. However, since the printer would be microstepping it might not be possible to correctly predict the flow compensation needed. |
@bstott the steps/mm of a belt driven axis depends on the effective circumference of the motor pulley (the diameter of the idler pulley has no effect, as long as it is properly aligned so that belt tension is constant). By "effective circumference", I mean the number of teeth on the pulley multiplied by the pitch of the belt. |
@alexrj Perhaps this is more of a user interface feature than a slicing feature - a means of directing the user to layer heights that are a good match to their printer. |
@whosa... OK --- Idler - right --- no effect. Diameter/circumference of the drive pulley at the top of the teeth would be the effective distance moved in relation to the motor step movements. And what determines resolution. Teeth numbers determine Circumference by geometry. So - simple calcs will use teeth but are effectively --- resolution directly related to the circumference of the drive pulley. Smaller pulley (less teeth) = higher resolutions. |
I forgot to give the clue to my questions ----- Teeth are irrelevant to the motor belt build and print resolution but, diameter of the drive pulley is not. Based on the above premise: We can build our own drive pulley to resolve the resolution we prefer from the motors. Design your pulley by determining the ideal diameter then, how many teeth you wish to have in contact at all times with the belt. Properly space your teeth. If the pulley can accommodate a full compliment integer number of teeth then either arrange full circumference or omit to maintain your ideal number of teeth and belt contact. Assure the teeth spacing is such as to mesh with the particular belt you are using. You will then control with micro precision your machine resolutions. Did I miss a glaring mistake in thought? |
@bstott see http://calculator.josefprusa.cz You can get micro precision of the sort you're thinking of with cable (i.e. spectra-line) based movements, where there are no restrictions on pulley circumference, but with belt drives, your choices for pulley circumference are an integral multiple of the belt's tooth spacing. |
Ahhh - you almost got my point. But ---- there are no restrictions with teeth in my example. You use the teeth only to stop belt slip. --- If you remember - We can design and print our parts and as such ---- pulley circumference is our choice and the number of teeth are ours to calculate to fit. Same resolutions as ---- cable. No limits. Just a little more work. ;-) |
@bstott Tooth spacing is controlled by your belt choice, not by the design of your pulley. |
True and Not true. Only true to have the pulley mesh - but you do not require teeth on a pulley to mesh with every tooth that is in the circumference of the belt. You are only required to have the same multiple of spacing on the pulley as you do the belt. That is the idea. Example: Pulley interfaces with the belt every third or fourth tooth rather than every tooth. Maybe a belt has 20 teeth in the circumference and on the pulley only four with space of five in between. The objective would be to maybe have three belt teeth engaged at one time on the pulley. |
@bstott why would you not want to engage every tooth you can? This makes no sense. The purpose of teeth on the pulley meshing with those on the belt is not just to prevent slipping. It also acts as a self-correcting mechanism. Even if the diameter of the pulley is slightly off of the nominal value for the belt pitch and tooth count (within tolerances determined by the tooth profile), the belt will slip on the pulley to keep all of the teeth engaged with the pulley. Because of this, you can use the same pulleys with GT2 (2mm pitch) and MXL (2.03mm pitch) and the effective diameter of the drive gear will be different even though the pulley's actual diameter remains constant. |
@whosawhatsis With the two different belt pitches you note - they are not a perfect mesh and then would not be used as designed thus are not generally interchangeable but, may be close enough to likely work in nearly any application. The two belt designs may not fully seat properly on different tooth profiles. So slippage/backlash will occur as the belts are pressed to match an different profile. This is OK in a 'So What' use but, not if you need the precision, timing, and consistent power transfer. (Theoretical.) My thoughts were to eliminate one's restrictions to print resolutions allowed by the screw and open the choice for resolution through printing of various configured pulleys. Pulleys could then be easily swapped to attain a wide variety of print resolutions. You would not be restricted by the manufacturer of the screw hardware. Related note - We could use V-belt. No teeth. But, here design, manufacture, build, setup and other variables add to complexity of their use with our printers. That is why I suggest using a few less teeth.... |
@Lodran :-) Belt tooth spacing... Only if you are designing belts. How you use the available teeth on the belt is your choice by how you design your pulley. ---- I am telling you that we can design and print our own pulleys. :-P |
@bstott this is hardly the right forum to be discussing this in. |
We don't have any appreciable slip problems due to constant resistance (friction, weight, though there might be weight issues for belt-driven Z), but we do need high rates of acceleration, which are even more likely to cause slippage as we are fighting inertia. The positive interlock is important for this reason, and I still don't understand what benefit you hope to gain from using using only some of the teeth. A toothless belt, like the designs using spectra line, would have a resolution that can be tuned more finely, but they make it MORE difficult to calibrate the printer to that resolution because you have to finely measure the effective circumference rather than deriving it from mathematical principles, and you're sure to end up with a number that will result in more rounding errors than just using a 2mm-pitch belt. |
@ whosa... Take your focus off the belt. I told you the pulley is what you design and build. Anyway, I was told that I've taken discussion off topic - even though it is related to Z resolution.... I'll stop. bye. |
@bstott What you seem not to be understanding is that a toothed pulley, even if it only has one tooth, has to have an effective circumference that is an integral multiple of the belt pitch. If it isn't, the melt will slip when the pulley tooth meets the belt tooth, causing the position of the axis to jump. On a belt with smaller teeth spaced further apart, you might be able to have the belt teeth mesh with every second or third pulley tooth, but that would mathematically be no different from having a belt with 2x or 3x the pitch. |
What you don't seem to understand --- My idea is accurate. What you are thinking is too micro. Do not design belts - look at the geometry. You have a belt with teeth to grip it. Now, create something to grab it but, change the diameter/circumference. What do you do? You move the teeth of the pulley to match and grab the teeth. You have full control of this.... Pitch changes with circumference to match how many teeth you grab. Yes, it does have to be multiples of what the belt is designed to. Not a deterrent to ability to do but, a design constraint which does not hinder your choice of circumference. I too have had years of advanced math (Not used here.), engineering course work to degree, design, blue prints, career taking design to big production, production to customer in several big industries. This is not hard. It is simple. What you are not seeing is that the belt wraps around something. Ignore the design methodology as a constraint on your ability to do. The idea is not to follow to design like belts but, use what exists. That is how the FDM 3D printers took hot glue gun and 2D printer to industry revolution. You control the pulley and to a micron level. Just as the idler can be of any diameter. Draw it. It is simple. Weird example: You pull on rope in tug-o-war. The rope (belt) has knots (teeth). You are not restricted to which knots you pull (teeth) on nor how far you extend your arms (pulley circumference). In this case you can only grab two teeth (knots). Yet you control the resolution (how far you pull your opponent.) Cheers. I've nothing more to add to this good discussion. This wasn't for me to learn here. I was sharing what was a realization. --- Oh, whatsa... looking forward to your SD solution (there I learn) ... That will be fun to see you succeed there. bye, for now. |
If all you're suggesting is designing a pulley to be procedurally generated based on a desired diameter/circumference, with a script choosing the closest integer for the number of teeth that fit the circumference, I did that over 2 years ago for the Reprap Wallace. I still don't see what benefit you intend to gain from leaving out some of the teeth on the pulley. The OpenSCAD script I wrote for Wallace finds the number of teeth that will fit around the desired circumference, rounds it to the nearest integer and adjusts the diameter accordingly, then places that number of teeth around the pulley. |
Hi folks! In my opinion, the software Slic3r is a real software for real machines. ...enough philosophy... I want to "contribute" a minor bit to this discussion... There exists an effect, which was not mentioned before here. This effect occurs, if you have a chain, like a bike's chain. A short explain: Let us assume, that you have only a 6-teeths-pulley, then you generate a hexagon. If you dont let the belt "sit" only on the triangular/trapezoid teeths, you can take also the space between every tooth and try to approach a nearly circular shape. If you have much more load in relation to the mass of the belt, you will not have to consider any resonance and oscillation problems, because the resonance frequency value is much to high and the amplitude is much to less. Of cource you can try to set the "sleeping tension" much more higher, but the heeling stepper axle, normally used, will not withdraw the needed radial force. Please let me know, if there are some effects I did not consider! |
@jeder73 the reason the discussion is off topic is because it is being recorded in Slic3r's github. Follow the github issue link, read it in context, and you'll understand why. |
@Lodran: my understanding of this thread is the following: there is a feature request about slic3r knowing the z resolution for quantizing the layer height. The question is, if it also should know if there is a belt or a thread. If there is a belt here is the question if the three measures belt timing(tooth space), pulley teeth count and diameter are independent and therefore the new feature should handle all three or if is enough to handle only pulley teeth count and belt spacing... Don't you think it is like that? Do you think it is just another discussion about hardware design? |
I implemented this now. |
@alexrj @lordofhyphens I just tested the feature implemented in 53fee67 and have two remarks:
|
On machines with lead screws you have plenty of excess Z resolution, so you can afford to throw a lot away for better accuracy by avoiding part step positions. On a machine with a belt driven Z axis you can't and ironically that is where errors in microstepping or coil asymmetries are likely to be noticeable. |
In order to avoid banding in prints (particularly on printers like Up! which have belt driven Z), its necessary to adjust the layer height so that it aligns to the printer's Z axis step resolution.
If slic3r knew what the Z step resolution was, it could automatically adjust layer heights or flow rates to match the printer's characteristics.
The text was updated successfully, but these errors were encountered: