直流有刷电机驱动基于STM32F302R8+X-NUCLEO-IHM07M1(三)


前言

主控板STM32F302R8+驱动板X-NUCLEO-IHM07M1+直流减速电机37GB3530,实现电机的正反转驱动。区别于上两章节,本章节工具链采用STM32CubeMX+Matlab/Simulink+Keil,在STM32CubeMX中配置底层,在Matlab/Simulink写应用层,在Keil环境中写应用层与底层的代码接口,并完成程序的集成。

一、STM32F302R8+X-NUCLEO-IHM07M1驱动直流电机

1.1.功能需求

驱动直流电机转动,并实现直流电机的换向控制;按下一次按键电机正转,LED亮;再按一次按键电机停止,LED灭;再按一次按键电机反转,LED亮;再按一次按键电机停止,LED灭,以此循环。用到的控制信号与控制板STM32F302R8对应的引脚关系如下表所示。
在这里插入图片描述

1.2.硬件设计

控制板:STM32F302R8
驱动板:X-NUCLEO-IHM07M1
直流电机:37GB3530,额定功率10W,额定电压12V,额定电流0.3A

二、软件编程

2.1.底层配置

1、RCC设置为外接时钟,72MHz
2、PA8、PA9、PC10、PC11设置为推挽输出,无上下拉电阻,高速,初始化状态值为0;PB13设置为推挽输出,下拉电阻,高速,初始化状态值为0;PC13设置为输入,无上下拉电阻。
3、IDE设置为MDK-RAM,在Keil环境中编写应用层与底层的接口函数,并在Keil环境中完成应用层代码与底层代码的集成。
在这里插入图片描述
在这里插入图片描述

2.2.应用层与底层的接口开发

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

2.3.应用层开发

编程思路:检测按键状态,通过按键状态执行不同的电机运行状态
在这里插入图片描述
在这里插入图片描述

2.3.1按键检测

在这里插入图片描述
当检测到按键的下降沿时,Mode++,Mode可能的值为:0,1,2,3,通过不同的Mode值执行不同的电机运行状态。

2.3.2状态切换

在这里插入图片描述
默认在停止状态并使能桥臂1和桥臂2,如果Mode=1,电机正转;Mode=2,电机停止;Mode=3,电机反转;如果Mode=4电机停止,以此循环。

2.3.3仿真验证

在这里插入图片描述
在这里插入图片描述
设定了5个下降沿,Mode值得变化为:1 2 3 0 1 ,电机依次正转 停止 反转 停止 正转
在这里插入图片描述
经过仿真验证,符合自己的逻辑设计需求

2.3.4输入输出信号类型设置

底层与应用层接口信号的名称及数据类型已经在Keil环境设置完成,设置如下输入输出信号类型:
在这里插入图片描述
在这里插入图片描述
其余输出信号均参考EN1_State设置

2.3.5代码生成设置

在这里插入图片描述
STM32F302R8芯片为ARM Cortex-M4内核
在这里插入图片描述
求解器设置为离散
在这里插入图片描述
在这里插入图片描述

2.3.6代码生成

Ctrl+B进行代码生成
在这里插入图片描述
注:因为在Stateflow中使用了falling函数,代码生成文件多了rt_zcfcn.c;rt_zcfcn.h;zero_crossing_types.h三个文件
在这里插入图片描述

2.4.应用层与底层的代码集成

将Matlab生成的代码文件夹复制到底层生成的工程下:APP_DCMotor
在这里插入图片描述
在工程中将APP_DCMotor目录中的.c文件都添加进工程
在这里插入图片描述
添加头文件路径
注:此时编译会报错,未定义“solver_zc.h”头文件,该头文件在Matlab安装路径下面,可以直接把该文件粘贴复制到APP_DCMotor文件夹下,也可以将改文件的路径进行添加。
在这里插入图片描述
在这里插入图片描述
编写驱动函数
在这里插入图片描述
在主函数中调用Matlab生成代码中的函数,APP_Motor_initialize()为模型初始化函数;APP_Motor_step()模型函数(执行该函数一次,相当于在Matlab中运行该模型一次),根据APP_Motor_step()函数的运算结果,进行MCU引脚赋值进行电机驱动,在Matlab中设置模型10ms运行一次,所以在工程下也要确保APP_Motor_step()函数10ms运行一次,在While循环里加入10ms延时,近似模拟10ms运行APP_Motor_step()函数一次在这里插入图片描述

2.5.下载验证

在这里插入图片描述

总结

本章节采用STM32CubeMX+Matlab/Simulink+Keil工具链完成直流电机的驱动及方向控制,为后续章节的分析奠定基础。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值