【问题标题】:online estimation of a servo motor transfer function伺服电机传递函数的在线估计
【发布时间】:2021-09-14 13:58:17
【问题描述】:

我正在尝试获得一个在线伺服电机传递函数,它是一个智能伺服电机,这意味着它具有位置反馈。 伺服电机反馈角度通过电位器从 0 到 300 度。 我正在使用 arduino,安装了伺服电机库,我正在使用串行通信协议控制伺服电机,并且我正在使用相同的协议获取伺服角度。 我正在发送 pwm 努力 0-1023 脉冲(转发)。 我想问一下simulink输入,我使用信号生成器作为输入,带有0-5v的可变信号,如附图所示。 如果我使用这个输入,我无法使用系统识别来估计传递函数,我得到一个非常低的拟合百分比,如附图所示。 有谁知道如何解决这个问题? 谢谢! 这是数字链接: https://github.com/Zaki23madrid/Images

【问题讨论】:

    标签: matlab arduino simulink


    【解决方案1】:

    系统识别是为了找到输入信号和输出信号之间的动态关系。有一些典型的信号来进行识别。其中最简单的是脉冲信号,一些伺服驱动器在其自动调谐过程中使用这种信号。对于高带宽伺服控制系统,通常采用“啁啾”信号。啁啾信号的幅度和频率都随着时间的推移而增加,从而可以在跨越频域中可能的工作区域的同时保持信噪比一定程度的稳定。

    也就是说,你的输入信号根本不适合识别。您可以非常轻松地从 Simulink 库中创建啁啾信号。即使是高达 100 Hz 的啁啾声也应该产生一个功能模型。此外,您可以使用 compare() 函数进一步检查您识别的模型,该函数向您显示识别的模型输出与实验数据的匹配程度。

    【讨论】:

    • 嗨,我在哪里可以找到这个 compare() 函数?
    • 嗨,你可以在这里找到它:mathworks.com/help/ident/ref/compare.html
    • 您好,我要比较一下电机位置是否正确(输出)?如果我错了,请纠正我。
    • 这取决于您希望如何为您的电机建模。例如,如果您试图获得输入扭矩与输出位置之间的关系,那么是的,您将比较输出位置。为了使用比较功能,您需要先创建一个 iddata 对象,您可以从那里按照文档中的步骤进行操作。 iddata参考以下链接:mathworks.com/help/ident/ref/iddata.html
    • 我正在尝试发送 PWM 信号来获取电机位置,我正在使用串行通信协议发送和接收伺服参数。对于啁啾信号块,频率目标时间设置为100HZ,目标时间为100s,初始频率为0.1HZ,此参数不开启伺服电机,我认为是因为啁啾信号的值较高1、不启动伺服电机....
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多