步进电机可编程驱动控制器设计及例程

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

步进电机可编程驱动控制器

【简要说明】

一、尺寸:长88mmX宽68mmX高35mm

二、主要芯片:AT89S52单片机、L298NL、298N(支持AT89S52编程)

三、工作电压:输入电压(5V~30V)输入电压的大小由被控制电机的额定电压决定。

四、可驱动直流(5~30V之间电压的直流电机或者步进电机)

五、最大输出电流2A (瞬间峰值电流3A)

六、最大输出功率25W

七、特点:

1、具有信号指示

2、转速可调

3、抗干扰能力强

4、具有续流保护

5、转速、转向、工作方式可根据程序灵活控制

6、可单独控制一台步进电机

7、根据需要自己编程可以灵活控制步进电机,实现多种功能;

8、可实现正反转

9、采用光电隔离

10、单片机P3口已用排针引出,可以方便使用者连接控制更多外围设备。

11、四位LED灯指示

12、四位按键输入(可以对AT89S52单片机编程实现任何控制)

13、核心控制芯片采用市场上最常用的AT89S52单片机,支持STC89C52单片机,控制方式简单,只需控制IO口电平即可!

14、采用独立编码芯片L297,不用在单片机程序里编程复杂的逻辑代码和占用单片机资源。

15、设计有程序下载口,可以实时编程实时调试。

16、芯片都安装在对应的管座上,可以随时更换芯片。

17、外部连线采用旋转压接端子,使接线更牢固。

18、四周有固定安装孔。

产品最大特点:可以对AT89S52单片机编程实现任意控制被控的直流电机或者步进电机。

适用场合:单片机学习、电子竞赛、产品开发、毕业设计。。。

注意啦:本产品提供例程(附带原理图以及说明!)

【标注图片】

【步进电机控制接线图】

步进电机的控制实例

步进电机是数字控制电机,它将脉冲信号转变成角位移,即给一个脉冲信号,步进电机就转动一个角度,因此非常适合于单片机控制。步进电机可分为反应式步进电机(简称VR)、永磁式步进电机(简称PM)和混合式步进电机(简称HB)。

一、步进电机最大特点是:

1、它是通过输入脉冲信号来进行控制的。

2、电机的总转动角度由输入脉冲数决定。

3、电机的转速由脉冲信号频率决定。

二、步进电机的驱动电路

根据控制信号工作,控制信号由单片机产生。(或者其他信号源)

三、控制步进电机的速度

如果给步进电机发一个控制脉冲,它就转一步,再发一个脉冲,它会再转一步。两个脉冲的间隔越短,步进电机就转得越快。调整单片机发出的脉冲频率,就可以对步进电机进行调速。(注意:如果脉冲频率的速度大于了电机的反应速度,那么步进电机将会出现失步现象)。

四、此板驱动步进电机测试程序

说明:以AT89S52单片机控制单元,C语言编程!

【测试程序】

/********************************************************************

汇诚科技

实现功能:正转_反转_减速_加速程序

使用芯片:AT89S52 或者 STC89C52

晶振:11.0592MHZ

编译环境:Keil

作者:zhangxinchun

淘宝店:汇诚科技

【声明】此程序仅用于学习与参考,引用请注明版权和作者信息!

*********************************************************************/ #include

#define uchar unsigned char

#define uint unsigned int

uchar Y=10; //初始化速度

/********************************************************

控制位定义

********************************************************/

sbit shi_neng=P1^0; // 使能控制位

sbit fang_shi=P1^1; // 工作方式控制位

sbit fang_xiang=P1^2;// 旋转方向控制位

sbit mai_chong=P1^3; // 脉冲控制位

sbit zheng_zhuan=P2^0; // 正转

sbit fan_zhuan=P2^1; // 反转

sbit jia_su=P2^2; // 加速

sbit jian_su=P2^3; // 减速

/********************************************************

延时函数

********************************************************/

void delay(uchar i)//延时函数

{

uchar j,k;

for(j=0;j

for(k=0;k<180;k++);

}

/********************************************************

加速函数

********************************************************/

void jia()

{

Y=Y-1;

if(Y<=1){Y=1;}//如果速度值小于等于1,值保持不变

}

/********************************************************

减速函数

********************************************************/

void jian()

{

Y=Y+1;

if(Y>=100){Y=100;}

}

/********************************************************

主函数

********************************************************/

main()

{

shi_neng=0; // 使能控制位

fang_shi=1; // 工作方式控制位

fang_xiang=1;// 旋转方向控制位

mai_chong=1; // 脉冲控制位

while(1)

{

if(zheng_zhuan==0){shi_neng=1;fang_xiang=1;}

if(fan_zhuan==0){shi_neng=1;fang_xiang=0;}

if(jia_su==0){delay(10);while(!jia_su);jia();}

if(jian_su==0){delay(10);while(!jian_su);jian();}

mai_chong=~mai_chong; //输出时钟脉冲

delay(Y); //延时(括号内数值越小,电机转动速度越快) }

}/********************************************************

相关文档
最新文档