PulseInOut module disabling output temporarily

Hi,

I’ve been experimenting with the PulseInOut module to control RC servos and I can’t seem to be able to stop the PWM output once I’ve used the SetPulse method. I’ve tried giving 0 values to both “period_microsec” and “higtime_microse” parameters but this just sends invalid PWM values to the servos and they start shaking.

I want to stop the servos from buzzing once they reach their target positions. This can usually be done by simply interrupting the PWM signal but I can’t seem to be able to accomplish this with the PulseInOut module…

Any help appreciated, thank!


TH

From what I know, if you disable PWM then the servos are shut off and they will drift with slight pressure. RC controller PWM is always on IIRC.

Hi Gus,

In this case the drifting isn’t really an issue because of the mechanical advantage given by the gearbox. The buzzing noise however is an issue…

So is there any way of stopping the PWM output pulse once it has been started?

I’ve also tried assigning a null value to the PulseInOut object and creating a new instance on the same module port but the PWM output doesn’t appear to stop even when I do this…

Thanks!

Ok we will add this to the list. There is no ay to do this today.

The firmware on pulse in out is open if you are up to digging in C code and making the changes you need ot wait till we have it ready for you…in few weeks.

Great! I’ll have a look at it and see what I can do.

Many thanks!

Maybe the issue here is around “Dead bandwidth”. Came across this while reading around on servo control issues.

What is Dead bandwidth?
This is largely discussed for its advantages and disadvantages. Dead bandwidth is a way to say how accurate the servo holds its position. Suppose a servo has a dead bandwidth of 5us (microsecond) and a command is sent to center a servo (which is 1.5ms). Now what happens if the pulse changes from 1.5ms to 1.5ms + 3us? Since the dead bandwidth of a servo is 5us, nothing happens until the pulse is greater than 1.5ms + 5us.

This is a technique used by servo manufacturers to avoid servo dancing at its center position by telling it to stay in position until the difference between new command and old command is greater than dead bandwidth.