打印

讨论:51单片机对多个步进电机的控制

[复制链接]
5056|19
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
godwen|  楼主 | 2010-5-7 09:53 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
当前要做一个东西,主要功能是采用51单片机对4个步进电机控制,步进电机有驱动器驱动,单片机的任务是给出脉冲信号和方向信号。控制的要求是4个电机任意动作且相互不受影响。电机运行状态包括恒低速运行,低速启动-加速-恒高速-减速-停止。
现在我采用的是STC89C51RC,如果对每个步进电机只分配一个定时器的话,定时器个数不够,所以我就采用1个定时器来定时100us,低速时每8次中断为一个输出的脉冲周期(即7个100us内为高电平,1个100us内为低电平,低电平有效),高速时每进一次中断取反一次。
问题出现了:
1.加减速的曲线问题,因为采用这种固定定时的方式来加速的话,加速的频率会越来越快,比如当前情况从 7+1的低速 到 1+1 的高速,脉冲频率的各步为
1250
1428.571
1666.667
2000
2500
3333.333
5000

显然曲线很不理想
我用这种方式控制的时候,发现启动的时候还行,但是进入高速时电机一直伴随有啸叫,电机设置为400步/转,而且在高速进入减速的时候,电机会有明显的一顿的感觉,很明显。
2.采用这种方式的时候,感觉进入定时中断任务十分繁重,4个电机共16个状态(每个电机的恒低速,加速,恒高速,减速状态),还要对各个电机的各级步数进行加一或减一运算,对个电机的总步数进行加减运算,加减速时还要对各级的速度级数分析,我感觉100us的中断是不是不够用而引起的高速啸叫?单片机的晶振是11.0592MHz,但进入减速时的一顿是怎么回事,我仔细分析了这个进入减速的过程,发现程序控制应该是不会出现这个现象的。
3.对这个单片机的抗干扰能力的问题。我做实验的时候,电机,驱动器,单片机板子,电脑这些都在座子上,间距10cm左右吧,我用本本与单片机通讯发控制字的时候,发现单片机老是死机,=。=,有有经验的大大们给分析下吗,电机电源24V,大概在1m外引入驱动器,再接的电机,同样大概1m外,有电烙铁,焊台什么的

相关帖子

沙发
godwen|  楼主 | 2010-5-7 09:57 | 只看该作者
我找了些资料看,基本都是用改变装载定时值的方式来改变运行曲线,有用固定装载的方式控制过的吗?谢谢

使用特权

评论回复
板凳
godwen|  楼主 | 2010-5-10 11:05 | 只看该作者
up!

使用特权

评论回复
地板
happy_10| | 2010-5-10 14:11 | 只看该作者
固定装载的方式?

使用特权

评论回复
5
5880527| | 2010-5-10 16:31 | 只看该作者
用C8051F做过三个步进的速度处理,用它的可自动重装的定时器,还有PCA功能

使用特权

评论回复
6
godwen|  楼主 | 2010-5-11 09:48 | 只看该作者
固定装载的方式?
happy_10 发表于 2010-5-10 14:11


是的,固定装载的方式。因为同时这4个电机可能分别加速、减速、恒高速、恒低速状态呀。如果用改变加载值的方式的话,那么就需要4个TIMER?再加上串口通讯的话,需要5个TIMER?

使用特权

评论回复
7
godwen|  楼主 | 2010-5-11 09:50 | 只看该作者
用C8051F做过三个步进的速度处理,用它的可自动重装的定时器,还有PCA功能
5880527 发表于 2010-5-10 16:31

不太熟悉这个芯片,可以简单的介绍下吗?或者是给我E-MAIL,谢谢!
godwen#qq.com

使用特权

评论回复
8
undeadzhen| | 2010-5-11 10:36 | 只看该作者
STC89C51RC,还控制4个,练手的吧
加减速表太少了

使用特权

评论回复
9
5880527| | 2010-5-11 10:46 | 只看该作者
新华龙的C8051F310,虽然很多人说不好,但我用了几年,还不错,没一片出问题的。楼主的表象楼上说的,太稀疏了,电机转不动

使用特权

评论回复
10
godwen|  楼主 | 2010-5-11 11:32 | 只看该作者
咕~~(╯﹏╰)b,我的表的确很稀疏啊,但是驱动器可以在400-30000细分,这样是否可行呢?
我空载试验倒是能转 (400细分)。
你们在做实际东西的时候,一般脉冲频率步进是多少呢?对应的电机转速步进多少呢?

使用特权

评论回复
11
5880527| | 2010-5-11 11:45 | 只看该作者
网上有好多现成的例子,虽然不大好使,但大多数场合还是够了。我都不细分的

使用特权

评论回复
12
godwen|  楼主 | 2010-5-11 12:44 | 只看该作者
网上的例子都是修改重载值进行的啊,那样的话同时控制多个行不通,正在看C8051F的DATASHEET,希望能有收获:dizzy:

使用特权

评论回复
13
5880527| | 2010-5-11 12:54 | 只看该作者
你要先去下一个设置XX的软件,否则自己设置好麻烦,也容易弄错

使用特权

评论回复
14
godwen|  楼主 | 2010-5-11 13:15 | 只看该作者
什么XX ? 求详解,或名称。难道会被和谐?

使用特权

评论回复
15
5880527| | 2010-5-11 13:47 | 只看该作者
跟没关系哈,Config,管理那芯片的一软件

使用特权

评论回复
16
5880527| | 2010-5-11 13:48 | 只看该作者
晕,荷(花)螃(蟹)打不出来

使用特权

评论回复
17
godwen|  楼主 | 2010-5-13 20:45 | 只看该作者
重新用重载方式弄了个,尝试了下直线加速,效果明显好多了。
我看了下 C8051F,有的居然有5个定时器,太猛了吧?

使用特权

评论回复
18
lvqingfei| | 2014-5-20 08:41 | 只看该作者
用外置独立的计数器作为定时作用,单片机负责选通计时器以及向选通的定时器加载初始值。改变初始值可以改变计数器输出的脉冲频率,也就改变对应步进电机的转速了。这样其实用到了单片机的四根地址线和8根数据线。外加四根地址线可以控制电机的正反转哦。这样总共就占用了两个单片机IO口。

使用特权

评论回复
19
lvqingfei| | 2014-5-20 08:42 | 只看该作者
补充一下,这里的步进电机控制肯定得用硬件分配步进电机的导通项了,不可能用单片机软件分配了。

使用特权

评论回复
20
温故知新| | 2014-6-6 23:01 | 只看该作者
要控制这么多电机,还是用STC15F2K60S2吧,上33.1776晶振,快很多

使用特权

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

本版积分规则

7

主题

200

帖子

2

粉丝