Belgium
Asked — Edited

Division Of Labor Between Ebz Controller And Pc When Slowly Moving Servos

Assume I do a slow servo move from 0 to 100 which takes a few seconds. How does this work "behind the scenes" ? Am I right that the PC will sequentially send each individual position over wifi, and spread their timing to achieve the desired speed, rather than offload the entire instruction sequence to the EZB to be executed locally? If so, is there any feedback from the ezb controller to the PC to acknowledge it received the last command and does the PC wait before sending a new one? Or is the pc just sending each position on the assumption it will be received for as long as the board is connected?

Reason Im asking: Im seeing some occasional violent jerking where the head of my inmoov moves at full speed, despite all my attempts to limit the speed. My theory is that this is due to the EZB being busy or the wifi being unresponsive/briefly encountering a high latency spike for a short while, and the EZB software just keeps sending its sequential positions assuming they are executed, but when they are not for like half a second or so, this results in a full speed movement to "catch up".

If my assumption is correct, is there anything I can do about this? Like offload the entire slow movement sequence to the ezb so it can execute it autonomously without help and without persistently low latency connection to the PC?

Also, still based on the same assumption, stepper motors would be out of the question without a separate microcontroller?


ARC Pro

Upgrade to ARC Pro

With ARC Pro, your robot is not just a machine; it's your creative partner in the journey of technological exploration.

PRO
Synthiam
#17  

My response isn’t regarding steppers. I didn’t mention steppers because you’re already on the right track by offloading the work to a more appropriate micro that accepts instructions from the ezb - via uart is a good idea.

Ezb wasn’t designed to be a PID

#18  

Quote:

Anyway, this thread can be marked "solved", but if there is a button to do that, I cant find it

On threads that are marked "need assistance" when created, you can mark them solved and credit who solved it. That person currently gets $10 in EZ-Robot store credit, which is nice, but for obvious reasons DJ removes the Needs Assistance flag for some threads that don't fit the criteria or are incredibly simple to answer. You certainly don't need to flag the threads to get a lot of responses and discussion.

Alan

Belgium
#19  

Quote:

My response isn’t regarding steppers. I didn’t mention steppers because you’re already on the right track by offloading the work to a more appropriate micro that accepts instructions from the ezb - via uart is a good idea.

Why not though? If the hardware is up to it, and I think it is, and you can afford an extra interrupt, then a minimum working solution could be the firmware accepting a command like "send x pulses with y duration at a Z microsecond interval ". Ok, and probably two extra parameters to ramp up/ down the interval to achieve simple linear acceleration/deceleration control as most steppers cant be run at speed instantly. If we have that, then latency is no longer a concern, and for most stepper applications the rest could be done in ezscript or using plugins.

Similar code might also be useful for servo control in some situations and probably for other stuff...

PRO
Synthiam
#21  

Not designed for that. No need to burden an expensive ezb to repeatative boring tasks that a $2 Arduino can do

Belgium
#22  

Quote:

Here are a couple of threads about stepper control.

Thanks, but that thread just kind of proves the point that you cant properly use stepper motors without ezb firmware support, unless you want choppy movement and/or single digit rpm speeds, and you can wonder why you would use steppers then in the first place. And I bet even that setup would fail if any significant load was put on that stepper because it lacks any speed ramping.

To give you an idea, here is a project I did last year with a tiny (micro) stepper motor :

To achieve that level of acceleration and smoothness, I had to use 12x microsteps per step, times 315 steps per turn for the motor which means almost 4000 microsteps per turn. At, say, just 60 RPM that means ~4000 steps per second or 0.25ms between steps. Of course, many stepper motor application will not need to be so fine, but they will often need to achieve much more than 1 turn per second so the timing issue is similar and you can imagine that becomes problematic when network latency is 10 to 100x higher than the step time, and if you dont have control over interrupts ensuring the steps are delivered at exactly the right time.

PRO
Synthiam
#23  

That’s a perfect usecase for a $2 Arduino. Love it! Have it receive commands to move via uart from the ezb

#24  

Arduino stepper sub controller:)