How to model a servo motor transfer function

Hello! So I got into this university project on an Acrome 2D Ball-Balancing (Ball and Plate system). The servos are linked through and Arduino to the computer. I have as an input the voltage of the ball with respect to the x axis and y axis. We, as a team, are actually trying to estimate the servo transfer function. We have got a couple of measurements to start with, in particular: the angular position in radians of the servo motor at a correspondent voltage. The servo motor model is a Hitec 5485HB RC Servo Motor. Thank you in advance for any help :)

 采纳的回答

If your lab has the System Identification Toolbox, it can be used for constructing or estimating the transfer function of the servomotor from the measured input-output data.
Read the paper: Virtual Torque Sensor for Low-Cost RC Servo Motors Based on Dynamic System Identification Utilizing Parametric Constraints
Else, find the relevant codes on FileExchange that do not requires the System Identification Toolbox. For example:

4 个评论

Thank you very much for your answer.
We imported a dataset with iddata with a 1800ish input/output measurements and we were able to estimate the transfer function V(s) [Volt applied to the servo] -> Theta(s) [angular position of the servo]
Good to know that it helped. 👍
I am sorry, I got another question.
The model identification app in MatLab was very helpful, the data was measured in this way:
V(S) (input), we manually collected all the voltages given in input by a potentiometer (letting it variate) and THETA(S) as an output (angular position of the motor in rad).
We got a 1800ish datas in vector with Sampling time 0.01s and obtained a transfer function of grade 1 (1pole/no zero) with a fitting of 97.4%.
The professor however told us that the measured we have obtained was not accurate due to the fact that the system is not excited.
We hence re-executed the measurements with a sine-sweep excitation of the system and we obtained again a 2000ish data for input/output and placed it into a model.
We are having troubles though, to evaluate a new transfer function (obtaining poor results such as 27.4%ish).
Do you know how we can properly evaluate a transfer function starting from this?
Thank you very much in advance.
Technically, the transfer function of a servomotor is given by
.
but because , the transfer function is usually approximated as a 2nd-order system to describe process behavior. Perhaps, try identifying from the sine-sweep input/output data using a 2nd-order model (a process model with 1 pole and an integrator).
For more details, pleasel check:

请先登录,再进行评论。

更多回答(0 个)

类别

帮助中心File Exchange 中查找有关 Linear Model Identification 的更多信息

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by