【电机控制】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算法验证步骤,评论区欢迎讨论。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/27239.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

HCIA 15 AC+FIT AP结构WLAN基础网络

本例配置AC+FIT,即瘦AP+AC组网。生活中家庭上网路由器是胖AP,相当于AC+FIT二合一集成到一个设备上。 1.实验介绍及拓扑 某企业网络需要用户通过 WLAN 接入网络,以满足移动办公的最基本需求。 1. AC 采用旁挂核心组网方式,AC 与AP 处于同一个二层网络。 2. AC 作为DHCP …

全局异常处理器

后端&#xff1a; 全局异常处理器的作用&#xff1a; 当我们在项目中碰到很多不同的异常情况时&#xff0c;我们需要去处理异常 不过我们不可能每个异常都用try/catch&#xff0c;那样很不优雅 所以我们可以用这个全局异常处理器&#xff0c;来优雅的处理异常 这个全局异常…

数组中的map方法

JavaScript中的map()方法详解 map()方法经常拿来遍历数组&#xff0c;但是不改变原数组&#xff0c;但是会返回一个新的数组&#xff0c;并且这个新的数组不会改变原数组的长度 注意&#xff1a;有时候会出现这种现象&#xff0c;出现几个undefined const array [1, 4,9, 16…

数字人系统源码开发攻略,小白也能轻松上手的部署方案来了!

随着数字人应用场景的不断拓展&#xff0c;数字人广阔的应用前景和庞大的市场需求逐渐展现在人们眼前。但是&#xff0c;由于专业背景的缺乏&#xff0c;许多想要开发数字人系统的创业者们都只能被迫成为旁观他人瓜分这块大蛋糕。在此背景下&#xff0c;各式各样的数字人系统源…

[论文笔记]Query Rewriting for Retrieval-Augmented Large Language Models

引言 今天带来论文Query Rewriting for Retrieval-Augmented Large Language Models的笔记。 本篇工作从查询重写的角度介绍了一种新的框架&#xff0c;即重写-检索-阅读&#xff0c;而不是以前的检索-阅读方式&#xff0c;用于检索增强的LLM。关注的是搜索查询本身的适应性&…

检索增强生成(RAG)实践:基于LlamaIndex和Qwen1.5搭建智能问答系统

什么是 RAG LLM 会产生误导性的 “幻觉”&#xff0c;依赖的信息可能过时&#xff0c;处理特定知识时效率不高&#xff0c;缺乏专业领域的深度洞察&#xff0c;同时在推理能力上也有所欠缺。 正是在这样的背景下&#xff0c;检索增强生成技术&#xff08;Retrieval-Augmented…

[Python学习篇] Python循环语句

while 循环 语法&#xff1a; while 条件: 条件成立后会重复执行的代码 ...... 示例1&#xff1a;死循环 # 这是一个死循环示例 while True:print("我正在重复执行")示例2&#xff1a;循环指定次数 i 1 while i < 5:print(f"执行次数 {i}")…

学了这篇面试经,轻松收割网络安全的offer

网络安全面试库 吉祥学安全知识星球&#x1f517;除了包含技术干货&#xff1a;Java代码审计、web安全、应急响应等&#xff0c;还包含了安全中常见的售前护网案例、售前方案、ppt等&#xff0c;同时也有面向学生的网络安全面试、护网面试等。 0x1 应届生面试指南 网络安全面…

Sheila Teo分享GPT-4提示工程竞赛胜利经验,DynamiCrafter工具实现图转超逼真动态视频

一支烟花官网&#xff1a; https://agifun.love 智源社区 我是如何赢得GPT-4提示工程大赛冠军的 Datawhale干货作者&#xff1a;Sheila Teo&#xff0c;来源&#xff1a;机器之心去年 11 月 8 日&#xff0c;新加坡政府科技局&#xff08;GovTech&#xff09;组织举办了首届…

ISO七层模型 tcp/ip

OSI七层模型&#xff08;重点例子&#xff09; OSI&#xff08;Open Systems Interconnection&#xff09;模型&#xff0c;也称为开放系统互连模型&#xff0c;是一个理论模型&#xff0c;由国际标准化组织&#xff08;ISO&#xff09;制定&#xff0c;用于描述和理解不同网络…

Web前端机试题深度剖析:挑战与策略

Web前端机试题深度剖析&#xff1a;挑战与策略 在数字时代的浪潮中&#xff0c;Web前端开发作为连接技术与用户的关键环节&#xff0c;其重要性不言而喻。在求职或技能考核中&#xff0c;机试题往往是检验前端开发者能力的重要手段。本文将围绕Web前端机试题&#xff0c;从四个…

bash脚本无法设置环境变量?你需要了解 source 和 sh 的区别

问题背景 有时需要通过脚本设置环境变量&#xff0c;但是发现脚本可以正常执行&#xff0c;但是环境变量没有任何更改。 假设有脚本内容如下&#xff1a; #!/bin/bashexport TEMP1尝试执行&#xff0c;可以发现&#xff1a; 以 sh 方式执行的时候&#xff0c;无法设置环境变…

如何利用智能家居打造一个“会呼吸的家”?一体化电动窗帘

如何利用智能家居打造一个“会呼吸的家”&#xff1f;一体化电动窗帘 史新华 隐藏式一体化智能电动窗帘与市面上其他窗帘不同的是&#xff0c;电机内置于轨道之中&#xff0c;一体化&#xff0c;美观、安静、滑动顺畅。 每次都会自动打开和关闭&#xff0c;相当漂亮。 众多家庭…

javaWeb项目-ssm+vue在线购物系统功能介绍

本项目源码&#xff1a;java-ssmvue在线购物系统的设计与实现源码说明文档资料资源-CSDN文库 项目关键技术 开发工具&#xff1a;IDEA 、Eclipse 编程语言: Java 数据库: MySQL5.7 框架&#xff1a;ssm、Springboot 前端&#xff1a;Vue、ElementUI 关键技术&#xff1a;sprin…

网络基础OSI国际互联

这里所指的网络是计算机网络&#xff0c;由许许多多的不同的网络设备以及电子设备构建的一个ip的网络&#xff0c;这个就是工作对象 网络是随着计算机的出现&#xff0c;军事沟通 出现的问题&#xff1a;物理层设备&#xff0c;总线&#xff0c;共享设备&#xff0c;会产生冲突…

【前端速通系列|第一篇】ES6核心语法

文章目录 1.ES6简介2.let和const3.解构4.链判断5.参数默认值6.箭头函数7.模板字符串8.Promise9.Async函数10.Await关键字11.模块化 1.ES6简介 ES6 是 ECMAScript 2015 的缩写&#xff0c;是 ECMAScript 语言标准的第6个版本。ECMAScript 是 JavaScript 语言的国际标准化组织制…

ffmpeg封装和解封装介绍-(7)截断视频关键代码解析

计算相关pts并移动到第10s处的pts&#xff1a; /// 截取10 ~ 20 秒之间的音频视频 取多不取少// 假定 9 11秒有关键帧 我们取第9秒double begin_sec 10.0; //截取开始时间double end_sec 20.0; //截取结束时间long long begin_pts 0;long long begin_audio_pts 0; …

【深度学习】基于NNCLR模型的计算机视觉自监督学习过程

1.引言 1.1.自监督学习研究的背景 进行自监督学习的研究具有深远的意义&#xff1a; 首先&#xff0c;自监督学习能够有效减少对标注数据的依赖。在实际应用中&#xff0c;获取大量标注数据往往需要消耗大量的时间和人力资源&#xff0c;特别是在一些专业领域&#xff0c;如…

Spring中自定义注解进行类方法增强

说明 说到对类方法增强&#xff0c;第一时间想到自定义注解&#xff0c;通过aop切面进行实现。这是一种常用做法&#xff0c;但是在某些场景下&#xff0c;如开发公共组件&#xff0c;定义aop切面可能不是最优方案。以后通过原生aop方式&#xff0c;自定义注解&#xff0c;对类…

jpg图片下载后如何转换格式?方法揭秘(全)

在互联网浏览中&#xff0c;我们经常下载到各种各样的图片文件&#xff0c;而JPEG&#xff08;JPG&#xff09;是其中一种常见的格式。尽管JPEG在保持图像质量的同时能够有效地压缩文件大小&#xff0c;但有时我们可能需要将下载的JPEG图片转换为其他格式&#xff0c;以满足不同…