找回密码
 立即注册

QQ登录

只需一步,快速开始

26万转:用最短代码,转最快电机

查看数: 162409 | 评论数: 191 | 收藏 3
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2013-12-23 15:55

正文摘要:

本帖最后由 Angus 于 2024-7-17 11:11 编辑 点击图片-->实际大小,可查看高清大图

回复

高级模式
B Color Image Link Quote Code Smilies |上传

本版积分规则

回复 陈飞宇 发表于 2013-12-26 13:37:18
貌似非常强大啊
hidden
回复 游客 发表于 2025-5-30 11:50:10
Angus 发表于 2017-12-5 17:41
如果在启转之前电机已在转,要测一下转动周期,找到一个过0点,直接从过0点的下一相启转,就可以直接同步 ...

那如果测到转动周期,然后过零点时代码执行下一项启动,这时候电机处于高速转动(5000-6000RPM),但是占空比仍为初始化值4%,这个占空比会不会强制电机降速导致电机卡顿,还是说这个占空比驱动电机的电压是叠加到原来电机的状态上的呢。
hidden
回复 游客 发表于 2025-5-24 14:00:58
Angus 发表于 2025-5-23 14:29
仔细看一下我的代码, 启动时每换相一次,占空比(电压)增加一点。调整这个增加量,可以做到轻载启动转速上 ...

确实是跟你们新塘工作人员联系过,他们也来过我们公司交流过。不过你们华南地区的技术人员可能对代码不够熟悉,说是只接触过低压几十V的无刷驱动器开发。真的非常感谢大佬你的多次解惑,也学到很多。无论怎么说,项目的关键卡点在你的解惑下都能顺利推进。
回复 Angus 发表于 2025-5-23 14:29:49
本帖最后由 Angus 于 2025-5-23 14:39 编辑
游客 116.30.212.x 发表于 2025-5-23 09:51
大佬,这个方案启动那一部分代码是针对带载启动的,我参考了这套方案自己写了一套,电机运行效果不错,但是 ...

仔细看一下我的代码, 启动时每换相一次,占空比(电压)增加一点。调整这个增加量,可以做到轻载启动转速上冲小,重载启动也很好。
我们这个代码,针对不同的电机应用,有一些参数需要调整, 比如:启动电压,每次增加的电压,检过0的位置,功率管驱动方式,等等。所以这个代码即适合低压小电机,也适合高压大电机,高速电机也没问题。如果你在做项目,可直接与我们电话或邮件联系支持问题。

hidden
回复 游客 发表于 2025-5-23 09:51:12
大佬,这个方案启动那一部分代码是针对带载启动的,我参考了这套方案自己写了一套,电机运行效果不错,但是带载启动,调小启动占空比启动不了,调大启动占空比有噪声,加了六步脉冲注入也会有噪声,请问有什么比较好的解决方案。
回复 Angus 发表于 2025-4-29 20:03:34
本帖最后由 Angus 于 2025-4-30 08:50 编辑

有人在此代码基础上,做成并量产了 380V/4KW 的电机控制板,最大功率 5KW。

电机控制板能做到量产,不仅是代码要完善,硬件细节没问题,还要了解电机的机械特性。如果你有项目需求,请直接联系新唐技术人员或新唐的代理公司寻求支持,能加快研发进度。
hidden
回复 游客 发表于 2025-4-29 15:38:47
Angus 发表于 2025-4-25 23:34
低通滤波器,对于直流,是没有衰减的。低通计算公式输入一个常量,多次计算,最后输出也是常量。
可用 Exce ...

感谢作者大大,请问能不能把没有封库的代码分享一下,这是我的邮箱1021351119@qq.com
目前在做大功率的角磨机,大概需要带2000W的载启动,请问这个方案合适吗?
hidden
回复 游客 发表于 2025-4-25 15:41:38
Angus 发表于 2025-4-24 16:41
temp32 = temp32 +((CurrentNow*55 -LastCurrent*24)>>5);  
这个是二阶低滤波器,这个计算增加了5位小数, ...

你好作者大大,我有个疑问。首先不管这个二阶低通滤波器的设计,temp32是ADC-DR的值*(PWM->CMP)/(100*PWM_ONE_PERCENT),到这temp32的量级还是跟ADC-DR的值一样,经过二阶低通滤波器之后temp32 = temp32 +((CurrentNow*55 -LastCurrent*24)>>5);  变成原来temp32大约两倍,此时将CurrentAvg = temp32>>5;相当于直接将temp32缩小了30倍,整个过程都没先将temp32左移5位把高5位当整数,低5位当小数的操作。但是最后比较的时候,我就是觉得CurrentAvg和CURRENT_LIMIT根本就不在一个量级。
  1.    
  2.          int32_t     temp32 ;  
  3.          uint32_t   static Turn_ADC = 0 ;   
  4.          int32_t     static LastCurrent=0, CurrentNow=0 ;  
  5.   
  6.   temp32 = ADC->DR & 0xFFFF ;
  7.   switch(ADC->CHER & 0xFF){  
  8.   case ADC7_CURRENT :
  9.     temp32 -= Current_Zero ;                                           // 功率管导通时的电流值
  10.     Adc_Current = temp32 ;
  11.     if(temp32 > CURRENT_PEAK){            Duty_Limit -=  1;      
  12.       if(temp32 > (CURRENT_PEAK*39>>5))    Duty_Limit -= 40;     // 一次减5%, 最快2ms可减80%
  13.       else if(temp32 >(CURRENT_PEAK*35>>5)) Duty_Limit -= 4;     // 两次减约0.5%
  14.       TickChangDuty = TIMER1->DR ;                    // 过流停止加电压,风机类转速上去电流就下来了         
  15.     }
  16.     if(temp32 < 0) temp32 = 0 ;                             // 风机类,若不控制功率就不必测平均电流
  17.     else if(PWM->CMR0 <PWM->CNR0)temp32 =(temp32*PWM->CMR0*Current_Cofficient)>>16; // 周期内均值   
  18. // Current_Cofficient = 65536ul/(100*PWM_ONE_PERCENT);      // 电流校正系数               
  19.     temp32 = temp32+((CurrentNow*55-LastCurrent*24)>>5);  // 二阶低通,转折频率13.8K/2/30= 230Hz
  20.     LastCurrent = CurrentNow;    CurrentNow = temp32 ;
  21.     CurrentAvg = temp32>>5;
  22.     break ;     
复制代码
回复 Angus 发表于 2025-4-24 16:41:26
temp32 = temp32 +((CurrentNow*55 -LastCurrent*24)>>5);  
这个是二阶低滤波器,这个计算增加了5位小数, 所以最后把5位小数去掉 CurrentAvg = temp32>>5;

这个二阶低通,也可以写成  temp32 = (temp32 +CurrentNow*55 -LastCurrent*24) >>5 ;   这样计算不会增加小数位,但不如前面增加小数位的公式计算精度高。
新唐MCU