【电机控制】FOC算法验证步骤——PWM、ADC
【电机控制】FOC算法验证步骤
文章目录
- 前言
- 一、PWM——不接电机
- 1、PWMA-H-50%
- 2、PWMB-H-25%
- 3、PWMC-H-0%
- 4、PWMA-L-50%
- 5、PWMB-L-75%
- 6、PWMC-L-100%
- 二、ADC——不接电机
- 1.电流零点稳定性、ADC读取的OFFSET
- 2.电流钳准备
- 3.运放电路分析
- 1.电路OFFSET
- 2.AOP
- 3.采样电路的采样值范围
- 4.相电流与ADC采样值的关系
- 5.V相电流
- 4.电流极性判断——接电机
- 三、参考文献
- 总结
前言
【电机控制】直流有刷电机、无刷电机汇总——持续更新
使用工具:
1.示波器:PICO7
提示:以下是本篇文章正文内容,下面案例可供参考
一、PWM——不接电机
载波频率12.5K
#define PWM_Fre 12.5#define PWM_Perload 72000/(uint32_t)(PWM_Fre*2) //2880
分别让寄存器上桥发波50%,25%,0%,下桥互补输出,50%,75%,100%
CMPA = 1440; //(0.5+1)*2880/2CMPB = 720; CMPC = 0;
将寄存器的值串口打印至上位机

同时在仿真器显示

采样点,控制芯片引脚输出至预驱芯片引脚,本次实验采的是驱动器引脚,直接采集控制芯片引脚也可以

1、PWMA-H-50%

2、PWMB-H-25%

3、PWMC-H-0%

4、PWMA-L-50%

5、PWMB-L-75%

6、PWMC-L-100%

二、ADC——不接电机
1.电流零点稳定性、ADC读取的OFFSET
串口打印出AD采样寄存器的值,看是否稳定
printf("%.4d,%.4d,%.4d\n", ADC_GetInjectedConversionValue(ADC1, ADC_InjectedChannel_1),ADC_GetInjectedConversionValue(ADC1, ADC_InjectedChannel_2),ADC_GetInjectedConversionValue(ADC1, ADC_InjectedChannel_3));
打印结果

U相V相约有450个ADC值,W相约有1500个ADC值OFFSET
2.电流钳准备
直流稳压电源输出0.6A

电流钳抓到0.6A左右

3.运放电路分析




1.电路OFFSET
程序上读取offset值的时候是在初始化阶段,电机处于停止状态,此时的相电流等于0。
(VM_IA -V6)/R28=(V6-VGND)/R36
VM_IA=3×V6
V5=VA×R42/(R41+R42)+VREF×R41/(R41+R42)=0.91VA+0.159
由虚短可得,V5=V6
VM_IA=2.73VA+0.477<=3.3V
下桥几乎没有电流通过时,不带电机测试时,可以测得为0.48V
2.AOP
AOP=Vout/Vin=VM_IA/VA=2.73
3.采样电路的采样值范围
2.73VA+0.477<=3.3V
VA<=1.03V,Rshout=0.05Ω
IA=VA/Rshout<=20.6A
相电流最大采集20A
4.相电流与ADC采样值的关系
我们需要计算相电流与ADC采样值的关系,也就是说,通过ADC采样的值,经过数学公式计算,可以计算出来当前相电流为多少,再根据相电流进行FOC变换
IA=7.3×VM_IA-3.5=7.3×VM_IA×3.3/4096-3.5-offset
此时VM_IA为ADC采样值,通过单片机引脚接入
电流=(ADC原始值/4096∗3.3-offset)/采样电阻阻值/运放放大倍数
相电流=(offset-ADC原始值)/4096∗3.3/采样电阻阻值/运放放大倍数
采样电阻阻值= 0.05
运放放大倍数=2.73

相电流=(offset-ADC原始值)/ 0.006
printf("%.4f,%.4f,%.4f\n",(AdcValue.PhaseUCurrOffset-ADC_GetInjectedConversionValue(ADC1, ADC_InjectedChannel_1))*0.006,(AdcValue.PhaseVCurrOffset-ADC_GetInjectedConversionValue(ADC1, ADC_InjectedChannel_1))*0.006,(AdcValue.PhaseWCurrOffset-ADC_GetInjectedConversionValue(ADC1, ADC_InjectedChannel_1))*0.006);
5.V相电流

4.电流极性判断——接电机
CMPA = 1440; //50%CMPB = 288; //10%CMPC = 288; //10%

三、参考文献
运放-同相放大与反相放大
foc学习笔记3——电流环
关于FOC相电流采样电路参数的分析
FOC(电机矢量控制)调试记录
STM32之ADC
总结
本文仅仅简单介绍了【电机控制】FOC算法验证步骤,评论区欢迎讨论。
相关文章:
【电机控制】FOC算法验证步骤——PWM、ADC
【电机控制】FOC算法验证步骤 文章目录 前言一、PWM——不接电机1、PWMA-H-50%2、PWMB-H-25%3、PWMC-H-0%4、PWMA-L-50%5、PWMB-L-75%6、PWMC-L-100% 二、ADC——不接电机1.电流零点稳定性、ADC读取的OFFSET2.电流钳准备3.运放电路分析1.电路OFFSET2.AOP3.采样电路的采样值范围…...
如何衡量llm 数据集的多样性
衡量大型语言模型(LLM)数据集的多样性是一个复杂的问题,因为多样性可以从多个角度来考虑。以下是一些常用的方法和指标来评估数据集的多样性: 词汇多样性: 类型-词符比(Type-Token Ratio, TTR)…...
编程天才是什么意思
编程天才是什么意思 编程天才,这个词汇似乎充满了神秘与敬畏的色彩。那么,它究竟意味着什么呢?在本文中,我们将从四个方面、五个方面、六个方面和七个方面深入探讨编程天才的内涵与外延,带您领略这一领域的独特魅力。…...
创建npm私包
参考文章: 使用双重身份验证访问 npm | npm 中文网 私有npm包的实例详解-js教程-PHP中文网 1.注册npm账号 npm官网: npm | Home 2.安装node 百度挺多的,安装完后,检查是否安装成功就行 3.写一个简单的模块 创建个文件夹&am…...
provider追加android:name的命名有哪些?
在Android中,为<provider>元素添加android:name属性时,命名应遵循Android组件的命名规范和包名的命名规范。以下是一些关于命名android:name的要点: 包名前缀:android:name属性的值通常应以包名开始,这是应用程序…...
长亭网络通信基础
长亭笔试之前就已经学过一遍了 这算温故而知新吧 TCP/IP 首先我在这里默写一下之前的7层和4层 应用层 应 【表示层 数据格式转换 传 【会话层 …...
hdfs源码解析之DFSClient
1、DFSClient类简介 DFSClient 是 Hadoop 分布式文件系统(HDFS)中的一个核心类,用于客户端与 HDFS 之间的交互。它提供了一组方法,使客户端应用程序可以方便地与 HDFS 进行通信,包括文件的读取、写入、创建、删除、重命…...
智能化立体仓库的种类有哪些?
在仓储运输系统中,自动化立体仓库可充分利用空间储存货物,故而也被称之为高层货架仓库。在实际应用中,自动化仓库系统是不需人工处理的情况下能自动存储和取出物料的系统。那么,智能化立体仓库的种类有哪些?下面就让小…...
Stable Diffusion 3 如何下载安装使用及性能优化
Stable Diffusion 3 Stable Diffusion 3(SD3),Stability AI最新推出的Stable Diffusion模型系列,现在可以在Hugging Face Hub上使用,并且可以与Diffusers一起使用。 今天发布的模型是Stable Diffusion 3 Medium&…...
c语言操作符详解
操作符详解 正数的原码反码补码相同 负数的原码最高位数是1,正数为0 整数在内存中存储的是补码 负数的左移与右移,移的是补码,打印的是源码 补码-1取反就是原码。 左移有乘2的效果 左移和右移只针对整数。 vs里的右移操作赋采用的是算数右…...
【耐水好】强耐水UV胶水它的粘接强度和普通UV胶水比如何呢
【耐水好】强耐水UV胶水它的粘接强度和普通UV胶水比如何呢 强耐水UV胶水的粘接强度与普通UV胶水相比,具有显著的优势。以下是详细的比较和归纳: 固化方式: 两者都是通过紫外线(UV)照射进行固化,但强耐水UV…...
jumpserver堡垒机集群搭建
1、环境 操作系统:龙蜥os 7.9 firewall-cmd --permanent --zonepublic --remove-servicessh firewall-cmd --permanent --zonepublic --add-rich-rulerule familyipv4 source address10.90.101.1 port port22 protocoltcp accept firewall-cmd --reload2、安装NFS…...
Termius for Mac/Win:跨平台多协议远程管理利器
Termius for Mac/Win是一款备受瞩目的跨平台多协议远程管理软件,以其卓越的性能、丰富的功能和便捷的操作体验,赢得了广大用户的青睐。无论是在企业IT管理、系统维护,还是个人远程连接、文件传输等方面,Termius都展现出了出色的实…...
Unity OpenCVForUnity 安装和第二个案例详解 <二>
目录 一、前言 二、场景介绍 1.WebCamTextureToMatExample脚本 2.FpsMonitor脚本 三、 结构体Scaler 四、找到相机并使用 1.相机的启用 2.格式转换 a.把webCamTexture转换成Mat b.把Mat转换成Texture2D 五、脚本组合 六、作者的碎碎念 一、前言 第二个案例…...
Lua实现自定义函数面向对象编程
本文目录 1、引言2、原理3、实例4、层析验证 文章对应视频教程: 暂无,可以关注我的B站账号等待更新。 点击图片或链接访问我的B站主页~~~ 1、引言 在现代软件开发中,面向对象编程(OOP)已经成为一种广泛使用的编程范式…...
docker安装消息队列mq中的rabbit服务
在现代化的分布式系统中,消息队列(Message Queue, MQ)已经成为了一种不可或缺的组件。RabbitMQ作为一款高性能、开源的消息队列软件,因其高可用性、可扩展性和易用性而广受欢迎。本文将详细介绍如何在Docker环境中安装RabbitMQ服务…...
OpenAI新模型发布,免费开放GPT-4o!但只开放一点点...
GPT-4o 中的“o”代表“omni”——指的是 GPT-4o 的多模态。 该模型将向免费客户开放,这意味着任何人都可以通过 ChatGPT 访问 OpenAI 最先进的技术。 GPT-4o 是 OpenAI 昨天晚上发布的新旗舰模型,可以实时推理音频、视觉和文本。 据官方介绍࿰…...
idea的右边栏maven不见了(丢了)解决方案以及idea无法识别maven项目
前言 众所周知,idea是java开发中不可缺少的利器,但是由于功能过多,导致奇怪的问题也很多 问题汇总 idea的右边栏maven丢了 idea无法识别maven项目 对应的解决办法 idea的右边栏maven丢了 原因可能是被自己手动移除了 或者 项目没被正确…...
等待 chrome.storage.local.get() 完成
chrome.storage.local.get() 获取存储处理并计数,内部计数正常,外部使用始终为0,百思不得其解。 如何在继续执行之前等待异步chrome.storage.local.get()完成-腾讯云开发者社区-腾讯云 (tencent.com) 原来我忽略了异步问题,最简…...
004 AOP使用
文章目录 基于AspectJ的AOP的使用添加依赖编写目标类和目标方法使用XML实现实现步骤切入点表达式通知类型 使用注解实现实现步骤环绕通知注解配置定义通用切入点 纯注解方式 基于AspectJ的AOP的使用 其实就是指的SpringAspectJ整合,不过Spring已经将AspectJ收录到自…...
JavaScript 中的 ES|QL:利用 Apache Arrow 工具
作者:来自 Elastic Jeffrey Rengifo 学习如何将 ES|QL 与 JavaScript 的 Apache Arrow 客户端工具一起使用。 想获得 Elastic 认证吗?了解下一期 Elasticsearch Engineer 培训的时间吧! Elasticsearch 拥有众多新功能,助你为自己…...
ESP32读取DHT11温湿度数据
芯片:ESP32 环境:Arduino 一、安装DHT11传感器库 红框的库,别安装错了 二、代码 注意,DATA口要连接在D15上 #include "DHT.h" // 包含DHT库#define DHTPIN 15 // 定义DHT11数据引脚连接到ESP32的GPIO15 #define D…...
工程地质软件市场:发展现状、趋势与策略建议
一、引言 在工程建设领域,准确把握地质条件是确保项目顺利推进和安全运营的关键。工程地质软件作为处理、分析、模拟和展示工程地质数据的重要工具,正发挥着日益重要的作用。它凭借强大的数据处理能力、三维建模功能、空间分析工具和可视化展示手段&…...
linux arm系统烧录
1、打开瑞芯微程序 2、按住linux arm 的 recover按键 插入电源 3、当瑞芯微检测到有设备 4、松开recover按键 5、选择升级固件 6、点击固件选择本地刷机的linux arm 镜像 7、点击升级 (忘了有没有这步了 估计有) 刷机程序 和 镜像 就不提供了。要刷的时…...
Psychopy音频的使用
Psychopy音频的使用 本文主要解决以下问题: 指定音频引擎与设备;播放音频文件 本文所使用的环境: Python3.10 numpy2.2.6 psychopy2025.1.1 psychtoolbox3.0.19.14 一、音频配置 Psychopy文档链接为Sound - for audio playback — Psy…...
佰力博科技与您探讨热释电测量的几种方法
热释电的测量主要涉及热释电系数的测定,这是表征热释电材料性能的重要参数。热释电系数的测量方法主要包括静态法、动态法和积分电荷法。其中,积分电荷法最为常用,其原理是通过测量在电容器上积累的热释电电荷,从而确定热释电系数…...
FFmpeg:Windows系统小白安装及其使用
一、安装 1.访问官网 Download FFmpeg 2.点击版本目录 3.选择版本点击安装 注意这里选择的是【release buids】,注意左上角标题 例如我安装在目录 F:\FFmpeg 4.解压 5.添加环境变量 把你解压后的bin目录(即exe所在文件夹)加入系统变量…...
MyBatis中关于缓存的理解
MyBatis缓存 MyBatis系统当中默认定义两级缓存:一级缓存、二级缓存 默认情况下,只有一级缓存开启(sqlSession级别的缓存)二级缓存需要手动开启配置,需要局域namespace级别的缓存 一级缓存(本地缓存&#…...
拟合问题处理
在机器学习中,核心任务通常围绕模型训练和性能提升展开,但你提到的 “优化训练数据解决过拟合” 和 “提升泛化性能解决欠拟合” 需要结合更准确的概念进行梳理。以下是对机器学习核心任务的系统复习和修正: 一、机器学习的核心任务框架 机…...
初探用uniapp写微信小程序遇到的问题及解决(vue3+ts)
零、关于开发思路 (一)拿到工作任务,先理清楚需求 1.逻辑部分 不放过原型里说的每一句话,有疑惑的部分该问产品/测试/之前的开发就问 2.页面部分(含国际化) 整体看过需要开发页面的原型后,分类一下哪些组件/样式可以复用,直接提取出来使用 (时间充分的前提下,不…...

