搜索
bottom↓
回复: 22

自制stm32运动控制器带伺服电机走固定位置调试短视频分享

[复制链接]

出0入0汤圆

发表于 2019-1-17 20:50:40 | 显示全部楼层 |阅读模式
本帖最后由 coleyao 于 2019-1-17 22:30 编辑

   经过一段时间的调试修改,自制的运动控制器(单片机采用stm32 M3)控制三菱伺服电机(含驱动器)走固定位置已经有了一点眉目:
     控制器运行采用PID加减速方式,尽管平稳效果不如正弦S曲线或其它S曲线,但在正常转速范围(1-4000rpm)内使用任意最高转速运行时都可以平稳运行。
     附件是走10mm(2圈)的运行视频和停止后捕捉的图片,从附件可以看出以3000转每分钟的速度转2圈时,实际转了2.0004999633圈,应该算是比较精确了;
     该运动控制器设计最高转速为4000转每分钟,因为伺服电机最大转速只有3000转每分钟,所以短视频是按3000转每分拍的;
     另外附图中cdX中的数据是从编码器读取出来的,编码器设为1000线,每个脉冲计数4次,所以一圈为4000脉冲。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

阿莫论坛20周年了!感谢大家的支持与爱护!!

如果想吃一顿饺子,就得从冰箱里取出肉,剁馅儿,倒面粉、揉面、醒面,擀成皮儿,下锅……
一整个繁琐流程,就是为了出锅时那一嘴滚烫流油的热饺子。

如果这个过程,禁不住饿,零食下肚了,饺子出锅时也就不香了……《非诚勿扰3》

出100入85汤圆

发表于 2022-10-10 21:48:47 来自手机 | 显示全部楼层
coleyao 发表于 2019-7-21 13:12
附件是两个位移模式下伺服电机运行的动画,因为文件大小限制,所以尺寸比较小不是很清楚,一个是最大速 ...
(引用自14楼)

能不能把函数实现代码删掉,分享下C++开发的工程结构

出0入0汤圆

发表于 2022-6-6 16:32:44 | 显示全部楼层
不错,学习啦!

出0入0汤圆

发表于 2021-8-30 15:25:29 | 显示全部楼层
请问楼主能分享一下源码吗现在只有视频呢

出0入0汤圆

发表于 2019-9-12 22:06:21 来自手机 | 显示全部楼层
支持一下!

出0入0汤圆

 楼主| 发表于 2019-9-12 11:59:22 | 显示全部楼层
yuyu87 发表于 2019-9-12 09:06
我有点没明白,不是自己写运动控制器么?咋还用电机自带的驱动器?如果说是只发脉冲,那加减速驱动器内部会 ...

  控制器只管发脉冲,驱动器主要用来提供功率驱动电机。在这里,控制器就类似PLC,驱动器就有点类似步进电机驱动器。

出15入186汤圆

发表于 2019-9-12 09:06:41 | 显示全部楼层
我有点没明白,不是自己写运动控制器么?咋还用电机自带的驱动器?如果说是只发脉冲,那加减速驱动器内部会处理的啊?

出0入0汤圆

 楼主| 发表于 2019-9-11 21:42:03 | 显示全部楼层
本帖最后由 coleyao 于 2019-9-11 21:44 编辑

   展示一下最新进展:VC#做了一个调试工具,通过TCP端口下发调试指令,可以控制电机运动,从RJ45收到的指令会转发到RS485总线上,与指令中ID一致的主板会响应调试工具下发的指令,如附件所示的录像中就是:
5B                //ID5的控制器指令起始
5Sx,10,100   //以最大速100圈每分转到10mm处
5Wx,10        //等待转到10mm处
5W1,1000    //等待1秒
5Sx,-10,100 //以最大速100圈每分转到-10mm处
5Wx,-10      //等待转到-10mm处
5W1,1000   //等待1秒
5Ju6           //跳转到上面第六条指令处(5Sx,10,100)
5E              //ID5的控制器指令结束
     目前按像步进电机一样完全按步数控制伺服电机有个问题,按步数走的距离和编码器实际反馈的距离差了2.5%左右,后面算法怎么调整,暂时还没想好!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2019-9-3 21:01:28 | 显示全部楼层
正好在做伺服项目,学习了

出0入0汤圆

发表于 2019-8-26 14:50:00 | 显示全部楼层
谢谢楼主分享~

出0入0汤圆

 楼主| 发表于 2019-7-21 13:12:25 | 显示全部楼层
本帖最后由 coleyao 于 2019-7-21 13:22 编辑

    附件是两个位移模式下伺服电机运行的动画,因为文件大小限制,所以尺寸比较小不是很清楚,一个是最大速度1000转/分从10mm的位置往-10mm的位置移动,停下时的位置是-1.9995圈(理论值为-2圈);一个是从最大速度100转/分从位移0mm移动到10mm的位置,停下时的位置是1.9995圈(理论值为2圈),目前测试的效果看起来还可以,不过只是自己测试,没经过实战检验。
   运动控制板是从之前的stm32F103移植到stm32F407的,单层板改成了双层,软件采用IAR C++,整体结构采用时间触发潜入式编写而成,移植的时候遇到了很多坑,最大的坑应该就是静态变量和静态对象与C++之间关系的处理了,这个网上资料很少,只能靠自己瞎琢磨,所幸的是最后都逐个解决了(C++在代码重用方面比C强了很多,比如这次从单网口改双网口,基本上只需要多定义一个对象,再把对象的主要执行函数作为一个任务/线程添加到程序里就好了)!
   实在是不会传动画,好不容易把Mp4文件转成GIF文件,结果上传后发现变成了静图了,最终还得传压缩文件!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2019-2-13 09:07:26 | 显示全部楼层
支持一下:Mark:自制stm32运动控制器带伺服电机走固定位置调试

出0入0汤圆

发表于 2019-2-10 08:15:47 来自手机 | 显示全部楼层
下载一个学习啦,感谢lz分享

出0入0汤圆

发表于 2019-2-9 18:30:42 | 显示全部楼层
支持一下

出0入0汤圆

发表于 2019-2-9 14:50:53 | 显示全部楼层
谢谢分享

出0入0汤圆

发表于 2019-2-9 14:29:24 | 显示全部楼层
厉害,也正在搞这个类型的项目,希望多学习一点

出0入0汤圆

 楼主| 发表于 2019-1-18 09:57:18 | 显示全部楼层
本帖最后由 coleyao 于 2019-1-18 10:42 编辑
Feeling_MCU 发表于 2019-1-18 09:34
大师,来堂公开课可好?


    其实就是个实践经验累积的过程: 一开始是分阶段加减速,运行不平滑,于是改成正弦S曲线,不过正弦S曲线平稳是够了,但需要查表,无法适应最大速度变动频繁的场合,于是就改PID加减速,但是PID加减速也有它的缺点,就是起步较快,加速度较大,如果要求不高可以将就,要求高的话可以再加一个窗口,限制PID加减速的起步阶段加速度(如附图所示,改进的PID控制方式与正弦或三角形加速方式实际加速度相差不大,此处反倒是改进型PID控制的最大加速度是最小的)。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2019-1-18 09:46:54 | 显示全部楼层
eyancool 发表于 2019-1-18 08:14
请教一下,相比发PWM脉冲,用PID做精确定位有何好处?实际应用中还很少见到这样做的. ...

用PID的目的应该是加减速需要,实现缓起缓停

出0入0汤圆

发表于 2019-1-18 09:46:39 | 显示全部楼层
觉得好像有用到的时候,^_^。

出0入0汤圆

发表于 2019-1-18 09:34:49 | 显示全部楼层
大师,来堂公开课可好?

出0入0汤圆

 楼主| 发表于 2019-1-18 08:27:49 | 显示全部楼层
eyancool 发表于 2019-1-18 08:14
请教一下,相比发PWM脉冲,用PID做精确定位有何好处?实际应用中还很少见到这样做的. ...

   PID做速度伺服可以走近似S曲线,并且设定的最大速度可以随意调整,不像查表法,一个表格只能对应一个最大速度。如果不作查表,一般的单片机实时运算能力不足(指只有单片机,不外挂FPGA或CPLD),此时伺服电机加减速就无法做到很大范围内平滑。比如我做的运动控制器,如果需要伺服电机按4000转每分运转,那么就是接近70转每秒,按1000线编码器计算,每秒接近28万个脉冲,即在几个微妙的时间内需要计算下一个脉冲的宽度,而且一块控制板还不止带一个伺服电机,显然72M的内部频率是不足以算得过来的(为了通用起见,很多参数需要设为实数而不是32位整数,一般的M3单片机浮点运算显然效率是不够的,M4没用过,估计好得有限)。

出0入0汤圆

发表于 2019-1-18 08:14:57 | 显示全部楼层
请教一下,相比发PWM脉冲,用PID做精确定位有何好处?实际应用中还很少见到这样做的.

出0入0汤圆

发表于 2019-1-18 00:18:49 | 显示全部楼层
支持一下
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-3-28 16:09

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表