Skip to content
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

SoftStart does not work. #7

Open
zadacka opened this issue Mar 16, 2021 · 2 comments
Open

SoftStart does not work. #7

zadacka opened this issue Mar 16, 2021 · 2 comments
Labels
type: imperfection Perceived defect in any part of project

Comments

@zadacka
Copy link

zadacka commented Mar 16, 2021

I've spent multiple hours trying to get the Braccio.begin() soft start to work, but cannot get it to behave as documented.

With the default values the arm will twitch around, but not actually lift off the table (if started lying flat). Then the start period will elapse and the arm will suddenly jerk into place.
With non-default values (wondering about the mystery "the sum should be 530usec" values!) things aren't any better.

We can't get the initial position from the servos without additional hardware (the servo .read() returns the last written value, or a default of '93').
We can't easily "park" the arm to a known position because it will generally collapse under its own weight when powered off. The counterbalancing springs do seem to let it remain completely vertical - which looks maximally unstable but is in fact my current approach for a smooth start!

Is something broken in my Braccio (has anyone gotten 'soft start' to work as described)? Or is all of this 'soft start' / SoftwarePWM stuff just a complete red-herring? From the many, many questions about this on Arduino.cc I suspect the latter ... but would love to be proven wrong.

Any pointers would be very welcome, please!

@per1234 per1234 added the type: imperfection Perceived defect in any part of project label Mar 16, 2021
@pnndra
Copy link
Contributor

pnndra commented Mar 25, 2021

Hi @zadacka as you correctly say the issue is that there's no way to read servo position. servos basically are either idle or set at a precise position so what's happening for you is that when you start your code the motors will switch from idle (no PWM at their input) to a given position (set by PWM). since the given position will always be different from the position you left your braccio at, initially there's no way you can avoid this other than setting an initial position that is the same of the idle position you manually place braccio on.
soft start is somehow trying to address this but not having a crystal ball we can't know the intial position and we can only assume one.

@zadacka
Copy link
Author

zadacka commented Mar 25, 2021

Right - I completely get what you say about servo motor operation.

The Braccio documentation and the library code both indicate that there is a mechanism to cope with this ‘unknown amount of movement to a start location’. The explanation is that a ‘soft start’ mechanism exists in order to turn the servo motors on in a slow (low voltage) way so that they gradually move to the target. Wherever that target may be.

However.... even though this ‘soft start’ has been implemented ... and documented ... it does not work!

I was wondering if I am doing something wrong, or if this is a known problem with Braccio. As far as I am currently aware (based on my own and other developers’ experiences) this is a limitation of the Braccio hardware. You can try to ‘soft start’ it however you want from the software (via setting the ‘soft start’ pin high/low) but it will never work. The fact that the documentation and library claim otherwise is a bug.

Does this additional explanation make sense?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
type: imperfection Perceived defect in any part of project
Projects
None yet
Development

No branches or pull requests

3 participants