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

同步机无感 STM32 低成本 MD500E 永磁同步控制方案大揭秘

同步机无感 STM32低成本MD500E永磁同步控制方案,pmsm,高性价比变频器参考方案 md500e三电阻采样,移植了500e的永磁同步电机控制的关键代码,实现了精简版500e,默认电位器调速,用了一种优化的无感磁链观测器foc算法,低速有力,启动力大,值得学习参考。 发货清单:程序,原理图(低压版,用的mos),pcb,说明文档。

最近在研究永磁同步电机(PMSM)控制方案的时候,发现了一个超有意思的高性价比变频器参考方案——基于 STM32 的同步机无感 MD500E 永磁同步控制方案,今天就来和大家分享一下。

方案亮点

  1. 三电阻采样:MD500E 采用三电阻采样方式,这种采样方法在硬件成本上相对较低,同时又能满足对电机电流等关键参数的采样需求。在代码实现上,以 STM32 为例,我们可以通过 ADC(模拟数字转换器)模块来采集三电阻采样得到的模拟信号。
// 初始化 ADC 通道 void ADC_Init(void) { ADC_InitTypeDef ADC_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1, ENABLE); ADC_InitStructure.ADC_Mode = ADC_Mode_Independent; ADC_InitStructure.ADC_ScanConvMode = DISABLE; ADC_InitStructure.ADC_ContinuousConvMode = DISABLE; ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None; ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right; ADC_InitStructure.ADC_NbrOfChannel = 1; ADC_Init(ADC1, &ADC_InitStructure); // 配置采样通道 ADC_RegularChannelConfig(ADC1, ADC_Channel_0, 1, ADC_SampleTime_55Cycles5); ADC_Cmd(ADC1, ENABLE); } // 获取 ADC 转换结果 uint16_t Get_ADC_Conversion(void) { ADC_SoftwareStartConvCmd(ADC1, ENABLE); while (ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC) == RESET); return ADC_GetConversionValue(ADC1); }

这段代码首先初始化了 ADC1 模块,设置了工作模式为独立模式,关闭扫描模式和连续转换模式,数据对齐方式为右对齐等。然后配置了要采样的通道为通道 0 ,最后开启 ADC 。获取转换结果的函数则是通过软件触发转换,等待转换完成标志位,然后返回转换后的数据。

  1. 优化的无感磁链观测器 FOC 算法:该方案使用了一种优化的无感磁链观测器 FOC(磁场定向控制)算法,这使得电机在低速时也能保持有力,启动力矩大。FOC 算法的核心思想是将交流电机的定子电流分解为产生磁场的励磁电流分量和产生转矩的转矩电流分量,并分别加以控制。在代码实现中,我们需要根据电机的数学模型来计算这些电流分量和磁链。
// 假设已经获取到采样电流和转速等参数 float id, iq; // 通过克拉克变换和帕克变换计算 id 和 iq Clark_Transformation(ia, ib, &alpha, &beta); Park_Transformation(alpha, beta, theta, &id, &iq); // 根据控制策略计算电压指令 // 这里简化处理,实际会更复杂 float vd_ref = kp * (id_ref - id) + ki * integral_id; float vq_ref = kp * (iq_ref - iq) + ki * integral_iq; // 反帕克变换和空间矢量脉宽调制(SVPWM) // 得到最终的 PWM 输出控制电机

这段代码展示了 FOC 算法实现中的部分关键步骤,首先通过克拉克变换和帕克变换将三相静止坐标系下的电流转换到两相旋转坐标系下,得到励磁电流分量id和转矩电流分量iq。然后根据给定的参考电流和实际电流的偏差,通过比例积分控制器(PI 控制器)计算出电压指令vdrefvqref,后续再经过反帕克变换和 SVPWM 生成控制电机的 PWM 信号。

  1. 默认电位器调速:方案默认采用电位器调速,这种调速方式简单直观,成本也不高。在硬件上,电位器一端接电源,一端接地,中间抽头连接到 STM32 的 ADC 输入引脚。在软件中,通过读取 ADC 值来获取电位器的位置,从而得到对应的速度给定值。
// 假设已经初始化 ADC 并能获取 ADC 值 uint16_t adc_value = Get_ADC_Conversion(); // 根据 ADC 值映射到速度给定值 float speed_ref = map(adc_value, 0, 4095, 0, MAX_SPEED);

这段代码获取 ADC 值后,通过map函数(假设已经定义该函数实现将 ADC 值线性映射到速度范围)将 ADC 值转换为速度给定值。

移植关键代码,实现精简版 500E

方案还移植了 500E 的永磁同步电机控制的关键代码,实现了精简版 500E 。这使得开发者可以基于此快速搭建自己的永磁同步电机控制系统,减少了大量的开发时间。比如在电机控制的主循环中,我们可以看到这样的代码结构:

while (1) { // 读取 ADC 值获取电流和速度给定 uint16_t adc_current = Get_ADC_Conversion(); uint16_t adc_speed = Get_ADC_Conversion(); // 计算电流和速度 float current = calculate_current(adc_current); float speed = calculate_speed(adc_speed); // FOC 算法计算电压指令 float vd, vq; FOC_algorithm(current, speed, &vd, &vq); // 生成 PWM 控制电机 generate_PWM(vd, vq); }

在这个主循环中,不断读取 ADC 值获取电流和速度信息,然后通过相关函数计算出实际电流和速度,接着调用 FOC 算法计算电压指令,最后生成 PWM 信号控制电机运转。

发货清单

如果大家对这个方案感兴趣,购买后会得到非常全面的资料。发货清单包括:

  1. 程序:完整的基于 STM32 的控制程序,涵盖了上述提到的各种算法和功能实现的代码,便于大家学习和二次开发。
  2. 原理图(低压版,用的 mos):详细的电路原理图,采用 MOS 管设计的低压版本,清晰展示了各个模块之间的连接关系和电气特性,有助于理解硬件设计思路。
  3. PCB:提供设计好的 PCB 文件,直接可以拿去制作电路板,节省了自己绘制 PCB 的时间和精力。
  4. 说明文档:全面的说明文档,对整个方案的原理、硬件设计、软件代码以及使用方法等都进行了详细的介绍,即使是初学者也能快速上手。

总之,这个同步机无感 STM32 低成本 MD500E 永磁同步控制方案无论是对于学习永磁同步电机控制的爱好者,还是在实际项目中寻求高性价比变频器方案的工程师来说,都非常值得学习参考。希望大家都能从中获取到有用的信息,开发出更优秀的电机控制项目。

http://www.jsqmd.com/news/119861/

相关文章:

  • 通达信随心买
  • cesium126,240311,Ce for Ue 加载天地图P1-了解天地图的地图API:
  • Android ---【经验篇】ArrayList vs CopyOnWriteArrayList 核心区别,怎么选择?
  • 为WPF应用增加项目图标
  • CSS 核心基础:样式表与选择器入门
  • Thinkphp和Laravel酒店客房 vue
  • Thinkphp和Laravel基于vue的校园社团管理系统
  • 5D动感影院设备投资成本及球幕影院市场前景分析
  • 【课程设计/毕业设计】基于SpringBoot的公司资产管理系统设计与实现基于springboot的闲置资产管理系统的设计与实现【附源码、数据库、万字文档】
  • Thinkphp和Laravel基于web的企业公司高校固定资产管理系统_mu8ut-vue
  • qt5之实现一个视频播放器(亲测好用)
  • 【毕业设计】基于springboot的闲置资产管理系统的设计与实现(源码+文档+远程调试,全bao定制等)
  • 写论文软件哪个好?虎贲等考 AI 解锁智能写作新范式,告别创作焦虑
  • 毕业季必看:6款靠谱AI写论文工具,查重率低于8%,原创度超高!
  • python:报错:ModuleNotFoundError: No module named pdfplumber
  • Windows系统文件efswrt.dll丢失或损坏 下载修复方法
  • 审稿 一区期刊注意事项: journal offers the option to connec;please note, reviewers are not expected 是什么意思
  • Docker 部署与管理 - 详解
  • 线性代数:多维世界的变形工具箱
  • 【计算机毕业设计案例】基于springboot的云与糖蛋糕购物平台系统的设计与实现烘焙行业线上线下融合、个性化定制服务(程序+文档+讲解+定制)
  • 免杀对抗——C2远控篇CC++DLL注入过内存核晶镂空新增白加黑链签名工具劫持
  • 支付宝底部导航栏变体+交互制作步骤
  • A.每日一题——955. 删列造序 II
  • python: 报错: ModuleNotFoundError: No module named fitz
  • 【计算机毕业设计案例】基于springboot的实验室预约系统的设计与实现实验室使用情况设备预约、时段管控、使用记录及安全监管的数字化服务(程序+文档+讲解+定制)
  • Select用法
  • 计算机Java毕设实战-基于SpringBoot+Vue实现的前后端分离在线考试系统基于springboot的在线考试系统的设计与实现【完整源码+LW+部署说明+演示视频,全bao一条龙等】
  • 【毕业设计】基于springboot的在线考试系统的设计与实现(源码+文档+远程调试,全bao定制等)
  • 计算机Java毕设实战-基于springboot的闲置资产管理系统的设计与实现基于SpringBoot的闲置固定资产管理系统【完整源码+LW+部署说明+演示视频,全bao一条龙等】
  • Level 10 → Level 11