打印
[51单片机]

求教关于单片机控制步进电机一些程序写法

[复制链接]
3169|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
long2022|  楼主 | 2014-1-13 19:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
   我想用单片机控制一个用步进电机带动的工作台,为了运行平稳,电机有个可以设定的启动速度,加速度,最大速度,根据工作台的螺距设定的步进当量或叫脉冲当量,
    1)工作台按照设定的加速度进行加速,若时设定的距离够长,那么电机将带动工作台按照启动-->加速-->最大速度运行-->按照加速度减速度到0。若是距离没这么长就按启动--加速--减速到0(这个过程中电机没有达到设定的最大速度)。
   2)我想让工作台用手动运行到一个坐标,然后单片机记下起点及这个坐标,然后可以自动走到这个坐
   这些天跟着网上的教程学51会简单控制电机了但是想实际用时却实在想不出,这个加速度,步进当量,以及坐标怎么写程序,求教高手指点

相关帖子

沙发
触觉的爱| | 2014-1-14 11:45 | 只看该作者
新手上路,单是加减速部分的体验,需要的时间是以月为单位的。另外,光想,只能是想想。动手实现只能证实行与不行。论坛上有这方面的**,可以搜索看看

至于第二点,应该是手动输入,然后单片机输出脉冲,并进行计算脉冲量。这样才能自动重复行程,否则就要加入传感器之类的

使用特权

评论回复
板凳
cjseng| | 2014-1-14 12:53 | 只看该作者
那个螺距叫做“导程”,脉冲当量就是多少个脉冲工作台移动1mm,比如导程是5mm,表示丝杆转一圈,工作台移动5mm,如果步进电机转动一圈需要200个脉冲,则移动1mm需要40个脉冲,即脉冲当量为40。以上这是在没有细分的情况下,如果有细分,比如8细分,则脉冲当量还要乘以8,即320个脉冲工作台移动1mm。
知道了工作台移动距离与脉冲数的对应关系,就可以通过对脉冲数计数来精确定位了,当然需要有一个基准,脉冲数为0的位置要固定,可以用一个传感器来检测这个位置,一旦传感器被触发,则将脉冲数清零。
至于加减速控制,要实现均匀加减速这个有点难,简单的办法就是走上几步,改变一下脉冲的频率(改变周期),多试几次,只要电机不失步再留点余量就行。

使用特权

评论回复
地板
long2022|  楼主 | 2014-1-14 23:57 | 只看该作者
最主要就是想知道这个可控制的均加速,真后悔上学时没有好好学习一下c

使用特权

评论回复
5
cjseng| | 2014-1-15 01:28 | 只看该作者
long2022 发表于 2014-1-14 23:57
最主要就是想知道这个可控制的均加速,真后悔上学时没有好好学习一下c

这个跟C没有多大关系,主要是算法,不过就单片机来说,想要均匀加速,基本上不可能,单片机的主频决定了产生的脉冲频率的变化不会是线性的。

使用特权

评论回复
6
创隆电子| | 2014-2-20 19:40 | 只看该作者
启动速度在200-500HZ,加减速控制在0.1-1.0秒,最大速度控制在9500HZ以下,关于需要发多少脉冲(脉冲当量),去网上搜索不脉冲当量的计算就可以了

使用特权

评论回复
7
很忙| | 2014-2-21 17:50 | 只看该作者
cjseng 发表于 2014-1-15 01:28
这个跟C没有多大关系,主要是算法,不过就单片机来说,想要均匀加速,基本上不可能,单片机的主频决定了 ...

跟C语言是没有什么关系,这个我也是这样认为的。但是说的不线性,那为什么不能用2个PWM口来做呢,控制口在PWM跟IO口直接切换。要动的那个口用PWM的占空比来控制速度,应该可以做到加速很线性啊。

使用特权

评论回复
8
cjseng| | 2014-2-21 23:46 | 只看该作者
很忙 发表于 2014-2-21 17:50
跟C语言是没有什么关系,这个我也是这样认为的。但是说的不线性,那为什么不能用2个PWM口来做呢,控制口 ...

步进电机速度只跟频率有关系,跟占空比没关系。

使用特权

评论回复
9
创隆电子| | 2014-2-22 21:14 | 只看该作者
频率决定速度,脉冲数量决定运转的圈数,这与占空比没有关系

使用特权

评论回复
10
申继鹏| | 2014-2-28 20:01 | 只看该作者
我也是,感觉学起来很吃力

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

8

主题

14

帖子

1

粉丝