图1
javascript:resizepic(this) border=0>
图2
javascript:resizepic(this) border=0>
这是一款四相五线步进电机,转子齿数按公式推算可得为8个,步距角应为11.25度,给出的资料那应该叫半步距角.其它的参数均可按照参数图中进行,电机可以用ULN2003A这个芯片来驱动,我决定先不看51hei官方提供的资料和实例程序,看凭自己的实力能不能让这个小东西转动起来,照着图2的连线图连了起来(那4个指示灯是我自己加上去的.方便观察)并且把P1.0,P1.1,P1.2,P1.3四个I/O口和51hei单片机开发板上的引脚对应,也就是插上了相应的双排针跳线帽和杜邦线,然后自己捣鼓了2个小时对照一些资料写了一个程序烧了进STC89C52RC上,上电......哪有一次就成功?折腾了一阵子发现是四个I/O口引脚接得不对,改正过来后,再上电........还是不成功,仔阵检查过硬件电路连接后发现没有错误,于是我怀疑起了程序来,经研究,发现此程序并不适合此电机及连线图,自己一时大意竟把原该输出负脉冲的相励磁脉冲顺序变成正的了,呵呵,改了一下之后,发现可以了.电机终于会转了...这时已是前天晚上的深夜3点多了...
由于此程序采用的是Delay函数进行延时来改变频冲频率的,因此我多次修改延时的确值,多次调试,发现电机无论怎么改,转速都很慢,最高测过只有十多转每分钟,我的天呀,怎么会这么慢,然后问一下别人,别人说有可能是电流不够,他说最好能采用独立电源来供电,但是由于未能找到独立电源,因此没有试验过电流增大的情况,查资料说是会使力矩增大,但应该不会使电机转得更快吧?更何况我的电机也没有失步呀....于是我又去问另一个师兄,师兄告诉我有可能是装了减速装置了,后来经仔细观察,从以下几点可以大概推断出电机是装了减速装置的:1.从图1实物图中可以看到电机的轴并不在圆形的正中心位置上,一般的只有经过减速装置的电机才会这样的;2.参数图中给出的参数中存在一个"减速比:1/16这个参数,确实证明了它是经过减速的,即:原来电机的轴转一圈,输出轴才转16分之1圈。想怎么会不慢?可惜我一开始先入为主了,以为那个“减速比”跟另外一个概念“调速比”的理解是差不多的(其实不一样),所以在看参数图的时候并没有醒悟过来,现在想来感觉自己相当的不行,做技术研究的,怎么能够说差不多呢?1就是1,2就是2,虽说当时是处于疑惑的状态,但归根究底还是自己先入为主地思考问题了,惭愧......3.仔细听一下声音,发现电机的声音频率是很高的,但输出轴的角速度却如此的低,因此有可能是经过减速装置的......当师兄跟我说有可能是经过减速的时候,我马上感觉到更不对头了.最后师兄还亲身拆了这电机来证实了,真的有减速装置...
了解了情况之后,觉得原来的程序写得不好,于是折腾了一阵子,写出了一个用定时器来产生脉冲的程序,而且还能利用开发板上的按键来改变电机的转速和方向,并且在数码管上进行显示,啊,感觉51的定时器还是蛮好用的....今晚也算是有收获的.这里给大家共享一下官方的电机的源程序:http://www.51hei.com/ziliao/51hei-5/精准控制步进电机.rar 可点击下载,简单修改程序可让电机正反转.好像在专区还有几个类似的程序大家自己去找吧.我自己写的太乱就不献丑了.
再后来去查了一下资料,发现原来步进电机的加速程序没有我想得那么简单(步进电机一般都是渐渐加速至正常运行的,太高的启动频率会使电机无法启动),我的想法是用线性加速的办法,而资料论文中提出的却是较高级的指数曲线加速的方法,还用到了转动惯量和微积分来进行分析,哎....现在想一下,其实高数和物理在这里还是有用的,数学和物理总是分不开的,假如想在步进电机控制这一领域做得深入,除了电路的基本知识要过硬外,数学及物理知识也跑不了的,这样说一来就是叫自己在大学的时间里要好好地学习高数了,可是实际上又有几个本科的学生可以知道原来学会高数和大学物理就是可以这样应用知识的?学校里(特别是南医大这种带工科类的医科学校)老师教的时候会和我们说的那么详细吗?显然不实际也不可能,可是大学四年时间就这样过去了,难道我们就这样让时间流走吗...
在步进电机这个小事上,我觉得,大学一两年里还是该把基础知识打好的...这样才能使自己在以后的技术职业生涯中不至于处处碰头,最起码到时还记得回来翻开高数的课本,找出无穷级数在哪一页吧?
当然,能一出来就做ARM的开发或者系统底层移植及驱动开发的,是相当的不错的了,因为那就意味着项目经验!!!如果自己决定要往这一方面走,就必须得有所舍弃了......