学习笔记15-L298N
时间:2022-10-20 06:30:00
目录
- 学前基础-全H桥
-
- 原理图
- H桥工作模式
- 一、L298N初认识
-
- 参数
- 特点
- 功能框图
- 电路图
- 引脚
- 真值表
- 二、接线
-
- 1.板内电压驱动
- 2.外部电源驱动
- 三、代码段
-
- motor.c
- motor.h
学前基础-全H桥
关于MOS管道:元器件学习(2):MOS管
关于PWM:学习笔记11-PWM
原理图
以全NMOS管为例
从上图可以看出,该电机的驱动电路由4个驱动NMOS管道由H型组成,故称全H桥电路。通过控制4个MOS管道的导通和截止对中间电机有不同的控制作用。NMOS管的栅极高电平时导通,低电平时截止。
H桥工作模式
正转模式:Q1、Q4.网格电平极高,Q2、Q3为低电平,Q1,Q如左图所示,电机正向旋转。
反转模式:Q2、Q3.网格电平极高,Q1、Q4为低电平,Q2,Q如右图所示,电机反向旋转。
电流衰减模式:如何停止旋转电机?感性负载,电流不能突变。断开电机两端增加的电压时,电机产生的反向电势很可能损坏FET。光断电还不够,还要形成一个续流电路来释放电机上的能量。
以左侧正转模式为例
- 若此时采用快速衰减模式(滑动):四个MOSFET关闭,电机上的电流将通过Q2和Q3.寄生二极管继续流动,如②线显示。可以发现,此时电流的流向与电源电压相反,因此电流迅速衰减,当电流衰减为0时,因为FET关闭,电源电压不会加在电机上,电机会逐渐停止。
- 如果采取制动/慢衰减模式(制动):Q2、Q4导通,Q1、Q3关闭。电机上的电流通过Q2和Q继续流动,比如③如线所示,电机上的能量会逐渐消耗在电机本身和Q2、Q3上,这样的电流衰减相对较慢。
补充
1.衰减的速度描述电流,而不是电机的旋转速度!
2.在快速衰减模式下,由于电流快速下降,电感电机上升储存的能量释放缓慢,电机会逐渐停止。
在慢衰减模式下,电机的两端类似于短接,电流大,衰减慢,储存的能量瞬间释放,电机会瞬间停止。
一、L298N初认识
L298是L高功率、大电流版本的293电机驱动芯片, 由Multiwatt 15封装,N是L298封装标识符。
L298N可接受高电压、大电流双路全桥式电机驱动芯片,采用Multiwatt 15脚包装,接受标准TTL逻辑电平信号;内置稳压芯片78MO5.使内部逻辑电路部分在低压下工作,也可以输出外部逻辑电压5V。(当使用超过12时,为避免稳压芯片损坏V驱动电压时,必须使用外部5V接口独立供电。
L298N控制主控芯片上的控制I/O输入端可以通过电源直接调节输出电压,实现电机的正转、反转和停止。由于电路简单,使用方便,通常L298N继电器(四路)、螺线管、电磁阀、直流电机(两台)和步进电机(一台两相或四相)可直接驱动。
H桥芯片损失严重发热较明显(饱和压降大)需要安装散热器,所以体积比较大。
参数
特点
- 发热量低
- 抗干扰能力强
- 驱动能力强 (高压、大电流)
- 可靠性高 (采用大容量滤波电容器,续流保护二极管可过热自断和反馈检测)
- 工作电压高 (最高至46V)
- 输出电流大 (瞬时峰值电流可达3A,连续工作电流为2A)
- 额定功率25W
功能框图
可以看到于L298NH桥采用BJT,无寄生二极管,无法实现续流,因此外接了8个续流二极管。
电路图
引脚
实物图显示:
说明:
- ENA、ENB:该接口高电平电机运行,默认跳线帽短接高电平(一直使用);可拔下主控板PWM端口调速。
- 输出A、B(OUT1、OUT2、OUT3、OUT4):连接两个电机,不分正负.
- 逻辑输入(IN1、IN2、IN3、IN4):控制电机的正反转和速度,IN1和IN2控制电机M1,IN3和IN4控制电机M2.
- GND:需要电源地与主控板的GND连接(控制时使用的逻辑电平均以同一个地方为参考)。
- 12V供电:电机供电接口,这里独立供电!!
- 5V电源:电压输出口可用于主控板5V电源(不推荐)。
- 板载5V使能:跳线帽连接5V供电口才5V电压输出。
真值表
二、接线
1、板内电压驱动
2.外部电源驱动
电源地记得与主控板的GND共地!! 十分重要!
三、代码段
关于旋转方向
- 当两台电机转速相同时,车辆直行;
- 当左电机比右电机旋转快时,汽车右转;
- 当右电机比左电机旋转快时,汽车左转.
调查电机不转动的原因
- 有噪音但不转动,可能是电压不够,试着增加电压
- 接线错误,电源不与单片机共用…
- 逻辑端没有正确使能
motor.c
#include "motor.h" //刹车 void MOTOR_CarBrakeAll(void){
MOTOR1_BRAKE; MOTOR2_BRAKE; } //后退 void MOTOR_CaBack(void){
MOTOR1_01;
MOTOR2_10;
}
//前进
void MOTOR_CarForward(void){
MOTOR1_10;
MOTOR2_01;
}
void MOTOR_GPIOInit(void){
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(MOTOR1_GPIO_CLK|MOTOR2_GPIO_CLK,ENABLE);
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
//电机1
GPIO_InitStructure.GPIO_Pin = MOTOR1_GPIO_PIN;
GPIO_Init(MOTOR1_GPIO_PORT, &GPIO_InitStructure);
//电机2
GPIO_InitStructure.GPIO_Pin = MOTOR2_GPIO_PIN;
GPIO_Init(MOTOR2_GPIO_PORT, &GPIO_InitStructure);
}
motor.h
#ifndef __MOTOR_H
#define __MOTOR_H
#include "stm32f10x.h"
#define IN1_PIN GPIO_Pin_12
#define IN2_PIN GPIO_Pin_13
#define IN3_PIN GPIO_Pin_14
#define IN4_PIN GPIO_Pin_15
//10:IN1:1、IN2:0 01:IN1:0、IN2:1
#define MOTOR1_GPIO_PORT GPIOB
#define MOTOR1_GPIO_CLK RCC_APB2Periph_GPIOB
#define MOTOR1_GPIO_PIN IN1_PIN|IN2_PIN
#define MOTOR1_10 {
GPIO_SetBits(MOTOR1_GPIO_PORT,IN1_PIN);GPIO_ResetBits(MOTOR1_GPIO_PORT,IN2_PIN);}
#define MOTOR1_01 {
GPIO_ResetBits(MOTOR1_GPIO_PORT,IN1_PIN);GPIO_SetBits(MOTOR1_GPIO_PORT,IN2_PIN);}
#define MOTOR1_BRAKE GPIO_ResetBits(MOTOR1_GPIO_PORT,MOTOR1_GPIO_PIN);
//10:IN3:1、IN4:0 01:IN3:0、IN4:1
#define MOTOR2_GPIO_PORT GPIOB
#define MOTOR2_GPIO_CLK RCC_APB2Periph_GPIOB
#define MOTOR2_GPIO_PIN IN3_PIN|IN4_PIN
#define MOTOR2_10 {
GPIO_SetBits(MOTOR2_GPIO_PORT,IN3_PIN);GPIO_ResetBits(MOTOR2_GPIO_PORT,IN4_PIN);}
#define MOTOR2_01 {
GPIO_ResetBits(MOTOR2_GPIO_PORT,IN3_PIN);GPIO_SetBits(MOTOR2_GPIO_PORT,IN4_PIN);}
#define MOTOR2_BRAKE GPIO_ResetBits(MOTOR2_GPIO_PORT,MOTOR2_GPIO_PIN);
void MOTOR_CarBrakeAll(void);
void MOTOR_CarBack(void);
void MOTOR_CarForward(void);
void MOTOR_GPIOInit(void);
#endif /* __MOTOR_H */
参考自:
1、[教程]【Mind+】(超详细)如何使用L298N电机驱动图形编程控制电机
2、【电机驱动芯片(H桥、直流电机驱动方式)——DRV8833、TB6612、A4950、L298N的详解与比较】
3、L298N 电机驱动板 - 详细介绍