亚洲春色中文字幕久久久-三上亚,一吻二脱三床四吻胸,国产真实伦对白视频全集,在线毛片观看,精品成品入口黄网,国产毛aⅴ片久久久,亚洲AV色香蕉一区二区三区老师,萧皇后A级艳片,色情日本视频更新,99久久亚洲精品日本无码

標題: BLCD無刷電機仿真模型 附單片機程序 [打印本頁]

作者: suqianfu    時間: 2023-3-3 22:01
標題: BLCD無刷電機仿真模型 附單片機程序
BLDC無刷電機的驅動都是用方波,我想了想。能不能簡化一下。STC8G單片機IO口輸出頻率可以到30KHZ左右的。
然后直接用3個IO口PWM方式驅動三個2104單端半橋驅動。組成120度正玄波呢?
在利用反饋追頻率不就可以想怎么控制就怎么控制了嗎?
說干就干。
代碼非常簡單。驅動方式采用兩兩導通制
電路原理圖如下:



單片機源程序如下:
#include <stc8.h>                        //調用51常規庫頭文件
#include <INTRINS.H>
#define uint unsigned int   //宏命令,聲明uint替代unsignde int
#define uchar unsigned char        //宏命令,聲明uchar替代unsigned char

sbit a=P2^0;
sbit b=P2^1;
sbit c=P2^2;
sbit hla=P2^3;            //外接393比較器 檢測A相
sbit hlb=P2^4;           //外接393比較器  檢測B相
sbit hlc=P2^5;           //外接393比較器  檢測C相

uchar pwm,num,mod,ym;
uchar scnt;
uchar azkb,bzkb,czkb;

void main()                                        //主程序
{  
   P0M0=0X00;
   P0M1=0X00;
   P1M0=0X00;
   P1M1=0X00;
   P2M0=0X00;
   P2M1=0X00;
   P4M0=0X00;
   P4M1=0X00;
   P5M0=0X20;
   P5M1=0X00;
   P6M0=0X00;
   P6M1=0X00;
   P7M0=0X00;
   P7M1=0X00;
   P3M1=0x00;                                 
   P3M0=0x00;

   ym=100;  //油門                                

   azkb=5;
   bzkb=5;
   czkb=5;                        
   while(1)
   {

        pwm++;if(pwm>11){pwm=0;}
        mod++;
        if(mod>ym)
        {
        switch(num)
         {
          case 0 : if(azkb<9){azkb++;} if(bzkb>1){bzkb--;} if(czkb>5){czkb--;} if(hlc==0&scnt==0){scnt=1;}if(hlc==1&scnt==1){scnt=2;} if(hlc==0&scnt==2){scnt=0;num=1;} break;         //AB    檢測C相過零點,并且經過兩次上升沿濾波
          case 1 : if(azkb<9){azkb++;} if(bzkb<5){bzkb++;} if(czkb>1){czkb--;} if(hlb==0&scnt==0){scnt=1;}if(hlb==1&scnt==1){scnt=2;} if(hlb==0&scnt==2){scnt=0;num=2;} break;         //AC   檢測B相過零點,并且經過兩次上升沿濾波
          case 2 : if(azkb>5){azkb--;} if(bzkb<9){bzkb++;} if(czkb>1){czkb--;} if(hla==0&scnt==0){scnt=1;}if(hla==1&scnt==1){scnt=2;} if(hla==0&scnt==2){scnt=0;num=3;} break;         //BC   檢測A相過零點,并且經過兩次上升沿濾波
          case 3 : if(azkb>1){azkb--;} if(bzkb<9){bzkb++;} if(czkb<5){czkb++;} if(hlc==0&scnt==0){scnt=1;}if(hlc==1&scnt==1){scnt=2;} if(hlc==0&scnt==2){scnt=0;num=4;} break;         //BA   檢測C相過零點,并且經過兩次上升沿濾波
          case 4 : if(azkb>1){azkb--;} if(bzkb>5){bzkb--;} if(czkb<9){czkb++;} if(hlb==0&scnt==0){scnt=1;}if(hlb==1&scnt==1){scnt=2;} if(hlb==0&scnt==2){scnt=0;num=5;} break;         //CA   檢測B相過零點,并且經過兩次上升沿濾波
          case 5 : if(azkb<5){azkb++;} if(bzkb>1){bzkb--;} if(czkb<9){czkb++;} if(hla==0&scnt==0){scnt=1;}if(hla==1&scnt==1){scnt=2;} if(hla==0&scnt==2){scnt=0;num=0;} break;         //CB  檢測A相過零點,并且經過兩次上升沿濾波
         }
         mod=0;
        }

        if(pwm>azkb){a=0;} else{a=1;}
        if(pwm>bzkb){b=0;} else{b=1;}
        if(pwm>czkb){c=0;} else{c=1;}

   }
}


最后查看輸出波形



可以看到輸出的階梯波。主要是我仿真的BLDC模型電感設置得太小了。之后0.01UH。
下面再看我把BLDC電感設置為0.1UH的波形。




作者: suqianfu    時間: 2023-3-3 22:07
檢測過零點,就跟音箱過零保護一樣,原理是檢測音箱磁鐵的反電動勢,檢測到直流電就保護。我這里是檢測到直流(即轉子跨越定子磁場)就換相。切換下一步相序形成追頻接力。
作者: ao咪咪    時間: 2023-8-18 10:50
可以看看工程不




歡迎光臨 (http://www.denmoz.com/bbs/) Powered by Discuz! X3.1