当前位置: 首页 > article >正文

【从零开始实现stm32无刷电机FOC】【实践】【7.1/7 硬件设计】

目录

  • stm32电路
  • 磁编码器电路
  • 电机驱动电路
  • 电流采样电路
  • 电机选择
  • 本文示例硬件说明

为了承载和验证本文的FOC代码工程,本节设计了一个简易的三相无刷电机 硬件套件,主控采用非常常用的stm32f103c8t6单片机,电机编码器采用MT6701,电机采用22xx系列云台电机,驱动电路采用集成驱动芯片DRV8313,电流传感器采用INA199A1在线采样。
该 硬件套件使用无工具快拆装设计,到手即可直接快速手拧安装拆卸。
接下来对各个模块进行设计讲解:

stm32电路

stm32f103c8t6可以说是学习stm32中最热门和常见的一颗芯片,网络上的配套资料非常丰富,某宝上的成品最小系统板的价格也非常便宜(当你不确定是电路问题还是代码问题时,可以快速地低成本地使用最小系统板进行验证),本文使用其作为主控芯片。
如果你自行进行芯片选型时,注意不要选择同样热门的stm32f103c6t6,实测Flash容量不足以运行本文的FOC代码。

  • 晶振电路
    该电路是单片机运行的必要条件:
    在这里插入图片描述

  • boot选择电路
    该电路非必须,但是最好保留,以防万一程序里将烧录引脚当成普通IO口进行了控制,导致无法通过J-Link、DAPLink等进行烧录,而只能使用ISP烧录。stm32的boot0和boot1引脚输入可以控制程序启动方式,对应关系如下:

boot0电平boot1电平启动方式
0任意正常启动,即在主flash启动
10芯片出厂时自带一个bootloader用于串口烧录程序,启动该bootloader程序,即ISP烧录
11在ram启动

一般不使用在ram启动,因此从上表来看,只需要将boot1直接接地,控制boot0位的输入电平,即可使用ISP烧录。
在这里插入图片描述
将boot0下拉处理,实现默认输入为0,默认正常启动:
在这里插入图片描述

  • SWD调试信号
    单片机烧录调试可选择SWD接口或JTAG接口,JTAG除了电源线需要接入JTCK引脚、JTDI引脚、JTDO引脚、JTMS引脚,而SWD除了电源线只需要接入SWCLK引脚和SWDIO引脚,常用的J-Link、DAPLink等调试器都支持SWD接口。本文使用SWD接口并且使用超低成本的开源调试器DAPLink。该调试电路直接引出即可:
    在这里插入图片描述
  • 复位电路
    在这里插入图片描述
  • LED电路
    放置一个IO控制的LED灯,方便程序里某些情况下用作指示灯。
    在这里插入图片描述
  • PWM输出信号
    用于输出FOC产生的PWM信号到电机驱动桥,直接引出即可。本文的硬件套件电路板将该三个信号引出方便接示波器,同时这里的PA9和PA10也是ISP烧录的引脚。
    在这里插入图片描述
    接入PWM的刹车引脚:
    在这里插入图片描述
  • SPI信号
    用于读取MT6701磁编码器,直接连线即可。
    在这里插入图片描述
  • 调试串口信号
    一个串口用于调试,直接引出即可。
    在这里插入图片描述
  • ADC信号
    用于电流采样信号采集,直接连线即可,注意ADC外设的通道是对应固定引脚的,不能随便接。
    在这里插入图片描述

磁编码器电路

本文使用MT6701磁编码器,该编码器价格比常用的AS5600稍贵,但是支持SPI角度读取。
经过我实测,stm32f1系列的I2C外设确实存在硬件bug,使用硬件I2C读取AS5600时,经常会陷入busy状态,因此本文使用支持SPI读取的MT6701。
MT6701供电电压可以是3.3V或者5V,这里使用了5V进行供电,因为MT6701数据手册中有写:要操作内部EEPROM时,供电电压在4.5V到5V之间。不过一般也不操作内部EEPROM,操作内部EEPROM需要使用I2C方式,由于这里使用了SPI接口,万一要操作时请使用软件I2C。
在这里插入图片描述
在这里插入图片描述

电机驱动电路

为了方便学习验证FOC算法,本文选择集成驱动芯片DRV8313,该芯片内部有3个半桥驱动以及保护电路,可以减少对驱动设计的要求以及防止损坏器件。
该芯片自带的过流保护和相线短路保护非常有用,如果使用MOS管搭建的驱动桥进行驱动,在刚开始学习验证FOC算法的时候,比较容易烧毁MOS管,我就烧毁过MOS管好几次。
但是该芯片驱动电流不是很高,每个电机相线最高峰值输出2.5A电流,对于学习验证阶段足够了。
在这里插入图片描述

电流采样电路

为了方便在定时器任意溢出时刻采样,将电流采集位置设计在电机相线上,采样时刻请查看前文(adc外设的高级用法)。
电流采样是放大采样电阻两端电压后输入单片机ADC引脚,再根据欧姆定律反算得到的。例如假设:

  • 运算放大器放大倍数是50倍,输出大于1.65V代表正向电流,小于1.65V代表负向电流。
  • 采样电阻是0.02Ω。
  • 单片机ADC读到的电压是0.65V。
    那么流经该相线的电流为(1.65-0.65)/50/0.02=1A。

本文电流传感器选择INA199系列,该电流传感器相对于更常用INA240系列的价格低很多,INA240大约是10+元一片,INA199具有26V的共模电压,采集相线上的采样电阻两端电压没有问题,就是参考电压需要输入1.65V会麻烦一点。
这里选择INA199A1,放大倍数是50倍。
在这里插入图片描述
在这里插入图片描述

电机选择

由于DRV8313驱动电流有限,因此最好选择绕组电阻高一点(线电阻10Ω以上)的电机,不要使用航模电机,这里使用2208云台电机。云台电机与航模电机主要的区别就是绕组铜线匝数不一样,云台电机匝数多,因此绕组电阻大、磁感应强度大、相同电流产生的力矩大,大概小于200KV的航模电机也就能称为云台电机了。
经过我的测试,使用1000KV的2208航模电机在DRV8313驱动下,位置环的力矩比较微弱,速度环勉强能运行,总之不适合DRV8313驱动,当然由于DRV8313自带过流保护,因此使用很低绕组电阻的航模电机也不会烧毁驱动。
下图左边是2208云台电机,右边是2208航模电机:
在这里插入图片描述

本文示例硬件说明

为了学习验证本文的FOC算法,我按照上述电路设计了一个简单的集成了磁编码器、电机驱动、单片机的ALL-IN-ONE验证板。

  • 支持位置环、速度环、电流环(力矩环)。
  • 无需接线,无需找对应引脚,安装好电机后,只需外接一根电源线和一根Type-C线(使用适配DAPLink),盲插即可工作。
  • 使用全手拧设计,全程无需螺丝刀等工具,到手即可快速手拧安装和拆卸。
  • 引出多个接口:磁编码器的SPI接口、三相PWM信号线、多个低压电源口,方便抓取波形等操作。
  • 适配实验用大平台底座,电机调试过程中底座稳定不摇晃。
  • 自带电机电源开关,一键关闭电机电源,及时制止失控。
    在这里插入图片描述

http://www.kler.cn/a/325060.html

相关文章:

  • MySQL时间字段TIMESTAMP和DATETIME
  • sqli—labs靶场 5-8关 (每日4关练习)持续更新!!!
  • 大数据算法考试习题
  • 学者观察 | 元计算、人工智能和Web 3.0——山东大学教授成秀珍
  • 在 CentOS 7 上安装 MinIO 的步骤
  • ReactPress与WordPress:一场内容管理系统的较量
  • 【Golang】关于Go语言字符串转换strconv
  • 《牧神记》PV初体验,玄机科技再塑经典国漫
  • 学习C++的第七天!
  • 新建flask项目,配置入口文件,启动项目
  • OceanBase 一级表分区记录
  • 浅谈虚拟内存(操作系统、Redis)
  • matlab中在一个图上持续画多条曲线的方法
  • Qualitor processVariavel.php 未授权命令注入漏洞复现(CVE-2023-47253)
  • [Redis][持久化][上][RDB]详细讲解
  • 每天一个数据分析题(四百九十)- 主成分分析与因子分析
  • 7种限流算法打开新方式
  • Win32打开UWP应用
  • 数据库服务器该如何进行搭建?
  • Kali Linux上安装远程桌面服务VNC
  • 线性代数复习笔记
  • 指针(3)
  • 第18周 第1章Ajax基础知识
  • flutter中InkWell 和 GestureDetector快速、频繁点击时表现出不响应或“点不到”的情况分析
  • 区块链:数据安全与透明的未来触手可及
  • 制造解法 Manufactured Solutions 相关的论文的阅读笔记