l298n电机驱动模块指导书.pdf
L298 双 H 桥直流电机驱动板指导手册 V0.1 2012.2.19 双龙电子科技 淘宝网址:http://shop59318659.taobao.com/ 一、产品参数: 1、驱动芯片:L298N 双 H 桥直流电机驱动芯片 2、驱动部分端子供电范围 Vs:+5V~+35V ; 如需要板内取电,则供电范围 Vs:+7V~+35V 3.驱动部分峰值电流 Io:2A 4.逻辑部分端子供电范围 Vss:+5V~+7V(可板内取电+5V) 5.逻辑部分工作电流范围:0~36mA 6.控制信号输入电压范围: 低电平:-0.3V≤Vin≤1.5V 高电平:2.3V≤Vin≤Vss 7.使能信号输入电压范围: 低电平:-0.3≤Vin≤1.5V(控制信号无效) 高电平:2.3V≤Vin≤Vss(控制信号有效) 8.最大功耗:20W(温度 T=75℃时) 9.存储温度:-25℃~+130℃ 10.驱动板尺寸:55mm*49mm*33mm(带固定铜柱和散热片高度) 11.驱动板重量:33g 12.其他扩展:控制方向指示灯、逻辑部分板内取电接口。 二、电路原理图 三、使用说明: 1、直流电机的驱动: 该驱动板可驱动 2 路直流电机,使能端 ENA、ENB 为高电平时有效,控制方 式及直流电机状态表如下所示: ENA IN1 IN2 直流电机状态 0 X X 停止 1 0 0 制动 1 0 1 正转 1 1 0 反转 1 1 1 制动 若要对直流电机进行 PWM 调速,需设置 IN1 和 IN2,确定电机的转动方向, 然后对使能端输出 PWM 脉冲,即可实现调速。注意当使能信号为 0 时,电机处于 自由停止状态;当使能信号为 1,且 IN1 和 IN2 为 00 或 11 时,电机处于制动状 态,阻止电机转动。 //*****************************************************************// // 程序名称:直流电机测试程序 // 功能描述:直流电机正转 2 秒,反转 2 秒,自动加速正转,自动减速反转, // 依次循环 // 单片机: AT89S52,外接 12M 晶振 // 硬件连接:P1.0----IN1 // P1.1----IN2 // P1.2----ENA // 直流电机两端分别接 OUT1 和 OUT2, // 电机驱动电压根据所接电机而定,驱动板芯片逻辑电压为+5V // 维护记录:2012.2.8 双龙电子科技 //*****************************************************************// #include sbit IN1=P1^0; sbit IN2=P1^1; sbit ENA=P1^2; void delay(unsigned int z); void delay_us(unsigned int aa); /*******************主函数**************************/ void main() { while(1) { unsigned int i,cycle=0,T=2048; IN1=1; //正转 IN2=0; for(i=0;i<200;i++) { delay(10);//PWM 占空比为 50%,修改延时调整 PWM 脉冲 ENA=~ENA; } IN1=0; //反转 IN2=1; for(i=0;i<100;i++) { delay(20);//PWM 占空比为 50%,修改延时调整 PWM 脉冲 ENA=~ENA; } IN1=1; //自动加速正转 IN2=0; while(cycle!=T) { ENA=1; delay_us(cycle++); ENA=0; delay_us(T-cycle); } IN1=0; //自动减速反转 IN2=1; while(cycle!=T) { ENA=1; delay_us(cycle++); ENA=0; delay_us(T-cycle); } } } /******************z 秒延时函数*************************/ void delay(unsigned int z) { unsigned int x,y; for(x=z;x>0;x--) for(y=110;y>0;y--); } /****************微妙延时******************************/ void delay_us(unsigned int aa) { while(aa--); } 2、28BYJ-48 步进电机的驱动: 28BYJ-48 步进电机有多种减速比:1:64、1:32、1:16,以我公司的 28BYJ-48 步进电机为例,其参数如下表所示: 型号 电压 相数 步距角 减速比 4 5.625/16 1:16 序号 颜色 描述 1 红 +5V 2 橙 A 3 黄 B 4 粉 C 5 蓝 D 28BYJ-48 5V 该步进电机为四相八拍步进电机,采用单极性直流电源供电。只要对步进电 机的各相绕组按合适的时序通电,就能使步进电机步进转动。图 1 是该四相反应 式步进电机工作原理示意图。 图 1 四相步进电机步进示意图 开始时,开关 SB 接通电源,SA、SC、SD 断开,B 相磁极和转子 0、3 号齿对 齐,同时,转子的 1、4 号齿就和 C、D 相绕组磁极产生错齿,2、5 号齿就和 D、 A 相绕组磁极产生错齿。 当开关 SC 接通电源,SB、SA、SD 断开时,由于 C 相绕组的磁力线和 1、4 号齿之间磁力线的作用,使转子转动,1、4 号齿和 C 相绕组的磁极对齐。而 0、 3 号齿和 A、B 相绕组产生错齿,2、5 号齿就和 A、D 相绕组磁极产生错齿。依次 类推,A、B、C、D 四相绕组轮流供电,则转子会沿着 A、B、C、D 方向转动。 四相步进电机按照通电顺序的不同,可分为单四拍、双四拍、八拍三种工作 方式。单四拍与双四拍的步距角相等,但单四拍的转动力矩小。八拍工作方式的 步距角是单四拍与双四拍的一半,因此,八拍工作方式既可以保持较高的转动力 矩又可以提高控制精度。单四拍、双四拍与八拍工作方式的电源通电时序与波形 分别如图 2.a、b、c 所示: a. 单四拍 b. 双四拍 c 八拍 图 2.步进电机工作时序波形图 旋转角度的算法:给予一个脉冲,该步进电机内部转子旋转 5.625 度,由于 自带减速齿轮组,故外部主轴旋转角度为 5.625/减速比,根据要转动的角度即 可推算出脉冲数。 //****************************************************************// // 程序名称:28BYJ-48 步进电机测试程序 // 功能描述:步进电机分别以单四拍、双四拍、八拍驱动方式驱动, // 正反转各 360 度 // 单片机: AT89S52,FOSC=12MHz // 硬件连接:P1.0----INA // P1.1----INB // P1.2----INC // P1.3----IND // 驱动板的驱动电压和芯片逻辑供电电压均为 5V; // 步进电机红线接+5V 驱动电压,橙黄粉蓝分别接 OUT1、OUT2、 // OUT3、OUT4,注意外接电源要与单片机共地。 // 维护记录:2012.2.8 双龙电子科技 //****************************************************************// #include #define uint unsigned int #define uchar unsigned char uint i,j,k; uint N=128;//主轴旋转度数设置,度数 D=N*45/减速比,采用 1:16 减速比的步 进电机,旋转度数即为 D=128*45/16=360 度 uchar code single_pos[4]={0x07,0x0b,0x0d,0x0e};//单四拍驱动方式正转表 D-C-B-A uchar code single_rev[4]={0x0e,0x0d,0x0b,0x07};//单四拍驱动方式反转表 A-B-C-D uchar code double_pos[4]={0x06,0x03,0x09,0x0c};//双四拍驱动方式正转表 AD-DC-CB-BA uchar code double_rev[4]={0x0c,0x09,0x03,0x06};//双四拍驱动方式反转表 AB-BC-CD-DA uchar code eight_pos[8]={0x06,0x07,0x03,0x0b,0x09,0x0d,0x0c,0x0e}; //八拍驱动方式正转表 AD-D-DC-C-CB-B-BA-A uchar code eight_rev[8]={0x0e,0x0c,0x0d,0x09,0x0b,0x03,0x07,0x06}; //八拍驱动方式反转表 A-AB-B-BC-C-CD-D-DA void delay(uint z); void m_single_pos(); void m_single_rev(); void m_double_pos(); void m_double_rev(); void m_eight_pos(); void m_eight_rev(); void main() { while(1) { m_single_pos();//单四拍驱动方式正转 360 度 delay(200); m_single_rev();//单四拍驱动方式反转 360 度 delay(200); m_double_pos();//双四拍驱动方式正转 360 度 delay(200); m_double_rev();//双四拍驱动方式反转 360 度 delay(200); m_eight_pos();//八拍驱动方式正转 360 度 delay(200); m_eight_rev();//八拍驱动方式反转 360 度 delay(200); } } /********************延时 z 毫秒***********************************/ void delay(uint z) { uint x,y; for(x=z;x>0;x--) for(y=110;y>0;y--); } /*******************单四拍驱动正转(N*45/16)度**********************/ void m_single_pos() { for(k=0;k