I want to understand the low level details please

My 4.1 is driving me insane. It seems like every time I try and use it on a project, it finds a new way to thwart me. It is very frustrating because I am approaching at as an appliance without understanding the details. I want to understand the gory details.

For instance, today the unit would not release tension after applying tension. What would cause the unit to simply refuse to play out a bit of belt on all 4 corners? What signal from what sensor (or value in firmware) would cause the unit to just ignore the request?

Also, when I tell the unit to retract all, it retracts only 3 belts, after a couple of reties, it retracts the 4th belt. Same question… what is telling the firmware to not drive that 4th motor?

1 Like

Dave Covert wrote:

For instance, today the unit would not release tension after applying tension.
What would cause the unit to simply refuse to play out a bit of belt on all 4
corners? What signal from what sensor (or value in firmware) would cause the
unit to just ignore the request?

There is a state status (shows at the top of the setttings popup) and some
buttons only work in some states. I think we are going to be finding that we
need to expand what states some buttons work in.

if it did nothing, not even a small amount (I sometimes have to hit release
tension a couple of time), then it’s probably in a state that doesn’t allow the
extend to work.

When you apply tension, it should switch to ready-to-cut state. If it doesn’t,
there is probably a message in the log explaining why it didn’t transition

Also, when I tell the unit to retract all, it retracts only 3 belts, after a
couple of reties, it retracts the 4th belt. Same question… what is telling the
firmware to not drive that 4th motor?

there are no sensors on the belts, it just applies power to the belts up until a
limit it hit. sometimes one arm is stiff and doesn’t move as well as the others.
If you increase the current limit, it should move more reliably (the other
option is to take things apart and figure out why that arm isn’t moving as well,
you may need to add lubrication, slightly sand it so it fits better, etc)

I am happy to dive into more details if you want.

David Lang

1 Like

Thank you sir. I know you have deep knowledge and appreciate you taking the time to reply.

Agreed. Why does it limit them anyway? I mean, if I have clicked ‘Release tension’ and it isn’t doing that, I would like to try ‘Extend all’. As you know, the current state machine doesn’t allow that transition.

Why is that? What is inhibiting the motors rolling out 20mm when you hit ‘Release tension’? Is the micro controller busy and doesn’t get the message? Or is the firmware checking some value and deciding ‘nope’?

So it will apply enough power to the motors to pull the belts stiff when taking up slack or moving but wimps out when retracting a loose belt? Are there different current limits for the various modes? One for tensioning/moving and one for retraction?

Dave

1 Like

Dave Covert wrote:

Thank you sir. I know you have deep knowledge and appreciate you taking the time to reply.

Agreed. Why does it limit them anyway? I mean, if I have clicked ÂĄRelease
tension¢ and it isn¢t doing that, I would like to try ¥Extend all¢. As you
know, the current state machine doesn¢t allow that transition.

extend-all only really makes sense from fully retracted, not if you are already
extended (for many frames, this would over-extend the belts)

so this is to a protection against getting yourself into trouble.

Why is that? What is inhibiting the motors rolling out 20mm when you hit
¥Release tension¢? Is the micro controller busy and doesn¢t get the message?
Or is the firmware checking some value and deciding ¥nope¢?

the system can’t “just feed the belts out 20mm”, the motor movement and encoder
movement are not directly coupled, the motor moves the spool, the belt runs the
encoder.

a given amount of motor movement can result in a different amount of encoder
movement depending on how much belt is on the spool and how tightly it’s spooled

a given amount of current to the motor will result in different amount of motor
movement depending on the amount of friction in the arm and tension on the belt.

when the motor runs, it’s very possible that the encoder doesn’t move.

if the belt is loose on the spool, telling the the motor to retract, the spool
will move and tighted the belt on the spool until it is fully wound before the
belt going through the encoder starts to move

if there is no pulling force on the belt, then running the spool out does not
move the encoder.

The maslow has a mode for the motor it calls ‘comply’ where it senses encoder
movement and then feeds the motor out to allow the movement to continue,
stopping when the encoder stops. When you extend the belts, this is the mode it
goes into, and the difficulty in getting the belts to start moving is that you
need to get the encoders to move first before the motors start to move. you need
to stretch the belt enough for the encoder to register movement.

I believe that relax tension uses something like that. I think it gives the
motor a tiny pulse, if there is enough tension to cause the belt to move a
measureable amount, it will move a little more

So it will apply enough power to the motors to pull the belts stiff when
taking up slack or moving but wimps out when retracting a loose belt? Are
there different current limits for the various modes? One for
tensioning/moving and one for retraction?

Yes, there are three different limits.

  1. there is a retraction limit that is used when you do retract-all
  2. there is a calibratino limit that is used to decide if you have pulled tight
    during calibration
  3. while cutting, there is a limit of 4000 at which point it decides that
    something is wrong (4096 is max possible power, so this is ~98% of max possible
    power)

also, these limits aren’t actual current measurements, the maslow doesn’t have
any way of measureing the current.

the maslow drives the motors with a PWM signal that is set with a PID loop. the
‘current limits’ are actually just how much the PID has had to ramp up the PWM
duty cycle. There was a change related to this in this last release (tweaking it
to be basing it on a running average IIRC)

ask away if you have more questions.

David Lang

3 Likes

Wow, that is some great stuff! Thank you!

Is this enforced by the firmware or by the html?

Why would it fail to release tension then? If the belts are tight and it gives the motor a pulse to let out a tiny bit, the encoder should see that. I am in horizontal orientation and I would expect it let out belt on the two lower belts until there is no more tension to move the encoder (ie compliant mode) and if you pull on them after that they act like you are in extend all but without needing to play out the entire extend all length.

And for that matter, why is there a length enforced on extend all? Why not just go into compliant mode and let the user pull out what they want and exit compliant mode when the user chooses to tension the belts?

Dave

1 Like

Dave Covert wrote:

Is this enforced by the firmware or by the html?

firmware, when switching to a state it checks if the current state is one of the
allowed ones.

Why would it fail to release tension then? If the belts are tight and it gives
the motor a pulse to let out a tiny bit, the encoder should see that. I am in
horizontal orientation and I would expect it let out belt on the two lower
belts until there is no more tension to move the encoder (ie compliant mode)
and if you pull on them after that they act like you are in extend all but
without needing to play out the entire extend all length.

currently release tension is just a short pulse of power, no follow-on. I don’t
know exactly, but I would guess that sometimes the belt is so tightly wound on a
spool that the first pulse releases some tension, but doesn’t make it slack,
just reduces the tension a bit.

And for that matter, why is there a length enforced on extend all? Why not
just go into compliant mode and let the user pull out what they want and exit
compliant mode when the user chooses to tension the belts?

in vertical mode, compliant mode with no limit will feed out until the router is
on the floor (and will feed out past the physical limits)

there was a request to make it so that you didn’t have to fully extend the belts
before being able to calibrate, but I think you still do to apply tension.

I ran into a case with pre-1.13 where when I tried to apply tension, it refused
to go into ready-to-cut because it decided it was ‘too far off of center’, but I
had to go looking in the logs to find that out.

David Lang

1 Like

Ah… so that is why it might need to be pressed several times, each press gets you a tiny bit more belt released.

A request where? On github?

New question… what exactly does the Stop button do?

Dave

Dave Covert wrote:

Ah… so that is why it might need to be pressed several times, each press gets you a tiny bit more belt released.

A request where? On github?

probably here

New question… what exactly does the Stop button do?

I’m not 100% sure. But stop is not something you ever want to hit. It will force
you into a state where you have to retract/extend the belts again (it won’t know
the belt lengths, even with the new code)

David Lang

2 Likes

It’s supposed to stop movement but is not reliable. Suggest you have a power button you can press to turn off power if anything goes wrong. It will mean you have to do the Retract, Extend, Apply Tension in either case.

2 Likes

Ok, ignore the Stop button… got it. :slight_smile:

Lubricate with what? Is white lithium grease ok? WD40?

What type of plastic are those parts made of?

Dave

The parts are polycarbonate except for the arms which are delrin so that they spin freely.

I think that a silicone lubricant is a good option

1 Like

More learn’n please.

I loaded 1.15 and attempted to calibrate. Here is what happened:
Extend All worked great, but while I was walking the belts out, my cell phone, which I was using to connect to the Maslow through my local wifi (not AP mode), timed out and locked the screen. When I was done extending and attaching the belts to their anchor points, I unlocked the screen and clicked on the ‘Please reconnect me’ button. Then I went into the setup dialog and clicked ‘Apply Tension’. The Maslow pulled all the belts nice and tight, but the other buttons never re-enabled (ie went back to green’). I closed the Setup dialog and noticed that the state was still Applying Tension.

I was now in a state where no other state was possible. So I restarted FluidNC thus putting the state into Unknown. Going into the Setup dialog again I was able to select Release Tension and the Maslow did respond by going into compliant mode on one arm for about 10cm. Tapping Release Tension again then put a different arm into compliant mode for 10cm. After four taps, each of the arms had given me about 10cm. I was then able to easy disconnect the belts and Retract All.

What would cause the Maslow to not exit the Apply Tension state after having pulled the belts ‘iron stiff’?

My Retraction Force is 1300 and my Calibration Force is 1200. Serial logs attached.

Dave

Maslow-serial.log (1).txt (3.6 KB)

Maslow-serial.log.txt (3.9 KB)

maslow (2).yaml (6.8 KB)

preferences.json (995 Bytes)

I have seen something similar to this on occasion. A refresh of the browser often fixes it. The Maslow has completed the change, but it’s not reflected on the browser.

3 Likes

Sorry for the delay in testing…

I increased the screen lock timeout on my phone so that I would have no more ‘Please reconnect me’ issues. My phone stayed connected the entire time. I still have the issue: my Maslow enters the ‘Taking Slack/Apply Tension’ state but never exits even though the belts are pulled tight. I see this in the log:

Extend All
[MSG:INFO: Extending all belts]
[MSG:INFO: Requesting state change from Belts Retracted to Extending Belts]
[MSG:INFO: Center coordinates updated in MaslowKinematics: X=2197.631 Y=1647.726]
[MSG:INFO: Succeeded]
[MSG:INFO: All belts extended to 2100.000mm]
[MSG:INFO: Requesting state change from Extending Belts to Belts Extended]
[MSG:INFO: Succeeded]
Apply Tension
[MSG:INFO: Requesting state change from Belts Extended to Taking Slack]
[MSG:INFO: Succeeded]
[MSG:INFO: Measured waypoint 0]
**[MSG:INFO: Unable to determine machine position]
[MSG:ERR: Failed to compute XY from lengths]
**
At this point I must restart FluidNC and Release Tension and retract the belts:
Retract All
[MSG:INFO: Retracting all belts]
[MSG:INFO: Requesting state change from Unknown to Retracting Belts]
[MSG:INFO: Succeeded]
[MSG:INFO: Bottom Left pulled tight with offset -1847.530]
[MSG:INFO: Top Left pulled tight with offset -1825.489]
[MSG:INFO: Top Right pulled tight with offset -1848.303]
[MSG:INFO: Bottom Right pulled tight with offset -1865.341]
[MSG:INFO: Requesting state change from Retracting Belts to Belts Retracted]
[MSG:INFO: Succeeded]

Any ideas why it won’t exit Apply Tension once it is no longer able to pull in any more belt?

Dave

Dave Covert wrote:

[MSG:INFO: Measured waypoint 0]
**[MSG:INFO: Unable to determine machine position]
[MSG:ERR: Failed to compute XY from lengths]

Any ideas why it won¢t exit Apply Tension once it is no longer able to pull in any more belt?

The messages above are the clue. It’s saying that the belt lengths it’s getting
and the anchor locations it has don’t work to compute a position.

what were the steps you took to get to where you were applying tension?

David Lang

Turn unit on and attach to the web UI, click setup, extend all, attach belts to the corners, apply tension.

That leaves it in a state where only Release Tension and Stop are enabled. Clicking Release Tension results in a message that says it can’t go from apply tension to releasing tension. That’s when I have to restart FluidNC to get release tension to function. Then I disconnect the belts and retract all. I repeated this loop 4 times in a row today, except I didn’t power off between retract all and extend all.

What triggers the exit from apply tension? I thought it might be when the magnets stop turning while applying retraction force current, but that doesn’t seem to be it.

I should mention that this is all being done with the default yaml file from v1.15. If I can get the apply tension function to work, Find Anchor Locations is next.

Dave

1 Like

Turn unit on and attach to the web UI, click setup, extend all, attach belts to the corners, apply tension.

What triggers the exit from apply tension? I thought it might be when the
magnets stop turning while applying retraction force current, but that doesn¢t
seem to be it.

the problem is that at the end of applying tension, it’s doing a sanity check to
see if the belt lengths are sane for the anchor locations. That test is failing
(the error message I pointed at earlier), and at that point the only thing you
can do is to do the full retract/extend cycle again.

But if your anchor locations are incorrect, you will run into the same error
again

I should mention that this is all being done with the default yaml file from
v1.15. If I can get the apply tension function to work, Find Anchor Locations
is next.

you need to do find anchor locations instead of apply tension.

David Lang

2 Likes

Ah… Ok… I am going to suggest a couple of UI/UX improvements then.

  1. When the belt length sanity check fails, don’t leave the unit in the apply tension state, unable to be recovered until a firmware reboot. Maybe put it into the Unknown state (which is accurate I think?) so that tension can be released.

  2. Thinking about future commercialization and customer support issue reduction, some users are going to do the same thing I have done; equating running a g-code file with running calibration and thinking that apply tension is appropriate before either. Perhaps set some value(s) in the yaml file to indicate that calibration is needed and disable the Apply Tension button until calibration has been completed successfully. Perhaps even set the values to require calibration when the issue above (failed sanity check) happens.

Dave

Reply to No 1.
Powering Maslow off and back on (and refresh browser) will let you release tension, then do a retract and extend. Part of the initial set up is to do a Find Anchor points, and I agree a comprehensive initial instruction would be useful for new operators as part of the putting it together. Those of us who have been using it for a while forget that steps which have been developed on the journey are not obvious when you are starting out.
Reply to No 2.
It is possible, by carefully measuring, to bypass the Find Anchors step, which some people have had more success with. Bar and David Lang and others have expended a huge amount of development time in getting this as automated as possible.

2 Likes