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

2 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: