新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 基于μC/OS―III和ARM的空心杯電機控制器設計

        基于μC/OS―III和ARM的空心杯電機控制器設計

        作者: 時間:2016-09-12 來源:網絡 收藏

        引言

        本文引用地址:http://www.104case.com/article/201609/303697.htm

        在結構上采用了無鐵芯轉子,克服了有鐵芯電動機不可逾越的技術障礙,使其具備了更加突出的節能特性、靈敏方便的控制特性和穩定的運行特性。隨著工業技術的飛速發展,電動機的伺服特性要求不斷提高,以其高效率的能力轉換特性在很多應用場合取得廣泛應用。控制器需要對轉速進行快速精確的閉環控制,其必須具備與上位機實現串口通信、轉速實時采集、前饋PI控制及液晶屏顯示等多個功能。

        目前,ARM內核微控制器發展迅速,其性能高、耗電少、成本低,具備16/32位雙指令集。本文選用TI公司的基于Cortex—M4內核的TM4C 123GH6PM芯片,該芯片最高具備80 MHz主頻,適用于高性能、低功耗的嵌入式控制領域。它具備多個高精度定時器,可以輸出多達16路互補且帶有死區時間控制的PWM波形,滿足空心杯電機的控制需求。

        μC/OS—III是一個可擴展的、可固化的、搶占式第3代實時多任務操作系統內核。其對任務的個數無限制,提供了現代實時內核所期望的所有功能,包括資源管理、同步、內部任務交流等。考慮到系統任務的復雜性,傳統的單任務循環式的程序控制模式難以滿足需求,本文采用了開放源碼的嵌入式操作系統μC/OS—III實現空心杯電機控制器,簡化了系統設計。

        1 控制器硬件設計

        1.1 控制器硬件總體結構

        空心杯電機閉環控制器硬件結構包括PWM驅動電路、轉速檢測電路、液晶顯示電路及USB轉串口電路等部分,系統框圖如圖1所示。控制器通過串口與上位機進行通信,接收上位機給出的期望轉速指令與控制參數。實際轉速經過轉速檢測電路由TM4C123GH6PM的定時器捕獲得到,在與期望轉速對比后得到轉速差,基于前饋PI控制輸出相應PWM信號,經驅動電路后供給空心杯電機。同時,液晶顯示器通過SPI接口與TM4C123GH6PM進行通信,從而實時顯示實際轉速值。

        基于μC/OS—III和ARM的空心杯電機控制器設計

        1.2 驅動電路設計

        驅動電路采用一款雙通道橋式電機驅動器DRV8833,該器件具有兩個H橋驅動器,能夠驅動兩個直流電機。每個H橋的輸出驅動器模塊由N溝道功率組成,這些場效應管被配置成一個H橋,以驅動電機繞組。通過調節PWM的占空比,調整輸入電機端電壓的大小,進而控制空心杯電機的轉速。驅動電路如圖2所示,由于本文只需驅動一個直流電機,因此將雙通道輸出并聯處理,以達到增大驅動電流的效果。

        基于μC/OS—III和ARM的空心杯電機控制器設計

        1.3 轉速檢測電路設計

        空心杯電機轉速檢測電路如圖3所示。在電機轉軸上固定了一個輪齒,上面均勻分布了4個錯開的齒。輪齒布置在一個對射光耦上,當電機轉動一周時產生4個高低脈沖,該脈沖頻率表征轉速大小。

        基于μC/OS—III和ARM的空心杯電機控制器設計

        2 μC/OS-Ⅲ操作系統移植

        在官網上下載已移植到TM4C129XL的μC/OS—III,基于此工程模板進行修改,可以免除完全移植操作系統的繁瑣工作。由于該工程模板是針對TM4C129XL系列的,該系列的芯片主頻與TM4C123XL系列有所差別,因此需要在板級支持包(BSP)系統初始化文件中進行修改,文件名為“BSP_SysInit”。將原系統時鐘設置部分注釋掉,添加對應于TM4C123GXL的配置代碼:

        cpu_clk_freq=BSp_SysClkFreqGet();//確定systick參考頻率

        SysCtlClockSet(SYSCTL_SYSDIV_16 | SYSCTL_USE_PLL |

        SYSCTL_OSC_MAIN | SYSCTL_XTAL_16MHZ);//系統時鐘設置

        此處設置在原文件中需要多條語句才能完成,利用TI公司的設備驅動庫函數可以高效便捷地完成設置。

        3 軟件設計

        3.1 μC/OS-Ⅲ的任務分配

        本控制器軟件需要實現的功能如下:

        ①上位機通過串口給定期望電機轉速和控制參數;

        ②要求空心杯電機轉速連續可調并且具有良好的動、靜態性能,通過定時器捕獲實際轉速,并采用算法調節;

        ③液晶顯示屏實時顯示轉速。

        基于μC/OS—III的程序設計是將一個大的應用程序分成多個相對獨立的任務來完成。定義好每個任務的優先級后,μC/OS-III內核對這些任務進行調度和管理。本程序設置OS時鐘節拍為50 Hz,共分為3個任務(AppTaskStart、MyTask1、MyTask2),優先級分別為2、12、13,具體的工作流程如圖4所示。其中,AppTaskStart為電機控制任務,主要負責進行前饋PI控制,其延時1個節拍進入就緒狀態,即相當于20 ms執行一次;MyTask1為上位機給定任務,負責串口接收,其延時2個節拍進入就緒態,即相當于40 ms執行一次;MyTask2為液晶顯示任務,負責LCD顯示,其延時3個節拍進入就緒態,即相當于60 ms執行一次。

        基于μC/OS—III和ARM的空心杯電機控制器設計

        3.2 電機控制任務

        電機控制任務AppTaskStart達到就緒態后,讀取空心杯電機當前轉速。在實際測試中,發現該電機的非線性特性較強,因此采用帶前饋量的PI控制,使電機轉速能在全范圍內都能快速準確地進行調節。其中,PWM前饋量由實際轉速插值取得,插值表在開環情況下標定獲得。電機控制任務工作流程如圖5所示。

        基于μC/OS—III和ARM的空心杯電機控制器設計

        3.3 上位機給定任務

        上位機給定任務MyTask1中,控制器通過串口接收上位機指令,接收內容包括期望轉速及控制參數Kp與Ki。由于控制參數往往需要根據經驗反復整定,而且起初并不能確定其量級大小,為了快速方便地進行控制參數整定,此處串口數據采取浮點數格式傳輸,相對于用整型數傳輸沒有精度損失。數據類型轉換具體代碼如下:


        上一頁 1 2 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 肇源县| 长武县| 丽水市| 湛江市| 平潭县| 会宁县| 霞浦县| 吉木乃县| 雷州市| 卓尼县| 天祝| 襄樊市| 铜梁县| 渝中区| 荔波县| 札达县| 华阴市| 湖北省| 长岛县| 元氏县| 瓦房店市| 开原市| 同德县| 营山县| 嘉定区| 山阳县| 梧州市| 门源| 合肥市| 那曲县| 宁化县| 西畴县| 南昌县| 策勒县| 厦门市| 蓝山县| 海丰县| 都江堰市| 英吉沙县| 锡林浩特市| 祥云县|