• 
    

    
    

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

      步進電機控制器的FPGA實現(xiàn)

      2009-05-25 09:59:44程耕國
      現(xiàn)代電子技術(shù) 2009年1期
      關(guān)鍵詞:步進電機控制器

      潘 濤 程耕國

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

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

      中圖分類號: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 引 言

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

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

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

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

      1 步進電機的工作原理

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

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

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

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

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

      2 步進電機定位控制器的整體設(shè)計

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

      2.1 步進電機定位控制器整體架構(gòu)的VHDL語言設(shè)計及仿真

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

      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--步進電機方向設(shè)定電路模塊

      begin

      process(dir,manner,angle)

      begin

      --if ini=′1′ then

      cc<=conv_integer(manner);

      if dir=′0′ then--逆時針方向旋轉(zhuǎn)

      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 步進電機方向電路模塊設(shè)計

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

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

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

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

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

      2.4 編碼輸出模塊

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

      假設(shè)reset=1,則將count和angleDnCount設(shè)置成0。

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

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

      3 Quartus Ⅱ仿真結(jié)果

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

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

      4 結(jié) 語

      步進電機作為一種數(shù)字伺服執(zhí)行元件,具有結(jié)構(gòu)簡單,運行可靠,控制方便,控制性能好等優(yōu)點,但現(xiàn)實中步進電機的控制比較復雜。

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

      參考文獻

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

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

      [3]朱明程.可編程邏輯系統(tǒng)的VHDL設(shè)計技術(shù)[M].南京:東南大學出版社,1998.

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

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

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

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

      [8]朱正偉.EDA技術(shù)及應(yīng)用[M].北京:清華大學出版社,2005.

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

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

      作者簡介

      潘 濤 男,1984年出生,武漢科技大學信息學院在讀碩士研究生?,F(xiàn)從事模式識別與智能系統(tǒng)的研究。

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

      猜你喜歡
      步進電機控制器
      工商業(yè)IC卡控制器改造為物聯(lián)網(wǎng)控制器實踐
      一種可自動伸縮的嵌入式LED燈具設(shè)計
      科學家(2016年3期)2016-12-30 00:32:48
      步進電機智能控制的設(shè)計與實現(xiàn)
      步進電機對提高航標燈器運轉(zhuǎn)穩(wěn)定性的作用
      工礦機車GK1F、GK1C柴油機調(diào)速控制
      科技視界(2016年24期)2016-10-11 12:44:53
      基于單片機的自動化立體車庫控制系統(tǒng)設(shè)計
      科技視界(2016年15期)2016-06-30 16:31:32
      基于DSP的復合跟蹤控制器的設(shè)計
      基于單片機的雷達伺服控制系統(tǒng)
      科技視界(2016年7期)2016-04-01 11:38:06
      模糊PID控制器設(shè)計及MATLAB仿真
      MOXA RTU控制器ioPAC 5542系列
      自動化博覽(2014年9期)2014-02-28 22:33:17
      遂川县| 夹江县| 大化| 吉木萨尔县| 南木林县| 开江县| 上栗县| 伽师县| 庆云县| 神农架林区| 汾西县| 五莲县| 连城县| 革吉县| 海淀区| 五常市| 横山县| 额济纳旗| 清远市| 大埔区| 涞源县| 枞阳县| 全南县| 北碚区| 南部县| 兴业县| 武胜县| 繁昌县| 调兵山市| 泰顺县| 同江市| 阿合奇县| 靖边县| 濮阳市| 木兰县| 南雄市| 商丘市| 砀山县| 客服| 聂拉木县| 长治市|