使用Simulink进行stm32开发2


基于对模型开发的学习,在这里用simulink搭建小车电机的控制模块。因为一直犹豫到底是直接使用stm32的驱动包进行开发还是直接做完模块合成到软件中,所以准备用两种方式搭建这个简单的模块,本章主要使用stm32的驱动包来开发,下一章再直接使用simulink生成集成到工程中。

配置工程文件

基本上配置方式和之前文章使用simulink进行stm32开发1里一样也是先使用Cubemx对引脚进行配置。这次为了控制4个电机,需要4路PWM通道,以及用于控制驱动引脚的8路GPIO口(每个电机由2个接口控制电机转动方向),此外,因为使用的配置项大概如图(其他一些预留引脚是为了后面功能服务的,此处不赘述)在这里插入图片描述
主要使用的是TIM3通道,这里为了节省资源,4路pwm波全部由TIM3配置,配置如图所示
在这里插入图片描述
然后配置8路gpio通道用于控制l298驱动,每个电机由两路控制,配置如下

引脚定义功能标识
GPIOE.7左前轮电机控制引脚1MOTOR_CONTROL1_1
GPIOE.8左前轮电机控制引脚2MOTOR_CONTROL1_2
GPIOE.9右前轮电机控制引脚1MOTOR_CONTROL2_1
GPIOE.10右前轮电机控制引脚2MOTOR_CONTROL2_2
GPIOE.11左后轮电机控制引脚1MOTOR_CONTROL3_2
GPIOE.12左后轮电机控制引脚2MOTOR_CONTROL3_2
GPIOE.13右后轮电机控制引脚1MOTOR_CONTROL4_2
GPIOE.14右后轮电机控制引脚2MOTOR_CONTROL4_2

在这里插入图片描述

simulink 模块搭建

stm32驱动模块

接着开始搭建simulink的模块,因为配置了simulink模块与cubemx的连接(使用Simulink进行stm32开发1),可以拉出模块tim和gpio模块并配置如下:
在这里插入图片描述
上面是pwm的驱动模块,要记得设置为占空比控制
在这里插入图片描述

下面是gpio的控制模块。
gpio是为了控制L298n驱动板的,逻辑如下
在这里插入图片描述

配置数据字典

为了使用一些需要的变量类型和变量名称,需要配置数据字典
在这里插入图片描述
点击这个按钮进入新建一个sldd文件,我这里放在了和工程的文件夹内,在进行一些模块移植的时候可以进行添加。
在这里插入图片描述
配置的几个变量如下
在这里插入图片描述
主要是TRUE和FALSE这种布尔值,另外加了一个motion的枚举类型,小电机的动作类型根据逻辑分类不多,一共也就主要为了把motion的几个值都放在一起管理,另外要注意的是为了让这些变量类型在生成代码的时候能够在代码里生成,,要把数据存储的类型选为exported或exportedGlobal。
在这里插入图片描述

配置电机控制函数

根据控制l298的逻辑,需要建立一个控制gpio的函数,这里我设置了一个simulink function叫 MotorCtrl如下
在这里插入图片描述
在这里插入图片描述
这里用了一个switch case的逻辑区分停止,顺时针转动,逆时针转动几种小电机的运行模式,然后输出控制的两个引脚的值,在这里设置的几个引脚的赋值类型都是布尔值boolean,case内部执行如下(例:电机停止)
在这里插入图片描述
然后,通过function caller的方式调用该函数在这里插入图片描述

模块封装

上面的gpio的控制块加上控制pwm波占空比(电机速度)的块就可以封装为一个建议的小车电机控制模块了(由于小车的满载转速还不确定,因此这里控制速度的变量暂时没有加增益进行匹配)
小车电机控制块
最后把该模块封装为了如下的形式
在这里插入图片描述

加入输入并生成代码

为了验证该模型的正确性,这里测试4个电机的速度和转动方向,设置不同的pwm占空比,其中两个电机正转,两个为反转,如图
在这里插入图片描述
其中控制转动方向的变量用我们设置的数据字典里的值进行代替,即
在这里插入图片描述
然后为了能在程序里用全局变量表示四个电机的占空比(速度),这里设置了4个signal 的名字
在这里插入图片描述
设置为全局输出
在这里插入图片描述
接着,生成代码
在这里插入图片描述
得到代码,这里本人发现有一个ert_main的文件和本身的main文件冲突了,然后又回到simulink设置
在这里插入图片描述
将generate an example那个选项的√去掉,再生成,over
在这里插入图片描述
这里用一个逻辑分析仪看几个通道的pwm控制是否成功,补张图
在这里插入图片描述

  • 5
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值