L298N驱动设计

L298N芯片的使用

1.简介

L298N是专用驱动集成电路,属于H桥集成电路,与L293D的差别是起输出电流增大,功率增强。其输出电流为2A,最高电流4A,最高工作电压50V,可以驱动感性负载,如大功率直流电机,步进电机,电磁阀等等,特别是其输入端可以与单片机直接相连,从而很方便地受单片机控制。当驱动直流电机时,可以直接控制步进电机,并可以实现电机的正转和反转,实现此功能只需要改变输入端的逻辑电平。为了避免电机对单片机的干扰,本模块加入光耦,进行光电隔离,从而使系统能够稳定可靠的工作。


2.电路设计

(1)管脚分布图
在这里插入图片描述
(2)管脚介绍

  • 英文原版
    在这里插入图片描述
  • 翻译参考版本

preview

  • 内部功能框图
    在这里插入图片描述
  • 手册参考原理图
    在这里插入图片描述
  • 实际驱动参考原理图
    在这里插入图片描述

3.驱动代码封装

  • l298n.h文件内容
#ifndef _L298N_H_
#define _L298N_H_

#include "reg52.h"

/* 电机驱动IO定义 */
sbit IN1 = P2^0; // 为1 左电机反转
sbit IN2 = P2^1; // 为1 左电机正转
sbit IN3 = P2^2; // 为1 右电机正转
sbit IN4 = P2^3; // 为1 右电机反转
sbit EN1 = P2^4; // 为1 左电机使能
sbit EN2 = P2^5; // 为1 右电机使能

/* 功能宏定义 */
#define left_motor_en		EN1 = 1	// 左电机使能
#define right_motor_en		EN2 = 1	// 右电机使能


#define left_motor_stops	IN1 = 0, IN2 = 0 // 左电机停止
#define right_motor_stops	IN3 = 0, IN4 = 0 // 右电机停止
											    
#define left_motor_go		IN1 = 0, IN2 = 1 // 左电机正传
#define left_motor_back		IN1 = 1, IN2 = 0 // 左电机反转
#define right_motor_go		IN3 = 1, IN4 = 0 // 右电机正传
#define right_motor_back	IN3 = 0, IN4 = 1 // 右电机反转

/* 函数声明 */
void forward();
void backward();
void left();
void right();
void stop();
void left_rapidly();
void right_rapidly();

#endif /* _L298N_H_ */

  • l298n.c源文件
#include "./L298N/l298n.h"

/* 小车前进 */
void forward()
{
	left_motor_en;  // 左电机使能
	right_motor_en; // 右电机使能
	left_motor_go;  // 左电机前进
	right_motor_go; // 右电机前进
}

/* 小车后退 */
void backward()
{
	left_motor_en;    // 左电机使能
	right_motor_en;   // 右电机使能
	left_motor_back;  // 左电机后退
	right_motor_back; // 右电机后退	
}

/* 小车左转 */
void left()
{
	left_motor_stops; // 左电机停止
	right_motor_en;   // 右电机使能
	right_motor_go;   // 右电机前进	
}

/* 小车右转 */
void right()
{
	right_motor_stops; // 右电机停止
	left_motor_en;     // 左电机使能
	left_motor_go;     // 左电机前进
}

/* 小车停止 */
void stop()
{                         
	right_motor_stops; // 右电机停止
	left_motor_stops;  // 左电机停止	
}

/* 小车高速左转 */
void left_rapidly()
{
	left_motor_en;  // 左电机使能
	right_motor_en; // 右电机使能
	right_motor_go;
	left_motor_back;	
}

/* 小车高速右转 */
void right_rapidly()
{
	left_motor_en;  // 左电机使能
	right_motor_en; // 右电机使能
	left_motor_go;
	right_motor_back;	
}

4.驱动测试

(1)测试电路图
在这里插入图片描述
(2)效果动图

  • 前进
    在这里插入图片描述
  • 后退
    在这里插入图片描述
  • 左转
    在这里插入图片描述
  • 右转
    在这里插入图片描述
  • 快速左转
    在这里插入图片描述
  • 快速右转
    在这里插入图片描述
  • 停止
    在这里插入图片描述
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页