amoBBS 阿莫电子论坛

 找回密码
 注册
搜索
bottom↓
查看: 25806|回复: 134

51单片机STC15W408AS做的无刷电调

  [复制链接]
发表于 2014-11-5 14:36:05 | 显示全部楼层 |阅读模式
http://player.youku.com/player.php/sid/XODE5NDUxOTI0/v.swf

看到很多人在用C8051做无感无刷电机的驱动,论坛里也好久没有做电调的动静了。今天我给大家来个国产51单片机STC15W408AS驱动无刷电机的驱动资料吧!
1.硬件设计
主控单片机使用STC15W408AS,这是STC在2014年新出的片子,2元一片,主频35M,无需外部晶振和复位电路,接好VCC和GND就可以工作。单片机自带硬件PWM模块、ADC模块和比较器模块,所以非常适合做无刷电机的驱动,半桥电路使用PMOS+NMOS的组合,PMOS为IRF9540,NMOS为IRF540.驱动芯片用TC4427A。
先在洞洞板上做实验吧。原理图如下所示,懒得用软件画了,还是手画来得快些。下面的图中,只画出了A相的桥,B相和C相的桥与A相一样。
BLDC原理图.jpg
按照原理图,焊接好元器件
BLDC电路板.jpg
连接好电机
STC51驱动BLDC1.jpg
2.软件设计
2.1PWM模块
  1. void PWM_Init(void)
  2. {
  3. PWM0_L=0;
  4. PWM1_L=0;
  5. PWM2_L=0;
  6. AUXR |= 0X80; //定时器0工作在1T模式
  7. TMOD=0X02; // 定时器0工作于8位自动重载模式
  8. TH0=0xfa; // 产生23K的频率
  9. TL0=0xfa;
  10. TR0=1; // 打开定时器0
  11. CMOD=0x04; //PCA的时钟选择“T0的溢出”
  12. CL=0; // 计数器清0
  13. CH=0;
  14. CCAP0H=0; //PWM1占空比为0
  15. CCAP0L=0;
  16. CCAPM0=0x42;//开启PWM模式
  17. CCAP1H=0; //PWM2占空比为0
  18. CCAP1L=0;
  19. CCAPM1=0x42; // 开启PWM模式
  20. CCAP2H=0; // PWM3占空比为0
  21. CCAP2L=0;
  22. CCAPM2=0x42;//开启PWM模式
  23. CR = 1;// 打开PCA
  24. }
复制代码

2.2ADC模块和比较器模块
比较器用来做反电动势的过零检测,选择P5.4引脚为比较器的负输入端,选择ADC通道为比较器的正输入端。
  1. void CMP_Init(void) // 比较器初始化函数
  2. {
  3. CMPCR1=0X8C; // 打开比较器,把P5.4引脚设置为负输入端,ADC通道为正输入端
  4. CMPCR2=50;// 延时消抖时间设置
  5. }
  6. void ADC_Init(void) // ADC模块初始化
  7. {
  8. P1ASF = 0X38; //开通P1.3 P1.4 P1.5端口的模拟输入端
  9. }
复制代码

2.3六步时序换相
BLDC的六步时序为AB AC BC BA CA CB,下面程序中,分别用0~5表示每一步。
  1. void StepXL(void) // 换相序列函数
  2. {
  3. switch(Step)
  4. {
  5.   case 0: // AB
  6.   CCAP0H=PWM_Value;CCAP1H=0;CCAP2H=0; // 打开A相的高端
  7.   PWM0_L=0;PWM2_L=0;PWM1_L=1; // 打开B相的低端
  8.   ADC_CONTR = 0XED; // 选择P1.5作为ADC输入 即c相电压
  9.   CMPCR1 |= 0x10; // 使能下降沿中断

  10.   break;
  11.   case 1: // AC
  12.   CCAP0H=PWM_Value;CCAP1H=0;CCAP2H=0; // 打开A相的高端
  13.   PWM0_L=0;PWM1_L=0;PWM2_L=1; // 打开C相的低端
  14.   ADC_CONTR = 0XEC; // 选择P1.4作为ADC输入 即B相电压
  15.   CMPCR1 |= 0x20; // 使能上升沿中断

  16.   break;
  17.   case 2: // BC
  18.   CCAP0H=0;CCAP2H=0;CCAP1H=PWM_Value; // 打开B相的高端
  19.   PWM0_L=0;PWM1_L=0;PWM2_L=1; // 打开C相的低端
  20.   ADC_CONTR = 0XEB; // 选择P1.3作为ADC输入 即a相电压
  21.   CMPCR1 |= 0x10; // 使能下降沿中断

  22.   break;
  23.   case 3: // BA
  24.   CCAP0H=0;CCAP2H=0;CCAP1H=PWM_Value; // 打开B相的高端
  25.   PWM1_L=0;PWM2_L=0;PWM0_L=1; // 打开A相的低端
  26.   ADC_CONTR = 0XED; // 选择P1.5作为ADC输入 即c相电压
  27.   CMPCR1 |= 0x20; // 使能上升沿中断

  28.   break;
  29.   case 4: // CA
  30.   CCAP0H=0;CCAP1H=0;CCAP2H=PWM_Value; // 打开C相的高端
  31.   PWM1_L=0;PWM2_L=0;PWM0_L=1; // 打开A相的低端
  32.   ADC_CONTR = 0XEC; // 选择P1.4作为ADC输入 即B相电压
  33.   CMPCR1 |= 0x10; // 使能下降沿中断

  34.   break;
  35.   case 5: // CB
  36.   CCAP0H=0;CCAP1H=0;CCAP2H=PWM_Value;// 打开C相的高端
  37.   PWM0_L=0;PWM2_L=0;PWM1_L=1; // 打开B相的低端
  38.   ADC_CONTR = 0XEB; // 选择P1.3作为ADC输入 即a相电压
  39.   CMPCR1 |= 0x20; // 使能上升沿中断

  40.   break;
  41.   default:break;
  42. }
  43. }
复制代码

2.4电机启动函数
  1. char QiDong(void)
  2. {
  3. unsigned int timer = 300,i;
  4. DISABLE_CMP_INT;
  5. PWM_Value = 26; // 占空比=26/256=10%
  6. Step=0;
  7. StepXL();
  8. delay_ms(100);
  9. while(1)
  10. {
  11.   for(i=0;i<timer; i++)
  12.   {
  13.    delay_us(100); //
  14.   }
  15.   timer-= timer/15+1;
  16.   if(timer < 25) return(1);
  17.   if(Step<5)Step++;
  18.   else Step=0;
  19.   StepXL();
  20. }
  21. }
复制代码

2.5闭环控制
电机启动以后,需要闭环控制电机的通电时序和速度。这个在比较器的中断函数里面实现。
  1. void CMP_INT(void) interrupt 21 // 比较器中断函数
  2. {
  3. CMPCR1 &=~0X40; // 需软件清除中断标志位
  4. if(Step<5)Step++;
  5. else Step=0;
  6. StepXL();
  7. }
复制代码

2.6通信控制接口
用电脑上的串口调试助手给单片机串口发送“启动”“加速”“减速”“停止”命令。这个功能放到主函数while循环中。
串口初始化函数:
  1. void serial_open(void)
  2. {
  3. SCON = 0X50;//工作在串口模式
  4. AUXR |= 0X04;//
  5. TL2 = 0X71;// 9600 @35MHz
  6. TH2 = 0Xfc;
  7. AUXR|=0X10;
  8. }
复制代码

主函数:
  1. void main(void)
  2. {
  3. uchar rec=0; // 定义串口接收数据变量

  4. PWM_Init(); // 初始化PWM
  5. ADC_Init(); // 初始化ADC
  6. CMP_Init(); // 初始化比较器
  7. serial_open(); // 打开串口

  8. while (1)
  9. {
  10.   if(RI) // 如果串口收到数据
  11.   {
  12.    rec=SBUF; // 把收到的数据给了rec
  13.    RI=0; // 串口接收标志清0
  14.    if(rec==0x22)// 加速命令
  15.    {
  16.     if(PWM_Value<250)
  17.     {
  18.      PWM_Value++; // 增加占空比
  19.     }
  20.    }
  21.    else if(rec==0x33)// 减速命令
  22.    {
  23.     if(PWM_Value>10)
  24.     {
  25.      PWM_Value--; // 减小占空比
  26.     }
  27.    }
  28.    else if(rec==0x11) // 启动命令
  29.    {
  30.     QiDong(); // 启动
  31.     ENABLE_CMP_INT; // 允许比较器中断
  32.     EA=1; // 打开全局中断
  33.    }
  34.    else if(rec==0x44) // 停止命令
  35.    {
  36.     CCAP0H=0;CCAP1H=0;CCAP2H=0;  // 占空比都置0
  37.     EA=0; // 关闭全局中断
  38.     DISABLE_CMP_INT; // 关闭比较器中断
  39.    }
  40.   }
  41. }
  42. }
复制代码

3.总结
上面的软件和硬件,只是实现了简单的控制转动。
缺点:1.没有任何的保护程序,比如电流检测、堵转保护等。我在做实验的过程中,烧了2个PMOS、1个NMOS、3个TC4427A.
2.比较器过0直接换相,有些提前。电机转动噪音比较大。期待日后改进吧!或者哪位大侠伸手改进改进。
源程序工程文件:
STC15W404AS_BLDC.rar (34.73 KB, 下载次数: 1052)
发表于 2014-11-5 14:39:37 | 显示全部楼层
楼主威武,可以加个过温(但楼主这板子貌似不用)和过流保护
发表于 2014-11-5 15:04:00 | 显示全部楼层
收下回去看下
发表于 2014-11-5 15:10:40 | 显示全部楼层
51也可以搞BLDC啊?不错不错
发表于 2014-11-5 21:10:03 | 显示全部楼层
学习了                        
发表于 2014-11-5 21:53:05 | 显示全部楼层
不错学习了!!        
发表于 2014-11-5 22:08:53 | 显示全部楼层
支持楼主话说楼主在设计软件之前是否参考了什么资料
 楼主| 发表于 2014-11-5 22:48:57 | 显示全部楼层
kingway00 发表于 2014-11-5 22:08
支持楼主话说楼主在设计软件之前是否参考了什么资料

参考了很多驱动无刷电机的资料!
发表于 2014-11-5 23:16:53 | 显示全部楼层

支持楼主,学习了,顶一个
发表于 2014-11-5 23:26:06 | 显示全部楼层
谢谢共享,mark
发表于 2014-11-5 23:34:33 来自手机 | 显示全部楼层
支持BLDC,谢谢!
发表于 2014-11-6 09:54:40 | 显示全部楼层
支持楼主,建议还可以参考BLHELI开源程序。
发表于 2014-11-6 09:59:13 | 显示全部楼层
支持楼主! 能否加入闭环控制
发表于 2014-11-6 11:58:09 来自手机 | 显示全部楼层
强大,支持楼主。
发表于 2014-11-6 13:03:04 | 显示全部楼层
mark
发表于 2014-11-6 13:11:48 | 显示全部楼层
留个脚印,,回家慢慢看
发表于 2014-11-6 13:13:35 | 显示全部楼层
挺好,谢谢。
 楼主| 发表于 2014-11-8 11:03:57 | 显示全部楼层
本帖最后由 瑞生 于 2014-11-8 11:05 编辑

发现了一个程序的大BUG,在换相函数里面,上升沿和下降沿的切换上,程序中只用了“或”,没有用“与”把之前的清掉,实际上变成双边沿中断了。为了运行速度,下面的程序直接赋值,不用“与”“或”赋值了。改了之后,电机的噪音小多了,尤其是在高速运转的时候。希望大师们继续改进!

  1. void StepXL(void) // 换相序列函数
  2. {
  3. switch(Step)
  4.   {
  5.    case 0:  // AB
  6.         CCAP0H=PWM_Value;CCAP1H=0;CCAP2H=0; // 打开A相的高端
  7.         PWM0_L=0;PWM2_L=0;PWM1_L=1; // 打开B相的低端
  8.         ADC_CONTR = 0XED; // 选择P1.5作为ADC输入 即c相电压
  9.         CMPCR1=0x9c; // 使能下降沿中断
  10.         break;
  11.    case 1:  // AC
  12.         CCAP0H=PWM_Value;CCAP1H=0;CCAP2H=0; // 打开A相的高端
  13.         PWM0_L=0;PWM1_L=0;PWM2_L=1; // 打开C相的低端
  14.         ADC_CONTR = 0XEC; // 选择P1.4作为ADC输入 即B相电压
  15.         CMPCR1=0xac; // 使能上升沿中断
  16.       break;
  17.    case 2:  // BC
  18.         CCAP0H=0;CCAP2H=0;CCAP1H=PWM_Value; // 打开B相的高端
  19.         PWM0_L=0;PWM1_L=0;PWM2_L=1; // 打开C相的低端
  20.         ADC_CONTR = 0XEB; // 选择P1.3作为ADC输入 即a相电压
  21.         CMPCR1=0x9c; // 使能下降沿中断
  22.       break;
  23.    case 3:  // BA
  24.               CCAP0H=0;CCAP2H=0;CCAP1H=PWM_Value; // 打开B相的高端
  25.         PWM1_L=0;PWM2_L=0;PWM0_L=1; // 打开A相的低端
  26.         ADC_CONTR = 0XED; // 选择P1.5作为ADC输入 即c相电压
  27.         CMPCR1=0xac;         // 使能上升沿中断       
  28.               break;
  29.    case 4: // CA
  30.               CCAP0H=0;CCAP1H=0;CCAP2H=PWM_Value; // 打开C相的高端
  31.         PWM1_L=0;PWM2_L=0;PWM0_L=1; // 打开A相的低端
  32.         ADC_CONTR = 0XEC; // 选择P1.4作为ADC输入 即B相电压
  33.         CMPCR1=0xac; // 使能下降沿中断
  34.               break;
  35.    case 5: // CB
  36.               CCAP0H=0;CCAP1H=0;CCAP2H=PWM_Value;// 打开C相的高端
  37.               PWM0_L=0;PWM2_L=0;PWM1_L=1; // 打开B相的低端
  38.         ADC_CONTR = 0XEB; // 选择P1.3作为ADC输入 即a相电压
  39.         CMPCR1=0xac; // 使能上升沿中断
  40.               break;
  41.    default:break;
  42.   }       
  43. }
复制代码

http://player.youku.com/player.php/sid/XODIxOTgyMjM2/v.swf

新的源代码工程:
STC15W404AS程序.zip (43.24 KB, 下载次数: 388)
 楼主| 发表于 2014-11-9 09:42:30 | 显示全部楼层
程序加入堵转保护了!实现方法,设置定时器T0产生50ms中断,在电机启动之后打开定时器T0,在换相中断比较器中,加入给T0初值的代码。这样,只要不堵转,就不会进去定时器T0中断函数;只要堵转,就会进入T0中断函数,关闭所有功率管,保护器件和电机不会烧坏!
上面的程序中,PWM的产生是用T0的溢出作为时钟源的,为了解放T0,我们设置PWM的时钟源为系统时钟,频率还设置为22K。
PWM初始化代码:
  1. void PWM_Init(void)
  2. {
  3.         PWM0_L=0;
  4.         PWM1_L=0;
  5.         PWM2_L=0;
  6.        
  7.         CMOD=0X0C; //选择系统时钟/6为时钟源,即频率=35M/6/256=22.8K
  8.         CL=0;                        // PCA计数器清零
  9.         CH=0;
  10.        
  11.         PCA_PWM0 = 0X00;
  12.         CCAP0H=0;    // 初始化占空比为0% H的值装载到L中
  13.         CCAP0L=0;
  14.         CCAPM0=0x42;        // 设置为PWM模式
  15.        
  16.         PCA_PWM1 = 0X00;
  17.         CCAP1H=0;    // 初始化占空比为0%
  18.         CCAP1L=0;
  19.         CCAPM1=0x42;        // 设置为PWM模式
  20.        
  21.         PCA_PWM2 = 0X00;
  22.         CCAP2H=0;    // 初始化占空比为0%
  23.         CCAP2L=0;
  24.         CCAPM2=0x42;        // 设置为PWM模式
  25.        
  26.         CR = 1;
  27. }
复制代码


T0初始化函数:
  1. void T0_Iint(void)
  2. {
  3.         TMOD=0X01; // T0工作于16位计数模式
  4.         TH0=0x00; //
  5.         TL0=0X00;
  6.         ET0=1;// 允许ET0中断
  7. }
复制代码


T0中断函数:
  1. void T0_Int(void) interrupt 1
  2. {
  3.         CCAP0H=0;CCAP1H=0;CCAP2H=0;  // 占空比为0
  4.         PWM0_L=0;PWM1_L=0;PWM2_L=0;
  5.         TR0=0;
  6.         EA=0;
  7.         DISABLE_CMP_INT;
  8.         TH0=0x3C; // 计时10ms
  9.         TL0=0XAF;
  10.        
  11.         QiDong(); // 再次启动
  12.         ENABLE_CMP_INT; // 打开比较器中断
  13.         EA=1; // 打开总中断
  14.         TR0=1; // 打开定时器0
  15. }
复制代码


其它地方没有变
新的源代码工程:
STC15W404AS_BLDC.zip (43.98 KB, 下载次数: 496)
发表于 2014-11-9 13:01:09 来自手机 | 显示全部楼层
标记一下,回来电脑上仔细阅读
发表于 2014-11-9 13:22:07 | 显示全部楼层
这个标记一下,谢谢分享。
发表于 2014-11-11 14:01:01 | 显示全部楼层
赞一个!值得鼓励,希望您做的更好,加油!
发表于 2014-11-24 15:17:07 | 显示全部楼层
瑞生 发表于 2014-11-9 09:42
程序加入堵转保护了!实现方法,设置定时器T0产生50ms中断,在电机启动之后打开定时器T0,在换相中断比较器 ...

楼主,你还在更新吗,能不能问你几个问题
 楼主| 发表于 2014-11-25 10:34:17 | 显示全部楼层
redworlf007 发表于 2014-11-24 15:17
楼主,你还在更新吗,能不能问你几个问题

问吧!不一定会
发表于 2014-11-29 11:06:41 | 显示全部楼层
感谢分享,最近在驱动硬盘的主轴电机玩,
发表于 2014-11-29 11:28:47 | 显示全部楼层

新出的15系列有这么便宜?15系列现在功能也算不错了
发表于 2014-11-30 21:37:21 | 显示全部楼层
正好自己想学……赞一个!
发表于 2014-11-30 22:07:13 | 显示全部楼层
楼主威武
发表于 2014-12-1 14:21:29 | 显示全部楼层
15的要6块的吧
发表于 2014-12-1 14:40:13 | 显示全部楼层
谢谢楼主,下载了
头像被屏蔽
发表于 2014-12-1 15:19:57 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
发表于 2014-12-1 17:52:04 | 显示全部楼层
学习了,希望出过完整的图纸分享。
发表于 2014-12-3 22:24:15 | 显示全部楼层
学习了,希望出过完整的图纸分享。
 楼主| 发表于 2014-12-4 12:46:55 | 显示全部楼层
应广大网友要求,用PROTEL99SE画了个板子,已经交给嘉立创打样了,过几天回来给大家发板子!

做实验嘛,没有用小的封装,板子做的比较大!

STC51单片机无刷电机BLDC电路板

STC51单片机无刷电机BLDC电路板



pdf原理图: stc51单片机BLDC电调电路板.pdf (89.35 KB, 下载次数: 1532)
发表于 2014-12-7 19:17:02 | 显示全部楼层
这个不错,正需要。
发表于 2014-12-10 14:08:23 | 显示全部楼层
向楼主学习                  
发表于 2014-12-10 14:26:45 | 显示全部楼层
楼主你这个为什么咯噔咯噔地响,像是柴油机?
发表于 2014-12-10 14:36:10 | 显示全部楼层
51现在的片上外设其实也挺强大的。。。
发表于 2014-12-10 15:23:28 | 显示全部楼层
能否做出高压的,比如直接220整流输出的310V驱动的
话说有没有这么样子的电机?
发表于 2014-12-11 20:28:06 | 显示全部楼层
楼主威武   
发表于 2014-12-11 20:41:53 | 显示全部楼层
启动有点卡。整体还行吧
发表于 2014-12-14 22:29:54 | 显示全部楼层
感谢lz,从lz的程序学到不少
发表于 2014-12-25 14:55:39 | 显示全部楼层
楼主威武,超赞哦
发表于 2014-12-25 15:04:40 | 显示全部楼层
学习 下  
发表于 2014-12-25 15:09:00 | 显示全部楼层
发表于 2014-12-25 15:09:35 | 显示全部楼层
发表于 2014-12-25 21:57:18 | 显示全部楼层
感谢lz,从lz的程序学到不少
发表于 2014-12-26 07:38:56 | 显示全部楼层
本帖最后由 CK345 于 2014-12-26 08:04 编辑

楼主有pcb空板吗 搭车同学习
发表于 2014-12-26 14:19:37 | 显示全部楼层
不错啊,值得学习
 楼主| 发表于 2014-12-27 13:37:48 | 显示全部楼层
本帖最后由 瑞生 于 2014-12-27 13:40 编辑

STC15W408AS驱动BLDC.jpg
今天好不容易有空,试了一下板子,噪音是由于换相不正时引起的,待后续大家共同改进,下面发出电路板的源程序KEIL工程文件。
视频:http://player.youku.com/player.php/sid/XODU3OTE0MDQ0/v.swf

STC15W408AS驱动BLDC程序.zip (47.09 KB, 下载次数: 502)
发表于 2014-12-27 20:05:18 | 显示全部楼层
51也能做到这样的无刷,牛人,
发表于 2014-12-27 20:22:03 | 显示全部楼层
感谢楼主!
早前拿到楼主代码,不错,可以启动,但是噪声大,后来我看了,是切换比较器的中断部分有点小问题,改了就比较好了。
比较器输入端我用了0.1uf电容,就更顺了,很稳定。
由于程序没有处理30度延时,所以0.1uf电容组成的RC刚好可以大约弥补高速时的30度延时。

控制改为了PPM脉冲,从P3.2输入,1.100ms~1.610ms为0~100%PWM。
发表于 2014-12-27 20:31:16 | 显示全部楼层
另外,MOSFET建议换用SOP8封装的、低内阻的型号,否则大电流时,发热很大。
发表于 2014-12-28 18:16:07 | 显示全部楼层
是呀
    换向有问题,速度上不去,电机没力。
发表于 2014-12-30 21:48:17 | 显示全部楼层
把复杂的设计简单化就是高手。
发表于 2015-1-9 11:45:08 | 显示全部楼层
这个相当不错啊
发表于 2015-1-12 15:00:46 | 显示全部楼层
楼主是没有考虑PWM对比较器的影响吧……加0.1uf是可以滤除影响,但是对相位会有延时,且转速越高影响越大。到现在我还没找到去掉电容的方法,有些资料上说择多检测方式可行,也许可以试一下。有些大神早就把电容去掉了,就是不愿告知方法……
 楼主| 发表于 2015-1-13 10:47:58 | 显示全部楼层
本帖最后由 瑞生 于 2015-1-13 10:49 编辑
Leon_yang 发表于 2015-1-12 15:00
楼主是没有考虑PWM对比较器的影响吧……加0.1uf是可以滤除影响,但是对相位会有延时,且转速越高影响越大。 ...


我买了个好盈无刷电调,电路和我的一样简单,没有用电容,一样运行非常好,一点噪音也没有。
我通过示波器观察,它也是输出3路PWM,另3路控制通断,并不是人们说的6路PWM比较好。
 楼主| 发表于 2015-2-1 11:46:20 | 显示全部楼层
今天有空,又修改了两个程序的BUG,噪音没有了(看下面的视频),但是还是没有加30度换相的代码,以后有空再加
BUG1:STC15W408AS的ADC转换完毕,要重新开启转换才可以
BUG2:STC15W408AS的比较器滤波时钟最大是0x3f,以前没有注意

视频地址:http://v.youku.com/v_show/id_XODg0MDUwNzk2.html

最新的KEIL源代码: STC15W404AS程序(针对电路板).zip (42.74 KB, 下载次数: 750)
发表于 2015-2-1 12:55:50 | 显示全部楼层
本帖最后由 118139 于 2015-2-1 13:01 编辑

手头上也有几块用STC12C5204AD 外加比较器做的无刷电机驱动板,商品化的产品,
直流300V,电机可以大负载下频繁启停和运行,运行一般还可以。


a.jpg

背面用了集成了MOS管的,外加功率模块..
b.jpg

型号是
FSBB30CH60f
c.jpg
发表于 2015-2-2 16:32:11 | 显示全部楼层
很不错,楼主高手!学习中。。。
发表于 2015-2-4 21:20:16 | 显示全部楼层
请教下楼主,你做实验时,TC4427A烧毁的原因是什么?我现在也烧了好几个了,找不到原因
 楼主| 发表于 2015-2-4 21:29:32 | 显示全部楼层
shishine 发表于 2015-2-4 21:20
请教下楼主,你做实验时,TC4427A烧毁的原因是什么?我现在也烧了好几个了,找不到原因 ...

这个片子很容易烧,我也烧了好几个,不过现在不烧了
以前都是程序不完善,造成P管和N管都导通,造成电流过大的时候烧的。
发表于 2015-2-4 21:34:54 | 显示全部楼层
瑞生 发表于 2015-2-4 21:29
这个片子很容易烧,我也烧了好几个,不过现在不烧了
以前都是程序不完善,造成P管和N管都导通,造成电流 ...

我的程序应该说不可能使上下臂同时导通的,但这片子还是很容易烧。有点摸不着北了。。对了,楼主你的电调发热严重吗?我的电调高速运转时3对MOS有一对很烫,而其他两对没什么温度。。这是MOS问题还是程序问题啊?
 楼主| 发表于 2015-2-4 22:52:16 | 显示全部楼层
shishine 发表于 2015-2-4 21:34
我的程序应该说不可能使上下臂同时导通的,但这片子还是很容易烧。有点摸不着北了。。对了,楼主你的电调 ...

我也遇到过这个有一对烫的问题,后来发现是TC4427的问题,你把TC4427两个互换,就能看出来
发表于 2015-2-4 23:06:35 | 显示全部楼层
这个都可以,牛人呀!学习一下
发表于 2015-2-5 00:46:44 | 显示全部楼层
瑞生 发表于 2015-2-4 22:52
我也遇到过这个有一对烫的问题,后来发现是TC4427的问题,你把TC4427两个互换,就能看出来 ...

嗯 好的 谢了
发表于 2015-2-11 10:37:20 | 显示全部楼层
搭车问一下,单管驱动的直流电机,没有传感器能否探测到电机转速?
发表于 2015-2-11 10:54:02 | 显示全部楼层
LS,比较困难。
发表于 2015-3-1 19:55:47 | 显示全部楼层
您好,在论坛上看到你 《51单片机STC15W408AS做的无刷电调  的这个帖子》,非常感兴趣;由于自己也正在学习这个,非常渴望能够自己测试下,所以想问下你的电路板还有么,能否送我几片做测试学习,卖给我也可以。期待你的回复。
发表于 2015-3-1 20:04:51 | 显示全部楼层
学习学习!
发表于 2015-3-1 20:26:21 | 显示全部楼层
这个片子 有几个定时器?
发表于 2015-3-1 21:14:35 | 显示全部楼层
MARK      
发表于 2015-3-2 09:11:43 | 显示全部楼层
huangqi412 发表于 2015-3-1 20:26
这个片子 有几个定时器?

两个定时器,3路PCA用做 PWM,还有ADC
 楼主| 发表于 2015-3-2 09:19:04 | 显示全部楼层
天使之翼 发表于 2015-3-1 19:55
您好,在论坛上看到你 《51单片机STC15W408AS做的无刷电调  的这个帖子》,非常感兴趣;由于自己也正在学习 ...

不好意思,现在没有了
发表于 2015-3-2 09:20:35 | 显示全部楼层
这个不错,可以有
发表于 2015-3-2 10:58:14 | 显示全部楼层
小李非刀 发表于 2015-3-2 09:11
两个定时器,3路PCA用做 PWM,还有ADC

还有定时器就能做延时三十度吧。
发表于 2015-3-2 17:00:30 | 显示全部楼层
收藏学习,楼主碉堡了
发表于 2015-3-5 11:12:03 | 显示全部楼层
mark,努力学习
发表于 2015-3-6 08:47:23 | 显示全部楼层
楼主能否留个邮箱交流学习学习
发表于 2015-3-31 11:00:41 | 显示全部楼层
上次看了吗没有学会,又来了
发表于 2015-4-8 12:12:56 | 显示全部楼层
学习了,不错!
发表于 2015-4-8 22:03:03 | 显示全部楼层
不错,做个记号
发表于 2015-5-18 19:49:25 | 显示全部楼层
楼主你的程序怎么没有对续流状态过零点误检测的判断?以及PWM开关干扰下也会造成过零点误检测,这些你都没有遇到过吗?
发表于 2015-8-29 16:22:58 | 显示全部楼层
记号,学习了
发表于 2015-8-29 16:48:10 | 显示全部楼层
不错,先收下了。回再看。
发表于 2015-8-31 14:41:22 | 显示全部楼层
学习了,正好需要这个东西
发表于 2015-9-11 10:16:37 | 显示全部楼层
赞一个!值得鼓励,希望您做的更好,加油!
发表于 2015-11-20 13:29:37 | 显示全部楼层
学习下
发表于 2015-11-21 11:00:00 | 显示全部楼层
瑞生 发表于 2014-12-4 12:46
应广大网友要求,用PROTEL99SE画了个板子,已经交给嘉立创打样了,过几天回来给大家发板子!

做实验嘛,没 ...

楼主请问一下,这个检测换向的问题,因为PWM是由硬件产生的,那么是不是每当这个PWM从高到低或者从低到高的时候,都是需要换向一次呢?那如果这个PWM的频率达到100K了,占空比为50%时,那是不是相当于约5us就要进行换向一次呢?
谢谢指导一下
发表于 2015-11-21 12:38:37 | 显示全部楼层
本帖最后由 知识阅览者 于 2015-11-22 11:46 编辑

哦,这个文件好像早就看到过了!而且在STC官网也有内容的!!!

更改一下,我确实也是在瑞生电子论坛看到的!!!没有看到楼主就是瑞生!!!!
发表于 2015-11-22 11:21:39 来自手机 | 显示全部楼层
知识阅览者 发表于 2015-11-21 12:38
哦,这个文件好像早就看到过了!而且在STC官网也有内容的!!!

请问一下,我在上一楼说的对吗?
发表于 2015-11-22 11:46:46 | 显示全部楼层
jaky80000 发表于 2015-11-22 11:21
请问一下,我在上一楼说的对吗?

不好意思,我只是看到这个知识点,没有去做实验!!!
发表于 2015-12-12 20:57:29 | 显示全部楼层
谢谢 我也准备做一个
发表于 2016-2-15 12:06:34 | 显示全部楼层
牛人啊, 新人慢慢学~
发表于 2016-2-15 13:45:28 | 显示全部楼层
楼主威武。
发表于 2016-4-7 11:08:26 | 显示全部楼层
楼主,你连消磁事件都没有进行滤波还能转起来让我很诧异,而且你没有加rc滤波,噪声应该很多的,还能正常换相,是因为stc15的比较器输入内部带rc滤波吗?
发表于 2016-4-11 14:46:00 | 显示全部楼层
我看了一下st15资料,原来内部有比较延时时钟设置,楼主你的效率怎么样,我的无负载还行,有负载就挂了
发表于 2016-4-12 18:45:20 | 显示全部楼层
不是STC15W404AS吗?
发表于 2016-4-22 07:55:50 | 显示全部楼层
楼主毕设中参考了你的无刷电机拓补电路,谢谢楼主
友情提示:标题不合格、重复发帖,将会被封锁ID。详情请参考:论坛通告:封锁ID、获得注册邀请码、恢复被封ID、投诉必读
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|阿莫电子论坛(原ourAVR/ourDEV) ( 公安备案:44190002001997(交互式论坛) 工信部备案:粤ICP备09047143号 )

GMT+8, 2019-10-18 01:15

阿莫电子论坛, 原"中国电子开发网"

© 2004-2018 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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