《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 解決方案 > STM8 MCKIT1.0 BLDC無感控制中的采集實現分析

STM8 MCKIT1.0 BLDC無感控制中的采集實現分析

2016-05-19
關鍵詞: BLDC

       ST寫的STM8電機庫中,可以用無感方式驅動BLDC。STM8芯片只有一個AD轉換器,而且是8位機。庫中要對反

電勢采集,比較處理,還要進行母線電壓,母線電流、散熱片溫度、電位器等模擬信號進行采集、運算和處理。

這優先級處理說起來是很重要的。不過,ST把程序寫的很好,至少我這樣認為。它把不同的任務放到準確的時間段里進行采集處理。
先把它核心AD采集處理帖出來再分析 。

#ifdef SENSORLESS 
 @near @interrupt @svlreg void ADC2_IRQHandler (void)
 {
  if (ADC_State == ADC_SYNC)
  {
   // Syncronous sampling
   
   u16 data;
   u8 delay;
   u16 bemf_threshold;

   // Reset bit
   bComHanderEnable = 0;
    
   //clear interrupt flag
   ADC2->CSR &= (u8)(~BIT7);
     
   //left align - read DRH first
   data = ADC2->DRH;
   data <<= 2;
   data |= (ADC2->DRL & 0x03);  
   
   switch( ADC_Sync_State )
   {
    case ADC_BEMF_INIT:
     ADC2->CSR = (u8)((Current_BEMF_Channel|BIT5));
     BEMF_Sample_Debounce = 0;
     Zero_Sample_Count = 0;
     ADC_Sync_State = ADC_BEMF_SAMPLE;
     SetSamplingPoint_BEMF();
    break;

    case ADC_BEMF_SAMPLE:
     //detect zero crossing
     if( Current_BEMF == BEMF_FALLING )
     {
      if( Z_Detection_Type == Z_DETECT_PWM_OFF )
      {
       bemf_threshold = BEMF_FALLING_THRESHOLD;
      }
      else
      {
       bemf_threshold = hNeutralPoint;
      }

      if (Ramp_Step > FORCED_STATUP_STEPS)
      {
       if( data <  bemf_threshold  )
       {
        Zero_Sample_Count++;
        BEMF_Sample_Debounce++;
        if( BEMF_Sample_Debounce >= BEMF_SAMPLE_COUNT )
        {
         hTim3Th -= hTim3Cnt;
         GetStepTime();
 
         SpeedMeasurement();

         bComHanderEnable = 1;

         BEMF_Sample_Debounce = 0;
        }
       }
       else
       {
        BEMF_Sample_Debounce = 0;
       }
      }
     }
     else
     {
      if( Z_Detection_Type == Z_DETECT_PWM_OFF )
      {
       bemf_threshold = BEMF_RISING_THRESHOLD;
      }
      else
      {
       bemf_threshold = hNeutralPoint;
      }
  
      if (Ramp_Step > FORCED_STATUP_STEPS)
      {
       if( data > bemf_threshold )
       {
        Zero_Sample_Count++;
        BEMF_Sample_Debounce++;
        if( BEMF_Sample_Debounce >= BEMF_SAMPLE_COUNT )
        {
         hTim3Th -= hTim3Cnt;
         GetStepTime();
  
         SpeedMeasurement();

         bComHanderEnable = 1;

         BEMF_Sample_Debounce = 0;
        }
       }
       else
       {
        BEMF_Sample_Debounce = 0;
       }
      }
     }
    break;

    case ADC_CURRENT_INIT:
     ADC2->CSR = (ADC_CURRENT_CHANNEL|BIT5);
     ADC_Sync_State = ADC_CURRENT_SAMPLE;
     SetSamplingPoint_Current();
    break;

    default:
    case ADC_AVCURRENT_INIT:
     ADC2->CSR = (ADC_AVCURRENT_CHANNEL|BIT5);
     ADC_Sync_State = ADC_AVCURRENT_CHANNEL;// ADC_USER_SYNC_SAMPLE;
     SetSamplingPoint_AVCURRENT();
    break;

  
    case ADC_CURRENT_SAMPLE:
     ADC_Buffer[ ADC_CURRENT_INDEX ] = data;
     break;

    case ADC_AVCURRENT_SAMPLE:
     ADC_Buffer[ ADC_AVCURRENT_INDEX] = data;
     break;
   }

   // Store the current channel selected
   bCSR_Tmp = ADC2->CSR;

   // Set the Async sampling channel
   switch (ADC_Async_State)
   {
    default:
    case ADC_BUS_INIT:
     ADC2->CSR = (ADC_BUS_CHANNEL|BIT5);
     ADC_Async_State = ADC_BUS_SAMPLE;
    break;
    
    case ADC_TEMP_INIT:
     ADC2->CSR = (ADC_TEMP_CHANNEL|BIT5);
     ADC_Async_State = ADC_TEMP_SAMPLE;
    break;
   
    case ADC_USER_ASYNC_INIT:
     ADC2->CSR = (ADC_USER_ASYNC_CHANNEL|BIT5);
     ADC_Async_State = ADC_USER_ASYNC_SAMPLE;
    break;
   }

    // Disable ext. trigger
    ADC2->CR2 &= (u8)(~BIT6);
    //Start ADC sample
    ADC2->CR1 |= BIT0;


   ADC_State = ADC_ASYNC;
   
   if (bComHanderEnable == 1)
   {
    ComHandler();
   }
  }
  else
  {
   // Syncronous sampling
   u16 data;
   
   data = ADC2->DRH;
   data <<= 2;
   data |= (ADC2->DRL & 0x03);

   //clear interrupt flag
   ADC2->CSR &= (u8)(~BIT7);

   // Restore the sync ADC channel
   ADC2->CSR = bCSR_Tmp;
 

    // Enable ext. trigger
    ADC2->CR2 |= BIT6;


   // Manage async sampling
   switch (ADC_Async_State)
   {
    default:
    case ADC_BUS_SAMPLE:
     ADC_Buffer[ ADC_BUS_INDEX ] = data;
     ADC_Async_State = ADC_TEMP_INIT;
    break;

    case ADC_TEMP_SAMPLE:
     ADC_Buffer[ ADC_TEMP_INDEX ] = data;
     ADC_Async_State = ADC_USER_ASYNC_INIT;
    break;

    case ADC_USER_ASYNC_SAMPLE:
     ADC_Buffer[ ADC_USER_ASYNC_INDEX ] = data;
     ADC_Async_State = ADC_BUS_INIT;
    break;
   }
   
   ADC_State = ADC_SYNC;   
  }
 }
#endif

 

上面的代碼我改了一點點,就是多采集了一路平均電流。

AD采集分兩種,一個是同步,一個是異步。同步中有三個采集通道,異步中有三個采集通道。同步中的通道為反電勢通道、瞬時電流、平均電流。異步采集中通道為母線電壓、溫度值、電位器。

異步采集是在同步完成后進行的。同步采集是通過TIM1的通道4觸發采集。

所以每個PWM周期采集2路模擬信號。異步采集的通道與PWM的ON與OFF狀態無關,所以安排在異步采集中。同步采集中的反電勢需要在PWM固定 時刻采集,或ON或OFF,看BEMF的過零比較方案。瞬時電流一般在TON時刻采集。因為原來ST有PWM特殊時刻做了一路用戶通道中,所以我就把平均 電流加到這一通道上了。其實平均電流采集也可以放到異步中。無所謂了,功能實現是沒問題的。

另外,異步采集中的反電勢通道一直是設為浮空相的通道的。而且反電勢的采集在D與Z之間,即退磁結束與過零點之間進行的異步采集均為反電勢,而瞬時 電流的采集是在Z與C之間,即過零與換相之間進行的異步采集均為瞬時瞬時電流。所以用戶的通道(平均電流)就是在換相與退磁之間了。

ST的無感方案,啟動方案感覺只能針對工業用電機,像在4極對下4K轉速的電機,那啟動參數不用怎么改。但如果改為航模電機,無論啟動 PWM改為多少,總是不能啟動成功??赡苁俏疫€找到巧門,也可能沒設對參數,對于高速電機,像這種無感啟動可能是升頻升壓法啟動才可靠。我早期寫的例程, 無論什么電機,用的是升頻升壓法,無論什么電機,都可以正常啟動,只是啟動過程(大約1S)電流從大到小,,至少正常運行至最小電流值。

本站內容除特別聲明的原創文章之外,轉載內容只為傳遞更多信息,并不代表本網站贊同其觀點。轉載的所有的文章、圖片、音/視頻文件等資料的版權歸版權所有權人所有。本站采用的非本站原創文章及圖片等內容無法一一聯系確認版權者。如涉及作品內容、版權和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經濟損失。聯系電話:010-82306118;郵箱:aet@chinaaet.com。
热re99久久精品国产66热_欧美小视频在线观看_日韩成人激情影院_庆余年2免费日韩剧观看大牛_91久久久久久国产精品_国产原创欧美精品_美女999久久久精品视频_欧美大成色www永久网站婷_国产色婷婷国产综合在线理论片a_国产精品电影在线观看_日韩精品视频在线观看网址_97在线观看免费_性欧美亚洲xxxx乳在线观看_久久精品美女视频网站_777国产偷窥盗摄精品视频_在线日韩第一页
  • <strike id="ygamy"></strike>
  • 
    
      • <del id="ygamy"></del>
        <tfoot id="ygamy"></tfoot>
          <strike id="ygamy"></strike>
          欧美mv日韩mv亚洲| 亚洲精品视频中文字幕| 91久久精品国产91性色| 国产一区二区三区奇米久涩| 亚洲三级视频在线观看| 亚洲一级黄色av| 一本久久知道综合久久| 国产精品扒开腿做爽爽爽软件| 午夜精品av| 亚洲男女自偷自拍图片另类| 男女av一区三区二区色多| 99国产精品久久久| 国语自产偷拍精品视频偷| 亚洲精品在线免费| 欧美国产一区二区| 欧美激情一区二区三区在线| 欧美日韩精品免费| 欧美一区二区在线观看| 久久久久中文| 一区二区三区日韩精品| 亚洲欧美国产毛片在线| 另类激情亚洲| 亚洲视频在线免费观看| 一区二区三区偷拍| 一区二区三区高清不卡| 美国十次成人| 久久婷婷亚洲| 亚洲美女精品成人在线视频| 美国十次了思思久久精品导航| 国产精品蜜臀在线观看| 国产日韩欧美亚洲一区| 亚洲午夜视频| 欧美三级电影一区| 欧美激情视频在线免费观看 欧美视频免费一| 亚洲午夜三级在线| 国产精品激情偷乱一区二区∴| 国产精品中文字幕欧美| 久久九九热免费视频| 国产精品一区二区三区久久久| 伊人天天综合| 在线观看国产一区二区| 篠田优中文在线播放第一区| 亚洲激情网站免费观看| 欧美亚洲视频在线观看| 在线欧美日韩精品| 国产日韩在线视频| 一区二区三区不卡视频在线观看| 久久天堂成人| 99视频精品| 99精品视频免费全部在线| 国产精品永久入口久久久| 国产午夜精品久久久久久免费视| 亚洲免费视频观看| 日韩视频在线观看国产| 狠久久av成人天堂| 国产精品久久久久影院亚瑟| 国产日韩欧美视频在线| 黄色在线成人| 国产午夜精品一区二区三区视频| 欧美日韩国产综合视频在线观看中文| 亚洲一区二区高清| 久久久久久一区二区三区| 欧美吻胸吃奶大尺度电影| 欧美色欧美亚洲另类二区| 亚洲一区美女视频在线观看免费| 伊人成人在线| 91久久久久久| 国产精品日韩一区二区三区| 亚洲日产国产精品| 亚洲视屏在线播放| 日韩一二三在线视频播| 亚洲欧美文学| 国产亚洲一区二区在线观看| 国产精品久久久久影院亚瑟| 日韩午夜av| 久久久青草婷婷精品综合日韩| 欧美国产日产韩国视频| 亚洲欧洲美洲综合色网| 欧美11—12娇小xxxx| 国产精品成人国产乱一区| 亚洲精品日韩精品| 激情懂色av一区av二区av| 麻豆国产精品一区二区三区| 一本色道久久| 欧美a级一区| 韩国精品一区二区三区| 久久精品亚洲热| 欧美日韩精品二区| 亚洲精品久久久久久久久久久| 欧美专区日韩专区| 亚洲国产成人精品视频| 嫩草影视亚洲| 亚洲裸体在线观看| 中文精品一区二区三区| 美女尤物久久精品| 欧美亚男人的天堂| 欧美日韩18| 亚洲福利视频专区| 亚洲小说春色综合另类电影| 欧美刺激午夜性久久久久久久| 国产欧美日韩视频| 最新日韩在线视频| 国产丝袜一区二区三区| 欧美中文在线免费| 欧美一级久久久| 亚洲国产综合视频在线观看| 国产综合色精品一区二区三区| 久久久蜜臀国产一区二区| 国产乱理伦片在线观看夜一区| 欧美成人综合在线| 宅男在线国产精品| 在线视频一区观看| 国产精品一区二区三区成人| 亚洲一级特黄| 亚洲精品美女免费| 麻豆成人综合网| 欧美日韩中文字幕在线视频| 激情五月综合色婷婷一区二区| 夜夜嗨av一区二区三区中文字幕| 欧美日韩国产小视频在线观看| 欧美精品免费看| 国产精品videossex久久发布| 国产婷婷色一区二区三区在线| 亚洲女性裸体视频| 国产精品大片| 久久精品视频在线免费观看| 国产精品成人播放| 亚洲欧洲精品天堂一级| 国产伦精品一区二区三区免费| 美女爽到呻吟久久久久| 亚洲精品在线视频| 99v久久综合狠狠综合久久| 国产日韩av在线播放| 妖精成人www高清在线观看| 欧美阿v一级看视频| 激情久久久久久久| 国产精品午夜春色av| 在线免费观看成人网| 欧美精品一区二区三区在线播放| 亚洲精美视频| 红桃视频欧美| 美女日韩在线中文字幕| 99国产精品私拍| 亚洲精品综合在线| 久久女同互慰一区二区三区| 一区二区三区精品国产| 国产欧美一级| 一本色道久久| 国产精品免费区二区三区观看| 欧美日韩国产精品| 欧美日本韩国一区二区三区| 久久视频在线看| 久久激情婷婷| 国产一二精品视频| 久久精品国产精品亚洲综合| 久久久免费精品视频| 樱桃国产成人精品视频| 国产日韩一区二区三区| 91久久精品国产91性色tv| 永久域名在线精品| 欧美激情中文字幕一区二区| 欧美三日本三级少妇三2023| 国产精品中文字幕在线观看| 99在线热播精品免费| 韩国女主播一区二区三区| 久久精品国产在热久久| 久久久久久久久一区二区| 国产亚洲欧美aaaa| 午夜在线精品偷拍| 欧美在线观看视频一区二区三区| 欧美黄色一区| 国产女同一区二区| 国产精品一区免费在线观看| 亚洲理论在线观看| 久久久久这里只有精品| 国产精品私房写真福利视频| 欧美日韩免费在线观看| 欧美一区二区视频免费观看| 亚洲一区二区三区中文字幕| 亚洲精品极品| 欧美11—12娇小xxxx| 亚洲欧美日韩另类| 国产精品久久久久久久久免费桃花| 伊人成人在线视频| 欧美影院午夜播放| 久久综合国产精品台湾中文娱乐网| 国产嫩草一区二区三区在线观看| 蜜桃av久久久亚洲精品| 久久综合五月天婷婷伊人| 欧美在线黄色| 欧美午夜片在线免费观看| 国产精品日韩在线播放| 久久琪琪电影院| 欧美成人精品不卡视频在线观看| 国产精品一区久久| 国产欧美韩日| 久久天堂精品| 久久av二区| 久久视频这里只有精品| 久久在线91| 香蕉av777xxx色综合一区| 日韩午夜av在线| 另类图片综合电影| 亚洲午夜精品网| 欧美国产精品一区| 小黄鸭视频精品导航| 欧美一区二区三区日韩| 亚洲视频电影在线| 最新国产乱人伦偷精品免费网站| 亚洲一区二区在| 亚洲综合精品一区二区| 亚洲国产成人91精品| 一区二区在线观看视频在线观看| 欧美国产激情二区三区| 欧美日韩国产不卡| 国产精品久久97| 99热这里只有精品8| 欧美手机在线视频| 老鸭窝毛片一区二区三区| 午夜国产精品视频免费体验区| 亚洲欧美日韩国产成人精品影院| 欧美激情一区三区| 欧美制服丝袜| 欧美日韩一区三区| 亚洲欧美电影院| 欧美激情2020午夜免费观看| 99精品国产热久久91蜜凸| 欧美成人激情视频免费观看| 99国产精品视频免费观看一公开| 亚洲最新中文字幕| 91久久精品美女| 亚洲国产中文字幕在线观看| 国产精品爽爽爽| 国产精品日韩欧美一区二区三区| 久久久久久久久久久久久久一区| 久热精品视频在线观看| 久久综合网络一区二区| 在线观看国产精品网站| 欧美一级免费视频| 精品二区久久| 国产精品亚洲一区二区三区在线| 亚洲国产另类久久久精品极度| 欧美午夜视频在线| 久久精品人人| 久久精品欧美日韩| 欧美在线三级| 国产精品三级视频| 国产一区在线播放| 亚洲最新色图| 亚洲一区二区三区免费观看| 国产欧美日本一区二区三区| 亚洲视频在线一区观看| 亚洲欧美国产精品桃花| 国产精品高潮呻吟久久| 久久久久欧美精品| 久久人人爽人人爽| 欧美一区二区三区四区在线观看| 国产一区二区三区日韩| 午夜精品福利电影| 欧美日韩午夜在线视频| 国产精品视频一| 国产女人精品视频| 媚黑女一区二区| 国产欧亚日韩视频| 亚洲国产一区视频| 一区二区亚洲精品| 国产乱码精品一区二区三区五月婷| 欧美精品在线观看91| 欧美日韩在线免费观看| 一二三四社区欧美黄| 国产精品久久久久久久久久久久久久| 久久久久久综合| 欧美中文字幕在线视频| 久久综合99re88久久爱| 国产精品chinese| 久久综合色婷婷| 一区二区激情| 亚洲一区高清| 久久夜色精品| 国产精品成人观看视频国产奇米| 亚洲国内欧美| 伊人色综合久久天天五月婷| 影音国产精品| 影音先锋另类| 午夜免费电影一区在线观看| 久久精品国产2020观看福利| 夜夜躁日日躁狠狠久久88av| 欧美精品www在线观看| 亚洲精品欧美| 亚洲一区在线免费| 久久色在线播放| 久久这里只有精品视频首页| 美女久久一区| 久久精品视频免费播放| 国产一区二区三区日韩欧美| 国产精品免费一区二区三区观看| 国产精品久久久久久一区二区三区| 亚洲国产精品第一区二区| 国产精品日韩精品| 久久人人97超碰精品888| 日韩五码在线| 亚洲欧美日韩一区二区| 欧美在线观看视频一区二区| 免费黄网站欧美| 亚洲精品1234| 欧美视频中文字幕在线| 亚洲欧美日本在线| av成人免费| 欧美黄色网络| 国产精品欧美风情| 蜜臀99久久精品久久久久久软件| 亚洲福利视频一区| 91久久精品一区二区三区| 日韩视频免费观看高清完整版| 欧美日韩爆操| 激情久久久久久久| 精品福利av| 99在线视频精品| 99精品国产在热久久下载| 一本一道久久综合狠狠老精东影业| 欧美黄色成人网| 久久精品一区中文字幕| 欧美一级网站| 欧美日韩一本到| 国产一区视频在线看| 鲁鲁狠狠狠7777一区二区| 一区二区不卡在线视频 午夜欧美不卡在| 激情综合网址|