FPGA在直流電機位置控制中的應用
在直流電機控制系統中,被控制量一般都是電機的轉速,控制的目的是保持電機的轉速在所需要的定值上。但在實際生產過程中,電機帶動生產機械或者其他負載運動的表現不一定都是轉速,也可能是使生產機械或其機構產生一定的位置變化,這時需要的控制量就不再是電機的轉速,而是控制對象的直線位移,因此需將電機的轉速輸出轉換為電機的位移輸出。
1 電機位置控制模塊的設計
1.1 直流電機位置控制的方法
在此,使用maxon直流電機,通過與其配套的行星齒輪箱和磁編碼器,能夠實現從轉速到位移的轉換。其工作原理如下:電機轉動時,編碼器開始輸出反饋脈沖,反饋脈沖的頻率與電機的轉速成正比,較高可達20 kHz。電機軸每旋轉一圈,編碼器就輸出16個反饋脈沖,通過計算得出每個脈沖代表電機所帶負載產生0.006 14 mm的位移。這樣就可以把要控制的位移量用反饋脈沖的個數來表示,作為FPGA中位置控制模塊給定值,當電機轉動時,FPGA中的計數器會把反饋脈沖計數并保存,位置控制模塊不斷讀取計數器里的計數值,并與位置控制模塊中的給定值比較。當它們相等的時候,位置控制模塊發出停止信號,從而控制電機剎車。電機停止運動后,再讀取計數器中的計數值,與給定值做比較,計算出差值。如果差值在控制精度范圍內,則此次控制結束;如果不在范圍內,將差值作為下一次控制的給定值,繼續控制電機運動,直至達到要求的精度范圍為止。
1.2 位置控制模塊的組成
位置控制模塊由3部分組成:比較模塊、驅動模塊和延時模塊。比較模塊的作用是將編碼器反饋的脈沖個數與給定的脈沖個數做比較,當它們相等時,給出電機停止信號。驅動模塊的作用是根據輸入的控制信號控制電機的運動。延時模塊的作用是防止丟失反饋脈沖,確保準確讀回編碼器反饋的脈沖個數。接下來將重點介紹各個模塊的具體實現。
1.2.1 比較模塊
圖1中,data_in[15..O]為給定的反饋脈沖個數;EN為電機工作使能信號;inclk為工作時鐘;feedback[15..0]為電機運行時計數器的計數值;stopinter為電機停止時的模塊內部傳遞信號;“O”表示無效,“1”表示有效。比較模塊的工作原理如下:比較模塊在接收到給定值后,也就是根據要控制的位移量所計算出的反饋脈沖的個數,將其鎖存。在工作時鐘的作用下,模塊會不斷地檢測EN信號是否有效,如果EN信號有效,模塊將開始讀取反饋計數值,并與給定值做比較;如果相等,模塊認為電機所帶負載的運動到達指定位置,這時輸出的stopinter信號有效,控制電機剎車;否則 stopinter信號無效,電機繼續運動。
如圖2所示,假設給定的計數值為7。當使能信號EN有效時,模塊開始讀端口feedback[15..O]中的值(電機運行時通過磁編碼器反饋回來的脈沖個數),與data_in[15..0]中給定的脈沖個數做比較。當它們相等的時候,表示電機所帶的負載運動到了指定位置,此時stopinter信號有效,開始控制電機剎車并停止。
1.2.2 驅動模塊
圖3中,derect[1..O]為電機的控制輸入信號;EN為電機工作使能信號,“0”表示無效,“1”表示有效;inclk為工作時鐘; stopinter為電機停止信號的模塊內部傳遞信號;control_outA,control_outB為控制電機的輸出信號,這兩個控制信號直接連接電機的驅動芯片。驅動模塊的工作原理如下:
在工作時鐘的作用下,驅動模塊會不斷地檢測EN信號和stopinter信號是否有效,如果:EN有效,并且stopinter無效的時候,模塊的輸出 controi_outA,cont-orl_outB取決于電機控制輸入信號derect[1..0]的狀態,當derect[1..0]為“01” 時,control_outA輸出為“0”;control_outB輸出為“1”,表示控制電機反轉。當derect[1..0]為“10”時, control_outA輸出為“1”;con-trol_outB輸出為“O”,表示控制電機正轉。驅動控制模塊一旦檢測到stop信號有效, control_outA和control_outB的輸出都為“O”,表示控制電機剎車并停止。在EN和stop信號都無效的時候, control_outA和con-trol_outB的輸出都為“1”,表示對電機不做任何控制。
如圖4所示,當EN和stopinter信號都為“0”時,模塊的輸出control_outA,contorl_outB都為“1”,對電機不做任何控制。當EN信號變為“1”時,表示電機開始運動,模塊的輸出control_outA為“O”,Contorl_outB為“1”,與direction [1..0]中的值“01”相同,此時電機反轉。當stopinter信號變為“1”時,模塊的輸出control_outA為“O”; contorl_outB也為“O”,此時電機剎車并停止。當EN信號為“1”,stopinter信號再次為“0”時,電機再次開始運動,模塊的輸出 control_outA為“1”;con-torl_outB為“0”,與direction[1..O]中的值“10”相同,此時電機反轉。
1.2.3 延時模塊
圖4中,EN為延時的使能信號,也就是計數比較模塊的輸出信號stopinter;inclk為工作時鐘;stop為電機停止信號對外部的輸出信號。延時模塊(如圖5所示)的工作原理如下:當延時模塊檢測到stopinter信號為“1”時,模塊內的計數器開始工作,計數器時鐘即模塊的工作時鐘10 kHz,當記滿300后,模塊輸出信號為“1”。延時模塊檢測到stopinter信號為“0”時,模塊內計數器不工作,模塊輸出信號為“0”。
當電機剎車時,由于存在慣性,電機不會立即停止,會有一段滑行的過程,在這個過程中,電機仍然會通過磁編碼器返回反饋脈沖,只是因為電機的轉速下降,反饋脈沖的頻率大大降低。當stopinter信號變為“1”時,電機開始剎車,如果此時立刻讀取feedback[15..O]端口上的反饋脈沖數值,計算出電機所帶負載的位置,那么必然會丟失掉滑行過程中的反饋脈沖。這樣就會導致讀回的反饋脈沖數與實際電機返回的反饋脈沖數不相等,從而嚴重地影響控制精度,所以必須在stopinter信號變為“1”后,延長一段時間,確保電機停止不動后,再給出STOPTEST信號,作為讀取反饋脈沖數值的有效信號,這時用讀回的反饋脈沖數值計算出負載的實際位置是準確的。
通過實驗,在電機以較高轉速運行時,讓電機剎車,用邏輯分析儀抓出反饋脈沖的波形,找出反饋脈沖頻率開始突然下降直到反饋脈沖消失的那段時間,就是所需要的延時。通過反復進行實驗,測試出這段時間為30 ms,其間的反饋脈沖個數為20個。因此把要控制的位移量換算成反饋脈沖的個數后,用這個值減去20作為比較模塊給定值,就可以抵消滑行過程中增加的20 個脈沖。這樣對電機的控制能夠達到一次到位,不需要進行再次調節。延時模塊仿真圖如圖6所示。
2 結 語
現場可編程門陣列(FPGA)器件體積小、速度快、集成度高,能夠用硬件電路來實現算法。使用FPGA控制電機,能夠保證控制的實時性和可靠性。它作為一種有效的數字化控制方法必將廣泛地為人們所接受和使用。
相關閱讀:
- ...2015/09/24 18:00·FPGA電源簡介
- ...2012/10/29 10:29·整合高性能儀器和FPGA,實現較佳WLAN測量
- ...2012/10/22 13:14·了解LabVIEW FPGA和軟件設計射頻儀器的優勢所在
- ...2012/09/24 13:59·NI PXI結合FPGA實現較佳WLAN測量,支持802.11ac
- ...2012/09/17 14:04·了解LabVIEW FPGA和軟件設計射頻儀器的優勢所在
- ...2012/08/13 13:22·使用LabVIEW和FPGA來創建一個自動化的微控制器測試系統
- ...· Efinix® 全力驅動AI邊緣計算,成功推出Trion™ T20 FPGA樣品, 同時將產品擴展到二十萬邏輯單元的T200 FPGA
- ...· 英飛凌亮相進博會,引領智慧新生活
- ...· 三電產品開發及測試研討會北汽新能源專場成功舉行
- ...· Manz亞智科技跨入半導體領域 為面板級扇出型封裝提供化學濕制程、涂布及激光應用等生產設備解決方案
- ...· 中電瑞華BITRODE動力電池測試系統順利交付北汽新能源
- ...· 中電瑞華FTF系列電池測試系統中標北京新能源汽車股份有限公司
- ...· 中電瑞華大功率高壓能源反饋式負載系統成功交付中電熊貓
- ...· 中電瑞華國際在電動汽車及關鍵部件測評研討會上演繹先進測評技術