STM32G4 电流环闭环(二) 霍尔有感运行

目录

  • 一、STM32G4 电流环闭环(二) 霍尔有感运行
    • 2. 霍尔有感运行
    • 附学习参考网址
      • 欢迎大家有问题评论交流 (* ^ ω ^)

一、STM32G4 电流环闭环(二) 霍尔有感运行

2. 霍尔有感运行

  • 文章使用的BLDC在定子侧以互差120°电角度的位置安装三个霍尔元件Ha,Hb,Hc。当转子转动的时候霍尔元件会产生三个相位差120°电角度的高低电平信号。霍尔信号会将一个电周期划分为6个扇区,每个扇区60°电角度,通过单片机的定时器捕获可以获得每个扇区的运行时间t。为了获取准确的转子角度,点击绕组A相接电源正极,BC两相接电源负极,电子磁场与转子磁场共同作用,最终定位到转子零位点,也就是A相绕组的轴线位置。确定零点位置后,根据霍尔的信号顺序,可以得到霍尔信号与转子位置的对应关系,如下表所示:
    在这里插入图片描述
    在这里插入图片描述
  1. 首先配置STM32G4的Hall接口;打开STM32CUBEMX;使能TIM4,选择内部时钟,在组合通道中选择XOR ON/ HALL Sensor mode;
    在这里插入图片描述

  2. 配置定时器参数;16分频后,TIM4的时钟为10M;
    在这里插入图片描述

  3. 生成代码并打开Keil工程

  4. 在TIM输入捕获回调函数中添加如下代码,积分时间是10k;
    在这里插入图片描述

  5. 其中HALL角速度计算公式:
    HallSpeed=PI3∗HallTempHallSpeed = \frac{PI}{3 * HallTemp} HallSpeed=3HallTempPI
    HallTheta=∫0HallTempHallSpeedHallTheta = \int^{HallTemp}_{0}HallSpeed HallTheta=0HallTempHallSpeed

  6. 在ADC注入组中断回调函数中输入,HALL传感器得到的速度和角度;在顶部添加的变量和ADC的代码修改如下

/* USER CODE BEGIN PV */
#define PI					3.14159265358979f
#define PHASE_SHIFT_ANGLE (float)(220.0f/360.0f*2.0f*PI)extern DMA_HandleTypeDef hdma_usart3_tx;
uint8_t DataB1[32] = "LED1 Toggle\r\n";
uint8_t DataB2[32] = "LED2 Toggle\r\n";
uint8_t DataB3[32] = "LED1 and LED2 Open\r\n";#define RXBUFFERSIZE  256   
char RxBuffer[RXBUFFERSIZE];  
uint8_t aRxBuffer;			   
uint8_t Uart1_Rx_Cnt = 0;	float load_data[5];
static uint8_t tempData[24] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0x80,0x7F};uint16_t DAC_temp = 0;float Vbus,Ia,Ib,Ic;
uint8_t Motor_state = 0;
uint16_t IA_Offset,IB_Offset,IC_Offset;
uint16_t adc1_in1, adc1_in2, adc1_in3, Vpoten, adc_vbus;
uint8_t ADC_offset = 0;FDCAN_RxHeaderTypeDef RxHeader;
FDCAN_TxHeaderTypeDef TxHeader;
uint8_t RxData[8]={NULL};
uint8_t TxData[8] = {NULL};float HallTemp = 0;
float HallThetaAdd = 0;
float HallTheta = 0;
float HallSpeed = 0;
float HallSpeedLast = 0;
float HallSpeedtest = 0;
float alpha = 0.3;
uint8_t HallReadTemp = 0;
/* USER CODE END PV */void HAL_ADCEx_InjectedConvCpltCallback(ADC_HandleTypeDef *hadc)
{static uint8_t cnt;/* Prevent unused argument(s) compilation warning */UNUSED(hadc);if(hadc == &hadc1){if(ADC_offset == 0){cnt++;adc1_in1 = hadc1.Instance->JDR1;adc1_in2 = hadc2.Instance->JDR1;adc1_in3 = hadc1.Instance->JDR2;IA_Offset += adc1_in1;IB_Offset += adc1_in2;IC_Offset += adc1_in3;if(cnt >= 10){ADC_offset = 1;IA_Offset = IA_Offset/10;IB_Offset = IB_Offset/10;IC_Offset = IC_Offset/10;}}else{HallTheta = HallTheta + HallThetaAdd;if(HallTheta<0.0f){HallTheta += 2.0f*PI;}else if(HallTheta>(2.0f*PI)){HallTheta -= 2.0f*PI;}rtU.theta = HallTheta;rtU.SpeedFd = HallSpeed;adc1_in1 = hadc1.Instance->JDR1;adc1_in3 = hadc1.Instance->JDR2;adc1_in2 = hadc2.Instance->JDR1;Ia = (adc1_in1 - IA_Offset)*0.02197265625f;Ib = (adc1_in2 - IB_Offset)*0.02197265625f;Ic = (adc1_in3 - IC_Offset)*0.02197265625f;rtU.ia = Ia;rtU.ib = Ib;rtU.ic = Ic;FOC_Model_step();TIM1->CCR1 = rtY.tABC[0];TIM1->CCR2 = rtY.tABC[1];TIM1->CCR3 = rtY.tABC[2];load_data[0] = Ia;load_data[1] = HallTemp;load_data[2] = HallTheta;load_data[3] = rtU.SpeedRef;load_data[4] = HallSpeed;memcpy(tempData, (uint8_t *)&load_data, sizeof(load_data));HAL_UART_Transmit_DMA(&huart3,(uint8_t *)tempData,6*4);}}/* NOTE : This function should not be modified. When the callback is needed,function HAL_ADCEx_InjectedConvCpltCallback must be implemented in the user file.*/
}
  1. 编译代码,连接设备
    在这里插入图片描述
  2. 打开Keil的debug模式,可以试试修改速度,同时启动vofa上位机观察电流和Hall数据
    在这里插入图片描述
  • 低速的时候跟踪的不是很好

附学习参考网址

  1. STM32G4 FOC开发实战

欢迎大家有问题评论交流 (* ^ ω ^)

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

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

相关文章

展示框选择

好的&#xff0c;非常感谢您提供更详细的项目情况。这是一个非常典型的父子组件通信场景。 根据您的新需求&#xff0c;我将对代码进行重构&#xff1a; FaultSelect.vue (子组件): 这个组件现在将变得更加“纯粹”。它只负责自身的下拉框逻辑&#xff0c;不关心外部按钮&#…

第5课:上下文管理与状态持久化

第5课:上下文管理与状态持久化 课程目标 掌握上下文存储和检索策略 学习会话状态管理 了解数据持久化方案 实践实现上下文管理系统 课程内容 5.1 上下文管理基础 什么是上下文管理? 上下文管理是Agent系统中维护和利用历史信息的能力,包括: 对话历史:用户与Agent的交互…

计算机毕业设计 基于大数据技术的医疗数据分析与研究 Python 大数据毕业设计 Hadoop毕业设计选题【附源码+文档报告+安装调试】

博主介绍&#xff1a;✌从事软件开发10年之余&#xff0c;专注于Java技术领域、Python、大数据、人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&…

K8S集群管理(2)

目录 1.什么是Pod的根容器&#xff1f; 2.解释Pod的生命周期。 3.Init类型容器有什么特点&#xff0c;主要用途&#xff1f; 4.Sidecar类型容器和Init容器的区别在哪&#xff1f; 5.什么是静态Pod&#xff1f; 6.说明K8s控制器的作用&#xff1f; 7.什么是ReplicaSet&#xff0…

视频全模态referring分割:Ref-AVS: Refer and Segment Objects in Audio-Visual Scenes

一、TL&#xff1b;DR 为什么要做&#xff1a;传统的referring分割无法使用音频模态&#xff0c;本文提出Reference audio-visual Segmentation本文怎么做&#xff1a;构建首个 Ref-AVS 基准数据集通过充分利用多模态提示&#xff0c;将音频信息通过和文本融合作为载体&#x…

A股大盘数据-20250916分析

&#x1f4ca; 一、大盘数据深度分析1.1 &#x1f9ee; 市场活跃度与资金流向总成交额&#xff1a;沪深京合计约 2.37万亿元&#xff0c;市场交投活跃&#xff0c;深市成交&#xff08;13516.4亿&#xff09;明显高于沪市&#xff08;9897.9亿&#xff09;&#xff0c;显示中小…

[计算机毕业设计]基于深度学习的噪声过滤音频优化系统研究

前言 &#x1f4c5;大四是整个大学期间最忙碌的时光,一边要忙着备考或实习为毕业后面临的就业升学做准备,一边要为毕业设计耗费大量精力。近几年各个学校要求的毕设项目越来越难,有不少课题是研究生级别难度的,对本科同学来说是充满挑战。为帮助大家顺利通过和节省时间与精力投…

贪心算法应用:NFV功能部署问题详解

Java中的贪心算法应用&#xff1a;NFV功能部署问题详解 1. NFV功能部署问题概述 网络功能虚拟化(NFV, Network Function Virtualization)是一种将传统网络设备功能从专用硬件转移到虚拟化软件的技术。在NFV功能部署问题中&#xff0c;我们需要将各种虚拟网络功能(VNFs)部署到有…

SeriLog测试

安装Serilog.Sinks.Seq(5.2.3.0)&#xff0c;Serilog.Sinks.File(7.0.0) 下载Seq安装包并安装&#xff08;https://datalust.co/download&#xff09; 代码如下&#xff1a; private Logger _logger;private void button1_Click(object sender, EventArgs e){_logger new Lo…

HarmonyOS 5.0应用开发——V2装饰器@param的使用

【高心星出品】 文章目录V2装饰器param的使用概念使用方法案例V2装饰器param的使用 概念 在鸿蒙ArkTS开发中&#xff0c;Param装饰器是组件间状态管理的重要工具&#xff0c;主要用于父子组件间的单向数据传递&#xff0c;这一点与V1中的prop类似。 Param装饰的变量支持本地…

SLAM | 无人机视觉/激光雷达集群SLAM技术进展综述

主要内容如下: 无人机集群SLAM技术概述:介绍无人机集群SLAM的基本概念、重要性及面临的挑战,使用表格对比不同传感器配置的特点。 多传感器融合与协同SLAM架构:分析集中式、分布式和混合式协同架构的特点,使用表格对比不同架构的优缺点。 视觉协同SLAM的技术进展:总结直接…

信息化系统运维文档资料,运维服务方案,运维巡检方案

1、系统服务内容​1.1 服务目标​1.2 信息资产统计服务​1.3 网络与安全系统运维服务​1.4 主机与存储系统运维服务​1.5 数据库系统运维服务​1.6 中间件运维服务​2、服务管理制度规范​2.1 服务时间管理​2.2 运维人员行为规范​2.3 现场服务支持规范​2.4 问题记录与归档规…

JavaScript——document对象

DOM 是 document object model&#xff08;文档对象模型&#xff09;的缩写。它是一种与平台、语言无关的接口&#xff0c;允许程序动态地访问或更新 HTML、XML 文档的内容、结构和样式&#xff0c;且提供了一系列的函数和对象来实现增、删、改、查操作。DOM 对象的一个特点是&…

UART,IIC,SPI总线(通信协议)

嵌 入 式 软 件 笔 试 题要求&#xff1a;闭卷考试&#xff08;不能翻书、不能开电脑&#xff09;&#xff1b;作答时间50分钟&#xff1b;共10道题目。volatile的作用有哪些volatile&#xff1a; 防止编译器对代码进行优化&#xff0c;直接从内存中取最新的值 应用场景&#x…

通信模组性能调优

通信模组性能调优 1 背景 2 高通平台软硬加速 2.1 NSS 2.2 SFE 2.3 PPE 3 CPU 负载均衡设置 3.1 启用内核 RPS&RFS 功能 3.2 网卡队列修改建议 3.3 调整负载前后的 CPU 使用对比 3.4 网卡中断均衡 3.4.1 netdev_max_backlog 3.4.2 中断绑核 3.5 CPU性能模式 3.6 热管理 3.7…

消息队列kafka的事务特性

kafka的java客户端producer也支持事务消息吗&#xff1f;具体是啥事务呢&#xff1f; 是的&#xff0c;Kafka的Java客户端Producer确实支持事务消息。让我详细解释Kafka事务的概念和使用方法。 Kafka事务的主要特点&#xff1a; Producer Transactions&#xff1a;确保多个消息…

用Python实现自动化的Web测试(Selenium)

Python作为数据科学和自动化领域的主流语言&#xff0c;在网络爬虫开发中占据着重要地位。本文将全面介绍Python爬虫的技术栈、实现方法和最佳实践。爬虫技术概述网络爬虫&#xff08;Web Crawler&#xff09;是一种按照特定规则自动抓取互联网信息的程序。它可以自动化地浏览网…

「Memene 摸鱼日报 2025.9.17」上海张江人工智能创新小镇正式启动,华为 DCP 技术获网络顶会奖项

theme: condensed-night-purple 以下内容包括「人工智能生成内容」 上海张江人工智能创新小镇正式启动&#xff0c;华为 DCP 技术获网络顶会奖项 &#x1f44f;在昨天&#xff08;2025.9.16&#xff09;&#xff0c;AI领域有这些内容可能值得你关注&#xff1a; 上海张江人工智…

Vehiclehal的VehicleService.cpp

VehicleService.cpp 是 Android Automotive OS 中负责车辆相关功能的核心服务组件&#xff0c;主要处理车身信息获取及状态设置接口&#xff0c;通过 HIDL&#xff08;Hardware Interface Definition Language&#xff09;接口与系统框架层交互。 ‌12核心功能VehicleService.c…

《LINUX系统编程》笔记p11

公共资源也称为共享资源&#xff0c;是指可以被多个并发进程或线程共同访问&#xff08;读取或写入&#xff09;的系统资源。临界资源是公共资源的一个子集。特指那些一次仅允许一个进程或线程访问的公共资源。如果一个进程正在使用它&#xff0c;其他试图访问该资源的进程必须…