久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 18034|回復(fù): 33
打印 上一主題 下一主題
收起左側(cè)

51單片機(jī)STC15W408AS電調(diào)程序詳解

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:753618 發(fā)表于 2021-12-10 17:29 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
看了大概一個月的程序,基本理解了,根據(jù)自己的理解對程序做了詳盡注釋,希望能夠幫助后來者。接下來要學(xué)習(xí)ppm信號,希望能夠很快對接起來。
電路原理圖如下:


單片機(jī)源程序如下:
  1. /***************************功能說明***************************

  2. 本程序試驗使用STC15W408AS來驅(qū)動航模用的無感無刷三相直流馬達(dá).

  3. 本程序參考自網(wǎng)上的代碼(作者: 瑞生), 改良而來.

  4. 電路圖見文件 "BLDC-V10-實(shí)驗電路.pdf".

  5. 控制信號由P3.2輸入正脈沖信號, 間隔5~20ms, 脈沖寬度1.000~1.610ms.

  6. 1.160ms開始啟動, 1.610ms為最高速度, 分辨率為2us.

  7. 本程序僅僅是簡單控制, 軟件沒有處理過0延時30度切換和過流檢測.

  8. 由于過0檢測部分有RC濾波, 所以改變電容值可以大約的對應(yīng)在最高速時延時30度的時間.

  9. 有意者可自行完善電路和程序.

  10. *********************************************************************************/

  11. #define MAIN_Fosc                24000000L        //定義主時鐘

  12. #include "STC15Fxxxx.H"

  13. //CMPCR1(比較器控制寄存器 1)
  14. #define        CMPEN        0x80        //1: 允許比較器, 0: 禁止,關(guān)閉比較器電源
  15. #define        CMPIF        0x40        //比較器中斷標(biāo)志, 包括上升沿或下降沿中斷, 軟件清0
  16. #define        PIE                0x20        //1: 比較結(jié)果由0變1, 產(chǎn)生上升沿中斷
  17. #define        NIE                0x10        //1: 比較結(jié)果由1變0, 產(chǎn)生下降沿中斷
  18. #define        PIS                0x08        //輸入正極性選擇, 0: 選擇外部P5.5做正輸入,           1: 由ADCIS[2:0]所選擇的ADC輸入端做正輸入.
  19. #define        NIS                0x04        //輸入負(fù)極性選擇, 0: 選擇內(nèi)部BandGap電壓BGv做負(fù)輸入, 1: 選擇外部P5.4做輸入.
  20. #define        CMPOE        0x02        //1: 允許比較結(jié)果輸出到P1.2, 0: 禁止.
  21. #define        CMPRES        0x01        //比較結(jié)果, 1: CMP+電平高于CMP-,  0: CMP+電平低于CMP-,  只讀

  22. //CMPCR2(比較器控制寄存器 2)
  23. #define        INVCMPO        0x80        //1: 比較器輸出取反,  0: 不取反
  24. #define        DISFLT        0x40        //1: 關(guān)閉0.1us濾波,   0: 允許
  25. #define        LCDTY        0x00        //關(guān)閉數(shù)字濾波功能. 數(shù)字濾波功能即為數(shù)字信號去抖動功能.

  26. sbit PWM0_L = P3^4;
  27. sbit PWM1_L = P3^5;
  28. sbit PWM2_L = P3^6;

  29. u8        Step;
  30. u8        PWM_Value; // 決定PWM占空比的值
  31. u16        RxPulseWide;
  32. bit        B_RxOk;    //定義一個bool量.
  33. bit        B_RUN;
  34. u8        PWW_Set;
  35. u8        cnt10ms;
  36. u8        Rx_cnt;
  37. u8        TimeOut;        //堵轉(zhuǎn)超時

  38. #define DISABLE_CMP_INT CMPCR1 &= ~0X40                // 比較器中斷標(biāo)志位清0.
  39. #define ENABLE_CMP_INT  CMPCR1 |= 0X40                // 比較器中斷標(biāo)志位置1.

  40. /*********************************************************************/

  41. void Delay_n_ms(u8 dly)
  42. {
  43.         u16        j;
  44.         do
  45.         {
  46.                 j = MAIN_Fosc / 13000;        //延時1ms, 主程序在此節(jié)拍下運(yùn)行
  47.                 while(--j)        ;
  48.         }
  49.         while(--dly);
  50. }


  51. void delay_us(u8 us)
  52. {
  53.         do
  54.         {
  55.                 NOP(20);        //@24MHz
  56.         }
  57.         while(--us);
  58. }

  59. void StepXL(void) // 換相序列函數(shù)
  60. {
  61. switch(Step)
  62.           {
  63.            case 0:  // AB
  64.                                 PWM0_L=0;  PWM1_L = 1;  PWM2_L=0;           // Q4常開.
  65.                                 CCAP0H = PWM_Value;        CCAP1H=0;        CCAP2H=0;        // A相由占空比控制.
  66.                                 ADC_CONTR = 0XCD;        // ADC電源開,ADC轉(zhuǎn)換開,選擇P1.5作為ADC輸入口
  67.                                 CMPCR1 = 0x9C;                // 比較器使能, 下降沿中斷允許,通過ADC的P1.5口作為比較器的正極輸入端,
  68.                                                                                                                                  //選擇外部端口P5.4作為比較器負(fù)極輸入端.
  69.                  break;
  70.            case 1:  // AC
  71.                                 PWM0_L=0;        PWM1_L=0;  PWM2_L = 1;                        // Q4常開
  72.                                 CCAP0H = PWM_Value;        CCAP1H=0;        CCAP2H=0;        // A相由占空比控制.
  73.                                 ADC_CONTR = 0XCC;        // ADC電源開,ADC轉(zhuǎn)換開,選擇P1.4作為ADC輸入端
  74.                                 CMPCR1 = 0xAC;                // 比較器使能, 上升沿中斷允許,通過ADC的P1.4口作為比較器的正極輸入端
  75.                                                                                                                                  //選擇外部端口P5.4作為比較器負(fù)極輸入端.   
  76.                   break;
  77.            case 2:  // BC
  78.                                 PWM0_L=0;        PWM1_L=0;  PWM2_L = 1;                        // Q2常開
  79.                                 CCAP0H=0;        CCAP2H=0;        CCAP1H = PWM_Value; //  B相由占空比控制.                       
  80.                                 ADC_CONTR = 0XCB;   // ADC電源開,ADC轉(zhuǎn)換開,選擇P1.3作為ADC輸入口測量A點(diǎn)電壓   
  81.                                 CMPCR1 = 0x9C;                // 比較器使能, 下降沿中斷允許,通過ADC的P1.3口作為比較器的正極輸入端
  82.                                                                                                                                  //選擇外部端口P5.4作為比較器負(fù)極輸入端.
  83.                   break;
  84.            case 3:  // BA
  85.                                 PWM0_L = 1;  PWM1_L=0;        PWM2_L=0;                        // Q6常開
  86.                                 CCAP0H=0;        CCAP2H=0;        CCAP1H = PWM_Value; // B相由占空比控制.
  87.                                 ADC_CONTR = 0XCD;        // ADC電源開,ADC轉(zhuǎn)換開,選擇P1.5作為ADC輸入口測量C點(diǎn)電壓  
  88.                                 CMPCR1 = 0xAC;                // 比較器使能, 上升沿中斷允許,通過ADC的P1.5口作為比較器的正極輸入端
  89.                                                                                                                                  //選擇外部端口P5.4作為比較器負(fù)極輸入端.                       
  90.                   break;
  91.            case 4:  // CA
  92.                                 PWM0_L = 1;        PWM1_L=0;        PWM2_L=0;                    // Q6常開
  93.                                 CCAP0H=0;        CCAP1H=0;        CCAP2H = PWM_Value; // C相由占空比控制.
  94.                                 ADC_CONTR = 0XCC;        // ADC電源開,ADC轉(zhuǎn)換開,選擇P1.4作為ADC輸入口測量B點(diǎn)電壓
  95.                                 CMPCR1 = 0x9C;                // 比較器使能, 下降沿中斷允許,通過ADC的P1.4口作為比較器的正極輸入端
  96.                                                                                                                                  //選擇外部端口P5.4作為比較器負(fù)極輸入端.
  97.                   break;
  98.            case 5: // CB
  99.                                 PWM0_L=0;        PWM2_L=0;  PWM1_L = 1;                        // Q4常開
  100.                                 CCAP0H=0;        CCAP1H=0;        CCAP2H = PWM_Value; // C相由占空比控制.                     
  101.                                 ADC_CONTR = 0XCB;        // ADC電源開,ADC轉(zhuǎn)換開,選擇P1.3作為ADC輸入口測量A點(diǎn)電壓  
  102.                                 CMPCR1 = 0xAC;                // 比較器使能, 上升沿中斷允許,通過ADC的P1.3口作為比較器的正極輸入端
  103.                                                                                                                                  //選擇外部端口P5.4作為比較器負(fù)極輸入端.       
  104.                   break;
  105.            default:
  106.                   break;
  107.           }       
  108. }

  109. /***************************************************************
  110. *                      PCA模塊PWM輸出設(shè)置                      *
  111. ***************************************************************/
  112. void PWM_Init(void)
  113. {
  114.         PWM0_L = 0;     // 初始化P3^4為低電平.sbit PWM0_L = P3^4;
  115.         PWM1_L = 0;     // 初始化P3^5為低電平.sbit PWM1_L = P3^5;
  116.         PWM2_L = 0;     // 初始化P3^6為低電平.sbit PWM2_L = P3^6;
  117.        
  118.         P3n_push_pull(0x70);    // 設(shè)置P3.4/3.5、3.6為推挽輸出.  P3M1 &= ~(bitn),        P3M0 |=  (bitn)
  119.          
  120.         CMOD = 5 << 1;  //5(0101)左移1位,設(shè)置PCA的輸入時鐘源為系統(tǒng)時鐘的1/4,即PWM頻率=24M/4.

  121.         CH=0;                     // PCA(Programmable Counter Array)清零
  122.         CL=0;            //  
  123.        
  124.         PCA_PWM0 = 0X00; // 對PCA_PWM0模塊0清0,并設(shè)置PWM為8位(EBS0[1:0]=00).
  125.         CCAP0H = 0x00;   // 重載值為{EPCnH,CCAPnH[7:0]}.
  126.         CCAP0L = 0x00;   // 比較值為{EPCnL,CCAPnL[7:0]}.
  127.         CCAPM0 = 0x42;         // 設(shè)置PCA模塊0的控制模式(0100 0010).ECOM0=1,允許PCA模塊0的比較功能.
  128.                          // PWM0=1,設(shè)置PCA模塊0為脈寬調(diào)制輸出功能.
  129.                          // 當(dāng)PCA 模塊工作在8位PWM模式時,{0,CL[7:0]}與{EPCnL,CCAPnL[7:0]}
  130.                      // 中的值進(jìn)行比較,小于,輸出低電平,大于等于輸出高電平.       
  131.         PCA_PWM1 = 0X00; // 對PCA_PWM0模塊0清0,并設(shè)置PWM為8位(EBS0[1:0]=00).
  132.         CCAP1H = 0x00;   // 重載值為{EPCnH,CCAPnH[7:0]}.
  133.         CCAP1L = 0x00;   // 比較值為{EPCnL,CCAPnL[7:0]}.
  134.         CCAPM1 = 0x42;         // 設(shè)置PCA模塊1的控制模式(0100 0010).ECOM0=1,允許PCA模塊1的比較功能.
  135.                          // PWM1=1,設(shè)置PCA模塊1為脈寬調(diào)制輸出功能.
  136.                          // 當(dāng)PCA 模塊工作在8位PWM模式時,{0,CL[7:0]}與{EPCnL,CCAPnL[7:0]}
  137.                      // 中的值進(jìn)行比較,小于,輸出低電平,大于等于輸出高電平.                                                 
  138.         PCA_PWM2 = 0X00; // 對PCA_PWM2模塊進(jìn)行設(shè)置.其中,EBS2[1:0]=00,PWM為8位.
  139.         CCAP2H = 0x00;   // 重載值為{EPCnH,CCAPnH[7:0]}.
  140.         CCAP2L = 0x00;   // 比較值為{EPCnL,CCAPnL[7:0]}.
  141.         CCAPM2 = 0x42;         // 設(shè)置PCA模塊2的控制模式(0100 0010).ECOM0=1,允許PCA模塊2的比較功能.
  142.                          // PWM2=1,設(shè)置PCA模塊2為脈寬調(diào)制輸出功能.
  143.                          // 當(dāng)PCA 模塊工作在8位PWM模式時,{0,CL[7:0]}與{EPCnL,CCAPnL[7:0]}
  144.                      // 中的值進(jìn)行比較,小于,輸出低電平,大于等于輸出高電平.                                         
  145.         CR = 1;          // PCA計數(shù)允許控制位,1:啟動PCA計數(shù).
  146. }

  147. void ADC_Init(void)
  148. {
  149.         P1n_pure_input(0x38);  // 設(shè)置P1.3/1.4/1.5口為高阻輸入(電流既不能流入也不能流出).P1M1 |=  (bitn),        P1M0 &= ~(bitn)
  150.         P1ASF = 0X38;          // 開通P1.3 P1.4 P1.5的AD輸入口(0011 1000)
  151. }

  152. /***************************************************************
  153. *                      比較器中斷服務(wù)函數(shù)                      *
  154. ***************************************************************/

  155. void CMP_INT(void) interrupt 21
  156. {
  157.         CMPCR1 &= ~0X40;       // 軟件清除中斷標(biāo)志位
  158.         if(Step<5)        Step++;
  159.         else                Step = 0;
  160.         StepXL();              // 進(jìn)入換相程序. 在換相程序中,已經(jīng)對比較器的正負(fù)極輸入端做了設(shè)置.
  161.                                // ADC的P1.4/P1.5/P1.6口作為比較器的正極輸入端,選擇外部端口P5.4作為比較器負(fù)極輸入端.                                                                                                                                           
  162.         TimeOut = 10;               // 在執(zhí)行完比較器中斷函數(shù)后,賦值TimeOut=10.
  163. }

  164. /***************************************************************
  165. *                      比較器初始化設(shè)置                        *
  166. ***************************************************************/
  167. void CMP_Init(void)
  168. {
  169.         CMPCR1 = 0X8C;        // 1000 1100 比較器使能,比較器正負(fù)極輸入端設(shè)置, 通過ADC_CHS位選擇比較器的正極輸入端,選擇P5.4作為負(fù)極.
  170.         CMPCR2 = 60;        // 60個時鐘濾波
  171.         P5n_pure_input(0x10);  // 設(shè)置P5.4口為高阻輸入(電流既不能流入也不能流出).P5M1 |=  (bitn),        P5M0 &= ~(bitn)
  172. }

  173. /***************************************************************
  174. *                         電機(jī)啟動函數(shù)                         *
  175. ***************************************************************/
  176.     u8 StartMotor(void)
  177. {
  178.         u16 timer,i;
  179.         DISABLE_CMP_INT;        // 比較器中斷標(biāo)志位清0,不產(chǎn)生比較中斷.
  180.         PWM_Value = 30;                // 設(shè)置占空比初值
  181.         Step = 0;
  182.         StepXL();                        // ∵step=0, ∴ 進(jìn)入AB相導(dǎo)通的初始位置
  183.         Delay_n_ms(5);      // 延時5ms
  184.         timer = 300;

  185.         while(1)
  186.         {
  187.                 for(i=0; i<timer; i++)        delay_us(50);  
  188.                 timer -= timer /15 + 1;
  189.                 if(timer < 25)        return(1);
  190.                 if( Step < 5)        Step++;
  191.                 else                        Step = 0;
  192.                 StepXL();
  193.         }
  194. }

  195. /***************************************************************
  196. *                      定時器T0初始化函數(shù)                      *
  197. ***************************************************************/
  198. void T0_Init(void)      // 這里設(shè)置TH0/TL0=0,定時器T0為16位不自動重載,
  199. {
  200.         Timer0_AsTimer();        // 設(shè)置定時器T0用做定時器. TMOD &= ~(1<<2)       
  201.         Timer0_12T();                // 定時器0 12分頻. AUXR &= ~(1<<7)
  202.         Timer0_16bit();     // 定時器0 16位不自動重載模式. TMOD  = (TMOD & ~0x03) | 0x01   
  203.         Timer0_Gate_INT0_P32();        // T0_GATE置1, 只有在INT0腳為高及TR0=1時才可啟動定時器T0.TMOD |=  (1<<3).
  204.         TH0 = 0;
  205.         TL0 = 0;
  206.         TR0 = 1; // 定時器 T0 準(zhǔn)備工作.
  207.         ET0 = 1; // 定時器 T0 的溢出中斷允許位.
  208. }

  209. /***************************************************************
  210. *                      定時器T0中斷服務(wù)函數(shù)                    *
  211. ***************************************************************/
  212. void T0_Interrupt(void) interrupt 1
  213. {
  214.         Rx_cnt = 0;                        // 一旦出現(xiàn)溢出, 則開始的n個脈沖無效
  215.         RxPulseWide = 1000;        // 停止
  216.         B_RxOk = 1;                        // 在執(zhí)行完T0中斷服務(wù)函數(shù)后,給B_RxOk賦值.
  217. }

  218. /***************************************************************
  219. *                INT0(外部中斷0)中斷服務(wù)函數(shù)                 *
  220. ***************************************************************/
  221. void INT0_int (void) interrupt 0
  222. {
  223.         u16        j;       
  224.         TR0 = 0;
  225.         TH0 = 0;
  226.         TL0 = 0;
  227.         j = ((u16)TH0 << 8) + TL0;
  228.         TR0 = 1;   // 定時器T0的運(yùn)行控制位,允許T0計數(shù), 這時候TH0、TL0就開始計數(shù)了.

  229.         if(++Rx_cnt >= 5)        Rx_cnt = 5;
  230.         j >>= 1;        //為了好處理, 轉(zhuǎn)成單位為us.
  231.         if((j >= 800) && (j <= 2000) && (Rx_cnt == 5))
  232.         {
  233.                 RxPulseWide = j;
  234.                 B_RxOk = 1;                //標(biāo)志收到一個脈沖
  235.         }
  236. }


  237. /**********************************************/
  238. void main(void)
  239. {
  240.         u16 j;     // unsigned int.

  241.         PWM_Init(); // 設(shè)置P3.4/3.5、3.6為推挽輸出. 當(dāng)PCA 模塊工作在8位PWM模式時,{0,CL[7:0]}與{EPCnL,CCAPnL[7:0]}
  242.                 // 中的值進(jìn)行比較并決定輸出高電平還是低電平.此電平作為
  243.         ADC_Init(); // 開通P1.3 P1.4 P1.5的AD輸入口.√
  244.         CMP_Init(); // 比較器初始化設(shè)置. 對比較器正負(fù)極輸入端進(jìn)行設(shè)置, 通過ADC_CHS位選擇比較器的正極輸入端,選擇P5.4作為負(fù)極.
  245.         T0_Init();  // 定時器T0初始化設(shè)置, 定時器0 12分頻. (AUXR &= ~(1<<7)).

  246.         IE0 = 0;        // 外部中斷0(INT0/P3.2)中斷請求標(biāo)志位清零.
  247.         EX0 = 1;        // 外部中斷0(INT0)中斷允許.
  248.         IT0 = 1;        // 外部中斷0(INT0)為下降沿觸發(fā).
  249.        
  250.         RxPulseWide = 1000;
  251.         PWW_Set = 0;
  252.         cnt10ms = 0;
  253.         Rx_cnt  = 0;
  254.         TimeOut = 0;

  255.         EA  = 1;            // 打開總中斷
  256.        
  257.         while (1)
  258.         {
  259.                 Delay_n_ms(1);        // 延時1ms, 主程序在此節(jié)拍下運(yùn)行
  260.                 if(TimeOut > 0) // 在執(zhí)行完比較器中斷函數(shù)后,進(jìn)入此模塊.
  261.                 {
  262.                         if(--TimeOut == 0)            
  263.                         {
  264.                                 CCAP0H=0;        CCAP1H=0;        CCAP2H=0;  // PCA模塊復(fù)原.
  265.                                 PWM0_L=0;        PWM1_L=0;        PWM2_L=0;  // P3.4/3.5、3.6腳復(fù)原.
  266.                                 DISABLE_CMP_INT;    // 關(guān)比較器中斷
  267.                                 Delay_n_ms(250);        // 堵轉(zhuǎn)時,延時1秒再啟動
  268.                                 Delay_n_ms(250);
  269.                                 Delay_n_ms(250);
  270.                                 Delay_n_ms(250);

  271.                                 RxPulseWide = 1000;
  272.                                 PWW_Set   = 0;
  273.                                 PWM_Value = 0;
  274.                                 B_RxOk = 0;
  275.                                 B_RUN  = 0;
  276.                                 Rx_cnt = 0;
  277.                                 TimeOut = 0;
  278.                         }
  279.                 }
  280.                
  281.                 if(B_RxOk)          // 在執(zhí)行完T0中斷服務(wù)函數(shù)后,執(zhí)行此模塊.
  282.                 {
  283.                         B_RxOk = 0;
  284.                         j = RxPulseWide;
  285.                         if(j >= 1100)                                // 1100~1610對應(yīng)PWM占空比值0~255
  286.                         {
  287.                                 j = (j - 1100) >> 1;        //2us對應(yīng)PWM一個步進(jìn)
  288.                                 if(j > 256)        j = 255;
  289.                         }
  290.                         else        j = 0;
  291.                         PWW_Set = (u8)j;   
  292.                 }
  293.                
  294.                 if(!B_RUN && (PWW_Set >= 30))                // PWM_Set >= 30, 并且馬達(dá)未運(yùn)行, 則啟動馬達(dá)
  295.                 {
  296.                         StartMotor();         // 啟動馬達(dá)
  297.                         CMPCR1 &= ~0X40; // 比較器中斷請求標(biāo)志位清零
  298.                         ENABLE_CMP_INT;  // 打開比較器中斷
  299.                         B_RUN = 1;       // B_RUN只是一個標(biāo)志位,便于管理
  300.                         TimeOut = 0;
  301.                 }
  302.                
  303.                
  304.                 if(++cnt10ms >= 10)                      // 10ms時隙
  305.                 {
  306.                         cnt10ms = 0;
  307.                         if(B_RUN)
  308.                         {
  309.                                 if(PWM_Value < PWW_Set)        PWM_Value++;
  310.                                 if(PWM_Value > PWW_Set)        PWM_Value--;
  311.                                 if(PWM_Value < 20)       
  312.                                 {
  313.                                         PWM_Value = 0;
  314.                                         B_RUN = 0;
  315.                                         CCAP0H=0;        CCAP1H=0;        CCAP2H=0;  // 占空比為0
  316.                                         PWM0_L=0;        PWM1_L=0;        PWM2_L=0;
  317.                                         DISABLE_CMP_INT; // 關(guān)比較器中斷
  318.                                 }
  319.                         }
  320.                 }
  321.        
  322.         }
  323. }
復(fù)制代碼

上圖Keil代碼下載:
51-STC15W408AS-電調(diào).rar (111.84 KB, 下載次數(shù): 436)

評分

參與人數(shù) 2黑幣 +130 收起 理由
lyxxzrb + 30 贊一個!
admin + 100 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏55 分享淘帖 頂9 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:852236 發(fā)表于 2021-12-12 18:35 | 只看該作者
有做出PCB板試過了嗎?我正想做一個
回復(fù)

使用道具 舉報

板凳
ID:198286 發(fā)表于 2022-1-3 10:59 | 只看該作者
樓主太有心了,寫的這么詳細(xì),對學(xué)習(xí)很有用
回復(fù)

使用道具 舉報

地板
ID:661945 發(fā)表于 2022-1-6 09:24 | 只看該作者
注釋得比較詳細(xì),對初學(xué)者還是很有幫助的~~~
回復(fù)

使用道具 舉報

5#
ID:371546 發(fā)表于 2022-1-14 16:38 | 只看該作者

注釋得比較詳細(xì),對初學(xué)者還是很有幫助的~~~
回復(fù)

使用道具 舉報

6#
ID:491875 發(fā)表于 2022-1-14 19:30 | 只看該作者
謝謝,樓主費(fèi)心了。
回復(fù)

使用道具 舉報

7#
ID:989951 發(fā)表于 2022-2-8 08:08 | 只看該作者
好用心的樓主,代碼規(guī)范注釋詳細(xì),支持一下
回復(fù)

使用道具 舉報

8#
ID:145887 發(fā)表于 2022-3-11 10:56 | 只看該作者
注釋得比較詳細(xì),對初學(xué)者還是很有幫助
回復(fù)

使用道具 舉報

9#
ID:689229 發(fā)表于 2022-3-14 18:39 | 只看該作者
謝謝老兄,正在尋找呢。
回復(fù)

使用道具 舉報

10#
ID:430492 發(fā)表于 2022-3-16 11:22 | 只看該作者
注釋得比較詳細(xì)
回復(fù)

使用道具 舉報

11#
ID:210365 發(fā)表于 2022-4-18 19:42 | 只看該作者
非常詳細(xì)的代碼,值得研究
回復(fù)

使用道具 舉報

12#
ID:685462 發(fā)表于 2022-4-23 12:59 | 只看該作者
樓主,有刷電調(diào)的有研究嗎。
回復(fù)

使用道具 舉報

13#
ID:85508 發(fā)表于 2022-6-19 23:54 | 只看該作者
注釋詳細(xì),還有電路圖和H文件,以后可以做一個,收藏了!
回復(fù)

使用道具 舉報

14#
ID:1001745 發(fā)表于 2022-6-23 07:59 | 只看該作者
樓主有心了,請問這個可以修改成直接用VR電平去進(jìn)行調(diào)速嗎?
回復(fù)

使用道具 舉報

15#
ID:966468 發(fā)表于 2022-6-23 09:20 | 只看該作者
樓主太有心了,寫的這么詳細(xì),對學(xué)習(xí)很有用
回復(fù)

使用道具 舉報

16#
ID:156220 發(fā)表于 2022-6-28 09:13 | 只看該作者
注釋得比較詳細(xì),謝謝樓主的資料,辛苦了
回復(fù)

使用道具 舉報

17#
ID:661945 發(fā)表于 2022-6-28 09:44 | 只看該作者
這程序驗證過了的吧?
回復(fù)

使用道具 舉報

18#
ID:1037819 發(fā)表于 2022-6-30 22:02 | 只看該作者
注釋的很詳細(xì)
回復(fù)

使用道具 舉報

19#
ID:102665 發(fā)表于 2022-7-1 10:38 | 只看該作者
很詳細(xì),點(diǎn)贊
回復(fù)

使用道具 舉報

20#
ID:1039586 發(fā)表于 2022-8-5 12:26 | 只看該作者
是什么電調(diào)呀
回復(fù)

使用道具 舉報

21#
ID:1034262 發(fā)表于 2022-8-12 15:08 | 只看該作者
STC公司的例程簡單明了,對學(xué)習(xí)非常有幫助。
特別是STC公司的四軸飛控,簡單、有效、穩(wěn)定,最簡的飛控,沒有之一。
回復(fù)

使用道具 舉報

22#
ID:215147 發(fā)表于 2022-10-10 14:29 | 只看該作者
很詳細(xì),點(diǎn)贊
回復(fù)

使用道具 舉報

23#
ID:321981 發(fā)表于 2022-11-5 12:58 | 只看該作者
實(shí)測  這個電調(diào)芯片有缺陷,占空比0時 礽有輸出,比校器關(guān)閉中斷無效,造成電機(jī)啟動時有卡頓或失敗
回復(fù)

使用道具 舉報

24#
ID:1050760 發(fā)表于 2022-11-24 08:15 | 只看該作者
你好,一直沒看懂你圖紙上P54與P13、P14、P15的運(yùn)行原理,電機(jī)在AB通電時,C上有怎樣的變化嗎?沒搞懂!
回復(fù)

使用道具 舉報

25#
ID:170318 發(fā)表于 2022-11-24 09:23 | 只看該作者
wh198156 發(fā)表于 2022-11-24 08:15
你好,一直沒看懂你圖紙上P54與P13、P14、P15的運(yùn)行原理,電機(jī)在AB通電時,C上有怎樣的變化嗎?沒搞懂!

“P54與P13、P14、P15”等組成了無霍爾反電動勢檢測電路,用于無霍爾位置傳感器電機(jī)的
回復(fù)

使用道具 舉報

26#
ID:1055358 發(fā)表于 2022-12-3 13:00 | 只看該作者
這個電路做好了速度也上不來
回復(fù)

使用道具 舉報

27#
ID:197696 發(fā)表于 2023-3-6 22:48 | 只看該作者

樓主太有心了,寫的這么詳細(xì),對學(xué)習(xí)很有用
回復(fù)

使用道具 舉報

28#
ID:598932 發(fā)表于 2023-6-8 13:18 | 只看該作者
給源碼 給力 我覺得論壇交流就應(yīng)該這樣
回復(fù)

使用道具 舉報

29#
ID:55349 發(fā)表于 2023-8-6 16:44 | 只看該作者
點(diǎn)贊,我也學(xué)習(xí)一下,謝謝先
回復(fù)

使用道具 舉報

30#
ID:606110 發(fā)表于 2023-8-13 11:44 | 只看該作者
謝謝樓主,我正要做筋膜槍,參考下這個。STC芯片有點(diǎn)貴,我準(zhǔn)備找一個平宜的單片機(jī),把這個軟件移稙進(jìn)去,還要增加檢MOS管電流的。
回復(fù)

使用道具 舉報

31#
ID:13396 發(fā)表于 2023-9-12 19:30 | 只看該作者
寫的這么詳細(xì),對學(xué)習(xí)很有用謝謝.
回復(fù)

使用道具 舉報

32#
ID:1093267 發(fā)表于 2023-9-20 09:24 | 只看該作者
樓主辛苦 感謝分享 學(xué)習(xí)了!!!!
回復(fù)

使用道具 舉報

33#
ID:675767 發(fā)表于 2023-12-30 11:48 | 只看該作者
這個對初學(xué)者和入門都太友好了
回復(fù)

使用道具 舉報

34#
ID:233182 發(fā)表于 2024-2-11 01:30 | 只看該作者
NICE,GOOD...
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 中文字幕电影在线观看 | 九九在线精品视频 | www中文字幕 | 麻豆av电影网 | 欧美成人精品激情在线观看 | 国产精品成人一区二区 | 97色免费视频 | 亚洲精品久 | 一区二区三区在线看 | 国产高清视频一区 | 亚洲精品视频在线 | 久久精品99 | 国产成人综合在线 | 激情婷婷| 情侣黄网站免费看 | 亚洲精品68久久久一区 | 精品一区二区三区入口 | 久久国品片| 人人干人人爽 | 国产精彩视频在线观看 | 精品久久久久久久久久久久久久久久久 | 成人免费大片黄在线播放 | 午夜精品久久久久久久久久久久久 | 一区二区三区精品视频 | 成人免费网视频 | 99爱国产| 青草久久免费视频 | 久久精品男人的天堂 | 欧州一区二区三区 | 国产精品久久久久久久久动漫 | 亚洲午夜精品一区二区三区 | 国产一区二区三区免费 | 男人av在线 | 久久伦理中文字幕 | 91福利网址 | 亚洲综合热 | 女同av亚洲女人天堂 | 久久国内精品 | 成人国产精品久久久 | 久久夜视频 | 一区二区三区欧美在线观看 |