版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、<p><b> 課程設計</b></p><p><b> 課程設計任務書</b></p><p> 學生姓名: 專業(yè)班級: </p><p> 指導教師: 工作單位 </p>&
2、lt;p> 題目:步進電機定位控制系統(tǒng)設計</p><p><b> 初始條件:</b></p><p> 1. 熟悉QuartusII 軟件的操作與運用;</p><p> 2. 掌握步進電機的工作原理。</p><p> 要求完成的主要任務:</p><p> 1. 設計一個
3、基于FPGA 的4 相步進電機定位控制系統(tǒng),包括步進電機方向設定</p><p> 電路模塊、步進電機步進移動與定位控制模塊和編碼輸出模塊。</p><p> 2.撰寫符合學校要求的課程設計說明書</p><p><b> 時間安排:</b></p><p> 1、 年 月 日,布置課設具體實
4、施計劃與課程設計報告格式的要求說明。</p><p> 2、 年 月 日至 年 月 日,設計說明書撰寫。</p><p> 3、 年 月 日,上交課程設計成果及報告,同時進行答辯。</p><p> 指導教師簽名: 年 月 日<
5、/p><p> 系主任(或責任教師)簽名: 年 月 日</p><p><b> 目錄</b></p><p><b> 摘要I</b></p><p> AbstractII</p><p> 1 設計目標及簡介1<
6、;/p><p><b> 1.1設計目標1</b></p><p> 1.2 步進電機簡介1</p><p> 2 VHDL語言介紹2</p><p> 3 Quartus Ⅱ介紹3</p><p><b> 4 系統(tǒng)組成4</b></p>&l
7、t;p> 4.1 四相步進電機工作原理4</p><p> 4.2 系統(tǒng)組成5</p><p><b> 5 模塊設計5</b></p><p> 5.1 FPGA模塊圖及信號說明5</p><p> 5.2 系統(tǒng)模塊構成6</p><p> 5.3 各模塊間整體共享的
8、電路內部傳遞信號6</p><p> 5.4 電機方向設定電路模塊6</p><p> 5.5 步進電機步進移動與定位控制模塊7</p><p> 5.6 編碼輸出模塊7</p><p> 6 程序設計與仿真8</p><p><b> 7 仿真結果12</b></p&
9、gt;<p><b> 8 實驗總結14</b></p><p><b> 9參考文獻15</b></p><p><b> 摘要</b></p><p> 在分析了步進電機工作原理的基礎上,提出了步進電機定位控制系統(tǒng)的模塊劃分和實現(xiàn)方法。以步進電機四相四拍工作方式為例,用V
10、erilog編程在Altera公司的FPGA開發(fā)系統(tǒng)中實現(xiàn)了各功能模塊和顯示程序。在系統(tǒng)仿真的基礎上,進行了功能模塊的控制實驗,實驗結果和仿真一致,實現(xiàn)了對步進電機模組的預定控制。</p><p> 關鍵詞:步進電機 定位控制 Verilog硬件描述語言 FPGA</p><p><b> Abstract</b></p><p> On
11、 the basis of analysing stepping motor’s operational principle,we put forward modules division and realizing method of positioning control system which using stepping motor.Giving an example such as stepping motors which
12、 work in Four-phase-four-step mode,we use Verilog programming realized every foundational module and display routine in Altera’s FPGA development system.On the basis of system simulation,we conduct a controlling experime
13、nt about foundational modules,the results are the same as </p><p> Keyword: stepping motor positioning control VHDL FPGA</p><p><b> 1 設計目標及簡介</b></p><p><b> 1.1
14、設計目標</b></p><p> 設計一個基于FPGA的4相步進電機定位控制系統(tǒng)。</p><p> 系統(tǒng)主要由步進電機方向設定電路模塊、步進電機步進移動與定位控制模塊和編碼輸出模塊構成。</p><p> 前兩個模塊完成電機旋轉方向設定,激磁方式設定和定位角度的換算等工作,后一個模塊用于對換算后的角度量編碼輸出。</p><
15、p> 1.2 步進電機簡介</p><p> 步進電機是將電脈沖信號轉變?yōu)榻俏灰苹蚓€位移的開環(huán)控制元件,具有價格低廉、易于控制、無累積差錯和與計算機接口方便等諸多優(yōu)點,在機械、儀表、工業(yè)控制等領域中獲得了廣泛的應用。在非超載的情況下,電機的轉速、停止的位置只取決于脈沖信號的頻率和脈沖數(shù),而不受負載變化的影響,即給電機加一個脈沖信號,電機則轉過一個步距角。這一線性關系的存在,加上步進電機只有周期性的誤差而
16、無累積誤差等特點。使得在速度、位置等控制領域用步進電機來控制變的非常的簡單。</p><p> 2 VHDL語言介紹</p><p> VHDL的英文全名是Very-High-Speed Integrated Circuit Hardware Description Language,誕生于1982年。1987年底,VHDL被IEEE和美國國防部確認為標準硬件描述語言。</p&g
17、t;<p> VHDL主要用于描述數(shù)字系統(tǒng)的結構,行為,功能和接口。除了含有許多具有硬件特征的語句外,VHDL的語言形式和描述風格與句法是十分類似于一般的計算機高級語言。VHDL的程序結構特點是將一項工程設計,或稱設計實體(可以是一個元件,一個電路模塊或一個系統(tǒng))分成外部(或稱可視部分,及端口)和內部(或稱不可視部分),既涉及實體的內部功能和算法完成部分。在對一個設計實體定義了外部界面后,一旦其內部開發(fā)完成后,其他的設計
18、就可以直接調用這個實體。這種將設計實體分成內外部分的概念是VHDL系統(tǒng)設計的基本點。</p><p> VHDL 語言能夠成為標準化的硬件描述語言并獲得廣泛應用,它自身必然具有很多其他硬件描述語言所不具備的優(yōu)點。歸納起來,VHDL 語言主要具有功能強大,設計方式多樣;硬件描述能力強大;具有很強的移植能力;設計描述與器件無關程序易于共享和復用等優(yōu)點。</p><p> 3 Quartus
19、 Ⅱ介紹</p><p> Quartus II 是Altera公司的綜合性PLD/FPGA開發(fā)軟件,支持原理圖、VHDL、VerilogHDL以及AHDL(Altera Hardware Description Language)等多種設計輸入形式,內嵌自有的綜合器以及仿真器,可以完成從設計輸入到硬件配置的完整PLD設計流程。</p><p> Quartus II可以在XP、Lin
20、ux以及Unix上使用,除了可以使用Tcl腳本完成設計流程外,提供了完善的用戶圖形界面設計方式。具有運行速度快,界面統(tǒng)一,功能集中,易學易用等特點。</p><p> Quartus II提供了完全集成且與電路結構無關的開發(fā)包環(huán)境,具有數(shù)字邏輯設計的全部特性,包括:可利用原理圖、結構框圖、VerilogHDL、AHDL和VHDL完成電路描述,并將其保存為設計實體文件;芯片(電路)平面布局連線編輯;LogicLo
21、ck增量設計方法,用戶可建立并優(yōu)化系統(tǒng),然后添加對原始系統(tǒng)的性能影響較小或無影響的后續(xù)模塊;功能強大的邏輯綜合工具;完備的電路功能仿真與時序邏輯仿真工具;定時/時序分析與關鍵路徑延時分析;可使用SignalTap II邏輯分析工具進行嵌入式的邏輯分析;支持軟件源文件的添加和創(chuàng)建,并將它們鏈接起來生成編程文件;使用組合編譯方式可一次完成整體設計流程;自動定位編譯錯誤;高效的期間編程與驗證工具;可讀入標準的EDIF網表文件、VHDL網表文件
22、和Verilog網表文件;能生成第三方EDA軟件使用的VHDL網表文件和Verilog網表文件。</p><p><b> 4 系統(tǒng)組成</b></p><p> 4.1 四相步進電機工作原理</p><p> 步進電機是利用數(shù)字信號控制的電機裝置,步進電機每次接收到一組脈沖數(shù)字信號,便旋轉一個角度,稱為步進角。不同規(guī)格的步進電機的步進角
23、不同,與電動機內部的線圈數(shù)量有關。線圈中的供應電流決定線圈所產生的磁場方向。</p><p> 4相步進電機有兩組線圈 A和 B,如圖4.1所示,A、B兩組垂直擺放線圈的電流方向的排列組合,A線圈如果提供A點低電位而A′點高電位,電流由A′螺旋向上流到A,形成向上的磁場方向;同理,提供B點低電位而B′點高電位,電流由B′螺旋流到B,形成向左的磁場方向。A和B這兩組線圈形成的總磁場方向即為左上方。如果將電動機的轉
24、子置于線圈所產生的磁場中,便會受到磁場的作用而產生與磁場方向一致的力,轉子便開始轉動,直到轉子的磁場方向與線圈的磁場方向一致為止。最多可以產生8種磁場方向,分別是0º、45º、90º、135º、180º、225º、270º、315º。</p><p> 圖4.1 四相步進電機</p><p> 由表4.1可
25、以知,假設電動機轉子刻度在0º的位置,想讓其轉180º,可以使端口信號依次按0001,0011,0010,0110到0100變化。</p><p> 注意:四相電動機有1相激磁法、2相激磁法和1-2相混合激磁法3種激磁方式。不同的激磁方式,端口信號的順序是不同的。</p><p> 表4.1 四相步進電機的8個方向和電流以及電壓信號的關系</p>&l
26、t;p> 1-相激磁法:當目標角度是90的整數(shù)倍時,采用這種方法。例如要從0轉到270,只要讓端口信號的順序為0000,0001,0010,0100,1000即可。</p><p> 2-相激磁法:當目標角度是45而非90的整數(shù)倍時,可采用這種方法。例如要從0轉到225,只要讓端口信號的順序為0000,0011,0110,1100即可。</p><p> 1-2-相混合激磁法:
27、按照表中所列的信號順序。</p><p> 該步進電機為一四相步進電機,采用單極性直流電源供電。只要對步進電機的各相繞組按合適的時序通電,就能使步進電機步進轉動。</p><p><b> 4.2 系統(tǒng)組成</b></p><p><b> 圖4.2 系統(tǒng)組成</b></p><p><
28、b> 5 模塊設計</b></p><p> 5.1 FPGA模塊圖及信號說明</p><p> 圖5.1 FPGA模塊圖</p><p> reset:系統(tǒng)內部復位信號,’1’時有效;</p><p> dir:步進電機正反轉的方向控制開關,0:逆時針,1:順時針;</p><p> c
29、lk:由FPGA內部提供的4MHz的時鐘信號;</p><p> ini:賦初值的使能開關,’0’時有效;</p><p> manner:激磁方式的選擇開關(兩位), 00:自動檢測角度輸入,決定激磁方式01:1-相激磁;10:2.相激磁;11:1-2.相激磁. </p><p> angle:步進角的倍數(shù)設定輸入鍵.</p><p>
30、; baba:將內部計數(shù)器的count[3 downto 0]的數(shù)值編碼輸出</p><p> 5.2 系統(tǒng)模塊構成</p><p> 系統(tǒng)主要由步進電機方向設定電路模塊、步進電機步進移動與定位控制模塊和編碼輸出模塊構成。</p><p> 前兩個模塊完成電機旋轉方向設定,激磁方式設定和定位角度的換算等工作,后一個模塊用于對換算后的角度量編碼輸出。</
31、p><p> 5.3 各模塊間整體共享的電路內部傳遞信號</p><p> count:內部電路計數(shù)累加器,用來產生輸出所需對應的狀態(tài);</p><p> cntinc:設定累加器所需的累加/減計數(shù)值;</p><p> sntini:設定累加器所需的計數(shù)初值;</p><p> angledncount:設定步
32、進角所需處理的次數(shù);</p><p> Angledncntdec:設定步進角所需累減計數(shù)值;</p><p> 5.4 電機方向設定電路模塊</p><p> 該模塊設定了步進電機的旋轉方向以及電機在任一方向上所需的初值與累加/減值。</p><p> dir為0時,步進電機工作于逆時針旋轉模式,累加值為正數(shù)。</p>
33、<p> manner 選擇激磁方式 00、01、10、11分別對應默認激磁方式、1-相激磁方式、2.相激磁方式和1-2.相激磁方式。如表5.1。</p><p> 表5.1 dir為0時</p><p> dir為1時,步進電機工作于順時針旋轉模式,累加值為負數(shù)。 manner 選擇激磁方式 00、01、10、11分別對應默認激磁方式、1-相激磁方式、2.相激磁方式和1
34、-2.相激磁方式。如表5.2。</p><p> 表5.2 dir為1時</p><p> 5.5 步進電機步進移動與定位控制模塊</p><p> 該模塊的主要功能是利用賦初值ini將數(shù)值傳到該模塊中并配合輸入的clk作為同步控制信號,進行步進電機的步進移動與定位控制。</p><p> 步進電機定位功能通過一個減法器實現(xiàn):在每個c
35、lk脈沖上升緣,設定步進角倍數(shù)angledncount 減去不同激磁方式下設定的累減記數(shù)值angledncntdec,判斷差值小于設定的累減記數(shù)時,步進電機旋轉到預定角度停止輸出驅動端口信號,實現(xiàn)步進電機的定位功能。</p><p> 驅動端口信號利用累加器實現(xiàn)。</p><p> 5.6 編碼輸出模塊</p><p> 該模塊的功能是將count與angle
36、dncount產生的數(shù)值經過編碼,并通過baBA[3downto0]輸出到步進電機。</p><p><b> 6 程序設計與仿真</b></p><p> library IEEE;</p><p> use IEEE.std_logic_1164.all;</p><p> use IEEE.std_logi
37、c_arith.all;</p><p> use IEEE.std_logic_unsigned.all;</p><p> entity step_motor is</p><p> port (reset:in STD_LOGIC; --系統(tǒng)復位信號</p><p> dir: in STD_LOGIC; --方向控制信號<
38、;/p><p> clk: in STD_LOGIC; --系統(tǒng)時鐘信號</p><p> ini: in STD_LOGIC; --初始化使能信號 </p><p> manner: in STD_LOGIC_VECTOR (1 downto 0); --激磁方式的選擇開關</p><p> angle: in INTEGER rang
39、e 255 downto 0; --步進角的倍數(shù)設定輸入</p><p> baBA: out STD_LOGIC_VECTOR (3 downto 0)); --步進電機狀態(tài)輸出</p><p> end step_motor;</p><p> architecture stepmotor_arch of step_motor is</p>
40、<p> signal count: INTEGER range 0 to 7; --計數(shù)器 </p><p> signal cntInc: INTEGER range -2 to 2; --設定累加器所需的累(加/減)計數(shù)值</p><p> signal cc : integer range 0 to 3;</p><p> signal c
41、ntIni: INTEGER range -1 to 0; --設定累加器所需的計數(shù)初值</p><p> signal angleDnCount: INTEGER range 255 downto 0; --計算已經轉過的步進角</p><p> signal angleDnCntDec: INTEGER range 2 downto 1; </p><p>
42、;<b> begin</b></p><p> --步進電機方向設定電路模塊</p><p> 該模塊的主要功能是設定步進電機的旋轉方向(順時針或逆時針),并設定電機在順時針或逆時針轉動時所需要初值與累加/減值。</p><p> process(dir, manner, angle)--, ini)</p><p
43、><b> begin</b></p><p> --if ini='1' then</p><p> cc<=conv_integer(manner);</p><p> if dir='0' then</p><p> case cc is</p>
44、<p> when 1 => -- 1-相激勵</p><p> --count<=0;</p><p> cntIni<=0;</p><p> cntInc<=2;</p><p> angleDnCntDec<=2;--"10";</p><p
45、> when 2 => -- 2-相激勵</p><p> --count<=7;</p><p> cntIni<=-1;</p><p> cntInc<=2;</p><p> angleDnCntDec<=2;--"10"; </p><p&g
46、t; when 3 => -- 1-2相激勵</p><p> --count<=0;</p><p> cntIni<=0;</p><p> cntInc<=1;</p><p> angleDnCntDec<=1;--"01"; </p><p>
47、; when 0 => --manner="00" autodetect </p><p> if (angle rem 2) =1 then -- 2-相激勵</p><p> --count<=7;</p><p> cntIni<=-1;</p><p> cnt
48、Inc<=2;</p><p> angleDnCntDec<=2;--"10"; </p><p> else -- 1-相激勵 </p><p> --count<=0;</p><p> cntIni<=0;</p><p&g
49、t; cntInc<=2;</p><p> angleDnCntDec<=2;--"10";</p><p> end if; --angle</p><p> end case; --manner</p><p> else -- if dir='1'</p><
50、;p> case cc is</p><p> when 1 => -- 1-相激勵</p><p> --count<=0;</p><p> cntIni<=0;</p><p> cntInc<=-2;</p><p> angleDnCntDec<=2;--&q
51、uot;10";</p><p> when 2 => -- 2-相激勵</p><p> --count<=7;</p><p> cntIni<=-1;</p><p> cntInc<=-2;</p><p> angleDnCntDec<=2;--"
52、10"; </p><p> when 3 => -- 1-2相激勵</p><p> --count<=0;</p><p> cntIni<=0;</p><p> cntInc<=-1;</p><p> angleDnCntDec<=1;--"0
53、1"; </p><p> when 0 => --manner="00" autodetect </p><p> if (angle rem 2) = 1 then -- 2-相激勵</p><p> cntIni<=-1;</p><p> cntInc&
54、lt;=-2;</p><p> angleDnCntDec<=2;--"10"; </p><p> else -- 1-相激勵 </p><p> cntIni<=0;</p><p> cntInc<=-2;</p><p>
55、 angleDnCntDec<=2;--"10";</p><p> end if; --angle</p><p> end case; --manner</p><p> end if; -- else dir=0</p><p> --end if; -- ini</p><p>
56、; end process;</p><p> --步進電機步進移動與定位控制電路模塊</p><p> 該模塊的主要功能是利用ini(使能開關),將數(shù)值傳到該模塊中,并配合輸入的clk(系統(tǒng)時鐘)作為同步控制信號,進行步進機的步進移動與定位控制。</p><p> counting_reset: process(reset,ini, angle, clk)
57、</p><p><b> begin</b></p><p> if reset='1' then</p><p><b> count<=0;</b></p><p> angleDnCount<=0; </p><p> elsif
58、 clk'event and clk='1' then</p><p> if ini='0' then</p><p> count<=0+cntIni;</p><p> angleDnCount<=angle;</p><p><b> else</b>&
59、lt;/p><p> count <= count+cntInc;</p><p> if angleDnCount > angleDnCntDec then</p><p> angleDnCount <= angleDnCount-angleDnCntDec;</p><p><b> else</b
60、></p><p> angleDnCount <= 0;</p><p><b> end if; </b></p><p><b> end if;</b></p><p><b> end if;</b></p><p> e
61、nd process;</p><p> --編碼輸出電路模塊</p><p> 該模塊的功能是將count和angledncount產生的數(shù)值經過編碼,并利用baBA輸出連線信號,將結果輸出顯示。</p><p> baBA <="0000" when angleDnCount=0 else</p><p>
62、 "0001" when count=0 else</p><p> "0011" when count=1 else</p><p> "0010" when count=2 else</p><p> "0110" when count=3 else</p>&
63、lt;p> "0100" when count=4 else</p><p> "1100" when count=5 else</p><p> "1000" when count=6 else</p><p> "1001";-- when count>=7;&l
64、t;/p><p> end stepmotor_arch;</p><p><b> 7 仿真結果</b></p><p><b> 圖7.1 編譯結果</b></p><p><b> 7.2RTL視圖</b></p><p> 圖7.3 時序仿
65、真部分結果</p><p> 圖7.4 局部時序仿真結果</p><p><b> 結果分析:</b></p><p> 1、從編譯結果中可以看出片上資源使用情況。</p><p> Total logic elements 31/8256(<1%): 該芯片中共有8256個LE資源,其中有31個在這次編譯
66、中使用。</p><p> Total combinational functions 32/8256(<1%):該芯片中共有8256個LE資源,有31個用于實現(xiàn)組合邏輯。</p><p> Dedicated logic redisters 11/8256(1%):該芯片中共有8256個LE資源,其中有11個用于實現(xiàn)寄存器,即時序邏輯。</p><p>
67、 也從上得出組合邏輯和時序邏輯的比例為31/11=2.8:1。 </p><p> 2、從局部時序仿真結果中可以看出:當ini無效時,dir=0表示逆時針方向轉動,manner=10,決定2-相激磁方式,此時的baBA對應輸出順序為0011(45度)、0110(135度)、1100(225度)、1001(315度)再循環(huán),滿足2-相激磁方式的順序結果正確。</p><p><b&
68、gt; 8 實驗總結</b></p><p> 本文所設計的步進電機控制系統(tǒng)實現(xiàn)簡單,編程容易,所設計系統(tǒng)實現(xiàn)了對電機模組的預定控制,較好的完成了設計要求。采用Verilog和FPGA設計,能夠縮短設計周期,并使設計易于調試、實現(xiàn)。在系統(tǒng)需升級時,僅需對FPGA模塊再設計,成本較低。</p><p> 從仿真結果來看,利用FPGA芯片嚴謹?shù)幕谟布木幊陶Z言和精確的時間控
69、制特點,準確地實現(xiàn)了精確定位功能,并利用直接頻率合成理論中的相位累加器的原理同時實現(xiàn)了對步進電機的運行速度的精確控制。實踐證明,這種方法定位準確,控制速度精確,是一種行之有效的方案。</p><p><b> 9參考文獻</b></p><p> [1] 王紫婷,吳蓉 ,張彩珍,EDA技術與應用,蘭州大學出版社,2003</p><p>
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 基于fpga的異步電機課程設計
- 雙速異步電機課程設計
- 課程設計--異步電機直接轉矩控制
- 異步電機能耗制動電路課程設計
- 異步電機的矢量控制設計及仿真課程設計
- 三相異步電機裝配圖cad課程設計
- 三相異步電機制動與應用課程設計
- 基于FPGA的異步電機無速度傳感器矢量控制設計.pdf
- 基于網絡的異步電機保護裝置設計
- 異步電機習題
- 異步電機仿真
- 電機課程設計---三相繞線轉子異步電機制動方法的應用與研究
- 基于網絡的異步電機保護裝置設計.pdf
- 機電傳動控制課程設計---三相異步電機順序plc控制
- 基于CompactRIO的異步電機SVPWM調速系統(tǒng)設計.pdf
- 基于compactrio的異步電機svpwm調速系統(tǒng)設計(1)
- 基于DSP和FPGA的異步電機矢量控制系統(tǒng)的研究.pdf
- 高速異步電機參數(shù)化設計.pdf
- 運動控制課程設計--異步電機仿真模型建立、仿真及svpwm的研究與matlab仿真
- 異步電機的變頻調速畢業(yè)設計
評論
0/150
提交評論