搜索
bottom↓
回复: 7

Arduino有没有好用的驱动步进电机(方向+脉冲)的库?

[复制链接]

出0入12汤圆

发表于 2019-2-11 18:25:13 来自手机 | 显示全部楼层 |阅读模式
如题,或者提供个加减速度算法也好。
Arduino用的是Stm32的小板子,TB价格在几块到十几块的那个板子,坛里有介绍,用起来非常爽。
步进电机是方向+脉冲的驱动器驱动的。

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

月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!

出0入0汤圆

发表于 2019-2-11 18:25:42 来自手机 | 显示全部楼层
marlin????

出0入0汤圆

发表于 2019-2-11 18:25:59 来自手机 | 显示全部楼层
另外,Arduino不是有step motor库么

出0入12汤圆

 楼主| 发表于 2019-2-11 18:30:37 来自手机 | 显示全部楼层
qiqirachel 发表于 2019-2-11 18:25
另外,Arduino不是有step motor库么

不清楚啊,我玩Aduino是大白。
是用 IO 驱动的 方向+脉冲 形式的吗?

出0入12汤圆

 楼主| 发表于 2019-2-11 18:34:35 来自手机 | 显示全部楼层
本帖最后由 kv2004 于 2019-2-11 18:48 编辑
qiqirachel 发表于 2019-2-11 18:25
marlin????


不知道marlin是啥
~~~~~

刚搜了一下,不是marlin

STM32F103C8T6最小系统板 单片机 核心板 STM32 ARM

出0入12汤圆

 楼主| 发表于 2019-2-13 14:02:12 | 显示全部楼层
找到两个库:
DMTimer 1.0.0
DMStepper 1.01
看人家写的相当规矩。
编译时候提醒AVR和ARM库兼容问题。我看了一遍程序,似乎没问题,都用的最基本的库函数。

他的加速度是固定的数值,和 坛子里的“直线”“正弦”加速度方式能走出“S“型速度曲线的算法,不太一样。
他的可能在开始时能走出”J"型。

对加减速度的调整的关键代码就这几句,没看明白算法:
加速:      speed = sqrt(currentStep * 2 * acceleration);
减速:      speed = sqrt((stepsToGo - currentStep) * 2 * acceleration);

简单解释一下,程序每发出一个脉冲,都会运行一次上面的程序,计算下一次脉冲,将要等到什么时候发出来。
currentStep 是 从运动开始计算,当前的脉冲序号。
stepsToGo  是 总共要运动的脉冲数量,全程脉冲的数量。
acceleration 是 一个固定值,加速度。
计算出来的速度,最终变成等待的间隔:
     periodUs = 1000000 / speedHz
调用micros()或者delayMicros(),到时驱动一下脉冲,就完成了对步进电机控制器的脉冲输出。

出0入12汤圆

 楼主| 发表于 2019-2-14 22:49:14 | 显示全部楼层
kv2004 发表于 2019-2-13 14:02
找到两个库:
DMTimer 1.0.0
DMStepper 1.01

DMTimer库里的isTimeReached函数似乎有问题:
bool DMTimer::isTimeReached(unsigned long currentTime, unsigned long interval){
  if(currentTime > _lastTime + interval)
  {
    _lastTime = currentTime;
    return true;
  }
  return false;
}
这个函数的目的是,过去记录的时间 加上 间隔,和 当前的时间相比,决定是否 时间到。
但如果“过去记录的时间 加上 间隔”,超过 U32 最大值,将会变成很小的数。

我改成:
bool DMTimer::isTimeReached(unsigned long currentTime, unsigned long interval){
  if(currentTime - _lastTime > interval)
  {
    _lastTime = currentTime;
    return true;
  }
  return false;
}

前提是interval参数不超过 U32的一半。
----

我改过的库函数,会不会在下一次更新时被冲掉?

出0入12汤圆

 楼主| 发表于 2019-2-15 10:53:19 | 显示全部楼层
本帖最后由 kv2004 于 2019-2-15 10:54 编辑
kv2004 发表于 2019-2-13 14:02
找到两个库:
DMTimer 1.0.0
DMStepper 1.01

用电子表格算了一下,速度是线性增加减少的:
libreOffice的电子表格:

本帖子中包含更多资源

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

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

本版积分规则

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

GMT+8, 2024-4-26 06:25

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

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