找回密码
 立即注册
楼主: 梁***

三相无刷直流电机驱动-STC8H-带HALL 梁工例子

[复制链接]

该用户从未签到

3

主题

25

回帖

175

积分

注册会员

积分
175
发表于 2023-8-2 11:31:58 | 显示全部楼层
梁工,

试产发现一个严重问题,经常启动时候会烧掉三极管,烧掉后三极管B极有12V电压,应该市C极和B极击穿了,
以前一直测试没有遇到这样问题,这次买的三极管S8050应该不是正品,应该换成其他三极管(比如3904)或者电路要稍微改下吗?不胜感激!
1.png

点评

12V条件下(自举到24V)8050小电流能击穿烧坏,这个还真没遇到。你可以换耐压更高一点的看看,比如1N5551,耐压150V。  详情 回复 发表于 2023-8-2 17:22
回复 支持 反对 送花

使用道具 举报

该用户从未签到

46

主题

3045

回帖

6867

积分

超级版主

积分
6867
 楼主| 发表于 2023-8-2 17:22:25 | 显示全部楼层
fisholive 发表于 2023-8-2 11:31
梁工,

试产发现一个严重问题,经常启动时候会烧掉三极管,烧掉后三极管B极有12V电压,应该市C极和B极击穿 ...

12V条件下(自举到24V)8050小电流能击穿烧坏,这个还真没遇到。你可以换耐压更高一点的看看,比如1N5551,耐压150V。
回复 支持 反对 送花

使用道具 举报

该用户从未签到

3

主题

25

回帖

175

积分

注册会员

积分
175
发表于 2023-8-2 20:34:25 | 显示全部楼层


梁工,
mos管和三极管基本同时坏的,我估计是打开相高端PWM没有加500ns延迟,以前一直没有问题 ,这次批量买的MOS型号不同,
应该是MOS管S2和G2先击穿,三极管C极相当于直接12V没有经过限流电阻,所以随后三极管也击穿了, 但是好奇怪,CE之间并未被击穿
1.png


点评

之前你并没说MOSFET损坏。 MOSFET的S、G击穿短路,则三极管由于过流也烧毁。 要保证MOSFET的质量,驱动都是先关闭。一个,再开通另一个  详情 回复 发表于 2023-8-2 23:03
回复 支持 反对 送花

使用道具 举报

该用户从未签到

46

主题

3045

回帖

6867

积分

超级版主

积分
6867
 楼主| 发表于 2023-8-2 23:03:48 | 显示全部楼层
fisholive 发表于 2023-8-2 20:34
梁工,
mos管和三极管基本同时坏的,我估计是打开相高端PWM没有加500ns延迟,以前一直没有问题 ,这次批 ...

之前你并没说MOSFET损坏。
MOSFET的S、G击穿短路,则三极管由于过流也烧毁。
要保证MOSFET的质量,驱动都是先关闭。一个,再开通另一个
回复 支持 反对 送花

使用道具 举报

该用户从未签到

3

主题

25

回帖

175

积分

注册会员

积分
175
发表于 2023-8-8 13:26:40 | 显示全部楼层
梁工,我换相增加500ns延迟还是有概率会烧掉,我增加到800ns还是有概率会烧掉了,三极管从是是S8050换成3904问题仍然存在,三极管和mos同时坏。
会不会三极管没有及时关掉,工作在饱和区间或其他原因?
void StepXL(void) // 换相序列函数
{
  switch(Step)
  {
case 0:  // AB
                        PWM0_L=0;        PWM2_L=0; CCAP1H=0;        CCAP2H=0;
                        Delay_800ns();
                        CCAP0H = PWM_Value;                // 打开A相的高端
                        PWM1_L = 1;                 // 打开B相的低端
                        ADC_CONTR = 0XED;        // 选择P1.5作为ADC输入 即c相电压
                        CMPCR1 = 0x9C;                //bit7=1 允许比较器, bit4=1 比较结果由1变0, 产生下降沿中断 (不能响应下降沿中断?)
                        break;
   case 1:  // AC
                        PWM0_L=0;        PWM1_L=0;  CCAP1H=0;        CCAP2H=0;
                        Delay_800ns();
                        CCAP0H = PWM_Value;                // 打开A相的高端
                        PWM2_L = 1;                        // 打开C相的低端
                        ADC_CONTR = 0XEC;        // 选择P1.4作为ADC输入 即B相电压
                        CMPCR1 = 0xAC;                //上升沿中断
                   
      break;
   case 2:  // BC
                        PWM0_L=0;        PWM1_L=0; CCAP0H=0;        CCAP2H=0;
                                Delay_800ns();
                                CCAP1H = PWM_Value; // 打开B相的高端
                        PWM2_L = 1;                        // 打开C相的低端
                        ADC_CONTR = 0XEB;        // 选择P1.3作为ADC输入 即a相电压
                        CMPCR1 = 0x9C;                //下降沿中断
               
      break;
   case 3:  // BA
                        PWM1_L=0;        PWM2_L=0; CCAP0H=0;        CCAP2H=0;
                                Delay_800ns();
                                CCAP1H = PWM_Value; // 打开B相的高端
                        PWM0_L = 1;                        // 打开A相的低端
                        ADC_CONTR = 0XED;        // 选择P1.5作为ADC输入 即c相电压
                        CMPCR1 = 0xAC;                //上升沿中断
               
      break;
   case 4: // CA
                        PWM1_L=0;        PWM2_L=0; CCAP0H=0;        CCAP1H=0;
                                        Delay_800ns();
                                CCAP2H = PWM_Value; // 打开C相的高端
                        PWM0_L = 1;                        // 打开A相的低端
                        ADC_CONTR = 0XEC;        // 选择P1.4作为ADC输入 即B相电压
                        CMPCR1 = 0x9C;                //下降沿中断
               
      break;
   case 5: // CB
                      PWM0_L=0;PWM2_L=0;CCAP0H=0;        CCAP1H=0;
                                Delay_800ns();
                                CCAP2H = PWM_Value;// 打开C相的高端
                      PWM1_L = 1;                        // 打开B相的低端
                        ADC_CONTR = 0XEB;        // 选择P1.3作为ADC输入 即a相电压
                        CMPCR1 = 0xAC;                //上升沿中
         default:       
                break;          
  }       

点评

双踪示波器看一下驱动波形。  详情 回复 发表于 2023-8-8 14:13
回复 支持 反对 送花

使用道具 举报

该用户从未签到

46

主题

3045

回帖

6867

积分

超级版主

积分
6867
 楼主| 发表于 2023-8-8 14:13:46 | 显示全部楼层
fisholive 发表于 2023-8-8 13:26
梁工,我换相增加500ns延迟还是有概率会烧掉,我增加到800ns还是有概率会烧掉了,三极管从是是S8050换成390 ...

双踪示波器看一下驱动波形。
回复 支持 反对 送花

使用道具 举报

该用户从未签到

0

主题

1

回帖

14

积分

新手上路

积分
14
发表于 2023-8-9 16:05:25 | 显示全部楼层
梁工 发表于 2023-8-8 14:13
双踪示波器看一下驱动波形。

会有 FOC 的DEMO ?

点评

目前还没有。  详情 回复 发表于 2023-8-9 21:16
回复 支持 反对 送花

使用道具 举报

该用户从未签到

46

主题

3045

回帖

6867

积分

超级版主

积分
6867
 楼主| 发表于 2023-8-9 21:16:02 | 显示全部楼层

目前还没有。
回复 支持 反对 送花

使用道具 举报

  • TA的每日心情
    开心
    2 小时前
  • 签到天数: 142 天

    [LV.7]常住居民III

    1

    主题

    77

    回帖

    819

    积分

    高级会员

    积分
    819
    发表于 2023-9-13 14:40:23 | 显示全部楼层
    梁工,您好!网上买了一个无刷电机,请问您图上标的HA,HB,HC与HW,HV,HU是怎么对应的呀!按图画了一块PCB,用DC24V,带HALL的程序,上电就烧PWM3,PWM3L输出的功率管。请梁工有空不吝指教一下,先谢谢梁工!

    无刷电机

    无刷电机

    点评

    就算接错霍尔信号,也不应该烧MOSFET,最多转不起来。开启启动用表小的油门(电位器)。 U、V、W是电枢(线圈)引脚,接驱动输出,随便确定一个接线顺序。 HU、HV、HW是霍尔信号,连电源一起接到电路中,相序随便先  详情 回复 发表于 2023-9-13 16:05
    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    46

    主题

    3045

    回帖

    6867

    积分

    超级版主

    积分
    6867
     楼主| 发表于 2023-9-13 16:05:21 | 显示全部楼层
    wellhope 发表于 2023-9-13 14:40
    梁工,您好!网上买了一个无刷电机,请问您图上标的HA,HB,HC与HW,HV,HU是怎么对应的呀!按图画了一块PCB, ...

    就算接错霍尔信号,也不应该烧MOSFET,最多转不起来。开启启动用表小的油门(电位器)。
    U、V、W是电枢(线圈)引脚,接驱动输出,随便确定一个接线顺序。
    HU、HV、HW是霍尔信号,连电源一起接到电路中,相序随便先定一个顺序,如果转不起来,就换线,换几次一般都正常了。我通常先用无霍尔方式驱动起来,示波器看霍尔信号跟电枢信号的相位,就可以确定正确的连接。
    回复 支持 反对 送花

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

    GMT+8, 2024-5-20 09:55 , Processed in 0.086044 second(s), 75 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

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