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年出生,武漢科技大學自動化系教授,博士。研究方向為智能材料,機電一體化和自動控制系統研究與設計等。

主站蜘蛛池模板: 国产成人精品2021欧美日韩| 亚洲色图综合在线| 国产精品微拍| 手机精品福利在线观看| 看av免费毛片手机播放| 在线无码av一区二区三区| 992Tv视频国产精品| 国产18在线播放| 色综合a怡红院怡红院首页| 色偷偷男人的天堂亚洲av| 国产精品视频猛进猛出| 国产成人精品免费视频大全五级| 欧美亚洲香蕉| 国产成人免费手机在线观看视频 | 亚洲va欧美ⅴa国产va影院| 91无码国产视频| 久久福利网| 97青草最新免费精品视频| 免费观看国产小粉嫩喷水| 国产美女精品在线| 日本久久久久久免费网络| 亚洲一道AV无码午夜福利| 91美女视频在线观看| 欧美一级视频免费| 99视频全部免费| 国产理论一区| 亚洲乱强伦| 超碰aⅴ人人做人人爽欧美| 免费看美女毛片| 欧美第二区| 97人人做人人爽香蕉精品| 福利视频一区| 中国美女**毛片录像在线 | 日本在线国产| 亚洲高清无在码在线无弹窗| 亚洲精品久综合蜜| 国产精品大白天新婚身材| 亚洲色图欧美| 亚洲色无码专线精品观看| 国产情精品嫩草影院88av| 欧美一级黄片一区2区| 中文字幕一区二区人妻电影| 国产拍揄自揄精品视频网站| 国产乱人免费视频| 精品人妻系列无码专区久久| 国产精品99在线观看| 国产视频 第一页| 国产精品欧美在线观看| 国产高清不卡视频| 中文字幕资源站| 福利国产在线| 一本大道香蕉久中文在线播放| 国产国语一级毛片在线视频| 制服丝袜一区二区三区在线| 国产一级片网址| 色网在线视频| 92午夜福利影院一区二区三区| 久久成人国产精品免费软件 | 欧美啪啪网| 欧美五月婷婷| 91香蕉国产亚洲一二三区| 91久久大香线蕉| 不卡的在线视频免费观看| 亚洲床戏一区| 综合色在线| 国产jizzjizz视频| 亚洲天堂精品在线观看| 亚洲码一区二区三区| 婷婷99视频精品全部在线观看| 自拍中文字幕| 久久中文字幕av不卡一区二区| 人人看人人鲁狠狠高清| 日韩精品一区二区三区中文无码| 国产一级毛片网站| 天天躁夜夜躁狠狠躁图片| 波多野结衣一区二区三区88| 亚洲天天更新| 好紧太爽了视频免费无码| 国产96在线 | 中文毛片无遮挡播放免费| 欧美性久久久久| 国产v精品成人免费视频71pao|