4
$\begingroup$

I just modified a servo to spin 360 degrees by taking out its potentiometer and replacing it with a voltage divider of roughly the same value. So when I use an Arduino, I have to send a pulse of about 2250 for the servo to be controlled. Anything a 1000 microseconds lower and it will just spin and won't respond and same for over a 1000. So what I want to do is to send a pulse from my Flysky receiver of more than 2000 microseconds. Is it possible and if so, how?

Receiver: FS-ia10b

Transmitter: Flysky FS-i6X

$\endgroup$
6
  • $\begingroup$ You could try changing the endpoints on your transmitter to be larger than -100% to +100%... not sure if that would work though. $\endgroup$ – ifconfig Aug 22 '20 at 0:09
  • $\begingroup$ Wait, what? you have an odd mix of numbers in your question... please clarify what you mean by "Anything a 1000 microseconds lower and it will just spin and won't respond and same for over a 1000. So what I want to do is to send a pulse from my Flysky receiver of more than 200 microseconds." $\endgroup$ – ifconfig Aug 22 '20 at 0:10
  • $\begingroup$ I need to make my receiver send more than a 2000 microsecond pulse. My servo works near 2250 microseconds. And yes I tried to change the endpoints. $\endgroup$ – DragonflyRobotics Aug 22 '20 at 0:47
  • $\begingroup$ I assume that means changing the endpoints didn't work? What happened instead? $\endgroup$ – ifconfig Aug 22 '20 at 1:19
  • 1
    $\begingroup$ I'm guessing that by 'spin 360 degrees' you mean continuious rotation, rather than just increasing the amount of rotation - as removing the potentiometer will prevent positiion sensing so it wont stop. Therefore if your R1 = R2, I would have thought the servo should be stationary when the pulse is at mid-range? Then turning one way when under mid-range and the other when over? So the pulse length shouldn't need extending, but you might need to tweak the mid-range trim slightly to find the zero point, to account for tolerance on your resistors. But perhaps I've misunderstood! $\endgroup$ – Kralc Aug 22 '20 at 20:33
5
$\begingroup$

I don't think that will be possible. The protocol for analogue radio was a 20ms packet, consisting of up to 9 pulses and a gap. So there were 10 things in a 20ms packet. The receiver would split each packet into 2ms blocks and send each block to a servo. Any pulse longer than 2ms would overlap the pulse for the next channel.

Obviously with digital radio, it's entirely possible to exceed this limit but I think it's unlikely that there will be an easy, built-in way to do it. Once you've set the end points as high as they'll go, I think that's all you can do.

You could use an Arduino to scale up the pulses you're getting from the receiver to the size you need for the servo. An Arduino Nano is a similar size and price to a servo, and easily able to handle that sort of task.

However I think you'd be better to look at why your servo needs such a long pulse. Presumably it worked OK before you modified it, so it should be able to work from a standard pulse. It's possible that you've damaged it during the modification, or that the resistance of your voltage divider is too different to the original potentiometer, or that you've connected it incorrectly.

$\endgroup$
1
  • 1
    $\begingroup$ This is great. Thank you so much! I will look into the resistor value and the Arduino solution. $\endgroup$ – DragonflyRobotics Aug 24 '20 at 14:57

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.