• 利用网售的PID调制工具配置电机PID参数


    STM32F103C8代码:

    https://github.com/MontaukLaw/PID_Control_With_STM32F103

    套件购买地址:

    https://item.taobao.com/item.htm?spm=a1z09.2.0.0.lbDUDR&id=532496279494&_u=s124ig7aecc

    电机购买地址:

    https://item.taobao.com/item.htm?spm=a1z09.2.0.0.lbDUDR&id=20965620027&_u=s124ig777dc

    这个系统, 总体来说就是利用上位机的图形, 去直观的修改pid值, 通过pwm输出控制电机转速.

    1. 我使用了套件里面的评估板, 跟在别的地方买的冯哈勃电机, 带垃圾减速器,加垃圾编码器, 修改店家提供的源码, 通过这个叫MiniBalance的上位机程序, 可以直观的看到当前速度跟目标速度, 甚至当前的pwm.

    2. 电源使用12伏供电, 速度的采样周期大约是10ms, 但是上位机最多只有20hz的速度, 所以看到的速度变化最快也就是50ms.

    3. pwm的调制周期是5ms, 使用增量式调节, 公式是...算了, 自己去看github代码注释吧, 直接粘贴不了.

    4. P.I. 这两个系数,是我研究了一会儿, 慢慢的出来的, 最后出来的曲线如上图, 以及文章最后的图:

    5. 其实我很早就有这种想法, 利用串口把当前的速度啊, pwm啊, 设定值之类, 传到上位机, 然后用Java写个上位机程序, 方便PID系数的整定, 但是后来一直没接触到这类应用, 这次算是用一天时间解决一个问题.

    6. 剩下的问题就是, 思岚的STM32示例代码里面的PID算法是位置式的, 可能需要修改这部分代码.

    7. BB Ver 3.0上面的PID算法可能也需要修改.

    8. 套件的电机驱动板上的编码器接口丝印, 信号引脚A0跟A1, 跟实际所使用的引脚PA0跟PA1是反过来的, 这点需要注意, 浪费了我一个小时.

    9. 值得注意的是, 这个case中, PWM的输出量, 最大是3600, 而速度值, 在10ms下面, 如果不除一下或者换算成实际单位,毫米或者米之类, 10ms的编码器脉冲在12伏, PWM~100%下可能有1300次脉冲, 所以, Kp跟Ki很小, 稍微大点就会跑到最大值, 回不来了...

    10. 图中的显示值都除了10, 因为minibalance这个上位机程序只能保留小数点前面3位.

    PS: 另外, PWM调制之后, 这个电机可能出现高频啸叫, 原本的调制周期是10K, 后来改成20K, 啸叫消失了...算是意外收获吧.

  • 相关阅读:
    docker 安装 mysql5.7
    docker 安装 redis
    docker 安装 gitlab
    docker 升级到新版本
    logstash 采集springboot 错误日志配置
    图片左下角添加水印
    frida动态修改
    反反frida调试
    IDA插件KeyPatch直接在IDA中修改arm指令
    frida调用制作dex(用于有些对象读取不了)
  • 原文地址:https://www.cnblogs.com/Montauk/p/7091903.html
Copyright © 2020-2023  润新知