L298N电机驱动模块的接线使用与代码实现_l298n电机驱动模块接线-程序员宅基地

技术标签: l298n  stm32  # STM8  物联网  嵌入式  单片机  

1、驱动模块介绍

电机驱动模块一般使用的都是L298N作为主控芯片
在这里插入图片描述
样子如图所示
在这里插入图片描述
当用单片机5V电源给L298N供电驱动5V的小马达时,驱动模块的12V和5V都接单片机的5V(这样可以动,但轮子转动的速度不快,详细查看下面的连接方法)GND一定得接单片机的GND,也就是一定要与单片机共地。
第一排6个排针接单片机的IO口就可以了。其中IN1到IN4为马达逻辑输入,控制其正转和反转。以左边马达为例当IN1=0,IN2=1时为正转。IN1=1,IN2=0时为反转。待机则全为0,刹车则全为1。ENA和ENB为两马达的使能,需要调速的时候就把那两个使能的跳线帽直接拔掉,然后在第一个入口接入一个PWM信号即可。(PWM调速可以参考我的另外一篇文章)

2、驱动模块的连线方法

1)第一种方法(不建议)

12V供电口和5V供电口都接入单片机的5V电压
在这里插入图片描述
ps::第一种方法的提高电压较小,轮子转速不足,可能无法进行调速

2)第二种方法(建议)

当接入7~12V电压时,正5V不需要接电压,其可以输出5V的电压供单片机使用。中间那个接单片机的GND。
在这里插入图片描述
ps:由于5v供电口可以输出5v的电压,可以直接拿来为单片机供电

3)第三种方法(不建议)

当输入的电压大于12V小于24V时,需要拔掉电源旁的跳线帽,5V端需要接入5v的电压,GND还是接GND。
在这里插入图片描述
ps:第三种方法的输入电压较大,PWM调速的时候怕对单片机造成影响,所以我用的是第二种方法

3、驱动模块的使用方法

在这里插入图片描述

  • 使用方法:

输出A: 通道A输出 ,连接电机
输出B: 通道B输出 ,连接电机
12V供电: 主电源正极输入
供电GND: 主电源正负极极输入
5V输出: 5v电压输出端,可用于给MCU供电
ENA: 通道A使能 ,pwm信号连接(调速使用)
ENB: 通道B使能 pwm信号连接(调速使用)
IN1~IN4: 逻辑输入IN1 ~ IN2控制通道A,逻辑输入IN3~IN4控制通道B
板载5V跳线帽: 接上后板载5V输出有效

4、参考代码

1)52单片机版本

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2)stm8版本(自写)
// 关于电机驱动的宏定义
#define RightIN1 PH_ODR_ODR0    //定义为输出量
#define RightIN2 PH_ODR_ODR1
#define LeftIN1  PH_ODR_ODR2     //定义为输出量
#define LeftIN2  PH_ODR_ODR3

void Motor_Init(void)
{
   //设置Ph0-3端口为推挽低速输出
  PH_DDR_DDR0 = 1;  
  PH_CR1_C10 = 1;   
  PH_CR2_C20 = 0;   
  
  PH_DDR_DDR1 = 1;  
  PH_CR1_C11 = 1;   
  PH_CR2_C21 = 0;  
  
  PH_DDR_DDR2 = 1;  
  PH_CR1_C12 = 1;   
  PH_CR2_C22 = 0;  
  
  PH_DDR_DDR3 = 1;  
  PH_CR1_C13 = 1;   
  PH_CR2_C23 = 0;  
  

}

//小车左转
void Motor_TurnLeft(void)
{
    RightIN1 = 0;
    RightIN2 = 1;
    
    LeftIN1 = 1;
    LeftIN2 = 1;
  //  delay_ms(2000);
}


//小车右转
void Motor_TurnRight(void)
{
    RightIN1 = 1;
    RightIN2 = 1;
    
    LeftIN1 = 1;
    LeftIN2 = 0;
  //  delay_ms(2000);
}


//小车直走
void Motor_GoForward(void)
{

    RightIN1 = 0;
    RightIN2 = 1;
    
    LeftIN1 = 1;
    LeftIN2 = 0;
  //  delay_ms(2000);
}


//小车倒退
void Motor_GetBack(void)
{
    RightIN1 = 1;
    RightIN2 = 0;
    
    LeftIN1 = 0;
    LeftIN2 = 1;
  //  delay_ms(2000);
}


void Motor_BeParking(void)
{
    RightIN1 = 1;
    RightIN2 = 1;
    
    LeftIN1 = 1;
    LeftIN2 = 1;
}

5、常见问题

1)电机不会转动?

(1)有响声但是齿轮不转,可能是电压不够,加大电压
(2)接线存在错误,没有与MCU共地等
(3)逻辑端编程错误,没有正确的使能

2)关于ENA和ENB上面的跳线帽要不要拔去?

如果只是需要转动马达就不需拔去,如果需要调试,就需要拔去然后直接接入一个PWM信号

参考链接:
L298N 驱动电机与单片机的线路连接图
L298N模块的连接与使用(stm32驱动与51驱动)

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_44751294/article/details/110503256

智能推荐

为什么 Spring 的构造器注入不需要 @Autowired 注解?_构造器注入不用加注解-程序员宅基地

文章浏览阅读980次,点赞2次,收藏3次。在讨论这个问题之前,我们可以先来回忆一下Spring的依赖注入的三种方式。分别是——这种方式是最常用的,我们可以使用或者是进行注入使用方式是最简单,但是也是最不推荐的!要使用也是推荐使用!1、不允许声明不可变域,也就是无法对属性进行 final 修饰。2、容易违反单一职责设计原则,举个例子,一个类使用10个以上的@Autowired,代码看起来并无异常,但一个有10个参数的构造函数,已经违反了一个良好的代码规范,从而考虑是否应该优化该类的使用职责。_构造器注入不用加注解

Spring,SpringBoot如何做组件的扫描_spring和springboot是如何扫描组件的-程序员宅基地

文章浏览阅读2.2k次,点赞2次,收藏4次。Spring,SpringBoot如何做组件的扫描文章目录Spring,SpringBoot如何做组件的扫描引言Spring扫描假设分析在哪里怎么扫SpringBoot扫描思想体现点扫描相关分析实现很久没有提笔写博客了,手都生疏了,最近有朋友遇到疑惑问我,Spring,SpringBoot是如何做的扫描工作的,在给他解答之后,决定动手写一篇博客说明。引言大家想想spring中是如何做的声明..._spring和springboot是如何扫描组件的

二维DP问题-程序员宅基地

文章浏览阅读2.5k次。文章目录前言小技巧例题 1方法一 求组合数方法二 动态规划例题 2方法一 dp例题 3方法一 dp前言我们经常会碰到二维DP问题,比如给你一张地图(一般是二维矩阵),让你计算出从地图的左上端走到右下端的路径有多少条 / 最短的路径之和,这种问题一般会被限制运动的空间(至少我现在所碰到的题目),一般是只能向下和向右移动。我对dp问题理解不深,对于二维dp问题我的理解就是找出最优子结构(递推方程)之后,用一个二维数组来保存历史状态就能解决问题了小技巧一般这种问题很容易被矩阵上边和左边这两条bounda_二维dp

一文搞懂嵌入式CAN总线-程序员宅基地

文章浏览阅读770次。嵌入式的工程师一般都知道CAN总线广泛应用到汽车中,其实船舰电子设备通信也广泛使用CAN,随着国家对海防的越来越重视,对CAN的需求也会越来越大。CAN(Controller Area Network)即控制器局域网,是一种能够实现分布式实时控制的串行通信网络。想到CAN就要想到德国的Bosch公司,因为CAN就是这个公司开发的(和Intel)CAN有很多优秀的特点,使得它能够被广泛的应用。比如:传输速度最高到1Mbps,通信距离最远到10km,无损位仲裁机制,多主结构。近些年来,CAN控制_嵌入式can

LabVIEW应用开发——基本函数(一)_labview函数-程序员宅基地

文章浏览阅读2.2k次。LabVIEW作为一门G语言编程,基本概念很难和常规语言一样,要实现运算,需要使用运算函数,通过使用连线,把需要运算的控件和符号连接起来。相对于常规语言,这一块逻辑代码的可读性还是比较差的,需要我们多写、多读、多了解才能快速阅读和开发。_labview函数

安卓带图标提示的Toast——Toasty_toast去掉图标-程序员宅基地

文章浏览阅读4.4k次,点赞4次,收藏11次。Toasty这个看起来不错,虽然有点不算太好看,但通过它的自定义方法最终做出来的还不错它的使用方法及其的简单,我甚至都不想写这个Toasty的github地址官方图片第一步:新建项目,在project的build.gradle中添加maven { url "https://jitpack.io" }在app的build.gradle中添加依赖implementat..._toast去掉图标

随便推点

Linux-Unix编程手册(上下两册全).pdf 高清原版_linux/unix系统编程手册pdf-程序员宅基地

文章浏览阅读8.5k次,点赞144次,收藏34次。文章目录Linux-Unix编程手册(上下两册全).pdf 高清原版 可复制 可搜索 带书签简介预览下载Linux-Unix编程手册(上下两册全).pdf 高清原版 可复制 可搜索 带书签简介《linux/unix系统编程手册(上、下册)》是介绍linux与unix编程接口的权威著作。linux编程资深专家michael kerrisk在书中详细描述了linux/unix系统编程所涉及的系统调用和库函数,并辅之以全面而清晰的代码示例。《linux/unix系统编程手册(上、下册)》涵盖了逾500个系统_linux/unix系统编程手册pdf

Flask框架(flask中的request对象,获取请求参数,保存上传的文件)_request.form.name只能获取第一个-程序员宅基地

文章浏览阅读1w次。1.request中包含了前端发送过来的所有数据 ,请求的 request 对象中保存了一次HTTP请求的一切信息。 通过request.from可以直接发送提取请求体中的表单格式数据,是一个类字典的对象 通过get方法只能拿到多个重名参数的第一个 2. reques常用的属性: 4.这里会用到Postman工具 下载:打开官网,https..._request.form.name只能获取第一个

需求分析(知识点总结)_功能需求分析-程序员宅基地

文章浏览阅读9.9k次,点赞9次,收藏73次。学习目标:需求分析(知识点总结)学习内容:数据流图(Data Flow Diagram,简称DFD)建模方法核心:数据流特性:1、抽象性:只有信息和数据存储、流动、使用以及加工的情况,所以描述的是抽象出来的数据2、概括性:把系统对各种业务的处理过程联系起来考虑,形成总体,反映数据流之间的概括情况数据库应用系统(DBAS)性能指标:1、数据操作响应时间(数据访问响应时间)2、系统吞吐量:指系统在单位时间内可以完成的数据库事务或查询的数量3、允许并发访问的最大用户数4、每TPS代价值_功能需求分析

html导出docx处理图片img不标准_htmldocx 导出 图片-程序员宅基地

文章浏览阅读443次。<dependency> <groupId>org.docx4j</groupId> <artifactId>docx4j</artifactId> <version>6.1.0</version> <exclusions> <exclusion> <groupI..._htmldocx 导出 图片

AT24CXX系列芯片在STM32F103单片机下的读写程序_at24c128 正点原子-程序员宅基地

文章浏览阅读4.6k次,点赞9次,收藏32次。本程序取自正点原子开发板,应用于STM32F103单片机,适用AT24C01,AT24C02,AT24C04,AT24C08,AT24C16,AT24C32,AT24C64,AT24C128,AT24C256,AT24C512系列I2C存储芯片。一、sys.h#ifndef __SYS_H#define __SYS_H #include "stm32f10x.h"//////////////////////////////////////////////////////////////._at24c128 正点原子

log4j2漏洞复现(CVE-2021-44228)_jndi-injection-exploit-程序员宅基地

文章浏览阅读3.4k次,点赞2次,收藏8次。log4j2漏洞复现(CVE-2021-44228)漏洞简介:log4j是Apache公司的一款JAVA日志框架,基本上只要是java的框架都会用到这个log4j框架,所以上周不管是不是IT圈的都几乎被刷屏了,可见这个洞的危害之大,波及范围之广。所以复现一下。影响版本:Apache Log4j 2.x >=2.0-beta9 且 < 2.15.0复现环境1:1.log4shell-vulnerable-app环境:docker run --name vulnerable-a_jndi-injection-exploit

推荐文章

热门文章

相关标签