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

【从零开始实现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信号线、多个低压电源口,方便抓取波形等操作。
  • 适配实验用大平台底座,电机调试过程中底座稳定不摇晃。
  • 自带电机电源开关,一键关闭电机电源,及时制止失控。
    在这里插入图片描述

相关文章:

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

目录 stm32电路磁编码器电路电机驱动电路电流采样电路电机选择本文示例硬件说明 为了承载和验证本文的FOC代码工程,本节设计了一个简易的三相无刷电机 硬件套件,主控采用非常常用的stm32f103c8t6单片机,电机编码器采用MT6701,电机…...

unix中父进程如何获取子进程的终止状态

一、前言 本文将介绍在unix系统中,父进程如何获取子进程的终止状态。本文主要围绕如下函数展开: 1.wait 2.waitpid 3.waitid 4.wait3、wait4 在讨论这些函数前,先介绍一个进程从创建到释放子进程的过程。 二、子进程的创建以及终止 在unix…...

【ESP 保姆级教程】小课设篇 —— 案例:20240505_基于esp01s的局域网控制灯

忘记过去,超越自己 ❤️ 博客主页 单片机菜鸟哥,一个野生非专业硬件IOT爱好者 ❤️❤️ 本篇创建记录 2024-09-30 ❤️❤️ 本篇更新记录 2023-09-30 ❤️🎉 欢迎关注 🔎点赞 👍收藏 ⭐️留言📝&#x1f64…...

Qt如何将外部窗口嵌入部件中

一、简述 今天给大家讲解的是使用QWindow类通过窗口句柄将外部的应用程序嵌入到我们的部件中来显示。在讲解之前可以延伸一下,当时项目中使用QProcess启动一些本地软件或者执行脚本时,需要将启动的第三方窗口嵌入到我们自己写的窗口中,此时我…...

2024年9月30日随笔

今天是国庆假期前的最后一天了,刚上完课,坐在实验室的工位前,感到焦虑又无奈,11月9号,网络规划工程师软考考试,学了一部分了,感觉有些难,还有一个月多一点点的时间,不知道…...

springboot+satoken实现刷新token(值变化)

欢迎来到我的博客,代码的世界里,每一行都是一个故事 🎏:你只管努力,剩下的交给时间 🏠 :小破站 springbootsatoken实现刷新token satoken是什么?支持什么?为什么需要&…...

63.HDMI显示器驱动设计与验证-彩条实验

(1)常见的视频传输接口有三种: VGA 接口、 DVI 接口和 HDMI 接口,目前的显示设备都配有这三种视频传输接口。三类视频接口的发展历程为 VGA→DVI→HDMI。其中 VGA 接口出现最早,只能传输模拟图像信号; 随后…...

安卓13设置删除网络和互联网选项 android13隐藏设置删除网络和互联网选项

总纲 android13 rom 开发总纲说明 文章目录 1.前言2.问题分析3.代码分析4.代码修改4.1修改方法14.2修改方法25.编译6.彩蛋1.前言 有些客户不想让用户修改默认的网络配置,禁止用户进入里面调整网络相关的配置。 2.问题分析 像这个问题,我们有好几种方法去处理,这种需求一般…...

C++的6种构造函数

在 C 中,构造函数是一种特殊的成员函数,用于初始化类对象。在对象创建时自动调用,构造函数的主要作用是分配资源、初始化数据成员等。根据不同的功能和使用场景,C 提供了多种类型的构造函数: 1. 默认构造函数 (Defaul…...

【FE】NPM——概述

NPM基本使用 下载Node 老生常谈&#xff0c;选择LTS版本官网放这里&#xff1a;https://nodejs.cn/download/ 1.镜像配置&#xff1a;镜像源 镜像配置 依赖仓库&#xff1a;版本查看 //不确定仓库有哪些版本&#xff0c;列出指定包的所有版本 npm view <package-name&…...

Clipboard.js实现复制文本到剪贴板功能

一、Clipboard.js简介 Clipboard.js是一个轻量级的实现复制文本到剪贴板功能的JavaScript插件&#xff0c;该插件可以将输入框&#xff0c;文本域&#xff0c;DOM节点元素中的文本内容复制到剪贴板中。 官网地址&#xff1a;Clipboard.js 浏览器兼容性&#xff1a;兼容Chrome、…...

Harbor安装笔记

下载离线安装包 wget https://github.com/goharbor/harbor/releases/download/v2.11.1/harbor-offline-installer-v2.11.1.tgz 解压 tar -zxvf harbor-offline-installer-v2.11.1.tgz 复制一份配置文件出来&#xff0c;修改配置 cp harbor.yml.tmpl harbor.yml vim harbor…...

HTTP 1.0 2.0 3.0详解

HTTP HTTP全称超文本传输协议&#xff0c;是一种属于应用层的通信协议。它允许将超文本标记语言文档&#xff08;HTML&#xff09;从Web服务器传输到客户端的浏览器。 HTTP报文结构 请求报文结构 请求方法&#xff1a; GET&#xff1a;一般用来请求已被URI识别的资源&#x…...

Python操作TXT文本:从入门到精通

在数字化时代,文本处理成为了许多工作和项目的基础。Python作为一种强大且易学的编程语言,在文本处理方面展现出了无与伦比的优势。本文将通过举例的方式,向读者介绍如何使用Python来操作TXT文本,让您轻松掌握文本处理的精髓。 一、读取TXT文本内容 首先,我们需要学会如…...

开源 AI 智能名片 2+1 链动模式 S2B2C 商城小程序的数据运营策略与价值创造

一、引言 1.1 研究背景 在当今数字化时代&#xff0c;数据运营已成为企业发展的核心驱动力。开源 AI 智能名片 21 链动模式 S2B2C 商城小程序作为一种创新的营销工具&#xff0c;与数据运营紧密相连。该小程序通过集成人工智能、大数据分析等先进技术&#xff0c;能够实时收集…...

ip 地址查看cmd命令

ip 地址查看cmd命令 在不同的操作系统中&#xff0c;查看IP地址的命令可能会有所不同。以下是一些常见操作系统中查看IP地址的命令&#xff1a; Windows: 打开命令提示符&#xff08;CMD&#xff09;&#xff0c;然后输入 ipconfig 命令。 Linux/Unix: 打开终端&#xff0…...

力扣9.26

931. 下降路径最小和 给你一个 n x n 的 方形 整数数组 matrix &#xff0c;请你找出并返回通过matrix 的下降路径 的 最小和 。 下降路径 可以从第一行中的任何元素开始&#xff0c;并从每一行中选择一个元素。在下一行选择的元素和当前行所选元素最多相隔一列&#xff08;即…...

HT8731 内置自适应H类升压和防破音功能的10W D类及AB类音频功率放大器

1、特点 防削顶失真功能(防破音,Anti-Clipping Function, ACF) 免滤波器数字调制&#xff0c;直接驱动扬声器 输出功率 10W(VBAT4.2V,RL3Ω,THDN10%, fiN 1kHz) 6W(VBAT3.3~4.2V,RL4Ω,THDN<1%,20-20kHz 全频段) 3W (VBAT3.3~4.2V,RL8Ω, THDN<1%, 20- 20kHz 全频段 VB…...

webpack使用

一、简介 概述 本次使用webpack4进行构建打包 二、webpack 安装webpack、webpack-cli npm install webpack4.2.0 webpack-cli4.2.0 -D 三、loader 加载器概述 raw-loader&#xff1a;加载文件原始内容&#xff08;utf-8&#xff09; file-loader&#xff1a;把文件输出…...

高通Android 12 音量API设置相关代码

// 获取当前音量大小public static int getCurrentVolume(Context context) {AudioManager audioManager (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);return audioManager.getStreamVolume(AudioManager.STREAM_MUSIC); // 使用 STREAM_MUSIC 作为示例…...

KubeSphere 容器平台高可用:环境搭建与可视化操作指南

Linux_k8s篇 欢迎来到Linux的世界&#xff0c;看笔记好好学多敲多打&#xff0c;每个人都是大神&#xff01; 题目&#xff1a;KubeSphere 容器平台高可用&#xff1a;环境搭建与可视化操作指南 版本号: 1.0,0 作者: 老王要学习 日期: 2025.06.05 适用环境: Ubuntu22 文档说…...

[特殊字符] 智能合约中的数据是如何在区块链中保持一致的?

&#x1f9e0; 智能合约中的数据是如何在区块链中保持一致的&#xff1f; 为什么所有区块链节点都能得出相同结果&#xff1f;合约调用这么复杂&#xff0c;状态真能保持一致吗&#xff1f;本篇带你从底层视角理解“状态一致性”的真相。 一、智能合约的数据存储在哪里&#xf…...

让AI看见世界:MCP协议与服务器的工作原理

让AI看见世界&#xff1a;MCP协议与服务器的工作原理 MCP&#xff08;Model Context Protocol&#xff09;是一种创新的通信协议&#xff0c;旨在让大型语言模型能够安全、高效地与外部资源进行交互。在AI技术快速发展的今天&#xff0c;MCP正成为连接AI与现实世界的重要桥梁。…...

IoT/HCIP实验-3/LiteOS操作系统内核实验(任务、内存、信号量、CMSIS..)

文章目录 概述HelloWorld 工程C/C配置编译器主配置Makefile脚本烧录器主配置运行结果程序调用栈 任务管理实验实验结果osal 系统适配层osal_task_create 其他实验实验源码内存管理实验互斥锁实验信号量实验 CMISIS接口实验还是得JlINKCMSIS 简介LiteOS->CMSIS任务间消息交互…...

IT供电系统绝缘监测及故障定位解决方案

随着新能源的快速发展&#xff0c;光伏电站、储能系统及充电设备已广泛应用于现代能源网络。在光伏领域&#xff0c;IT供电系统凭借其持续供电性好、安全性高等优势成为光伏首选&#xff0c;但在长期运行中&#xff0c;例如老化、潮湿、隐裂、机械损伤等问题会影响光伏板绝缘层…...

Springboot社区养老保险系统小程序

一、前言 随着我国经济迅速发展&#xff0c;人们对手机的需求越来越大&#xff0c;各种手机软件也都在被广泛应用&#xff0c;但是对于手机进行数据信息管理&#xff0c;对于手机的各种软件也是备受用户的喜爱&#xff0c;社区养老保险系统小程序被用户普遍使用&#xff0c;为方…...

vulnyx Blogger writeup

信息收集 arp-scan nmap 获取userFlag 上web看看 一个默认的页面&#xff0c;gobuster扫一下目录 可以看到扫出的目录中得到了一个有价值的目录/wordpress&#xff0c;说明目标所使用的cms是wordpress&#xff0c;访问http://192.168.43.213/wordpress/然后查看源码能看到 这…...

Python Einops库:深度学习中的张量操作革命

Einops&#xff08;爱因斯坦操作库&#xff09;就像给张量操作戴上了一副"语义眼镜"——让你用人类能理解的方式告诉计算机如何操作多维数组。这个基于爱因斯坦求和约定的库&#xff0c;用类似自然语言的表达式替代了晦涩的API调用&#xff0c;彻底改变了深度学习工程…...

python爬虫——气象数据爬取

一、导入库与全局配置 python 运行 import json import datetime import time import requests from sqlalchemy import create_engine import csv import pandas as pd作用&#xff1a; 引入数据解析、网络请求、时间处理、数据库操作等所需库。requests&#xff1a;发送 …...

Spring Security 认证流程——补充

一、认证流程概述 Spring Security 的认证流程基于 过滤器链&#xff08;Filter Chain&#xff09;&#xff0c;核心组件包括 UsernamePasswordAuthenticationFilter、AuthenticationManager、UserDetailsService 等。整个流程可分为以下步骤&#xff1a; 用户提交登录请求拦…...