【STM32】cubeMX配置HAL库驱动L298N控制直流有刷电机

2023-11-11

目录

1.电机为什么需要驱动板呢?为什么不能用控制器直接控制电机呢?

2.H桥电路介绍

3.L298N原理介绍

4.实物接线图

5.CUBEMX配置

6.代码

7. 演示视频


L298N是常用来驱动小型直流有刷电机(两个)和步进电机(一个)的电机驱动板,其电路原理就是两个H桥电路,控制原理是使用PWM来实现对直流电机的调速,因此需要先补充一下对PWM的知识,可以跳转到以下链接。

【STM32】PWM输出功能详细介绍

【STM32】HAL库PWM实现呼吸灯实验

1.电机为什么需要驱动板呢?为什么不能用控制器直接控制电机呢?

原因是控制器本身提供的电压不足以让电机运动,因此需要外接一个驱动板来驱动电机运动。

用STM32作为控制器,L298N作为驱动器来驱动小马达(直流有刷电机)的原理图如下:

2.H桥电路介绍

对于需要驱动直流电机这种电流较大负载的控制电路,H桥是最经典的,因其电路形状像字母“H”,故称其为“H桥”。H桥一般由四个MOS管(Q1、Q2、Q3、Q4)作为独立控制的开关元器件组成,不同的开关状态对应的电机状态如下表所示:

电机状态

开关状态

正转

Q1、Q4开,Q2、Q3关

反转

Q1、Q4关,Q2、Q3开

停止

Q1、Q3关,Q2、Q4开

通常对H桥的控制最常用的是脉冲宽度调制(PWM)。

3.L298N原理介绍

L298N内部电路图如下图所示:

不难看出,其内部电路是由两个H桥组成。ENA和ENB为使能信号,In1和In2为一组逻辑信号,控制OUT1和OUT2这一组输出信号;In3和In4为一组逻辑信号,控制OUT3和OUT4这一组输出信号。通过控制逻辑信号来实现对输出信号的控制,比如电机速度和正反转。

(1)输出A和输出B用来接两个直流有刷电机,对于逻辑输入,应当接在控制板上。In1和In2控制输出A,In3和In4控制输出B。通道使能的跳线帽默认插在上面,保持不动。如果拔掉,认为不使能。

(2)对于板载5V使能处的跳线帽,若插在上面,则5V供电可以用来给控制板供电;如果拔掉,才能用来对驱动板实现5V供电。

(3)供电问题:输入电源为7~12V时,5V供电处可以接控制板,用来给控制板供电,也可以不接;输入电源为大于12V时,需要拔掉电源旁的跳线帽(板载5V使能),5V供电处需要接入5V的电压。

4.实物接线图

通过对L298N原理分析,不难得出逻辑信号接控制板,输出信号接电机。注意:控制板和驱动板要实现共地,目的是使电压有参考电平。

使用两节3.7V电池来供电,电池正极接在+12V供电,负极接GND。使用的控制板是正点原子的探索者,主控芯片是STM32F407ZGT6。因为使用一个马达,故只需要一组控制信号控制一路输出即可。因此,In1和In2接在控制板的PA0和PA6引脚,OUT1接马达的两根线。因为,控制板自带供电,所以不需要控制板提供5V供电,所以只需要将控制板和驱动板的GND连接在一起,给其一个参考电平。

控制问题:

电机状态

IN1

IN2

正转

1

0

反转

0

1

停止

等待

0

0

刹车

1

1

5.CUBEMX配置

(1)使能外部高速时钟

(2)完成时钟树配置

(3)设置PWM(也可以在TIM2中开启两个通道)

(4)生成代码(GENERATE CODE)

6.代码

int main(void)
{
  /* USER CODE BEGIN 1 */

  /* USER CODE END 1 */

  /* MCU Configuration--------------------------------------------------------*/

  /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
  HAL_Init();

  /* USER CODE BEGIN Init */

  /* USER CODE END Init */

  /* Configure the system clock */
  SystemClock_Config();

  /* USER CODE BEGIN SysInit */

  /* USER CODE END SysInit */

  /* Initialize all configured peripherals */
  MX_GPIO_Init();
  MX_TIM2_Init();
  MX_TIM3_Init();
  /* USER CODE BEGIN 2 */
  HAL_TIM_PWM_Start(&htim2,TIM_CHANNEL_1);
  HAL_TIM_PWM_Start(&htim3,TIM_CHANNEL_1);	
  /* USER CODE END 2 */

  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {		
	__HAL_TIM_SET_COMPARE(&htim2,TIM_CHANNEL_1,5000);
	HAL_Delay(2000);
	__HAL_TIM_SET_COMPARE(&htim2,TIM_CHANNEL_1,0);
	HAL_Delay(1000);//慢速正转2秒,等待1秒
	__HAL_TIM_SET_COMPARE(&htim3,TIM_CHANNEL_1,20000);
	HAL_Delay(2000);
	__HAL_TIM_SET_COMPARE(&htim3,TIM_CHANNEL_1,0);
	HAL_Delay(1000);//快速反转2秒,等待1秒
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
  }
  /* USER CODE END 3 */
}

7. 演示视频

STM32控制L298N驱动小马达

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【STM32】cubeMX配置HAL库驱动L298N控制直流有刷电机 的相关文章

  • 串口通讯第一次发送数据多了一字节

    先初始化IO再初始化串口 导致第一次发送时 多出一个字节数据 优化方案 先初始化串口再初始化IO 即可正常通讯
  • allegro画PCB如何更新元件的PCB封装

    allegro画PCB如何更新元件的PCB封装 一 更新单个器件的PCB封装 首先菜单栏选择Place gt Update Symbols 如下图 注意此案例是更新了C0805封装 中更新封装 就将上图第二个红色方框中的勾选即可 二 更新某
  • 1.69寸SPI接口240*280TFT液晶显示模块使用中碰到的问题

    1 69寸SPI接口240 280TFT液晶显示模块使用中碰到的问题说明并记录一下 在网上买了1 69寸液晶显示模块 使用spi接口 分辨率240 280 给的参考程序是GPIO模拟的SPI接口 打算先移植到FreeRtos测试 再慢慢使用
  • 串口通讯第一次发送数据多了一字节

    先初始化IO再初始化串口 导致第一次发送时 多出一个字节数据 优化方案 先初始化串口再初始化IO 即可正常通讯
  • 【MCU简单且容易理解的工作原理】

    SOC是啥 System on Chip 一个芯片 但是片上有好多东西的意思 市面上的AI芯片 包括你知道的麒麟xxx 骁龙xxx等等一些列手机芯片都是SOC 对于SOC设计者来讲 显然要知道码农们码出来的一行行代码是如何在SOC上跑起来的
  • 为什么C语言没有被C++所取代呢?

    今日话题 为什么C语言没有被C 所取代呢 C 的复杂编译器实现和嵌入式平台的限制 使C语言保持了其地位 嵌入式系统多数仅支持C 即使支持C 也会限制某些功能 尤其是异常处理和RTTI 此外 C 引入的功能增加了二进制文件大小和运行时内存占用
  • 学习STM32正点原子好吗?

    今日话题 学习STM32正点原子好吗 正点原子的教程内容简单明了 代码也清晰直接 使初学者能够轻松理解其功能和使用方法 尤其对于需要快速完成大学作业等任务的大学生来说 可以直接借鉴并稍作修改 便可满足需求 正点原子提供的资料通俗易懂 适合用
  • 会stm32有机会进大公司吗?

    今日话题 会stm32有机会进大公司吗 我本科期间参与了飞思卡尔和电赛等比赛 使用过多种单片机 但渐渐发现单片机只是其中的一小部分 不要过分迷恋所谓的单片机基础和技巧 更值得深入研究的是C语言 如果你对此感兴趣 我愿意无偿分享一个资源包 其
  • CMSIS & STM32,如何开始? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我想在 STM32 上使用 CMSIS 启动项目 网上一搜 没找到具体的教程 有些使用 SPL 开始项
  • STM32F4XX的12位ADC采集数值超过4096&右对齐模式设置失败

    文章目录 一 前言 二 问题1 数值超过4096 三 问题1的排错过程 四 问题2 右对齐模式设置失败 五 问题2的解决方法 5 1 将ADC ExternalTrigConv设置为0 5 2 使用ADC StructInit 函数 一 前
  • 太阳诱电树立超高端产品概念,与电子产业同步发展

    无论是传统的手机 家电 安防 汽车 医疗 交通 建筑的智能化转型 还是从物联网 工业4 0 智能硬件 互联网 一场基于大数据 互联网 应用软件等技术的硬件复兴热潮正在席卷全球 没有新东西出来 每家都一样 这一长期以来的争议一直困扰着CEAT
  • 太阳诱电 | 电容器为什么会发热?什么是纹波电流

    电容器中存在寄生于电极和电介质的电阻成分 当纹波电流等交流电流通过电容器时 电阻的成分会产生热量 为了抑制发热 选择ESR较低的电容器非常重要 陶瓷电容器在电容器中ESR较低 非常适合抑制发热 电容器中的纹波电流主要是指电源电路中由于IC的
  • for循环延时时间计算

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 文章目录 前言 一 pandas是什么 二 使用步骤 1 引入库 2 读入数据 总结 前言 之前做led点亮的实验 好像是被delay函数影响了 因为delay参数设置的不对
  • STM32H5 Nucleo-144 board开箱

    文章目录 开发板资料下载 目标 点亮LD1 绿 LD2 黄 和LD3 红 三个LED灯 开箱过程 博主使用的是STM32CubeMX配置生成代码 具体操作如下 打开STM32CubeMX File gt New project 选择开发板型
  • STM32 Nucleo 上的上升沿中断多次触发

    我正在使用 STM32 NUCLEO F401RE 微控制器板 我有一个扬声器 经过编程 当向上 向下推操纵杆时 可以按设定的量改变频率 我的问题是 有时 通常 当向上 向下推动操纵杆时 频率会增加 减少多次 这意味着 ISR 正在执行多次
  • 嵌入式 C++11 代码 — 我需要 volatile 吗?

    采用 Cortex M3 MCU STM32F1 的嵌入式设备 它具有嵌入式闪存 64K MCU固件可以在运行时重新编程闪存扇区 这是由闪存控制器 FMC 寄存器完成的 所以它不像a b那么简单 FMC 获取缓冲区指针并将数据刻录到某个闪存
  • STM32 上的位置无关代码 - 指针

    我已成功在 STM32 上构建并运行位置无关的代码 向量表和 GOT 已修补 一切正常 但我对这样的代码有问题 double myAdd double x return x 0 1 double ptrmyAdd double myAdd
  • 哪些变量类型/大小在 STM32 微控制器上是原子的?

    以下是 STM32 微控制器上的数据类型 http www keil com support man docs armcc armcc chr1359125009502 htm http www keil com support man d
  • STM32 传输结束时,循环 DMA 外设到存储器的行为如何?

    我想问一下 在以下情况下 STM32 中的 DMA SPI rx 会如何表现 我有一个指定的 例如 96 字节数组 名为 A 用于存储从 SPI 接收到的数据 我打开循环 SPI DMA 它对每个字节进行操作 配置为 96 字节 是否有可能
  • 读取STM32 MCU SPI数据寄存器的值

    有很多类似的问题 但似乎没有一个问题完全相同 我正在将 STML4 MCU 连接到 6 轴传感器 LSM6DS3 我已经成功地在 I2C 中实现了所有内容 但想要 SPI 的额外速度 和 DMA 如果我能让这些第一步工作起来的话 因此 第一

随机推荐

  • Qt的connect槽函数

    一 connect 函数的不同参数形式 以及其区别 优略 除2 未知 之外 总体分为三种形式 1 3信号和槽转为字符串形参的connect函数 4 5 6 7 8信号和槽转为可调用对象的connect函数 9转到槽函数 1 将信号连接到另一
  • 视觉算法工程师面试问题集锦,从基础到进阶,会介绍细节,持续更新中......

    引言 简历上写项目的流程 项目背景是什么 应用场景在什么地方 目的是什么 创造了什么价值 你做了什么事情 遇到困难时 又是怎么解决的 面试需要准备的内容 一 项目描述与项目细节提问 主要描述项目背景 项目实现的功能与方法流程等 面试官会针对
  • 基于STM32的OLED屏显示AHT20采集的温湿度数据

    文章目录 一 实现温湿度数据采集并通过串口显示 二 实现将温湿度采集数据显示到OLED屏 1 代码下载 2 部分代码的编写 3 编译并烧录 4 运行结果 三 小结 四 参考链接 本实验使用的工具 STM32野火mini开发板 AHT20温湿
  • mysql没有写入权限_解决Errcode: 13——mysql写文件权限问题

    mysql没有写入权限 解决Errcode 13 mysql写文件权限问题 一 问题 二 权限错误 Errcode 13 解决方法 三 原理 一 问题 在数据库中select into outfile home mysql data sql
  • Three.js入门之做一个简单的3D场景内添加标点的功能

    什么是Three js 百度百科上是这么说的 Three js是JavaScript编写的WebGL第三方库 提供了非常多的3D显示功能 运行在浏览器中的 3D 引擎 你可以用它创建各种三维场景 包括了摄影机 光影 材质等各种对象 你可以在
  • 数据结构第一次上机 第一章

    数据结构第一次上机 第一章 实验题2 常见算法时间函数的增长趋势分析 目的 理解常见算法时间函数的增长情况 内容 编写一个程序exp1 2 cpp 对于1 n的每个整数n 输出log2 n n Alt 41420出根号 n nlog2 n
  • 20050621:松一口气

    今天把业务日志的数据 恢复 上去了 不管怎么样 X姐放了一罐椰奶在我桌子上 我猜大概不会收到投诉了 因为这事情她也有责任 从某种意义上说是我帮她 摆平 了 但是下午X姐的本性又露出来了 不停的冒一些点子出来 客户总是这样 喜欢出些点子 并暗
  • ARTS挑战打卡第十周

    Algorithm 一周至少一道算法题 Review 阅读并点评至少一篇英文技术文章 Tip 学习至少一个技术技巧 总结和归纳在日常工作中所遇到的知识点 Share 分享一篇有观点和思考的技术文章 01 Algorthm https lee
  • 什么是面向对象

    面向对象 定义 面向对象 Object Oriented 是软件开发方法 一种编程范式 对象来自某一个类 同时又给类赋值而实例化 面向对象编程中执行一个功能的代码叫方法 method 举例 作为团队负责人 分管好各个部门的负责人就行 不需要
  • 【TensorFlow】激活函数(Activation Functions)原理解析(十二)

    神经网络结构的输出为所有输入的加权和 这导致整个神经网络是一个线性模型 如果将每一个神经元的输出通过一个非线性函数 那么整个神经网络的模型也就不再是线性的了 使得神经网络可以更好地解决较为复杂的问题 这个非线性函数也就是激活函数 神经网络中
  • elementUI一条el-form-item控制两个必填项

    实现效果 申请日期是日期跟时段拼接的
  • Qt 文件操作

    文件操作是应用程序必不可少的部分 Qt 作为一个通用开发库 提供了跨平台的文件操作能力 Qt5 新增加了一个QFileDevice类 途中所涉及的类及其用途简要说明如下 QFlie 访问本地文件或者嵌入资源 QTemporaryFile 创
  • 动态规划之在二叉树中使用DP

    二叉树染色 题目描述 文章目录 二叉树染色 题目描述 详细思路 个人走的弯路 可略 正确思路 代码实现 传送门 小扣有一个根结点为 root 的二叉树模型 初始所有结点均为白色 可以用蓝色染料给模型结点染色 模型的每个结点有一个 val 价
  • Python爬虫(一):学习路线

    Python爬虫一 学习路线 前言 打铁还需自身硬 前置要求 掌握Python基础知识 知识点 案例 为驱动 第一阶段 爬虫核心 爬虫的前导知识 爬虫网络请求模块 uellib requests 数据解析 正则 xpath bas4 第二阶
  • CentOS6.5菜鸟之旅:文件权限详解

    一 前言 Linux下所有资源 设备均被视作文件来操作 而文件权限则是决定用户可各文件操作的范围 无论是平时使用Linux 还是写程序均涉及这方面 以下为个人学习的整理 供以后查阅 二 三种权限 1 普通权限 权限 文件 目录 r 读权限
  • 深度学习下的医学图像分析

    转 https www leiphone com news 201706 xwSoWmhNgkn34iGS html https www leiphone com news 201706 UvZxrlbedfT7Meid html http
  • 编译器与平台相关性

    每种处理器都可能会有自己的汇编语言编译器 而对于同一款处理器来说 针对不同的平台 比如 Windows 和 Linux 也会有不同版本的汇编语言编译器 理论上 不管用的是什么操作系统 Windows 也好 DOS 也好 Linux 也好 只
  • Ansible 介绍安装及其使用(基础)

    Ansible 介绍安装及其使用 基础 1 介绍 Ansible 是一个 IT 自动化工具 它能配置系统 部署软件 编排更复杂的 IT 任务 如连续部署或零停机时间滚动更新 Ansible 用 Python 编写 尽管市面上已经有很多可供选
  • uni-app h5公众号 上传多张图片问题

    因uni app的api不支持安卓手机上传多张图片所以要单独引入用到jssdk uni app的底层不是jssdk 第一步 引入jssdk npm i weixin js sdk 文档 https developers weixin qq
  • 【STM32】cubeMX配置HAL库驱动L298N控制直流有刷电机

    目录 1 电机为什么需要驱动板呢 为什么不能用控制器直接控制电机呢 2 H桥电路介绍 3 L298N原理介绍 4 实物接线图 5 CUBEMX配置 6 代码 7 演示视频 L298N是常用来驱动小型直流有刷电机 两个 和步进电机 一个 的电