微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 单片机与步进电机的控制

单片机与步进电机的控制

时间:11-30 来源:互联网 点击:
最近好长一段时间没有来51hei单片机网了,接近考试的日子越来越近,开始把时间转到考试的准备上了,这两天回过头来想想,应该有快半个月对单片机的学习没有什么进展了,不过我一直坚信,单片机学习的路上,只要你肯坚持,只要你肯吃苦、肯付出,再难的关也不是问题,当然,最近也深深地体会到,学习单片机如果有一个好的老师作为指导,那学起来就不用那么费劲了,不过也没有关系,很多东西,条件不好的时候,就需要自己去改变,去想想其它的法子。

这两天开始研究单片机与步进电机的控制问题,感觉真的很好玩,步进电机在工业的很多地方都有很大的应用,比如流水线的运转,智能小车,系统定位都有很大的用处。也是一个核心的技术。步进电机的控制主要是由单片机IO口高低电平的控制以及输出脉冲来控制其转速,达到了一种数模转换的效果。让单片机以并行二进制数转换成并行脉冲序列,并实现方向控制。只要是脉冲在步进电机允许的范围之内,每个脉冲将使步进电机转动一个固定的步距角度,根据步距角的大小及实际走的步数,只要知道初始位置,便可以根据计算知道其最终位置了。

步进电机转动时的驱动的电流比较大,所以在使用单片机控制的时候,要在中间加一个放大电路,或者加上一些常用的放大电流的芯片,比如人们很经常用的一个芯片ULM2003.只有这样才能够使步进电机转动,不然会因为电流太小而实现不了效果。

程序如下:
#include
#define uchar unsigned char
#define uint unsigned int
uchar num[]={0x01,0x02,0x04,0x08};
void delay(uint z)
{
uint a;
for(a=0;a;

}
void main()
{
uchar i;
uint j;

for(j=0;j<2045;j++)
{
{ P1=num[i];
delay(1200);
i++;
if(i==4)
i=0; }
}

while(1);
}
其中,z控制转速,j控制转的圈数,由计算和调试得出当j=2045时,步进电机走的圈数为1圈,这样,我们要步进电机走多少圈时,可以在里面嵌套一个程序,达到我们要电机转多少圈的目的。关于电机的参数打开http://www.51hei.com/mcu/73.html这个链接来查看.里面写得非常详细.

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top