一 : 双全桥步进电机专用驱动芯片L298中文资料
双全桥步进电机专用驱动芯片( Dual Full-Bridge Driver )L298中文资料L298N 为SGS-THOMSON Microelectronics 所出产的双全桥步进电机专用驱动芯片( Dual Full-Bridge Driver ) ,内部包含4信道逻辑驱动电路,是一种二相
和四相步进电机的专用驱动器,可同时驱动2个二相或1个四相步进电机,内含二个H-Bridge 的高电压、大电流双全桥式驱动器,接收标准
TTL逻辑准位信号,可驱动46V、2A以下的步进电机,且可以直接透过电源来调节输出电压;此芯片可直接由单片机的IO端口来提供模拟时序信号,
但在本驱动电路中用L297 来提供时序信号,节省了单片机IO 端口的使用。L298N 之接脚如图9 所示,Pin1 和Pin15 可与电流侦测用电阻连 接来控制负载的电路; OUTl、OUT2 和OUT3、OUT4 之间分别接2 个步进电机;input1~input4 输入控制电位来控制电机的正反转;Enable 则控制电机停转。
L298 ABSOLUTE MAXIMUM RATINGS 绝对最大额定值:
Symbol符号
Parameter 参数
Value数值
单位
VS
Power Supply 电源
50
V
VSS
Logic Supply Voltage 电源电压
7
V
VI,Ven
Input and Enable Voltage 输入电压和启用
–0.3 to 7
V
IO
峰值输出电流(每通道)
A
非重复性(t= 100ms)
3
重复(80% on –20% off; ton = 10ms)
2.5
直流运行
2
Vsens
Sensing Voltage 感应电压
–1 to 2.3
V
Ptot
Total Power Dissipation (Tcase=75℃)总功率耗散(Tcase=75 ℃)
25
W
Top
Junction Operating Temperature 结工作温度
–25 to 130
℃
Tstg,Tj
Storage and Junction Temperature 储存温度
–40 to 150
℃
L298 PIN FUNCTIONS (refer to the block diagram) 引脚功能(请参阅框图):
引脚
PowerSO
Name
Function 功能说明
1;15
2;19
Sense A; Sense B
电流监测端,1、15和PowerSO的2、19用法一样,SEN1、SEN2分别为两个H桥的电流反馈脚,不用时可以直接接地
2;3
4;5
Out 1; Out 2
1Y1、1Y2输出端
4
6
VS
功率电源电压,此引脚与地必须连接100nF电容器
5;7
7;9
Input 1; Input 2
1A1、1A2输入端,TTL电平兼容
6;11
8;14
Enable A; Enable B
TTL电平兼容输入 1EN、2EN使能端,低电平禁止输出
8
1,10,11,20
GND
GND地
9
12
VSS
逻辑电源电压。 此引脚与地必须连接100nF电容器
10; 12
13;15
Input 3; Input 4
2A1、2A2 输入端,TTL电平兼容
13; 14
16;17
Out 3; Out 4
2Y1、2Y2 输出端 监测引脚15
–
3;18
N.C.
Not Connected 空
L298 ELECTRICAL CHARACTERISTICS(VS=42V;VSS=5V,Tj=25℃; unless otherwise specified)电气特性:
Symbol 符号
Parameter 参数
Test Conditions 测试条件
最小
典型
最大
单位
VS
Supply Voltage (pin 4) 电源电压(引脚4 )
Operative Condition
VIH 2.5
46
V
VSS
Logic Supply Voltage (pin 9)逻辑电路电源电压(引脚9 )
4.5
5
7
V
IS
Quiescent Supply Current (pin 4) 静态电源电流(引脚4 )
Ven =H;IL=0
Vi =L
13
22
mA
Vi =H
50
70
Ven =L
Vi =X
4
mA
ISS
Quiescent Current from VSS (pin 9) VSS的静态电流 (引脚9)
Ven =H;IL=0
Vi =L
24
36
mA
Vi =H
7
12
Ven =L
Vi =X
6
mA
ViL
Input Low Voltage 输入低电平电压(引脚5,7,10,12)
–0.3
1.5
V
ViH
Input High Voltage 输入高电平电压(引脚5,7,10,12)
2.3
VSS
V
IiL
Low Voltage Input Current 低电平输入电流(引脚5,7,10,12)
Vi = L
–10
μA
IiH
High Voltage Input Current 高电平输入电流(引脚5,7,10,12)
Vi = H ≤VSS –0.6V
30
100
μA
Ven = L
Enable Low Voltage 使能端高电平电压(引脚6,11)
–0.3
1.5
V
Ven = H
Enable High Voltage 使能端低电平电压(引脚6,11)
2.3
VSS
V
Ien = L
Low Voltage Enable Current (pins 6, 11) 低电平启动电流
Ven = L
–10
μA
Ien = H
High Voltage Enable Current (pins 6, 11) 高电平启动电流
Ven =H ≤VSS –0.6V
30
100
μA
VCEsat(H)
Source Saturation Voltage
IL =1A
0.95
1.35
1.7
V
IL =2A
2
2.7
VCEsat(L)
Sink Saturation Voltage
IL = 1A (5)
0.85
1.2
1.6
V
IL = 2A (5)
1.7
2.3
VCEsat
Total Drop
IL = 1A (5)
1.80
3.2
V
IL = 2A (5)
4.9
Vsens Sensing Voltage电流监测电压(引脚1,15)
–1(1)
2
V
未完待续,更多精彩请关注比比读小说网微信公众号
二 : 基于51单片机的直流电机驱动(L298)
L298是SGS公司的产品,L29(www.61k.com)8N为15个管角的单块集成电路,高电压,高电流,四通道驱动,设计用L298N来接收DTL或者TTL逻辑电平,驱动感性负载(比如继电器,直流和步进马达)和开关电源晶体管。内部包含4通道逻辑驱动电路,其额定工作电流为1A,最大可达1.5A,Vss电压最小4.5V,最大可达36V;Vs电压最大值也是36V。L298N可直接对电机进行控制,无须隔离电路,可以驱动双电机。
1,L298内部的原理图
2,L298引脚符号及功能
3,L298的逻辑功能
当使能端为高电平时,输入端IN1为PWM信号,IN2为低电平信号时,电机正转;输入端IN1为低电平信号,IN2为PWM信号时,电机反转;;IN1与IN2相同时,电机快速停止。当使能端为低电平时,电动机停止转动。
在对直流电动机电压的控制和驱动中,半导体功率器件(L298)在使用上可以分为两种方式:线性放大驱动方式和开关驱动方式在线性放大驱动方式。
半导体功率器件工作在线性区优点是控制原理简单,输出波动小,线性好,对邻近电路干扰小,缺点为功率器件工作在线性区,功率低和散热问题严重。开关驱动方式是使半导体功率器件工作在开关状态,通过脉调制(PWM)来控制电动机的电压,从而实现电动机转速的控制。
#include
#include
#defineuchar unsigned char
#defineuint unsigned int
sbitMOTOR_A_1=P3^6;
sbitMOTOR_A_2=P3^7;
sbitk1=P1^0; //定义k1为p1.0口
sbitk2=P1^1; //定义k2为p1.1口
sbitk3=P1^2; //定义k3为p1.2口
sbitk4=P1^3; //定义k4为p1.3口
uchar T=0; //定时标记
uchar W=0; //脉宽值 0~100
uchar A=0; //方向标记 0,1
uchar k=0; //按键标记
uchar i=0; //计数变量
uchar codetable1[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
uchar codetable2[]={0xfe,0xfb,0xfd,0xf7};
voiddelayms(uint t);
voiddisp(void)
{
P2=table2[3];
P0=table1[W]; //显示占空比个位
delayms(1); //延时1ms
P2=0xff;//P0清1
P2=table2[2];
P0=table1[W/100]; //显示占空比百位
delayms(1); //延时1ms
P2=0xff;//P0清1
P2=table2[1];
P0=table1[W/10]; //显示占空比十位
delayms(1); //延时1ms
P2=0xff; //P0清1
P2=table2[0];
P0=table1[A]; //显示方向
delayms(1); //延时1ms
P2=0xff;//P0清1
}
voidinit(void)
{
//启动中断
TMOD=0x01;
EA=1;
ET0=1;
TR0=1;
//设置定时时间
TH0=0xff;
TL0=0xf6;
}
voidtimer0() interrupt 1
{
//重置定时器时间
TH0=0xff;
TL0=0xf6;
T++;//定时标记加1
disp();//数码管显示
if(k==0)
{
if(T>W)
MOTOR_A_1=0;
else
MOTOR_A_1=1;
}
else
{
if(T>W)
MOTOR_A_2=0;
else
MOTOR_A_2=1;
}
if(T==100)
T=0;
}
voiddelayms(uint t)
{
ucharj;
while(t--)
{
for(j=0;j<250;j++) //循环250次
{
_nop_(); //系统延时
_nop_();//系统延时
_nop_();//系统延时
_nop_();//系统延时
}
}
}
voidkey(void) //按键判断程序
{
if(k1==0)//按键1按下
{
while(k1==0); //按键1抬起
if(W==100)//如果脉宽为100
W=0;//脉宽置0
else
W+=1;//否则加1
}
elseif(k2==0) //按键2按下
{
while(k2==0); //按键2抬起
if(W==0)//如果脉宽为0
W=100;//脉宽设置成100
else
W-=1;//否则减1
}
elseif(k3==0) //按键3按下
{
while(k3==0); //按键3抬起
A=!A;//方向标记取反
k=!k;//按键标记取反
}
elseif(k4==0) //按键4按下
{
while(k4==0); //按键4抬起
W=0;//脉宽清0
}
}
voidmain(void)
{
init();/////////系统初始化
while(1)
{
if(k==0)
MOTOR_A_2=0;
else
MOTOR_A_1=0;
key();////////查询按键
}
}