STM32 电机教程 10 - BLDC 6 步方波控制

2023-11-01

前言

      无刷直流 Brushless Direct Current BLDC)电机是一种正快速普及的电机类型,它可在家用电器、汽车、航空航天、消费品、医疗、工业自动化设备和仪器等行业中使用。正如名称指出的那样,BLDC 电机不用电刷来换向,而是使用电子换向。BLDC 电机和有刷直流电机以及感应电机相比,有许多优点。其中包括:

更好的转速-转矩特性

快速动态响应

高效率

使用寿命长

运转无噪音

较高的转速范围此外,

由于输出转矩与电机体积之比更高,使之在需要着重考虑空间与重量因素的应用中,大有用武之地。

http://file.elecfans.com/web1/M00/54/35/pIYBAFsjC5GABCymAAt6wgXPYnw847.gif  http://file.elecfans.com/web1/M00/54/35/pIYBAFsjC5KAIWX6AAlIvqoUoGY137.gif

                     有刷电机                                                                                                    无刷电机    

 

关于BLDC的基本原理与控制控制基础知识上一讲已经介绍,本节将用NUCLEO-F103RB和X-NUCLEO-IHM07M1 3SH快速为大家实现BLDC的转动控制

本节所用电机为2836无刷电机,电机有两组线(hall传感器线和电机三相线),工作电压24V,最大转速12000rpm:

示例详解

本节用到ST官方推出的NUCLEO-F103RB和X-NUCLEO-IHM07M1 3SH 开发板。

NUCLEO-F103RB对应的大致原理接线图:

X-NUCLEO-IHM07M1 3SH部分原理图:

 

 

    1. 准备操作
      1. X-NUCLEO-IHM07M1 3SH是一款专门用于PMSM(永磁同步)或BLDC(直流无刷 )的电机驱动板,其电机驱动板驱动芯片型号为L6230(详细数据手册可在st官网下载),本节主要目的是给大家演示BLDC 6步方波控制原理,仅需让BLDC电机实现简单正反转动即可,仅需用到IN1,IN2, IN3和OUT1,OUT2,OUT3以及HALL传感器信号接口H1,H2,H3。

 

需要用到的信号

对应MCU引脚

EN1

PC10

IN1

PA8

EN2

PC11

IN2

PA9

EN3

PC12

IN3

PA10

H1

PA15

H2

PB3

H3

PB10

为了更加简单地介绍清楚BLDC 6 步方波控制的具体实现,本节直接使用普通IO口方式实现对BLDC电机的6步方波驱,将EN1、EN2、EN3和 IN1、IN2、IN3全部配置成普通输出IO口输出模式,H1,H2,H3配置普通IO口输入模式。

 

      1. 在STM32CubeMX中,有专门的NUCLEO-F103RB工程模板,新建一个Cube工程,芯片型号为st32f103rb:

生成一个简单的工程模板实现了RCC,SYS,USART2接口的配置,同时还实现了LD2(LED)引脚的配置。接下来手动配置IO: 配置PA8,PA9,PA10,PC10,PC11,PC12为GPIO_OUTPUT模式, PA15,PB0,PB10为GPIO_INPUT模式:

生成工程:

 

 

      1. 打开工程, 在main.c中加入如下代码:

 

设置工程下载后自动运行:

编译代码,下载程序运行可直以看到电机成功转动起来,如果有示波器可以看到三相线上的输出电压波形图如下:

MCU引脚上的波形为:

OK,本期实验完成!本节通过普通IO的驱动6步换相方式成功让BLDC电机转动起来,但是细心的同学可能会发现,本节的BLDC电机仅是转起来了,电机的速度完全不可控,下一节将介绍如何通过STM32高级定时器产生PWM的方式来实现BLDC电机速度控制。最后如果大家有什么疑问或是有想了解的其它内容,也欢迎大家留言!!最后喜欢这个公众号的同学们记得加关注了,每天都会有技术干货推出!!

 

文中源码及资料下载,关注十三公众号:

在公众号里给十三发送 “下载|STM32 电机教程 10” :

 

 

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

STM32 电机教程 10 - BLDC 6 步方波控制 的相关文章

  • GCC - 如何停止链接 malloc?

    我正在努力将我的代码缩减到最小的骨架大小 我使用的是只有 32k 闪存的 STM32F0 需要很大一部分闪存用于数据存储 我的代码已经有大约 20k 闪存大小 其中一些是由于使用了 STM32 HAL 函数 我可以在以后需要时对其进行解释和
  • 以字符串形式接收数字(uart)

    我正在尝试通过 uart 接收一个包装为字符串的数字 我发送数字 1000 所以我得到 4 个字节 空字符 但是 当我使用 atoi 将数组转换为数字并将整数与 1000 进行比较时 我并不总是得到正确的数字 这是我用于接收号码的中断处理函
  • 在 MCU 内部 FLASH 中从一个固件跳转到另一个固件

    我目前正在开发针对 STM32F030C8 的引导加载程序固件应用程序 我在分散文件中指定引导加载程序应用程序将占用主内存位置 0x08000000 到 0x08002FFF 扇区 0 到扇区 2 我还编写了一个主固件应用程序 存储在0x0
  • STM32 F072上的软件如何跳转到bootloader(DFU模式)?

    STM32应用笔记2606对此进行了讨论 但没有简单的代码示例 该答案已使用 IAR EWARM 在 STM32F072 Nucleo 板上进行了测试 这个答案使用 STM32标准外设库 仅此而已 请注意 验证您是否成功进入引导加载程序模式
  • 133-基于stm32单片机停车场车位管理系统Proteus仿真+源程序

    资料编号 133 一 功能介绍 1 采用stm32单片机 4位数码管 独立按键 制作一个基于stm32单片机停车场车位管理系统Proteus仿真 2 通过按键进行模拟车辆进出 并且通过程序计算出当前的剩余车位数量 3 将剩余的车位数量显示到
  • rt-thread studio中新建5.0不能用

    文章目录 一 版本对比 二 文件和文件夹打斜杠 在使用RT Thread studio创建新工程5 0版本的时候 结果发现新建完成之后程序不能正常运行 但是创建4 10版本的时候却能运行 那肯定是新版本出现了BUG 一 版本对比 首先对比了
  • STM32F103概要

    The STM32F103x4 STM32F103x6 STM32F103xC STM32F103xD and STM32F103xE are a drop in replacement for STM32F103x8 B medium d
  • [屏驱相关]【SWM166-SPI-Y1.28C1测评】+ 有点惊艳的开箱

    耳闻华芯微特许久了 看到论坛得评测活动赶紧上了末班车 毕竟对有屏幕得板子也是很喜欢得 京东快递小哥客客气气 微笑着把快递给了我 好评 直接拆了包 在此之前没看过视频号 所以这个圆盘盘得模具还是有点惊喜的 正面照如下 开机有灯光秀 还有动画
  • 跟着野火学FreeRTOS:第一段(任务定义,切换以及临界段)

    在裸机系统中 系统的主体就是 C P U CPU CP U 按照预先设定的程序逻辑在 m a i n
  • 1.69寸SPI接口240*280TFT液晶显示模块使用中碰到的问题

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

    1 69寸SPI接口240 280TFT液晶显示模块使用中碰到的问题说明并记录一下 在网上买了1 69寸液晶显示模块 使用spi接口 分辨率240 280 给的参考程序是GPIO模拟的SPI接口 打算先移植到FreeRtos测试 再慢慢使用
  • STM32F4XX的12位ADC采集数值超过4096&右对齐模式设置失败

    文章目录 一 前言 二 问题1 数值超过4096 三 问题1的排错过程 四 问题2 右对齐模式设置失败 五 问题2的解决方法 5 1 将ADC ExternalTrigConv设置为0 5 2 使用ADC StructInit 函数 一 前
  • 嵌入式开发--STM32G4系列片上FLASH的读写

    这个玩意吧 说起来很简单 就是几行代码的事 但楞是折腾了我大半天时间才搞定 原因后面说 先看代码吧 读操作 读操作很简单 以32位方式读取的时候是这样的 data IO uint32 t 0x0800F000 需要注意的是 当以32位方式读
  • 库函数点亮Led

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 文章目录 前言 一 pandas是什么 二 使用步骤 1 引入库 2 读入数据 总结 前言 提示 这里可以添加本文要记录的大概内容 例如 随着人工智能的不断发展 机器学习这门
  • STM32 Nucleo 上的上升沿中断多次触发

    我正在使用 STM32 NUCLEO F401RE 微控制器板 我有一个扬声器 经过编程 当向上 向下推操纵杆时 可以按设定的量改变频率 我的问题是 有时 通常 当向上 向下推动操纵杆时 频率会增加 减少多次 这意味着 ISR 正在执行多次
  • 从没有中断引脚并且在测量准备好之前需要一些时间的传感器读取数据的最佳方法

    我正在尝试将压力传感器 MS5803 14BA 与我的板 NUCLEO STM32L073RZ 连接 根据 第 3 页 压力传感器需要几毫秒才能准备好读取测量值 对于我的项目 我对需要大约 10 毫秒来转换原始数据的最高分辨率感兴趣 不幸的
  • PWM DMA 到整个 GPIO

    我有一个 STM32F4 我想对一个已与掩码进行 或 运算的 GPIO 端口进行 PWM 处理 所以 也许我们想要 PWM0b00100010一段时间为 200khz 但随后 10khz 后 我们现在想要 PWM0b00010001 然后
  • 在 Contiki 程序中使用 malloc

    考虑以下 Contiki 程序 include
  • HAL_Delay() 陷入无限循环

    我被 HAL Delay 函数困住了 当我调用此函数 HAL Delay 时 控制陷入无限循环 在寻找问题的过程中 我发现了这个 http www openstm32 org forumthread2145 threadId2146 htt
  • stm32l0: 执行MI命令失败。使用 vFlashErase 数据包擦除闪存时出错

    我正在使用 Nucleo STM32L031 和 AC6 STM32 工作台 eclipse 我编写应用程序并进入调试模式 一切正常 直到我在应用程序中添加另一个功能 我注意到当我删除 评论 新函数 软件可以再次进入调试模式 但是当我添加

随机推荐

  • 计算机专业毕设论文题目大全(二)

    这一期为大家整理了计算机专业常见的论文题目 需要参考资料的同学可以直接点击后面链接下载 没有链接的可以添加微信biyezhan007来获取资源 序号 题目 下载链接 101 基于Android的跃动旋律音游app的设计与实现 102 基于A
  • 【开发工具-Guava】新集合类型

    1 概述 转载 新集合类型 Guava引入了很多JDK没有的 但我们发现明显有用的新集合类型 这些新类型是为了和JDK集合框架共存 而没有往JDK集合抽象中硬塞其他概念 作为一般规则 Guava集合非常精准地遵循了JDK接口契约 2 Mul
  • 【学习笔记】深入浅析BIO、NIO、AIO

    BIO NIO AIO Java的I O演进之路 I O模型 就是用什么样的通道或者说是通信模式和架构进行数据的传输和接收 很大程度上决定了程序通信的性能 Java共支持3种网络编程的I O模型 BIO NIO AIO 实际 通行需求下 要
  • electron-vue 使用remote 模块 进行多个子窗口的关闭

    remote 模板在13版本后禁用了 至于我为什么用它 是因为一个功能的原因 多个子窗口可以进行对应的操作事件后单独关闭当前的某一个子窗口 1 先进行下载 npm yarn install save electron remote 2 需要
  • Python 代码执行超时判断

    通过 signal 信号处理函数 import signal 自定义异常类 继承自BaseException 这样Exception就捕获不到 class TimeoutException BaseException pass 超时信号函数
  • PCL 由点云生成深度图像

    前言 在电脑上的pcl1 8 0版本可能是由于版本问题 无法在窗口显示深度图像 但是深度图像确实是生成了的 可以通过一个API将深度图像保存为一个png格式的图片然后查看 该函数如下 save rangeImage 相关的头文件 inclu
  • BDCN论文学习

    1 Dilated Convolutions 图像语义分割最核心的两个地方是用pooling下采样减小图像尺寸增大感受野 另一个是用deconv反卷积上采样增大图像尺寸 是用pooling可以增大感受野但是会带来信息损失 若是不用pooli
  • java正则表达式匹配数字和小数点,快来收藏!

    1 为什么要使用分布式锁 使用分布式锁的目的 无外乎就是保证同一时间只有一个客户端可以对共享资源进行操作 1 1举一个很长的例子 系统 A 是一个电商系统 目前是一台机器部署 系统中有一个用户下订单的接口 但是用户下订单之前一定要去检查一下
  • 扫普通链接二维码打开小程序

    一 启用扫描二维码打开小程序 登录小程序后台 进入 开发 开发设置 扫普通链接二维码打开小程序 启用功能 二 配置流程 二维码规则 指的是放置校验文件的路径 同一个域名可为不同小程序创建不同路径存放校验文件 前缀占用规则 选择占用则其他帐号
  • python的基本语法(命令提示符、赋值、标识符、注释、语法规则、内建函数和python应用领域)

    python交互式命令行提示符 gt gt gt print hello gt gt gt 主要提示符 world 续行符 hello world 次要提示符 表示上一条语句没有结束 python赋值 直接赋值 gt gt gt a 1 连
  • html表单验证数字,iview表单验证数字

    验证输入字符串必须为数字 html js exchangeIntegral required true message 请输入兑换积分 trigger blur type string pattern d message 请输入数字 tri
  • 干货!自动驾驶场景下的多目标追踪与实例分割

    点击蓝字 关注我们 AI TIME欢迎每一位AI爱好者的加入 多目标跟踪和分割 MOTS 需要将视频中给定的类别的物体进行检测 分类 跟踪和像素级分割 在其重要的应用场景自动驾驶中 复杂的路况 市区内密集且相似的车辆和行人 以及对低功耗低延
  • sqli-labs-master第17关

    前言 这一关变化还是挺大的 让我们修改密码 第17关 http 192 168 89 134 sqli labs master Less 17 到这里我们还是毫无头绪 只能看源代码 从源码中可以看到 接收到用户POST的uname和pass
  • python猜数字游戏编程、直到猜对为止显示猜了几次_python编写猜数字小游戏

    python编写猜数字小游戏 本文实例为大家分享了python编写猜数字小游戏的具体代码 供大家参考 具体内容如下 import random secret random randint 1 30 guess 0 tries 0 print
  • QCC300x笔记(9) -- 从一个客户问题说说传统蓝牙的AVRCP

    哈喽大家好 这是该系列博文的第九篇 篇 lt lt 系列博文索引 快速通道 gt gt 写在前面 客户反馈连接苹果手机的蓝牙 播放音乐时 会频繁上报歌词 1 客户使用苹果手机 播放音乐后会频繁上报歌词 一句歌词上报一次 通过ID3事件在AL
  • 更改conda镜像源

    show channel urls true channel alias http mirrors tuna tsinghua edu cn anaconda default channels http mirrors tuna tsing
  • 分布式介绍

    虽然本人在前面也写过好几篇分布式系统相关的文章 主要包括CAP理论 分布式存储与分布式事务 但对于分布式系统 并没有一个跟清晰的概念 分布式系统涉及到很多的技术 理论与协议 很多人也说 分布式系统是 入门容易 深入难 我之前的学习也只算是管
  • Django/Flask/Tornado三大web框架性能分析

    写在前面 本文的数据涉及到之前遇到过的问题 大概一次 http 请求到收到响应需要多少时间 这个问题在实际工作中与框架有比较大的关系 因此特别就框架的性能做了一次分析 这里使用之前的一个报告数据 Python s Web Framework
  • ubuntu安装openpose

    一 使用Git直接下载openposegit clone https github com CMU Perceptual Computing Lab openpose git二 下载各种模型文件 比较大 可能需要几分钟到几个小时不等 看网速
  • STM32 电机教程 10 - BLDC 6 步方波控制

    前言 无刷直流 Brushless Direct Current BLDC 电机是一种正快速普及的电机类型 它可在家用电器 汽车 航空航天 消费品 医疗 工业自动化设备和仪器等行业中使用 正如名称指出的那样 BLDC 电机不用电刷来换向 而