搜索
bottom↓
回复: 375

STM32做的BLDC控制器,ADC检测反电动势,公开资料

  [复制链接]

出0入24汤圆

发表于 2013-1-23 22:02:54 | 显示全部楼层 |阅读模式
本帖最后由 20061002838 于 2013-1-23 22:06 编辑

用STM32做BLDC控制器有一段时间了,先是手工焊了一个板子,不行,又画了一块板子,从元旦开始调程序,直到前两天才有所突破,现在可以用ADC检测到反电动势了。
整理了一下资料,现在发上来,希望能给正在或者将要用ADC检测反电动势的朋友提供一点帮助。
今天网络巨卡,视频要等会了。
上两张运行时的图片


拍照的时候,电机正在转,手机的闪光灯也亮了,桨都拍成了半透明的。
再发两张板子的照片



硬件简单介绍一下,STM32主控无需多说,使用的是103RCT6,有两路DAC,在调试中作用很大。
MOS管采用P管+N管的方式,使用的驱动器是TI的UCC27424。没有使用常规的全N关的原因是,我认为在电源电压比较低的情况下,P管+N管可以获得更加优秀的性能,因为低压用的双低MOSFET驱动器具有更好的性能,我这里使用的UCC27424有4A的驱动电流,我的MOS管导通和关断时间更是在200ns以内。
板子预留的有霍尔传感器接口。
使用了芯片自带的两路DAC,又用PWM波模拟了两路DAC,但是比较失败,本来是二阶滤波器结果二阶无法用只能用一阶的,频率高一点的波形显示的不太好。
果断放弃了JTAG口,只用SWD,使用效果很好。
串口使用的是USB转232,芯片是国产的CH340;板上还有一个CAN接口。
其他的就是4个LED,两个按键,一个电位器了。还有一个扩展的SPI接口,但是还没想好要怎么用。
硬件基本上就是这样了。

下面就是板子的资料了,有原理图和gerber文件,程序稍后上传。


最后声明一下版权,本PCB的资料仅用于交流学习,未经本人同意任何人不得将本资料直接或者间接用于商业目的,违者必究。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入24汤圆

 楼主| 发表于 2013-1-23 22:03:33 | 显示全部楼层
本帖最后由 20061002838 于 2013-1-23 22:41 编辑

硬件讲完了,该讲软件了。
我的程序ADC检测反电动势的时刻位于PWM-OFF,由于续流时二极管的压降比较大,在转速很低反电动势很小的情况下,二极管的压降把反电动势都给盖住了。因此果断放弃二极管续流,使用MOSFET同步整流。同步整流带来的最直接的好处就是电机启动时就可以检测到反电动势。传统的用比较器检测反电动势是定位-开环-闭环三个步骤,我的程序就只有两个步骤定位和闭环。
上传两篇比较有用的文档、程序以及个人调程序的一些心得。

ST的AN1103,关于反电动势太小无法检测的原因和解决办法。

飞思卡尔的AN1913,主要讲的是ADC检测反电动势的,我的程序就是根据这个文档写出来的。

程序,有MDK,IAR和VS的工程,我用的是MDK的;我电脑里面的IAR不能用盗版jlink,所以没用IAR调试,但是编译是没问题的;VS的工程是用来看代码和写代码的。

简单的调试心得,希望能帮助到有需要的朋友。

下面是程序的核心部分,贴出来和大家分享
  1. BLDC_SwitchStep();    //启动电机,做一次换向

  2.     while(1)
  3.     {

  4.         while (!DMA_GetFlagStatus(DMA1_FLAG_TC1))  
  5.         {
  6.             ;         //等待ADC转换完成
  7.         }

  8.         BLDC_Ctrl_Board_LEDOn(LED2);
  9.         DMA_ClearFlag(DMA1_FLAG_TC1);    //清楚转换完成标志
  10.         BLDC_Ctrl_Board_LEDOff(LED2);

  11.         switch(MotorA.State)       //状态机,State表示电机状态
  12.         {
  13.         case 0:                             //定位
  14.             if(MotorA.PWMTicks >= 1000)   //PWMTicks是每个PWM周期加1,换向时清零  这段就是给某两相通电一段时间,定位
  15.             {
  16.                 BLDC_Ctrl_Board_LEDOn(LED4);
  17.                 BLDC_SwitchStep();
  18.                 MotorA.State++;
  19.                 BLDC_Ctrl_Board_LEDOff(LED4);
  20.                 BEMF_Cnt = 0;
  21.             }

  22.             break;
  23.         case 1:                             //启动状态
  24.             if (MotorA.PWMTicks >= 8)   //消除消磁事件的影响,8个PWM周期有点大了啊
  25.             {
  26.                 if ( BEMF())              //判断是否过零
  27.                 {
  28.                     BLDC_Ctrl_Board_LEDOn(LED1);
  29.                     // 如果过零,就换向
  30.                     BLDC_SwitchStep();
  31.                     BEMF_Cnt++;  //启动时换向次数
  32.                     BLDC_Ctrl_Board_LEDOff(LED1);
  33.                 }
  34.             }

  35.             if (BEMF_ADC_Cnt < 6000)   //记录启动过程中的反电动势用来分析               
  36.            {
  37.                 ADC_Value[BEMF_ADC_Cnt][0] = ADCConvertedValue_2[0];
  38.                 ADC_Value[BEMF_ADC_Cnt][1] = ADCConvertedValue_2[1];
  39.                 ADC_Value[BEMF_ADC_Cnt][2] = ADCConvertedValue_2[2];

  40.                 BEMF_ADC_Cnt++;         
  41.             }

  42.             if (BEMF_Cnt >= 50) //换向超过50次,切换状态                    
  43.             {
  44.                 MotorA.State++;
  45.                 BEMF_Cnt = 0;
  46.             }
  47.             break;

  48.         case 2:
  49.             if (MotorA.FlagBEMF == 0)      //过零事件标志
  50.             {
  51.                 if (MotorA.PWMTicks >= 8)   //同上,消磁
  52.                 {
  53.                     if ( BEMF())            //检测过零点
  54.                     {
  55.                         BLDC_Ctrl_Board_LEDOn(LED3);
  56.                         MotorA.FlagSwitchStep = MotorA.PWMTicksPre >> 1;                     
  57.                          //延迟30电角度,PWMTicksPre记录的是上一步的时间
  58.                         MotorA.FlagBEMF = 1;  //检测到过零,不再检测
  59.                         BLDC_Ctrl_Board_LEDOff(LED3);
  60.                     }
  61.                 }
  62.             }
  63.             else
  64.             {
  65.                 if (MotorA.FlagSwitchStep == 0)  //延迟时刻到
  66.                 {
  67.                     BLDC_Ctrl_Board_LEDOn(LED1);
  68.                     BLDC_SwitchStep();               //换向
  69.                     BEMF_Cnt++;
  70.                     BLDC_Ctrl_Board_LEDOff(LED1);
  71.                 }
  72.                 else
  73.                 {
  74.                     MotorA.FlagSwitchStep--;      //延迟时刻未到,自减
  75.                 }
  76.             }

  77.             if (BEMF_Cnt >= 80000)       //自动停机
  78.             {
  79.                 MotorA.State++;
  80.                 BEMF_Cnt = 0;
  81.             }

  82.             break;

  83.         case 3:
  84.             BLDC_Stop();
  85.             break;
  86.         case 4:

  87.             break;
  88.         default:
  89.             break;
  90.         }
  91.     }
  92. }
复制代码

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入24汤圆

 楼主| 发表于 2013-1-23 22:32:13 | 显示全部楼层
tiancaigao7 发表于 2013-1-23 22:13
楼主可以考虑同步方式采样反电动势,但是不利用AD(利用AD一个是资源浪费,另外一个资源占用比较大);采用 ...

ADC并不怎么占用资源,定时器+ADC+DMA基本不需要COU干预,判断过零点也比较容易。用比较器的话需要增加硬件,关键是我的电机在开环运行时候遇到了下面的波形

这个波形里面,反电动势要么一直高于1/2VCC,要么一直低于1/2VCC,根本无法判断过零点。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入24汤圆

 楼主| 发表于 2013-1-24 09:19:56 | 显示全部楼层
tiancaigao7 发表于 2013-1-24 08:30
我说的资源占用并不是指的CPU,而是AD,单独为了反电动势占用一个AD有一些浪费,而且你才一一个完整的反 ...

上面发的那张图里面,下面的蓝线是三相反电动势波形,我给合成在一起的,依然没有可以换向的地方。
如果不做多合一电调,ADC通道是完全够用的。保护确实是个问题,现在用的是二极管保护。

出0入24汤圆

 楼主| 发表于 2013-1-24 16:49:27 | 显示全部楼层
imncn 发表于 2013-1-24 15:28
MOSFET续流,同步整流,AFW。。。。注意轻载和重载时的区别哦;MOSFET续流,过了就成了BRAKE了。。。。 ...

没有用再生啊
如果能用再生肯定很过瘾

出0入24汤圆

 楼主| 发表于 2013-1-24 18:19:03 | 显示全部楼层
STM32_Study 发表于 2013-1-24 16:53
请问楼主,同步整流的具体工作流程是怎样的?

能结合时序图详细讲解一下吗?非常感谢 ...

现在还在公司,原始的截图在家里
你看下我写的那个软件调试心得吧,里面有讲同步整流。

出0入24汤圆

 楼主| 发表于 2013-1-24 23:38:21 | 显示全部楼层
STM32_Study 发表于 2013-1-24 22:46
谢谢楼主

调试心得在第一时间已经看过了,就是觉得还不是太明白,所以想请你讲深入一些

是的,你的理解没错

时序就是这个样子的
没有同步整流,通常的做法是上桥臂PWM,下桥臂常开或常闭。这样在续流的时候,电流通过下桥臂的二极管续流。
使用同步整流的话,上桥臂PWM的时候,下桥臂也是PWM,不过是互补的。一旦上桥臂关断,进入续流阶段,下桥臂同时也打开(实际上有一点延迟的,死区,视MOS关断时间决定),这时续流就是有两个MOS管完成。这就是同步整流,MOS中电流流向和二极管方向一致。
我这里使用同步整流主要是为了消除反电动势较小的时候,二极管压降造成的影响;和降低MOS发热(相应的电机发热会多一些)

当A上桥和B上桥同时打开,并没有进入刹车。刹车是给线圈反向通电,电池要供电的,但是注意A上和B上同时打开时,电池没有供电。就你举的例子,A上桥,B下桥打开,线圈反向通电,才是刹车。

再升是一种制动技术,也叫反馈制动,电动车比较常用。车辆制动的时候,电机工作在发动机状态,把机械能转换成电能,通常制动是用一个电阻把电能转换成热能消耗掉(不能用我上面那种同步整流,线圈发热会受不了);再生就是把产生的电能再充回电池,提高效率。
再生的问题就是要在合适的时刻停止再生,不然线圈就反向通电了,电机会反转的。这也就是13L所说的刹车。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入24汤圆

 楼主| 发表于 2013-1-24 23:45:11 | 显示全部楼层
发帖超过24小时了,不能编辑,补上视频
http://v.youku.com/v_show/id_XNTA1OTQ0MjM2.html

出0入24汤圆

 楼主| 发表于 2013-1-24 23:46:54 | 显示全部楼层
STM32_Study 发表于 2013-1-24 23:44
非常感谢楼主~~~

终于明白了

是的,没错
反向通电,刹车是最迅速的。

出0入24汤圆

 楼主| 发表于 2013-1-25 00:19:19 | 显示全部楼层
STM32_Study 发表于 2013-1-24 23:56
强!!

请问楼主,驱动无刷电机,一般转速范围能达到多少可调? 调节范围比一般的直流电机会宽吗?

转速上限肯定是无刷的高,因为电刷会很大限制有刷电机。记得论坛里面有个帖子,一哥们把普通的有刷电机转子固定,定子变转子,改装成无刷电机,转速明显要比有刷的时候转得快。

如果是无传感器的无刷电机,换向主要是靠检测反电动势过零点,如果转速过低反电动势太小就不行了,因此无传感器的有一个转速下限,具体的就要看电机了。
如果是有传感器的无刷电机,速度是没有下限了,因为不需要靠检测反电动势过零来换向。

microchip 有个文档,AN885,讲的是无刷电机基础,里面有无刷电机跟有刷电机和交流电机的对比,你可以看下。

出0入24汤圆

 楼主| 发表于 2013-1-25 09:19:35 | 显示全部楼层
racede 发表于 2013-1-25 01:02
多少KV的电机 多少V的电源 启动的Duty是多少 PWM频率是多少 另外一个PWM周期检测多少次过零?

上个月用STM3 ...

850KV的电机,电源电压12V,10%启动占空比,PWM频率25K,一个PWM周期检测一次过零。

能否详细解释一下 高速转换时ADC各通道结果不一致的问题 是怎么回事啊?

出0入24汤圆

 楼主| 发表于 2013-1-25 09:42:47 | 显示全部楼层
aworker 发表于 2013-1-25 09:33
BLDC控制器用在什么产品上?检测到反电动势,对开发一个产品的软件来说,是重大的突破么? ...

对我的四轴来说是一个不小的突破。8月份的时候就卡住了,到现在才解决。

出0入24汤圆

 楼主| 发表于 2013-1-26 09:29:24 | 显示全部楼层
racede 发表于 2013-1-26 03:59
一个PWM周期检测一次过零是不够的

ADC内部有采样电容 采样时间越短 对应的充电时间越短 等效阻抗越小  ...

我用的采样时间是7.5个周期,精度还可以啊

出0入24汤圆

 楼主| 发表于 2013-1-27 00:06:52 | 显示全部楼层
lijieamd 发表于 2013-1-26 23:31
不管是tiancaigao7坛友所说的同步检测比较器,还是楼主的同步AD采样,如果每个PWM周期只检测一次的话,那么 ...

说的有道理
简单计算了一下,假设电机转速达到6000RPM,电机是7对磁极,那么换向频率是6000/60*7*6=4200Hz。电调PWM频率也就做到几十K,假设是40K,那么基本上10个PWM周期就要换一次向,换向的误差大约是10%。
呵呵,现在只是刚把这个电机转起来,能正确的检测到反电动势过零,后面还有很长的路要走。昨晚尝试使用COM事件换向,结果换向有问题,现在还在查原因。

出0入24汤圆

 楼主| 发表于 2013-1-28 17:57:35 | 显示全部楼层
linac 发表于 2013-1-28 13:19
你前面不是说启动时能直接闭环,说明无论转速多小,都能检测到反电动势? ...

转速很低的情况下,有脉动,而且扭矩很小,没有多少使用价值的。

出0入24汤圆

 楼主| 发表于 2013-1-28 22:29:28 | 显示全部楼层
linac 发表于 2013-1-28 22:21
那就是说在重载启动的情况下,还不如开环?

不明白怎么样才算重载
我先前的回复的意思是说电机本身不适合工作在低转速下

出0入24汤圆

 楼主| 发表于 2013-1-28 22:48:02 | 显示全部楼层
linac 发表于 2013-1-28 22:36
比如很多机械就是重载启动,就是启动力矩接近或大于额定力矩.
如果反电动势能检测准确的话,低速性能与 ...

我现在检测出的过零点位置不是特别准确,最直观的现象就是换向时刻不均匀,一个大一个小
现在用的检测算法太简陋了

出0入24汤圆

 楼主| 发表于 2013-2-2 12:58:36 | 显示全部楼层
snglnc 发表于 2013-2-2 07:40
兄弟,能否谈谈定位时如何避免转子在定位点振荡?

呵呵,我还没有研究到这么深入。

出0入24汤圆

 楼主| 发表于 2013-2-23 09:24:12 | 显示全部楼层
tian179587568 发表于 2013-2-20 13:01
你的这个波形我也碰到过 但是我找不到我记录的波形在哪了。我说说我的看法不知道是不是正确的。
1、我用 ...

应该不是三角形接法的原因,我手上有一个光驱电机,可以看到接线,能够确认是星型连接,也存在相同的问题。

你的PWM波形怎么是那个样子啊?

出0入24汤圆

 楼主| 发表于 2013-2-24 21:26:01 | 显示全部楼层
tian179587568 发表于 2013-2-24 21:12
我又想了想,如我说的第2点,开环启动换向滞后,转子会在换向点附近震荡,这时候星型连接的悬空相的电压 ...

你分析的有点道理
我觉得像MK的方案,由于有个电容,电压必须从VCC变到0,有一个过程。
我现在电机转起来了,这个问题也就不存在了

你的第一条线,看起来就不像是PWM啊

出0入24汤圆

 楼主| 发表于 2013-2-26 21:45:00 | 显示全部楼层
tian179587568 发表于 2013-2-24 21:36
第一条线示波器每隔表示的时间值大,电压的最高点表示PWM_ON,中间很亮的部分是BEMF,你用ADC换向的波形 ...

呵呵,大功率电源还没买,没有满占空比的。

出0入24汤圆

 楼主| 发表于 2013-2-28 17:09:55 | 显示全部楼层
LemonLemon 发表于 2013-2-28 10:49
racede, 请问你这个是用PWM_OFF时检测BEMF的么,我现在用PWM_ON检测,还有些问题。 ...

是的  PWM-OFF时检测

出0入24汤圆

 楼主| 发表于 2013-4-9 23:06:07 | 显示全部楼层
zqbing 发表于 2013-4-9 21:49
楼主,请问你那个MOS下接的那个0.02R电阻是做什么用的,只是检测电流吗,然后怎么处理的呢? ...

哦,这个暂时没用,用一根粗铜丝短路了。

出0入24汤圆

 楼主| 发表于 2013-4-10 00:11:24 | 显示全部楼层
g22261846 发表于 2013-4-9 23:55
我很佩服你,加油,我也要加油

呵呵,过奖了

出0入24汤圆

 楼主| 发表于 2013-5-4 16:55:09 | 显示全部楼层
robin林 发表于 2013-5-4 12:58
你好  软件 怎么延时30度的电角度呢? 就是这个时间怎么计算

根据上一次的换向周期来计算
电机转速在短时间内不会有剧烈变化

出0入24汤圆

 楼主| 发表于 2013-5-7 21:30:26 | 显示全部楼层
lyg407 发表于 2013-5-7 10:57
楼主,  UCC27424      这个芯片在哪里买的啊, 价格多少钱?

呵呵,TI弄的几个样片,零买的话估计要20块
4A的驱动器,真不是盖的,不过用在这里有点大材小用了,可以用IR4427,或者TC4427,这些会便宜一些,几块钱能够买到,驱动能力有1.5A

出0入24汤圆

 楼主| 发表于 2013-5-7 22:22:49 | 显示全部楼层
害人虫 发表于 2013-5-7 21:48
我认为在电源电压比较低的情况下,P管+N管可以获得更加优秀的性能,因为低压用的双低MOSFET驱动器具有更好 ...

MOS驱动器,分为高端驱动和低端驱动,高端驱动一般用来驱动上峭壁是N管的情况,一般需要自举,驱动电流不大,只有几百mA;低端驱动用来驱动下桥臂是N管的情况,驱动电流很大,1A起。
在低压情况下(15V以内),上桥臂使用P管(VGS电压最大20V),可以用双低驱动器驱动MOS,实现MOS的快速开关。
我这个板子里面,参数尚未精调,MOS的开关时间在200ns以内。

出0入24汤圆

 楼主| 发表于 2013-5-28 16:15:39 | 显示全部楼层
robin林 发表于 2013-5-27 21:50
大侠能否帮我看下 反电动势的波形 和对应的 过零点检测波形

貌似你检测到的都是消磁事件

出0入24汤圆

 楼主| 发表于 2013-5-28 20:03:17 | 显示全部楼层
达达鲁 发表于 2013-5-28 15:57
提问一下,如何将电机两级短路刹车?用管子时序办到还是要另外加装继电器什么的? ...

用时序就行了

出0入24汤圆

 楼主| 发表于 2013-5-29 00:20:46 | 显示全部楼层
robin林 发表于 2013-5-28 20:46
我是用  当某一项的端电压等于1/3的三个端电压和1/3(Va +Vb+Vc)时就认为是过零点   ...

那就是说你没有考虑消磁事件的影响喽

百度一下消磁事件吧
可以通过判断脉冲宽度过滤掉消磁事件

出0入24汤圆

 楼主| 发表于 2013-6-11 15:33:56 | 显示全部楼层
logosz 发表于 2013-6-8 23:39
你好楼主,本人刚接触BLDC control   关于你说的“同步整流”是什么意思,能否具体介绍下。我也是用STM32 ...

帖子里面有讲,你看看
另外度娘也能找到
简单来说就是MOSFET双向导电

出0入24汤圆

 楼主| 发表于 2013-6-11 15:35:07 | 显示全部楼层
robin林 发表于 2013-6-3 13:43
你好 外部比较器 基本电路是这样吗?我检测的时候只有一路是正常的,能否指教下 ...

你是同步还是异步?  看你的电路图上面没有电容

出0入24汤圆

 楼主| 发表于 2013-6-11 18:12:04 | 显示全部楼层
logosz 发表于 2013-6-11 15:51
楼主你好,我看了你写的PDF版的调试笔记。你说下图中的蓝线是三相的反电动势拼接在一起的,我对你说的拼 ...

ADC 分别采集得到三相的反电动势,按照时间顺序(任意时刻,总有一相悬空,ADC检测反电动势),然后送DAC输出
所你你看到的那个波形实际是六步中,每一步的反电动势波形。

出0入24汤圆

 楼主| 发表于 2013-6-11 21:28:39 | 显示全部楼层
logosz 发表于 2013-6-11 18:25
早说嘛,原来你是这样debug啊,我说我怎么看不懂呢。在我的理解,感应电动势直接示波器测的话肯定是不能 ...

DAC通道不够,示波器的通道也不够,只好用这种办法
另外这部是梯形波畸变,而是反电动势就是这样子,换了好几个电机都一样。

出0入24汤圆

 楼主| 发表于 2013-6-12 11:35:34 | 显示全部楼层
logosz 发表于 2013-6-12 09:55
另外问下,你的MOS管,P管和N管分别用的具体是什么型号的。

N管是 IRLR7843 或者 7821
P管是 IPD042P03L3
参数写的很好,就是不知道x宝买的是不是真的。

出0入24汤圆

 楼主| 发表于 2013-6-15 20:12:07 | 显示全部楼层
logosz 发表于 2013-6-15 19:02
楼主,你好,我也从TI那里申请了UCC27424的样片,以前没有用过这种MOS管的驱动芯片,不是很了解,我看了M ...

2V是能够导通,但是导通时间呢?

用驱动IC是为了让MOSFET更快的导通和关断。

出0入24汤圆

 楼主| 发表于 2013-6-16 00:59:02 | 显示全部楼层
logosz 发表于 2013-6-15 23:14
原来是为了加快开关的速度啊。我刚开始研究BLDC 控制,MOS管本身还不熟悉怎么用,这个BLDC的 控制速度、 ...

这个你可以测试对比看看

出0入24汤圆

 楼主| 发表于 2013-8-22 20:38:16 | 显示全部楼层
R88 发表于 2013-8-14 20:59
问楼主几个问题,楼主可否一一回答:
1,看gerber貌似master层不需要给厂家,我看一篇文档说paster貌似也不 ...

1,paste是焊盘,做钢网用的,打板可以不用发,其余的那三层对应的是机械层 1 ,13, 15
2,这个不太好分析
3,固定一组线圈通电,线圈最终会锁定在一个位置,而且假如PWM占空比比较大的话,电流会很大,这样用来刹车不太好
4,MDK 4.60,低版本的也是可以的,没有用库(STM32的函数库不算吧)

出0入24汤圆

 楼主| 发表于 2013-8-22 20:42:01 | 显示全部楼层
R88 发表于 2013-8-14 21:10
转速越快,误差越大,最大一个pwm。。

最大一个pwm----这个是怎么推算出来的呢?? ...

假如一个PWM周期40us,如果在一次ADC检测反电动势的时候,还差1us过零点,那么CPU会认为还没到零点。等到下一次检测反电动的时候已经是40us以后了,此时会换向,这样就造成了1个PWM周期的误差

出0入24汤圆

 楼主| 发表于 2013-9-24 22:15:37 | 显示全部楼层
doctor.huang 发表于 2013-9-24 21:27
有人能帮忙解释 前两天上传的波形吗?


那一段直接接地,肯定断续啊  

出0入24汤圆

 楼主| 发表于 2013-9-24 22:16:18 | 显示全部楼层
zqbing 发表于 2013-9-22 23:12
楼主的电机转起后,有没有测量各个电源线上地线上的电压波形?最近也在这样做,却出现干扰,频率和PWM一致 ...

母线上面的电容有多大?

出0入24汤圆

 楼主| 发表于 2013-9-24 22:36:37 | 显示全部楼层
zqbing 发表于 2013-9-24 22:25
你好,根据你的经验,这个可能由那些情况引起的呢,PCB布局布线,还是电路设计问题还是其他什么问题?其 ...

这个电容量不算小了
我的最经停滞了好久,没空搞啊

出0入24汤圆

 楼主| 发表于 2013-11-5 21:56:03 | 显示全部楼层
LiuShengAn 发表于 2013-11-5 15:51
楼主关于同步续流的方法想和你探讨下:
我认为不能使用同步续流的方法。因为续流时间跟电机转速、PWM占空 ...

用二极管续流的时候,电机在发电吗?

出0入24汤圆

 楼主| 发表于 2014-1-16 10:29:48 | 显示全部楼层
liendry 发表于 2014-1-16 08:59
你好,看过你上传的资料受益良多。有个问题,我看了一下电路反电动势获取分压后并了一个100P的电容,我在用 ...

小电容是用来消除信号毛刺的,大电容会造成反电动势滞后

出0入24汤圆

 楼主| 发表于 2014-2-28 22:35:37 | 显示全部楼层
firewind 发表于 2014-2-28 20:04
请问这个电路中mos可以用IRFR1205和5305吗

可以使用,性能稍微差一点

出0入24汤圆

 楼主| 发表于 2014-3-22 00:27:57 | 显示全部楼层
firewind 发表于 2014-3-22 00:14
谢谢!如果把电压提高到16.8,UCC27424是不是要换,有没有便宜点的驱动芯片啊

TC4427  MIC4427  IRS4427 管脚都是兼容的

出0入24汤圆

 楼主| 发表于 2015-10-4 23:43:00 | 显示全部楼层
CCxP 和 CCxNP位啊

出0入24汤圆

 楼主| 发表于 2016-8-10 18:08:29 | 显示全部楼层
china97wan 发表于 2016-8-10 14:15
楼主您好。我现在也在做BLDC控制器。采用的是H-PWM&L-on的驱动方式。用的也是PWM-off期间采样。有些问题想 ...

续流一直进行,不是过一会儿就没了的,线圈中的电流时连续的

出0入24汤圆

 楼主| 发表于 2016-8-10 21:08:31 | 显示全部楼层
china97wan 发表于 2016-8-10 19:19
好的,谢谢您。如果电感电流连续的话,那么二极管压降产生的影响是持续的,在整个PWM-off期间都会对反电 ...

续流那块理解没问题了
快速消磁我没有研究过,不好做评论

出0入24汤圆

 楼主| 发表于 2016-11-18 14:43:22 | 显示全部楼层
smilepppp 发表于 2016-11-18 13:59
http://www.amobbs.com/thread-5663562-1-1.html

你好在这片帖子里面看到的,我的波形和你的一模一样,我 ...

我当初也是卡在这里,后面没有研究了,so,我帮不了你
你可以看下这个帖子,作者也是遇到同样的问题,他通过快速退磁解决的
http://www.amobbs.com/thread-5571972-1-1.html

出0入24汤圆

 楼主| 发表于 2017-8-12 00:01:08 | 显示全部楼层
rootxie 发表于 2017-8-11 23:29
楼主还在搞吗?发现不少问题
power off 触发点在 period-100,实际上 PWM设置为25K,period=72M/25K=2880, ...

算错了吧兄弟,怎么可能转换一次要那么久
原来默认14M时钟,14个转换周期,1us时间
现在12M时钟,20个转换周期,一共慢了 14M/12M*20/14 = 1.667us,不是你算得那么多

后面一个问题你要自己研究了,我后面没有研究方波驱动了

出0入24汤圆

 楼主| 发表于 2017-8-12 00:33:36 | 显示全部楼层
rootxie 发表于 2017-8-12 00:15
是算错了,是20/12=1.67,但是6个通道扫描 也要10us时间,
时间上CC4触发距离TIM1 UPDATE就1 ...

后面3个通道的数据不需要PWM同步,所以不会造成影响
三路BEMF一共5us,25KHz 的 PWM,一个周期40us,怎么就上一次的还没转换完成下一次的PWM已经开始了

出0入24汤圆

 楼主| 发表于 2017-8-12 13:50:07 | 显示全部楼层
rootxie 发表于 2017-8-12 09:05
哥们,不好意思,昨晚睡着了,没及时回复,见示意图,一目了然
当然 如果程序我理解错的话,请见谅! ...

PWM是中心对称模式,触发ADC的时刻距离下次更新PWM还有20us左右

出0入24汤圆

 楼主| 发表于 2017-8-12 21:44:48 | 显示全部楼层
rootxie 发表于 2017-8-12 19:11
程序好像不是中央对齐模式的

恩,是我错了,不应该使用边沿对齐模式
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-20 04:39

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表