步进电机可编程驱动控制器设计及例程
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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); //延时(括号内数值越小,电机转动速度越快) }
}/********************************************************