• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      基于Matlab與STM32的電機(jī)控制代碼自動(dòng)生成

      2017-04-21 01:00:04丁學(xué)明
      電子科技 2017年4期
      關(guān)鍵詞:方波直流電機(jī)控制算法

      徐 捷,丁學(xué)明

      (上海理工大學(xué) 光電與計(jì)算機(jī)工程學(xué)院,上海 200093)

      基于Matlab與STM32的電機(jī)控制代碼自動(dòng)生成

      徐 捷,丁學(xué)明

      (上海理工大學(xué) 光電與計(jì)算機(jī)工程學(xué)院,上海 200093)

      基于Matlab與STM32的代碼自動(dòng)生成方法與無(wú)刷直流電機(jī)控制系統(tǒng)相結(jié)合,使得控制系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)更為方便快捷。通過(guò)對(duì)無(wú)刷直流電機(jī)控制系統(tǒng)進(jìn)行Matlab仿真模型設(shè)計(jì),再利用針對(duì)STM32微型控制器的Simulink庫(kù)STM32 MAT/Target與相關(guān)軟件工具,實(shí)現(xiàn)可讀、可移植的C代碼工程文件的自動(dòng)生成,并在STM32F103上實(shí)際運(yùn)行,其運(yùn)行狀態(tài)與仿真結(jié)果基本一致。該方法既通過(guò)Matlab的仿真對(duì)控制系統(tǒng)進(jìn)行精確的設(shè)計(jì),又利用其自動(dòng)生成代碼的特點(diǎn)便于控制算法的實(shí)現(xiàn),兩者相互結(jié)合,在保證準(zhǔn)確性的同時(shí)加快了從設(shè)計(jì)到實(shí)現(xiàn)的整個(gè)過(guò)程。

      STM32;Matlab;無(wú)刷直流電機(jī);自動(dòng)生成代碼

      STM32系列微控制器是一款基于ARM Cortex-M3內(nèi)核的嵌入式應(yīng)用產(chǎn)品[1-3]。由于其高性能、低成本、低功耗的特性使其應(yīng)用領(lǐng)域不斷擴(kuò)大,對(duì)于其高效地開發(fā)和利用便更為重要[4-5]。隨著STM32 MCU生成代碼的功能獲得了MathWorks的全面支持,使軟件開發(fā)人員能夠在Matlab和Simulink環(huán)境中開發(fā)算法,然后在處理器在環(huán)(PIL)仿真中編譯目標(biāo),集成、調(diào)試和測(cè)試這些模型。Embedded Coder生成的C代碼運(yùn)行于STM32評(píng)估板上,Keil?微控制器開發(fā)套件 (MDK-ARM?)的調(diào)試器與Simulink直接交互,進(jìn)一步簡(jiǎn)化了代碼集成過(guò)程[6-7]。

      相較于傳統(tǒng)的固件庫(kù)和寄存器的人工編寫方式,Matlab仿真后生成C代碼工程文件的模式更為便捷,對(duì)于其開發(fā)效率更高。傳統(tǒng)的開發(fā)過(guò)程往往需要兩類人員參與:一類算法設(shè)計(jì)人員來(lái)建立修改算法模型;另一類程序編寫人員去實(shí)現(xiàn)算法,兩者之間要相互協(xié)調(diào),反復(fù)驗(yàn)證與修改,延緩了開發(fā)進(jìn)程。而Matlab的自動(dòng)生成代碼解決了這一問(wèn)題,建立算法模型與其編程融為一體,使設(shè)計(jì)環(huán)境更為統(tǒng)一,測(cè)試與修改也更系統(tǒng)化,因此Matlab仿真后生成C代碼工程文件的模式更為便捷,開發(fā)效率更高[8-10]。由于無(wú)刷直流電機(jī)控制方式在軟件與硬件方面均易于實(shí)現(xiàn),且對(duì)于STM32自動(dòng)生成代碼中GPIO、TIMER、ADC等各模塊均有應(yīng)用,故以此為模型進(jìn)行仿真與代碼的自動(dòng)生成。

      1 STM32的代碼自動(dòng)生成流程

      在Matlab 中,主要有Real-Time Workshop(RTW)和Stateflow Coder 兩種自動(dòng)代碼生成工具,RTW生成的代碼簡(jiǎn)潔、可靠、易讀[11]。而ST所提供的STM32 MAT/Target工具箱能夠較好地與Matlab生成的代碼相銜接,做到算法編程與底層驅(qū)動(dòng)一步到位。在代碼自動(dòng)生成的過(guò)程中首先要安裝相應(yīng)的軟件來(lái)做好準(zhǔn)備,表1中列出了整個(gè)過(guò)程中涉及的軟件。

      表1 STM32代碼自動(dòng)生成相關(guān)工具

      在整個(gè)設(shè)計(jì)過(guò)程中,基本可以分為3個(gè)步驟,每一個(gè)步驟的應(yīng)用軟件也不盡相同。其中,第一步是在Matlab/Simulink上設(shè)計(jì)控制系統(tǒng)的算法,該工作主要通過(guò)Matlab實(shí)現(xiàn),并通過(guò)建立外部模型分析仿真結(jié)果;第二步是處理器在環(huán)(PIL)仿真,即將STM32芯片與Matlab通過(guò)UART相連接,進(jìn)行實(shí)時(shí)仿真,此過(guò)程需要Matlab,STM32CubeMX和Toolchain等軟件,其優(yōu)點(diǎn)在于可利用STM32芯片的運(yùn)算能力來(lái)驗(yàn)證算法。在上述仿真完成后,便可構(gòu)建自動(dòng)生成代碼的模型,將設(shè)計(jì)模型的相應(yīng)輸入輸出與STM32 MAT/Target庫(kù)的模塊相連接,根據(jù)模型功能在STM32CubeMX中具體設(shè)置,即可進(jìn)行代碼自動(dòng)生成,生成的C代碼工程文件通過(guò)相應(yīng)開發(fā)環(huán)境進(jìn)行再編譯即可。其設(shè)計(jì)流程圖如圖1中所示。

      2 模型的搭建與仿真

      2.1 無(wú)刷直流電機(jī)方波控制

      無(wú)刷直流電機(jī)的方波控制系統(tǒng)利用霍爾位置傳感器進(jìn)行調(diào)速控制[12-13]。圖2為無(wú)刷直流電機(jī)方波控制的設(shè)計(jì)框圖,其中左側(cè)大方框?yàn)镾TM32F103芯片及其內(nèi)部控制策略,其余為外部驅(qū)動(dòng)電路、無(wú)刷直流電機(jī)和相關(guān)傳感器。方波控制的主要控制策略思路是通過(guò)電機(jī)的霍爾傳感器反饋的當(dāng)前值對(duì)電機(jī)三相電橋開關(guān)信號(hào)進(jìn)行換向處理[14],同時(shí)根據(jù)ADC采樣到的轉(zhuǎn)把信號(hào)換算出換向中開關(guān)信號(hào)輸出的占空值,將其作為各相線輸出PWM的占空比值,即改變?nèi)嚯妷?,從而?duì)無(wú)刷直流電機(jī)進(jìn)行變壓調(diào)速控制。

      其中,六步換向順序的算法可在Matlab中直接編寫,并且利用Simulink的模型仿真可直接從Scope模塊中看到輸入與輸出之間的關(guān)系,因此較傳統(tǒng)編程更為便捷準(zhǔn)確,本文的六步換向順序如表2所示(本文采用的霍爾傳感器各相間差120°),其中CHx=1為上橋臂導(dǎo)通,CHxN=1為下橋臂導(dǎo)通。

      圖1 STM32代碼自動(dòng)生成流程圖

      圖2 無(wú)刷直流電機(jī)控制框圖

      正轉(zhuǎn)上下橋臂反轉(zhuǎn)hchbhaCH1CH1NCH2CH2NCH3CH3Nhchbha01100PWM00110101001PWM0000011100100PWM00111000001PWM0010101PWM00100110001PWM00001100

      2.2 BLDC方波控制仿真模型

      根據(jù)圖2中的無(wú)刷直流電機(jī)控制框圖與換向順序表在Simulink中進(jìn)行仿真建模,利用相關(guān)Simulink模塊建立外部驅(qū)動(dòng)電路和電機(jī)模型,形成閉環(huán)回路,以此來(lái)驗(yàn)證控制算法的可行性。圖3為BLDC控制系統(tǒng)Simulink模型,其中Matlab Function模塊為控制算法模塊,即STM32芯片所需處理的算法,而其他模塊則為外部模型,即模擬STM32芯片外圍驅(qū)動(dòng)及控制對(duì)象,從而驗(yàn)證算法可靠性。

      圖3 BLDC控制系統(tǒng)Simulink模型

      將上述模型中的Matlab Function模塊進(jìn)行子模塊的封裝,并選擇PIL模式仿真,并在Configuration Parameters中選中Code Generation,將其中的System target file選為stm32.tlc,將電腦與STM32芯片相連接(包括仿真器與串口1通道),點(diǎn)擊運(yùn)行并進(jìn)行相應(yīng)設(shè)置,便可利用Simulink中的Scope模塊觀測(cè)到芯片實(shí)時(shí)參數(shù)及其波形變化,利用其實(shí)時(shí)調(diào)試的特性驗(yàn)證控制算法的正確性。圖4為三相控制信號(hào)仿真輸出。

      圖4 上橋臂控制信號(hào)仿真輸出

      如圖4所示,三相上橋臂MOSFET開關(guān)信號(hào)兩兩相差120°,與HALL信號(hào)一致,并且由無(wú)刷直流電機(jī)的輸出變量中可以看出該控制算法可運(yùn)用于無(wú)刷直流電機(jī)的方波控制,且運(yùn)行結(jié)果良好,保證了算法的準(zhǔn)確性,為之后自動(dòng)生成代碼做準(zhǔn)備。

      3 自動(dòng)生成代碼與驗(yàn)證

      通過(guò)上述模型的仿真,算法得到驗(yàn)證,在確認(rèn)表1中相應(yīng)軟件安裝完成后,可建立代碼生成模型。生成代碼步驟如下:

      (1)新建一個(gè)文件,并在Configuration Parameters中選中Code Generation,將其中的System target file選為stm32.tlc,并在STM32 Options更新STM32CubeMX相關(guān)路徑;

      (2)在Simulink Library Browser中找到STM32的工具箱,并將MCU CONFIG中的STM32_Config模塊拖入模型文件,該模塊與STM32CubeMX關(guān)聯(lián),打開該模塊并建立.ioc工程文件,完成對(duì)STM32芯片的相關(guān)型號(hào)和引腳功能的相關(guān)設(shè)置;

      (3)在芯片和引腳設(shè)置完成后,從STM32的工具箱中添加所需的相關(guān)功能模塊,并于仿真模型中的算法模型建立完整的代碼生成模型,如圖5所示;

      (4)點(diǎn)擊Build生成代碼工程文件,生成的工程文件位于.ioc工程文件夾中。

      圖5 自動(dòng)生成代碼模型

      將生成的代碼工程文件利用相關(guān)開發(fā)工具打開并編譯,燒寫到硬件芯片中便可直接運(yùn)行,圖6為同一橋臂MOSFET開關(guān)信號(hào)的實(shí)際輸出波形。

      圖6 同一橋臂實(shí)際開關(guān)信號(hào)

      從圖4和圖6中可以看出,實(shí)際無(wú)刷直流電機(jī)控制過(guò)程中其輸出波形與仿真結(jié)果一致。另外,本文還利用ADC通道對(duì)于轉(zhuǎn)把開度的采樣來(lái)確定輸出占空比大小,從而達(dá)到了對(duì)無(wú)刷直流電機(jī)的調(diào)速控制。從上述結(jié)果中可以看出,利用Matlab自動(dòng)生成STM32代碼的方法結(jié)果可靠且實(shí)用,再次證明了將其應(yīng)用于實(shí)際項(xiàng)目中的可行性。

      4 結(jié)束語(yǔ)

      本文詳細(xì)闡述了在Matlab環(huán)境下對(duì)STM32自動(dòng)生成代碼的過(guò)程,并在STM32F103單片機(jī)上實(shí)現(xiàn)了無(wú)刷直流電機(jī)的方波控制。縱觀整個(gè)過(guò)程,在算法設(shè)計(jì)過(guò)程中,可以觀測(cè)算法的準(zhǔn)確性與可行性,從而避免相關(guān)設(shè)計(jì)缺陷,而實(shí)現(xiàn)過(guò)程中,并不需要人工輸入代碼或編寫底層驅(qū)動(dòng),完全由計(jì)算機(jī)自動(dòng)生成,并且結(jié)果與仿真結(jié)果基本一致。相較傳統(tǒng)方法對(duì)工程進(jìn)行編寫與調(diào)試,該方法實(shí)現(xiàn)快、錯(cuò)誤少[15]、開發(fā)周期短、生產(chǎn)效率高,并且同樣可以應(yīng)用到無(wú)刷直流電機(jī)的簡(jiǎn)易正弦波控制、永磁同步電機(jī)FOC控制或CAN通訊等領(lǐng)域,為STM32的開發(fā)設(shè)計(jì)提供了參考。

      [1] 王永虹,徐煒,郝立平.STM32系列ARM Cortex-M3微控制器原理與實(shí)踐 [M].北京:北京航空航天大學(xué)出版社, 2008.

      [2] 彭剛,秦志強(qiáng).基于ARM Cortex-M3的STM32系列嵌入式微控制器應(yīng)用實(shí)踐[M].北京:電子工業(yè)出版社, 2010.

      [3] 孫書鷹,陳志佳,寇超.新一代嵌入式微處理器STM32F103開發(fā)與應(yīng)用[J].網(wǎng)絡(luò)新媒體技術(shù),2010,31(12):59-63.

      [4] Gou Yuntao,Du Gang,Wang Ning, et al.The design and realization of a rotary inverted pendulum based on STM32[C].Shanghai:2015 International Conference on Identification, Information, and Knowledge in the Internet of Things (IIKI),IEEE Computer Society,2015.

      [5] Attila.STM32F4-discovery LED blinker[M].CA,USA: Attila Conpration,2005.

      [6] 余新栓. 基于Matlab的STM32軟件快速開發(fā)方法[J]. 單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2011,11(10):46-48.

      [7] Ropp M E,Gonzalez S.Development of a Matlab/Simulink model of a single-phase grid-connected photovoltaic system[J]. IEEE Transactions on Energy Conversion,2009,24(1):195-202.

      [8] Pawel Stojaczyk,Dawid Woroch,洪波,等.基于Matlab/Simulink的PMSM磁場(chǎng)定向控制算法的設(shè)計(jì)與應(yīng)用[J].汽車安全與節(jié)能學(xué)報(bào), 2014(2):166-171.

      [9] 廖燦燦,張樹群,雷兆宜.Matlab Coder生成C代碼的研究與應(yīng)用[J].計(jì)算機(jī)與現(xiàn)代化, 2013(3):175-178.

      [10] 周丹,曾宇航.Matlab/Simulink的直流電機(jī)調(diào)速系統(tǒng)C代碼生成[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用, 2015(10):12-15.

      [11] 楊蕊,張建軍,馬昭,等.基于Matlab的SVPWM算法自動(dòng)代碼生成技術(shù)研究[J].電子器件, 2015(6):1341-1345.

      [12] 張曉紅,張安年,楊雷.基于DSP的方波無(wú)刷直流電動(dòng)機(jī)(BLDGM)控制系統(tǒng)的設(shè)計(jì)[J].礦山機(jī)械, 2005(11):82-84.

      [13] 靳方義,郝曉弘.無(wú)刷直流方波電機(jī)控制特性及其伺服系統(tǒng)控制策略[J].微特電機(jī),1999,27(5):19-22.

      [14] 劉和平,劉平,王貴.永磁無(wú)刷直流電動(dòng)機(jī)換向過(guò)程分析[J].微電機(jī), 2008, 41(10):10-13.

      [15] 吳志紅,孫萌,毛明平.基于Matlab/RTW的車載無(wú)刷直流電機(jī)調(diào)速系統(tǒng)代碼自動(dòng)生成[J].沈陽(yáng)理工大學(xué)學(xué)報(bào),2005, 24(4):43-45.

      Embedded Coder Generation of Motor Controller Based on Matlab and STM32

      XU Jie,DING Xueming

      (School of Optical-Electrical and Computer Engineering, University of Shanghai for Science and Technology, Shanghai 200093, China)

      Embedded coder generation based on Matlab and STM32 is combined with the BLCD control system, which makes the design and implementation of the control system more convenient and more efficient. First, a BLCD motor control system is designed and simulated by Matlab. Then, readable C code project documents are generated automatically with Simulink library STM32 MAT/Target and other software tools. Actual operation is performed on STM32F103, and the operation states agree with the simulation results. Matlab simulation offers easy designs the control system and the automatic codes generation facilitates the implementation of the control algorithm. The combination of the two speeds up the process from design to implementation with good accuracy.

      STM32; Matlab; BLDC; embedded coder generation

      2016- 06- 01

      徐捷(1992-),男,碩士研究生。研究方向:電機(jī)控制等。丁學(xué)明(1971-),男,副教授,碩士生導(dǎo)師。研究方向:機(jī)控制等。

      10.16180/j.cnki.issn1007-7820.2017.04.037

      TN873;TM36+1

      A

      1007-7820(2017)04-148-04

      猜你喜歡
      方波直流電機(jī)控制算法
      基于模糊PID的無(wú)刷直流電機(jī)速度控制系統(tǒng)的設(shè)計(jì)與仿真
      基于ARM+FPGA的模塊化同步控制算法研究
      基于FPGA的雙繞組無(wú)刷直流電機(jī)軟件設(shè)計(jì)
      電子制作(2017年1期)2017-05-17 03:54:12
      碳納米管方波電沉積鉑催化劑的制備及其催化性能研究
      一種優(yōu)化的基于ARM Cortex-M3電池組均衡控制算法應(yīng)用
      基于模糊神經(jīng)網(wǎng)絡(luò)PID的無(wú)刷直流電機(jī)控制系統(tǒng)研究
      一種改進(jìn)的無(wú)刷直流電機(jī)控制方法
      方波外場(chǎng)下有限維量子系統(tǒng)的控制協(xié)議
      基于Matlab的方波分解與合成仿真實(shí)驗(yàn)設(shè)計(jì)
      一種非圓旋轉(zhuǎn)工件支撐裝置控制算法
      普安县| 毕节市| 德保县| 读书| 中西区| 开平市| 城步| 曲阜市| 永安市| 东港市| 巩义市| 额尔古纳市| 澎湖县| 苏尼特左旗| 平邑县| 孙吴县| 安顺市| 芮城县| 安溪县| 合肥市| 长岭县| 阳城县| 靖州| 建始县| 大英县| 新余市| 浪卡子县| 黔南| 平阳县| 韶山市| 吴堡县| 樟树市| 永嘉县| 湘潭市| 灯塔市| 舟山市| 区。| 东乡族自治县| 英吉沙县| 河南省| 邹平县|