999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

步進電機控制器的FPGA實現

2009-05-25 09:59:44程耕國
現代電子技術 2009年1期

潘 濤 程耕國

摘 要:介紹基于FPGA的步進電機控制器的設計,在分析步進電機的工作原理的基礎上,給出了層次化設計方案與VHDL程序,并利用Quartus Ⅱ進行了仿真并給出了仿真結果。它以FPGA作為核心器件,極大地減少了外圍元件的使用。同時,采用VHDL語言控制可以根據步進電機的不同,改變模塊程序的參數就可以實現不同型號步進電機的控制,有利于步進電機的廣泛應用。

關鍵詞:步進電機;控制器;現場可編程邏輯門陣列;硬件描述語言

中圖分類號:TP29 文獻標識碼:B

文章編號:1004-373X(2009)01-148-03

FPGA Implementation of Stepping Motor Controller

PAN Tao,CHENG Gengguo

(Wuhan University of Science and Technology,Wuhan,430081,China)

Abstract:This paper introduces a design for the stepping motor controller based on FPGA,after analyzes the working principle of stepping motor,VHDL codes and the simulation results through Quartus Ⅱ are presented.At the same time,using VHDL language control to be possible to act according to the stepping motor′s differences,the change of module′s program parameter might implement the different model to stepping motor′s control,it is advantageous in stepping motor′s widespread application.

Keywords:stepping motor;controller;field programmable gate array;VHDL

0 引 言

隨著步進電機廣泛地應用于數字控制系統中作為伺服元件,步進電機在實時性和靈活性等性能上的要求越來越高。那么如何靈活、有效地控制步進電機的運轉成為研究的主要方向。這里采用現場可編程邏輯門陣列(Field Programmable Gate Array,FPGA),通過VHDL語言編程來實現四相步進電機的控制。利用FPGA設計具有以下優點:

硬件設計軟件化 FPGA的開發在功能層面上可以脫離硬件在EDA軟件上做軟仿真。當功能確定無誤后可以進行硬件電路板的設計。最后將設計好的,由EDA軟件生成的燒寫文件下載到配置設備中去,進行在線調試,如果這時的結果與要求不一致,可以立即更改設計軟件,并再次燒寫到配置芯片中而不必改動外接硬件電路。進行分層模塊設計后系統設計變得更加簡單,在實時性和靈活性等性能上都有很大的提高,有利于步進電機的運動控制。

高度集成化,高工作頻率 一般的FPGA內部都集成有上百萬的邏輯門,可以在其內部規劃出多個與傳統小規模集成器件功能相當的模塊。另外,一般的 FPGA內部都有PLL倍頻和分頻電路模塊,這樣可以在外部采用較低頻率的晶振而在內部獲得較高頻率的時鐘,進一步解決了

電磁干擾和電磁兼容問題。

1 步進電機的工作原理

步進電動機是一種自動化執行部件,和數字系統結合可把脈沖數轉換成角位移,實現其正轉、反轉、手動和自動控制。四相步進電機有兩組線圈A和B。A,B兩組垂直擺放線圈的電流方向的排列組合,最多可以產生8種磁場方向,分別是0°,45°,90°,135°,180°,225°,270°,315°。表1給出了四相步進電機的8個方向和電流以及電壓信號的關系。

四相電動機有3種激磁方式:

一相激磁法:當目標角度是90°的整數倍時,采用這種方法。

二相激磁法:當目標角度是45°,135°,225°,315°的整數倍時,采用這種方法。

一、二相激磁法:即完全按照表1所列的信號順序。

2 步進電機定位控制器的整體設計

步進電機定位控制器的系統主要由步進電機方向設定電路模塊、步進電機步進移動與定位控制模塊以及編碼輸出模塊構成。前兩個模塊完成電機旋轉方向設定、激磁方式和定位角度的換算等工作,后一模塊用于對換算后的角度量編碼輸出。系統框圖如圖1所示。

2.1 步進電機定位控制器整體架構的VHDL語言設計及仿真

(1) 根據步進電機定位控制器的系統組成框圖可以定義輸入和輸出端口:

reset:IN STD_LOGIC;dir:IN STD_LOGIC;clk:IN STD_LOGIC;ini:IN STD_LOGIC;manner:IN STD_LOGIC_VECTOR (1 downto 0);angle:IN INTEGER range 255 downto 0;baBA:OUT STD_LOGIC_VECTOR (3 downto 0)

(2) 中間變量初始化定義如下:

signal count:INTEGER range 0 to 7;signal cntinc:INTEGER range-2 to 2; signal angleDnCount:INTEGER range 255 downto 0

(3) 步進電機定位控制器頂層電路的VHDL程序代碼:

在下面的程序中只考慮逆時針操作模式即(dir=0)。

begin

step_motor_direction:block--步進電機方向設定電路模塊

begin

process(dir,manner,angle)

begin

--if ini=′1′ then

cc<=conv_integer(manner);

if dir=′0′ then--逆時針方向旋轉

case cc is

when 1 =>--一相激勵

count<=0; cntini<=0; cntinc<=2;

angleDnCntDec<=2;--"10";

when 2 =>--二相激勵

count<=7; cntini<=-1; cntinc<=2;

angleDnCntDec<=2;--"10";

when 3 =>--一-二相激勵

count<=0; cntini<=0; cntinc<=1;

angleDnCntDec<=1;--"01";

when others => --manner="00" autodetect

if (angle rem 2) =1 then--二相激勵

count<=7; cntini<=-1; cntinc<=2;

angleDnCntDec<=2;--"10";

else--一相激勵

count<=0; cntini<=0; cntinc<=2;

angleDnCntDec<=2;--"10";

end if;--angle

end case;--manner

end process;

step_motor_moving:block--步進電機步進移動與定位控制模塊

counting_reset: process(reset,ini,angle,clk)

begin

if reset=′1′ then

count<=0;angleDnCount<=0;

elsif clk′event and clk=′1′ then

if ini=′0′ then

count<=0+cntini; angleDnCount<=angle;

else

count <= count+cntinc;

if angleDnCount> angleDnCntDec then

angleDnCount<=angleDnCount-angleDnCntDec;

else

angleDnCount <= 0;

end if;

end if;

end if;

end process;

table_mapping:block--編碼輸出模塊

baBA<="0000" when angleDnCount=0 else

"0001" when count=0 else

"0011" when count=1 else

"0010" when count=2 else

"0110" when count=3 else

"0100" when count=4 else

"1100" when count=5 else

"1000" when count=6 else

"1001";when count>=7;

end stepmotor_arch;

2.2 步進電機方向電路模塊設計

該模塊的功能是設定步進電機的旋轉方向(順/逆時針轉動),并設定電動機在順/逆時針時所需的初值與累加/減值。給出逆時針操作模式的技術規則和仿真輸出(ini=0賦初值,ini=1時開始計數)。

如果manner=00,這時進行自動判斷,若angle步進角為偶數(角度設定可以被90整除)電路使用一相激磁法,則count的初始值為000(cntini<=0),每次加2;否則電路使用二相激磁法,count的初始值為111(cntini<=111),每次加2;angleDnCntDec每次減2。得到的仿真結果如圖2所示。

表2是模塊按不同勵磁方式輸出時各個初值以及累加/減值的設定真值表。

2.3 步進電機移動與定位控制模塊設計

該模塊的主要功能是利用賦初值ini將數值傳到該模塊中并配合輸入的clk作為同步控制信號,進行步進電機的步進移動與定位控制。步進電機定位功能通過一個減法器實現:在每個clk脈沖上升沿,設定步進角倍數,angleDnCount減去不同激磁方式下設定的累加器計數值angleDnCntDec,判斷差值小于設定的累減計數時,步進電機旋轉到預定角度停止輸出驅動端口信號,來實現定位功能。

2.4 編碼輸出模塊

該模塊的主要功能是將count與angleDnCount產生的數值經過編碼,再通過baBA輸出到步進電機,來對電機進行控制。模塊仿真圖見圖2。

假設reset=1,則將count和angleDnCount設置成0。

假設reset=0,clk為上升沿觸發且ini=0時,就將設定的初值(cntini與angle)賦給count和angleDnCount兩個信號端,也就是(count<=0+cntini)與(angleDnCount<=angle)。

假設reset=0,clk為上升沿觸發且ini=1時,則將count與cntini相加,再將結果存為count。然后判斷angleDnCount的值是否大于angleDnCntDec。如果大于,則用angleDnCount減angleDnCntDec,將結果存為angleDnCount;否則,將angleDnCount設為0(因為此時angleDnCount的值小于angleDnCntDec,表示電機已經到達設定位置,故不需要繼續轉動了)。BaBA [3..0]是將count與angleDnCount產生的數值經過編碼后輸出到四相步進電機的端口的。

3 Quartus Ⅱ仿真結果

上述程序在ALTERA公司免費提供的Quartus Ⅱ環境下編譯通過,適配的FPGA器件為FLEX10K10。最后得到的系統仿真圖及生成的系統模塊符號圖分別如圖3,圖4所示。

reset是系統內部自復位信號;dir是步進電機正反轉的方向控制;clk是由外部提供的時鐘信號;ini是賦初值的使能開關;manner[1..0]是激磁方式的選擇開關(00:自動檢測角度輸入,決定激磁方式;01:一相激磁;10:二相激磁;11:一、二相激磁);angle[7..0]是步進角的倍數設定數如引腳;baBA[3..0]是系統輸出信號引腳,是內部計數器的count[3..0]數值編碼的結果。

4 結 語

步進電機作為一種數字伺服執行元件,具有結構簡單,運行可靠,控制方便,控制性能好等優點,但現實中步進電機的控制比較復雜。

這里設計的步進電機控制器方法簡單,支持四相步進電機的三種勵磁方式、正反轉運行,這種基于 FPGA的設計方法,可以加速同類型產品的開發速度,節約投資。并且可以根據步進電機的不同,改變分層模塊的VHDL程序的參數,實現不同型號步進電機的控制,在實際應用中有利于步進電機的廣泛應用。

參考文獻

[1]潘松,黃繼業.EDA技術實用教程[M].北京:科學出版社,2002.

[2]楊渝欽.控制電機[M].2版.北京:機械工業出版社,1999.

[3]朱明程.可編程邏輯系統的VHDL設計技術[M].南京:東南大學出版社,1998.

[4]任曉東,文博.CPLD/FPGA 高級應用開發指南[M].北京:電子工業出版社,2003.

[5]曾繁泰,陳美金.VHDL程序設計[M].北京:清華大學出版社,2001.

[6]馬宏偉.高性能步進電機控制系統的研制[M].西安:西安科技大學出版社,2004.

[7]盧毅,賴杰.VHDL與數字電路設計[M].北京:科學出版社,2001.

[8]朱正偉.EDA技術及應用[M].北京:清華大學出版社,2005.

[9]劉寶廷,程樹康.步進電動機及其驅動控制系統[M].哈爾濱:哈爾濱工業大學出版社,1997.

[10]宋錦河.步進電機控制系統的快速實現[J].鄂州大學學報,2004(4):5-8.

作者簡介

潘 濤 男,1984年出生,武漢科技大學信息學院在讀碩士研究生。現從事模式識別與智能系統的研究。

程耕國 男,1947年出生,武漢科技大學自動化系教授,博士。研究方向為智能材料,機電一體化和自動控制系統研究與設計等。

主站蜘蛛池模板: 日韩麻豆小视频| 国产精品免费p区| 国产精品.com| 免费人欧美成又黄又爽的视频| 亚洲人成网站在线播放2019| 精品99在线观看| 亚洲综合色吧| 国内精品自在欧美一区| 国产欧美精品一区aⅴ影院| 亚洲人成网站色7799在线播放| 国产成人1024精品| 91精品情国产情侣高潮对白蜜| 日韩欧美91| 色综合成人| 老司国产精品视频| 国产精品亚洲天堂| 久久综合伊人77777| 狠狠色狠狠色综合久久第一次| 丁香综合在线| 谁有在线观看日韩亚洲最新视频| 国产久草视频| 国产成人精品亚洲77美色| 久久久久无码精品国产免费| 97视频免费在线观看| 国产精品粉嫩| 日韩东京热无码人妻| 国产成人精品免费视频大全五级| 狠狠综合久久| 粗大猛烈进出高潮视频无码| 黄片在线永久| 国产chinese男男gay视频网| 18禁黄无遮挡免费动漫网站| 欧美国产日韩在线观看| 欧美精品v| 在线不卡免费视频| 日本成人精品视频| 久久黄色影院| 亚洲av成人无码网站在线观看| 色妞www精品视频一级下载| 91福利免费视频| 中文字幕日韩视频欧美一区| 日韩人妻少妇一区二区| 日韩123欧美字幕| 国产成人一级| 国产欧美日韩另类| 欧美日韩中文国产| 青青青国产视频| www.精品视频| 亚洲国产欧美中日韩成人综合视频| 在线观看精品自拍视频| 在线无码九区| 福利小视频在线播放| 国产91麻豆视频| 国产午夜无码片在线观看网站 | 成人韩免费网站| jizz亚洲高清在线观看| 久久天天躁狠狠躁夜夜2020一| 亚洲区视频在线观看| 久久亚洲国产一区二区| 亚洲一级毛片在线播放| 久久久久国产精品嫩草影院| 精品91视频| 精品国产一区二区三区在线观看 | 国产网站免费观看| 午夜不卡福利| 全部毛片免费看| 狠狠ⅴ日韩v欧美v天堂| 国产偷国产偷在线高清| 一本一道波多野结衣av黑人在线| 色播五月婷婷| 免费网站成人亚洲| 亚洲综合色婷婷中文字幕| 亚洲国产看片基地久久1024| 成人伊人色一区二区三区| 性色在线视频精品| 亚洲浓毛av| 四虎国产成人免费观看| 国产成人三级| 国产视频久久久久| 真实国产精品vr专区| 天天色天天综合网| 88av在线看|