Controlling a digital and analogue servo with one arduino uno

Hi everyone,

I am a novice that has just started. I would like to know if is possible to control a digital and analogue servo's rotation with one arduino uno. I saw that digital servos usually operate at a higher frequency than analogue servos and was unsure if there would be issues

Kind Regards
Johan

Hi, @johan09
Welcome to the forum.

Please read the post at the start of any forum , entitled "How to use this Forum".

I think you will find that you control either servo the same way and you can control more than one servo with an Arduino controller.

The digital reference is to how the motor of the servo is driven by the servos internal motor driver, the input servo controlling signal is still the same.

Tom... :grinning: :+1: :coffee: :australia:

Not always. Some digital servos accept a higher frequency of the pulses than every 20-22 milliseconds to achieve a higher repsonsiveness. (10-11 milliseconds).

Anyway these digital servos should work with the standard 20 milliseconds frequency. For downwards compatibility.

If it doesn't accept the standard 20 millisconds it will be possible to program a higher frequency. As long as you don't want to have 3 or or even more servos each supplied with a different frequency it will be possible to do that.

best regards Stefan

@TomGeorge Thank you for the response and apologies for not reading the forum, I will do so going forward.

Dear Stefan

Thanks for the response. If possible, can you elaborate further on the 1st paragraph? Is it that a digital servo can receive shorter length pulses compared to an analog servo? or that if one were to send the same signal length to both an analog and digital servo, the digital servo would somehow output shorter pulses like the image below and move faster?

Hi,
What is the source of the diagram?
Can you post a link to the article please?

Thanks.. Tom... :grinning: :+1: :coffee: :australia:

standard-servo signal is a short pulse every 20 milliseconds.

the "faster" -servo signal is a short pulse
where the short pusle has the exact same length as the standard-servo-signal

but the short pulse is not repeated every 20 milliseocnds but repeated every 10 milliseconds

image

best regards Stefan

1 Like

Hi, sure. The Difference between Analog and Digital RC Servos - (radiocontrolinfo.com)

Hi,
The diagram in post #5 shows the pulses used to control the motor, not the control signal to the servo input.
Analog servos use a lower drive frequency than digital servos.
The video accompanying that article does explain this.

Tom.... :grinning: :+1: :coffee: :australia:

Hi,
To be honest, I am still abit confused about the difference between the control signal to the servo input and the pulse used to control the motor. I had thought they were the same. I will watch the video again for clarity.

Hi,

The signal from the controller to the servo, signals the angle required of the arm.
The servo internally, reads this angle, then compares it to the angle that the servo is presently at.
The servo position is read from a potentiometer connected to the servo shaft.
The internal controller in the servo then determines how to move the motor, clockwise or anticlockwise, depending on the two values.
The digital reference is to the internal servo controller and how it processes the two inputs and makes the output to the motor.

Tom... :grinning: :+1: :coffee: :australia:

Thank you for the detailed explanation!. To confirm my earlier confusion, the control signal sent to both an analog and digital servo would be the same. The difference between them would lie in how the digital servo processes this control signal into high frequency pulse width cycles that seem to be commonly >300Hz

No. The wire connected to the microcontroller send one and the same signal to analog and to digital servos.

two kinds of differencies:
Kind 1:
The digital servo is able to "understand" a higher frequency on this wire but can deal with the lower frequency too.

kind 2:
is something that happends completely inside the digital servo and can't be changed by you.
the technology used to drive the servohorn to a position is different. This is what is "digital" on a digital servo"

For feeding in a signal into a servo you always use the same standard-servo-signal.
As long as you don't need real high performance where high perfomance means servo horn has to reach its endposition within 0,1 seconds instead of 0,3 seconds the standard-servosignal is absolutely sufficient.
best regards Stefan

Thanks for the response. My apologies, I don't seem to grasp how they understand a higher frequency on this wire.

Actually for the last point, I think the fast performance would be factor on my end. I part of a team designing a fast response, servo actuated thrust vectoring system for a rocket. My part is servo selection and flap design, not quite the programming behind it. One part of it is seen below.

So if fast reaction is really needed I would go for digitalservos for everything with the most high "feed-in-frequency" available on the market. At least digital servos that all accept the same frequency.

And to make sure that your system can react as fast as possible not to use an 8bit 16 Mhz Arduino but a 32bit 600 MHz Teensy 4.0 which is even faster than the pure frequency ratio because it is 32bit with build-in hardware floating-point operation-support. Which means it is 100 times faster.

https://www.pjrc.com/store/teensy40.html

It can be programmed using the Arduino-IDE with some additional installations provided by the manufacturer
best regards Stefan

Thank you for the insight! I will inform them about alternatively implementing a Teensy microcontroller.

So far my selection of available digital servos in my country are seen below:

Aerial Concepts - Servo & Accessories,

CMC Hobbies?route=radio-gear/servos/savox-1251-mg-black-edition&limit=100

CYS-S3019-MG-Specification.pdf (cysmodel.com)

some more thoughts:

If you are developing a servo actuated thrust vectoring system for a rocket you will need sensors that measure the direction of the gravity-vector (g-force) and rotational speed. (gyro)
I have not used such sensors yet but I'm very sure that the speed with which these sensos can deliver values will vary a lot depending on the interface they have (I2C or SPI) and of what quality they are. So maybe these sensors are the "bottle-neck" for the responsivess of such a system.

best regards Stefan

Thank you for the advice! We have the MPU650 so far for the gyro

the datasheet I found here

states

Communication with all registers of the device is performed using either I2C at 400kHz or SPI at 1MHz
(MPU-6000 only). For applications requiring faster communications, the sensor and interrupt registers may
be read using SPI at 20MHz (MPU-6000 only)

I have no idea if a 400 kHz I2C-bus is fast enough. You seem to be in the design-phase of your project.
So you should evaluate what is the fastest rate of values you can get out of the device. And then to analyse if this is fast enough.

I guess this is a quite challenging job to do. But you should spend some thoughts on it before starting to build a prototype.

A 1 MHz and even more a 20Mhz SPI-bus is sensitive to electromagentic noise so the wiring or PCB-design should be done carefully

I want to emphasize: it might be completely sufficient to use a 400 kHz I2C bus but you should check it.

best regards Stefan

Hi,
I hope your team ahs been looking at BPS SPACE YouTube channel.

Thanks.. Tom... :grinning: :+1: :coffee: :australia: