嵌入式学习打卡

准备开始玩电机,第一次接触电机,是STM32的无刷电机双驱动。首先得先下好环境,软件
1.X-CUBE-MCSDK和STM32Cubemax一安装与使用
我安的两个软件都不是最新版本的,可能需要根据实际情况去安装你们需要的版本。两个软件装好了之后呢会在桌面生成两个图标

对了,千万千万不要忘记安装一个java的环境,

Java下载地址:www.java.com/zh_CN/

STM32CubeMX下载地址:ST官网搜索STM32CubeMX

 2.ST Motor Control Workbench 的使用

在使用 ST Motor Control Workbench (以下简称:Workbench)前我们需要知道电机的一些参数, 我们配套电机参数如下表所示。如果不知道电机参数时通常我们可以咨询电机厂商,一般电机厂商都会提供电机的相关参数, 或者我们可以自己通过仪器测得。在我们知道电机参数后我们就可以使用Workbench来配置生成代码来控制电机了, 以下我们使用BLDC速度控制使用霍尔传感器(HALL)为例来说一下Workbench的使用方法, 以下只是简单介绍Workbench的使用,并不会介绍FOC相关的原理, 这里的目的是使用Workbench配置后生成的代码让电机跑起来,不过生成的代码并不能直接使用, 还需要做简单的修改,所以我们只讲解需要修改部分的代码。

2.1新建项目

以下示例工程在\base_code\improve_part\BLDC_FOC_V5.44_Hall_speed_control目录下。

下图是双击MotorControl Workbench 5.4.4打开的界面,整个界面可以分为3个部分。

  1. 新建项目、加载项目、启动Motor Profiler 5.4.4

  2. 最近打开过的项目列表

  3. 示例项目

 

 参数配置

下图是参数配置界面,整个界面可以大概分为4个部分:

  1. 用户图标按钮,可以通过点击图标来新建、加载、保存项目、生成代码和上位机控制电机等;

  2. 用于设置所选硬件的功能,如电机参数或传感器的使用;

  3. 显示一些主要的参数;

  4. 用于提示一些用户的操作反馈,或者错误等。

单片机和时钟频率选择

点击下图中的芯片型号可以选择对应我们控制板的MCU型号。

选择对应的芯片型号,注意,这里的时钟源需要选择25MHz。

电机参数配置

如下图所示,电机 Motor Parameters 可以配置电机相关的参数和传感器, 以下内容需要根据实际使用的电机准确填写,否则可能导致电机无法启动或者抖动。

下图填写电机相关参数,如极对数、最大速度、额定电流电压等参数。

在下图中可以选择传感器,可以选择HALL和Encoder,如果都不选则使用无传感器模式。 此处要注意下“placement electrical angle”一栏,要根据情况设置霍尔传感器的放置电角度, 使用BLDC的话这里填的是120,如果使用PMSM,是240 deg,填写不正确可能导致电机鸣叫或不转等问题。

速度反馈配置

点击 Speed Sensing 可以打开速度反馈配置界面,如下图所示,这里可以选择使用什么传感器来反馈速度, 可以配置主传感器和辅助传感器,这里配置主传感器为HALL,不使用辅助传感器。

MOS 管驱动配置

点击 Phase U 可以配置 MOS 管的驱动极性,我们的驱动板中高端 MOS 管和低端 MOS 管都是高电平打开。

MOS 管配置

点击下图中的 Power Switches 就可以设置 MOS 管的相关参数。

如下图所示在这里可以设置死区时间和 MOS 管的最大开关频率,从数据手册中可以知道我们使用的 MOS 管死区时间设置为100ns就可以。

总线电压传感器

点击 Bus Volatage Sensing 可以设置电压传感器相关参数,如下图所示。 由于我们使用了电压隔离芯片,还使用加法电路,所以这里不能配置出适合我们驱动板的参数, 需要我们重新实现电压的转换函数,所以这里对于我们的驱动板来只配置了前面的分压电路。

温度传感器

点击 Temperature Sensing 可以设置温度传感器相关参数,如下图所示。 不过该配置只支持 ST 的温度传感器,因此这里我们只要设置好温度范围就可以了, 其他参数可以不管,具体的温度获取函数需要我们根据配套的传感器来实现。 这里设置传感器最高采集温度为120℃,然后使能传感器和温度保护,并将温度最大保护电压设置为80℃。

电流采样电路

点击 Current Sensing 可以配置电流采集相关的参数,如下图所示,这里根据我们的驱动板选择3电阻采样, 采样电阻的阻值为0.02ohm。然后勾选 Amplification on board ,点击 Calculate 来计算放大倍数。

配置后如下图所示,由于我们使用了隔离运放,所以这里并不能按照原理图对应的来配置, 在这里我们只要配置出和驱动板相同的倍数和偏置电压就可以了。电压放大倍数配置为8倍, 偏置电压配置1.2V。

驱动配置

点击 Fimware Drive Management 后,选择 Drive Settings,配置界面如下图所示。 这里可以配置PWM输出频率,通常配置为10KHz~20KHz,这里我们配置为16KHz, 把高端和低端 MOS 管的空闲状态都设置为关,执行时间为1ms,PI 可以根据电机的运行效果来调整, 控制模式选择速度控制模式,默认目标速度设置为1500RPM,转矩和磁通控制的PI这里使用默认参数, 当然如果觉得控制效果不好也可以自己调整。

附加功能和PFC配置

点击 Fimware Drive Management 后,选择 Additional Features,在这里可以选择一些控制算法, 不过我们这里都不选择。

传感器使能和固件保护配置

点击 Fimware Drive Management 后,选择 Sensing and FW protections,如下图所示, 这里可以使能电压传感器和使能过压、欠压保护功能,并且配置有效的电压工作范围, 超过电压范围后禁用PWM输出。

FreeRTOS

点击 Fimware Drive Management 后,选择 FreeRTOS,如下图所示, 这里可以选择是否启用 FreeRTOS 操作系统,这里我们不需要就不启用了。

用户界面

点击 User Interface 可以配置用户界面,在SDK 5.x 中LCD相关的固件已经没有了,这里参数都被禁用, Start/Stop Button 选择使能,Serial Communication 中使能串口,使用 Bidirectional。

数字输出输入 I/O 配置

点击 Digital I/O 配置数字输出输入相关引脚,在这里需要配置驱动定时器和相关的引脚, 以及霍尔传感器的配置,还可以配置串口和启动停止按键的IO配置,这里我们只需要根据原理图来配置就可以了, 我们选择电机驱动接口1来接电机驱动板。

模拟输出和保护配置

点击 Analog Input and Protection 可以配置模拟量输出相关的引脚和保护功能。

如下图所示,这里可以配置采样电流相关的ADC和引脚,已经采样率等参数,只需要根据原理图中对应的引脚配置就可以了, 这里的过流保护选择没有保护。

下面两图中配置电压和温度的采集ADC和引脚,这里我们只需要根据我们的原理图配置就可以了, 配置如下图所示。

DAC 功能

点击 DAC Functionality 可以配置DAC功能,这里主要是调试使用,不过这里的输出引脚是固定的, 只能是PA4和PA5并不能更改,而这里的 PA4 我们已经使用了,所以这里只能选择不使用。

交流输入配置

在下图中,红框部分是关于交流输入的相关配置,不过我们驱动板使用的是直流输入, 所以这部分我们可以不用管。

引脚分配与检查

点击 Pin assignment 可以查看引脚的分配,Check 可以检查引脚是否有冲突,在检查OK后配置工作就完成了。

至此关于参数的配置我们就完成了,接下来就可以生成代码了。

2.2 生成工程代码

在配置完所有参数后我们可以保存我们的项目了,点击Save Project就可以保存项目了(注意,保存路径中不能有中文)。 我们可以点击Generation来生成代码,如下图所示,左侧可以选择 STM32CubeMX ,可以选择开发环境, 这里我们选择Keil MDK-ARM V5 ,固件版本可以选择最新或者已经下载好的版本,驱动类型选择HAL库。 配置好后就可以点击Generation生成代码了。如果之后还需要修改配置,那么我们可以点击 UPDATE 来更新代码。

 这里生成代码的时候有时候就是会报错,这没大关系,重新删掉创建就好了,上位机软件有时候就是会这样。

 然后编译下到板子上去。我编译代码出了个bug,是某个变量没定义,我在整个工程查找,发
现这个变量都出现在外部文件,然后我就在内部头文件定义了一下。然后有点忘记extern的用法
了去查了下,在编程中,关键字“extern''用于声明在另一个源文件或模块中定义的变量或函数。
当您使用“extern”来声明一个变量时,这意味着该变量是在一个单独的文件或模块中定义的,您
只是让当前文件可以访问它。类似地,当您使用“extern”来声明一个函数时,您表明该函数是在
其他地方定义的,您希望在当前文件中使用它。在C和c++等语言中,“extern'”关键字通常与头文
件一起使用。头文件通常包含在多个源文件之间共享的变量、函数和其他实体的声明。通过在源
文件中使用extern”,您可以包括头文件,并指出这些实体的定义存在于其他地方。

后面修改bug后成功连接硬件让电机work起来了。

  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Linux嵌入式学习文档是专门针对学习Linux在嵌入式系统中应用的教材或指南。随着嵌入式系统的广泛应用,对于掌握Linux在嵌入式领域的应用和开发技术已经成为了一种必备的能力。 在这些学习文档中,通常会包含Linux内核的概念和基本原理,如进程,内存管理,文件系统等。此外,还会介绍如何将Linux系统成功地移植到嵌入式设备上,包括底层硬件驱动的开发和调试等。还会介绍如何使用Linux在嵌入式系统中进行应用开发,包括编程语言和工具链的使用,以及如何进行调试和测试。 这些学习文档通常会根据不同的读者需求和技术水平进行分类,有从基础入门到高级进阶的教材。对于初学者来说,会提供详尽的步骤和示例,帮助他们逐步理解Linux嵌入式开发的基本概念和操作。而对于有一定经验的开发者来说,这些文档将会提供更高级的技术和实践案例,以便他们更好地应用到实际工程中。 同时,这些学习文档还会根据不同的应用领域进行分类和专门设置。比如嵌入式图像处理或物联网等,会提供相关的文档和教程,帮助读者理解和掌握这些特定领域的Linux嵌入式开发技术。 总之,Linux嵌入式学习文档是学习和掌握Linux在嵌入式系统中应用和开发所必不可少的资源。学习者可以通过这些文档深入了解Linux嵌入式开发的原理和技术,从而更好地应用于实际项目中。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值