<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 在PSoC4平臺上開發(fā)傳感器BLDC電機控制系統(tǒng)

          在PSoC4平臺上開發(fā)傳感器BLDC電機控制系統(tǒng)

          作者: 時間:2016-12-15 來源:網(wǎng)絡(luò) 收藏

          1. 引言

          Cypress在2013年推出了可編程片上系統(tǒng)PSoC(Programmable System on Chip)家族的最新產(chǎn)品,采用ARM Cortex-M0作為處理核心。完全繼承了PSoC芯片家族本身的高度可編程的靈活性,并融合了Cortex-M0高性價比的處理器核架構(gòu),使得系列產(chǎn)品成為一個具有高度可擴展性的處理器平臺,在性價比、功耗等方面優(yōu)勢顯著。更值得一提的是,PSoC4針對提供了完整和極具特色的片內(nèi)資源,因此工程師在PSoC4上開發(fā)系統(tǒng)時將更加直觀與快捷。

          PSoC4產(chǎn)品系列目前推出的是CY8C4100和CY8C4200兩個入門級產(chǎn)品系列。本文即以CY8C4200為例,介紹如何在PSoC4上開發(fā)有的三相無刷直流系統(tǒng)。

          2. PSoC4架構(gòu)及與電機控制相關(guān)的片內(nèi)資源簡介

          PSoC 4是基于ARM Cortex-M0 CPU(處理器)的可編程嵌入式系統(tǒng)控制器家族,為嵌入式應(yīng)用提供了強大的可編程平臺。它集合了可編程模擬資源、可編程內(nèi)部互聯(lián)、用戶可編程數(shù)字邏輯、通用的固定功能外設(shè)計以及高性能的ARM Cortex-M0 CPU子系統(tǒng)。

          圖1是PSoC4的系統(tǒng)框圖。限于篇幅,本文將主要概括與無刷直流電機控制相關(guān)的片內(nèi)資源特性,詳細(xì)內(nèi)容可以參考Cypress網(wǎng)站上的PSoC4的數(shù)據(jù)手冊。

          ●高達48MHz,43 DMIPS 的32位Cortex-M0 CPU,支持單周期乘法

          ●多達32 KB Flash及4KB SRAM內(nèi)存

          ●四個獨立的可支持中央對齊的TCPWM,支持互補的可編程死區(qū)及同步ADC操作

          ●兩個支持比較器模式及SAR ADC輸入緩沖功能的運算放大器

          ●兩個電流數(shù)模轉(zhuǎn)換器(IDAC),可以輸出給內(nèi)部模塊,或通過GPIO輸出到外部成為可定制的用戶電流源。

          ●四個可編程數(shù)字邏輯模塊(UDB)

          ●一個支持零開銷通道切換功能的12位1 Msps ADC

          ●CapSense驅(qū)動

          本文引用地址:http://www.ex-cimer.com/article/201612/330152.htm


          圖1: PSoC4芯片系統(tǒng)框圖

          PSoC4在開發(fā)環(huán)境方面與PSoC家族的上一代產(chǎn)品保持一致,仍然為PSoC Creator,延續(xù)了將片內(nèi)資源抽象為模塊化Component的開發(fā)方法,控制系統(tǒng)架構(gòu)清晰具體,簡單快捷。用戶可以更多關(guān)注產(chǎn)品的功能開發(fā),而較少的注意芯片的硬件結(jié)構(gòu)細(xì)節(jié)。

          3. 有無刷直流電機控制原理及主要商用控制方案分析

          ① 無刷直流電機控制原理

          無刷直流(Brushless Direct Current, )電機正在汽車、家電、工業(yè)自動化、航空航天及醫(yī)療設(shè)備領(lǐng)域獲得廣泛的應(yīng)用,并將繼續(xù)逐步取代有刷電機。由于采用電子換相,電機具有更長的壽命和更小的運轉(zhuǎn)噪音。此外,隨著軟磁材料技術(shù)的進一步提高和價格的不斷下降,電機將更多的采用高性能的釹鐵硼稀土材料制作永磁轉(zhuǎn)子,其較高的磁能積和穩(wěn)定的特性使BLDC電機擁有更好的機械特性和動態(tài)響應(yīng),更高的效率和轉(zhuǎn)速范圍。因此,在環(huán)境和性能要求比較苛刻的中高端應(yīng)用中,BLDC電機將獲得進一步的推廣。

          從電機結(jié)構(gòu)原理上來說,BLDC電機定子和轉(zhuǎn)子磁場具有相同的頻率和轉(zhuǎn)速,因此是同步電機的一種。定子繞組可繞制成單相、兩相和三相,其中三相BLDC電機因輸出功率大、轉(zhuǎn)矩脈動小和效率高應(yīng)用最廣泛。本文的研究對象也將放在三相BLDC電機的控制系統(tǒng)上。

          三相BLDC電機采用兩相順序通電模式產(chǎn)生旋轉(zhuǎn)磁場,定子各相繞組的導(dǎo)通與否由轉(zhuǎn)子位置唯一確定,以保證轉(zhuǎn)子能夠始終輸出最大轉(zhuǎn)矩。由于取消了自動換向的機械電刷,因此需要實時檢測轉(zhuǎn)子的空間位置,霍爾效應(yīng)因其較高的性價比和安裝方便被廣泛采用。對于兩相導(dǎo)通的三相BLDC電機來說,每個電周期分成6個不同的通電區(qū)間,因此需要三個霍爾傳感器來進行分區(qū)。圖2為典型的霍爾傳感器輸出信號與相應(yīng)的導(dǎo)通相之間的關(guān)系圖,霍爾傳感器的每一個變化都要求導(dǎo)通相的實時改變,電機即按照既定的邏輯連續(xù)順序運行。


          圖2:霍爾傳感器信號與相繞組導(dǎo)通關(guān)系圖

          ② 無刷直流電機主要商用控制方案分析

          目前各大主流半導(dǎo)體廠商均推出了各自的有傳感器BLDC電機控制方案,技術(shù)類似,也比較成熟。概括說來,將三路霍爾傳感器的輸出接到MCU的輸入引腳上,每一路電平的變化將會觸發(fā)中斷,在中斷服務(wù)程序中根據(jù)圖2的邏輯來查表改變相應(yīng)的導(dǎo)通相,達到換向的目的。

          圖3為市場上的主流商用方案示意圖,通過簡單的分析我們可以發(fā)現(xiàn)MCU通過中斷服務(wù)程序來進行換相,在對電機電流的監(jiān)控上,電流信號由外部采樣及運放電路送入ADC后由軟件程序來比較判斷是否過流并關(guān)斷PWM輸出,保護電機及電路系統(tǒng)。


          圖3:BLDC電機主流商用方案示意圖

          總的說來,與永磁同步電機和步進電機相比,BLDC電機的控制較為簡單。各半導(dǎo)體廠商的解決方案結(jié)構(gòu)大體類似,技術(shù)也日趨同質(zhì)化。通過進一步的分析可以發(fā)現(xiàn),電機的換相和電流的監(jiān)控都在軟件中完成,但是電流的放大與處理需要外部的運放電路,速度慢,成本較高且不可靠。此外,對霍爾傳感器失效的硬件檢測缺乏實時有效的手段,影響電機的安全運行。

          4.基于PSoC4的無刷直流電機控制架構(gòu)及優(yōu)勢分析

          PSoC4采用的ARM Cortex-M0高性能處理核心不僅能夠快速完成電機的閉環(huán)速度調(diào)節(jié)和其它相應(yīng)的控制運算,其內(nèi)部集成的可編程UDB可以將圖2所示的換相邏輯以CPLD的形式固化在芯片中,實現(xiàn)更快速可靠的硬件換相,無須軟件干涉;此外,UDB更可以直接檢測霍爾信號的失效狀態(tài),并立即關(guān)斷PWM輸出,迅速保護電機。  


          上一頁 1 2 下一頁

          關(guān)鍵詞: PSoC4 傳感器 BLDC 電機控制

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();