首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐

BLDC控制实验:方波、霍尔、开环、调速、正反转

  • 23-09-22 01:23
  • 4057
  • 5732
blog.csdn.net

本文记录博主学习BLDC控制软件的过程。

文章目录

  • 1 概述
  • 2 底层代码生成
  • 3 接口及配置代码
  • 4 应用层模型及代码生成
    • 4.1 换向请求模块
    • 4.2 换向等待状态机
    • 4.3 六步换相模块
    • 4.4 代码生成及调用
  • 5 总结

1 概述

本文是博主学习BLDC控制的第三次实验。在上一篇博客《BLDC控制实验:方波、霍尔、开环、调速、正转》的基础上,实现按键控制电机正反转的功能,更改的地方主要在于应用层模型中:

  • 在电机状态机中加入反转等待的状态;
  • 在六步换相模块中根据正反转判断导通的开关;

在之前博客中已经实现的功能,本文不再赘述。

2 底层代码生成

本文实现的正反转功能需要通过Key3按键来识别正反转请求,因此只要在CubeMX中增加Key3按键的配置并重新生成代码即可。

从原理图可以看到,Key3按键对应芯片的PC14引脚。
在这里插入图片描述
与之前两个按键相似,在CubeMX中将PC14配置成Input模式的GPIO,并上拉。
在这里插入图片描述

3 接口及配置代码

按键输入接口函数也和前两个按键接口函数类似,调用该函数可以返回按键状态(1或0)。

uint8_t Get_Key3State(void)
{
	return((uint8_t)(!HAL_GPIO_ReadPin(GPIOC,GPIO_PIN_14)));
}
  • 1
  • 2
  • 3
  • 4

4 应用层模型及代码生成

4.1 换向请求模块

模型从接口函数读入Key3状态后,判断出换相请求,也是通过延时两个周期判断产生了上升沿。如下图,子系统的输入是Key3State,输出是DirectionReq。
在这里插入图片描述
后面的模块会根据DirectionReq的数值,来决定电机正转或反转。
在这里插入图片描述
当DirectionReq = 0时,没有请求换向,则Switch模块输出上一个周期的方向;当DirectionReq = 1时,检测到请求换向,则Switch模块输出上一个周期相反的方向;

4.2 换向等待状态机

换向的过程可以在电机停止的时候,也可以在电机转动的时候。当电机停止的时候按下Key3,下一次按下Key1的时候就会从0加速;但是电机转动的时候,就需要先停下来再反转方向。这里博主在状态机中加入了一个换向State,来让电机先停一会再反方向转起来。
在这里插入图片描述
如上图中,当输入的DirectionReq == 1时,会从Run状态跳转到ChangeDirection状态,并在进入的时候触发StopMotorEvent,这个事件会在后面的触发子系统中关闭三个上桥的MOS管。在状态机内,通过WaitCount计数10个周期后,再跳转到Start状态重新启动电机,然后结合4.1的换向请求模块,电机就会反转。

4.3 六步换相模块

前两篇博客中只考虑电机正转的情况,所以六步换相的查表过程只考虑了正转查表。本文需要通过4.1中的Direction信号来判断查正转的表还是反转的表。
在这里插入图片描述
如上图,利用Switch模块判断正转或反转,将会输出不同的查表结果。

4.4 代码生成及调用

将上面的模型生成代码后,代码文件数量都不变,直接拷贝到KEIL工程的路径下,并且也不用再修改原来的函数就可以编译了。

5 总结

相比于前两个实验,实现正反转还是比较容易的。经过了三个实验,博主也发现了自己在软件架构设计上不那么专业,因为每次修改都需要花费一番功夫,并且发现原来的一些不合理之处。希望以后能有所进步和提高吧。

>>返回个人博客总目录

注:本文转载自blog.csdn.net的chhttty的文章"https://blog.csdn.net/u013288925/article/details/119577295"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2492) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

101
推荐
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2024 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top