L297L298芯片混合式步进电机驱动器设计原理图及例程.docx
- 文档编号:12746569
- 上传时间:2023-06-07
- 格式:DOCX
- 页数:18
- 大小:971.43KB
L297L298芯片混合式步进电机驱动器设计原理图及例程.docx
《L297L298芯片混合式步进电机驱动器设计原理图及例程.docx》由会员分享,可在线阅读,更多相关《L297L298芯片混合式步进电机驱动器设计原理图及例程.docx(18页珍藏版)》请在冰点文库上搜索。
L297L298芯片混合式步进电机驱动器设计原理图及例程
【简要说明】
一、尺寸:
长71mmX宽43mmX高28mm
二、主要芯片:
L297、L298N
三、工作电压:
控制信号直流4.5~5.5V;电机电压直流5V~30V
四、最大工作电流:
2A
五、额定功率25W
六、特点:
1、具有电源指示。
2、转速可调
3、抗干扰能力强
4、具有续流保护和过电流保护
5、可单独控制一台步进电机
6、可控制两相和四相步进电机
7、可控制直径在42mm内的任何,两相和四相步进电机
适用场合:
单片机学习、电子竞赛、产品开发、毕业设计。
。
。
【标注图片】
【步进电机控制接线图】
步进电机的控制实例
步进电机是数字控制电机,它将脉冲信号转变成角位移,即给一个脉冲信号,步进电机就转动一个角度,因此非常适合于单片机控制。
步进电机可分为反应式步进电机(简称VR)、永磁式步进电机(简称PM)和混合式步进电机(简称HB)。
一、步进电机最大特点是:
1、它是通过输入脉冲信号来进行控制的。
2、电机的总转动角度由输入脉冲数决定。
3、电机的转速由脉冲信号频率决定。
二、步进电机的驱动电路
根据控制信号工作,控制信号由单片机产生。
(或者其他信号源)
三、控制步进电机的速度
如果给步进电机发一个控制脉冲,它就转一步,再发一个脉冲,它会再转一步。
两个脉冲的间隔越短,步进电机就转得越快。
调整单片机发出的脉冲频率,就可以对步进电机进行调速。
(注意:
如果脉冲频率的速度大于了电机的反应速度,那么步进电机将会出现失步现象)。
四、此板驱动步进电机测试程序
说明:
以AT89S52单片机控制单元,C语言编程!
【接线图】
【测试程序】
/********************************************************************
汇诚科技
实现功能:
正转_反转_减速_加速程序
使用芯片:
AT89S52或者STC89C52
晶振:
11.0592MHZ
编译环境:
Keil
作者:
zhangxinchun
淘宝店:
汇诚科技
【声明】此程序仅用于学习与参考,引用请注明和作者信息!
*********************************************************************/
#include
#defineucharunsignedchar
#defineuintunsignedint
ucharY=1;//初始化速度
/********************************************************
控制位定义
********************************************************/
sbitshi_neng=P1^0;//使能控制位
sbitfang_shi=P1^1;//工作方式控制位
sbitfang_xiang=P1^2;//旋转方向控制位
sbitmai_chong=P1^3;//脉冲控制位
sbitzheng_zhuan=P2^0;//正转
sbitfan_zhuan=P2^1;//反转
sbitjia_su=P2^2;//加速
sbitjian_su=P2^3;//减速
/********************************************************
延时函数
********************************************************/
voiddelay(uchari)//延时函数
{
ucharj,k;
for(j=0;j
for(k=0;k<180;k++);
}
/********************************************************
加速函数
********************************************************/
voidjia()
{
Y=Y-1;
if(Y<=1){Y=1;}//如果速度值小于等于1,值保持不变
}
/********************************************************
减速函数
********************************************************/
voidjian()
{
Y=Y+1;
if(Y>=100){Y=100;}
}
/********************************************************
主函数
********************************************************/
main()
{
shi_neng=1;//使能控制位
fang_shi=1;//工作方式控制位
fang_xiang=1;//旋转方向控制位
mai_chong=1;//脉冲控制位
while
(1)
{
if(zheng_zhuan==0){fang_xiang=1;}
if(fan_zhuan==0){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);//延时(括号内数值越小,电机转动速度越快)
}
}
/********************************************************
结束
********************************************************/
【应用原理图】
L297_L298芯片混合式步进电机驱动器元件清单
序号
名称
标注名
型号
封装
备注
1
电阻
R1、R3
1K
贴片0805封装
2
电阻
R2
3.9K
贴片0805封装
3
电阻
R4、R5
0.5欧姆
直插2W
4
电阻
R6
22K
贴片0805封装
5
电容
C1
25V0.22uf
直插电容
6
电阻
C2
50V100UF
电解电容
7
发个二极管
DS1
红色二极管
区分正负极
8
整流二极管
D1~D8
IN4007
9
芯片
U1
L297
20P直插
10
芯片
U2
L298
11
排针
P1
6针
12
端子
6针
【图片展示】
/********************************************************
实现功能:
正转程序
使用芯片:
AT89S52
晶振:
11.0592MHZ
编译环境:
Keil
********************************************************/
#include
#defineucharunsignedchar//字符型宏定义
#defineuintunsignedint//整型宏定义
uchartt;//定时器计数初值定义
uintsec;//速度值定义
ucharY=30;//初始化速度
/********************************************************
控制位定义
********************************************************/
sbitshi_neng=P1^0;//使能控制位
sbitfang_shi=P1^1;//工作方式控制位
sbitfang_xiang=P1^2;//旋转方向控制位
sbitmai_chong=P1^3;//脉冲控制位
sbitzheng_zhuan=P2^0;//正转
sbitfan_zhuan=P2^1;//反转
sbitjia_su=P2^2;//加速
sbitjian_su=P2^3;//减速
/********************************************************************
延时函数
*********************************************************************/
voiddelay(uchart)
{
uchari,j;
for(i=0;i { for(j=13;j>0;j--); {; } } } /******************************************************************** 定时中断服务函数 *********************************************************************/ voidt0(void)interrupt1using0//定时中断服务函数 { tt++;//每过250usttt加一 if(tt==1)//当tt满足条件时 { tt=0;//计满重新再计 sec++; if(sec==Y)//括号内数值越小,电机转动速度越快 { sec=0;//计满重新再计 mai_chong=~mai_chong;//脉冲输出 } } } /******************************************************** 初始化 ********************************************************/ voidinit() { TMOD=0x02;//定时器工作在方式2 ET0=1; EA=1; TH0=0xFF;//对TH0TL0赋值 TL0=0xFE; TR0=1;//开始定时 sec=0; mai_chong=1;//脉冲控制位 } /******************************************************** 加速函数 ********************************************************/ voidjia() { Y=Y-2; if(Y<=1){Y=2;}//如果速度值小于等于1,值保持不变 } /******************************************************** 减速函数 ********************************************************/ voidjian() { Y=Y+2; if(Y>=100){Y=100;} } /******************************************************** 主函数 ********************************************************/ main() { init();//程序初始化 shi_neng=0;//使能控制位 fang_shi=1;//工作方式控制 fang_xiang=1;//控制方向为正转 while (1) { if(zheng_zhuan==0){delay(100);shi_neng=1;fang_xiang=0;} if(fan_zhuan==0){delay(100);shi_neng=1;fang_xiang=1;} if(jia_su==0){delay(10);while(! jia_su);jia();} if(jian_su==0){delay(10);while(! jian_su);jian();} } } /******************************************************** 结束 ********************************************************/ keil参考程序正转_反转_加速_减速_高速 #include #defineucharunsignedchar #defineuintunsignedint ucharY=1;//初始化速度 /******************************************************** 控制位定义 ********************************************************/ sbitshi_neng=P1^0;//使能控制位 sbitfang_shi=P1^1;//工作方式控制位 sbitfang_xiang=P1^2;//旋转方向控制位 sbitmai_chong=P1^3;//脉冲控制位 sbitzheng_zhuan=P2^0;//正转 sbitfan_zhuan=P2^1;//反转 sbitjia_su=P2^2;//加速 sbitjian_su=P2^3;//减速 /******************************************************** 延时函数 ********************************************************/ voiddelay(uchari)//延时函数 { ucharj,k; for(j=0;j for(k=0;k<180;k++); } /******************************************************** 加速函数 ********************************************************/ voidjia() { Y=Y-1; if(Y<=1){Y=1;}//如果速度值小于等于1,值保持不变 } /******************************************************** 减速函数 ********************************************************/ voidjian() { Y=Y+1; if(Y>=100){Y=100;} } /******************************************************** 主函数 ********************************************************/ main() { shi_neng=1;//使能控制位 fang_shi=1;//工作方式控制位 fang_xiang=1;//旋转方向控制位 mai_chong=1;//脉冲控制位 while (1) { if(zheng_zhuan==0){fang_xiang=1;} if(fan_zhuan==0){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);//延时(括号内数值越小,电机转动速度越快) } } AVR系列单片机控制参考程序 #include #include /********************************************************************** 函数数据类型说明 **********************************************************************/ #defineucharunsignedchar #defineuintunsignedint /********************************************************************** 延时函数 **********************************************************************/ voiddelay(uintMS) { uinti,j; for(i=0;i for(j=0;j<80;j++);//1141是在8MHz晶振下,通过软件仿真反复实验得到的数值 } /********************************************************************** 主函数 **********************************************************************/ voidmain() {uinti; i=10;//改变变量i的大小可以改变速度,i越大速度越慢 DDRB=0XFF; //PORTC=0XFF; PORTB|=BIT(0);//00000001使能控制开 PORTB|=BIT (1);//00000010四拍工作方式 PORTB|=BIT (2);//00000100正方向旋转 while (1) { PORTB|=BIT(3);//00001000脉冲输出 delay(i); PORTB&=~BIT(3); delay(i); } } /********************************************************************** 结束 **********************************************************************/
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- L297L298 芯片 混合式 步进 电机 驱动器 设计 原理图 例程