第一篇:沈陽理工大學(xué)plc課設(shè)報告(步進(jìn)電機(jī)的運(yùn)動控制)
摘 要
隨著微電子和計算機(jī)技術(shù)的發(fā)展,步進(jìn)電機(jī)的需求量與日俱增,它廣泛用于打印機(jī)、電動玩具等消費類產(chǎn)品以及數(shù)控機(jī)床、工業(yè)機(jī)器人、醫(yī)療器械等機(jī)電產(chǎn)品中,其在各個國民經(jīng)濟(jì)領(lǐng)域都有應(yīng)用。研究步進(jìn)電機(jī)的控制系統(tǒng),對提高控制精度和響應(yīng)速度、節(jié)約能源等都具有重要意義。步進(jìn)電機(jī)是將電脈沖信號變換成機(jī)械角位移的一種裝置,每個脈沖使轉(zhuǎn)軸步進(jìn)一個步距角增量,輸出角位移與輸入脈沖數(shù)成正比,轉(zhuǎn)速與輸入脈沖成正比,轉(zhuǎn)速與輸入脈沖頻率成正比。
步進(jìn)電機(jī)的控制方式簡單,屬于開環(huán)控制,且無累積定位誤差,有較高的定位精度,而PLC作為一種工業(yè)控制微機(jī),是實現(xiàn)電機(jī)一體化的有力工具,因此基于PLC的步進(jìn)電機(jī)控制技術(shù)已廣泛用于數(shù)字定位控制中。本控制系統(tǒng)的設(shè)計,由硬件設(shè)計和軟件設(shè)計兩部分組成。其中,硬件設(shè)計主要包括步進(jìn)電機(jī)的工作原理、步進(jìn)電機(jī)的驅(qū)動電路設(shè)計、PLC的輸入輸出特性、PLC的外圍電路設(shè)計以及PLC與步進(jìn)電機(jī)的連接與匹配等問題的實現(xiàn)。軟件設(shè)計包括主程序以及各個模塊的控制程序,最終實現(xiàn)對步進(jìn)電機(jī)轉(zhuǎn)動方向及轉(zhuǎn)動速度的控制。本系統(tǒng)具有智能性、實用性及可靠性的特點。
本文主要介紹了西門子S7-200在步進(jìn)電機(jī)控制方面的應(yīng)用。
關(guān)鍵詞: 步進(jìn)電機(jī)、PLC、西門子S7-200
目錄
1.概述...........................................................................................................................1 2.硬件設(shè)計.....................................................................................................................2 2.1控制要求..........................................................................................................2 2.2選擇PLC型號................................................................................................2 2.2.1 I/O點數(shù)的估計..................................................................................3 2.2.2 用戶存儲器容量的估算.....................................................................3 2.2.3 CPU功能與結(jié)構(gòu)的選擇....................................................................3 2.2.4機(jī)型選擇..............................................................................................4 2.3 系統(tǒng)設(shè)計流程示意圖....................................................................................4 2.4 I/O分配表.......................................................................................................5 2.5 I/O接線圖.......................................................................................................5 3.軟件設(shè)計....................................................................................................................6 3.1設(shè)計梯形圖.....................................................................................................6 3.3.1 梯形圖編程語言概述.........................................................................6 3.3.2 梯形圖指令程序................................................................................6 3.2設(shè)計指令表......................................................................................................8 4.調(diào)試..........................................................................................................................10 5.結(jié)束語.......................................................................................................................11 6.參考文獻(xiàn)...................................................................................................................12
I
1.概述
在電氣信息時代的今天,電動機(jī)一直在現(xiàn)代化的生產(chǎn)和生活中起著十分重要的作用。無論是在工農(nóng)業(yè)生產(chǎn)還是在日常生活中的家用電器,都大量地使用著各種各樣的電動機(jī)。因此對電動機(jī)的控制變得越來越重要了。電動機(jī)的控制技術(shù)的發(fā)展得力于微電子技術(shù)、電力電子技術(shù)、傳感器技術(shù)、永磁材料技術(shù)、自動控制技術(shù)、微機(jī)應(yīng)用技術(shù)的最新發(fā)展成就。正是這些技術(shù)的進(jìn)步使電動機(jī)控制技術(shù)化。
步進(jìn)電機(jī)是機(jī)電控制中一種常用的執(zhí)行機(jī)構(gòu),其原理是通過對它每相線圈中的電流和順序切換來使電機(jī)作步進(jìn)式旋轉(zhuǎn)。驅(qū)動電路由脈沖信號來控制,所以調(diào)節(jié)脈沖信號的頻率便可改變步進(jìn)電機(jī)的轉(zhuǎn)速。通俗地說:當(dāng)步進(jìn)驅(qū)動器接收到一個脈沖信號,它就驅(qū)動步進(jìn)電機(jī)按設(shè)定的方向轉(zhuǎn)動一個固定的角度(及步進(jìn)角)。通過控制脈沖個數(shù)即可以控制角位移量,從而達(dá)到準(zhǔn)確定位的目的。同時通過控制脈沖頻率來控制電機(jī)轉(zhuǎn)動的速度和加速度,從而達(dá)到調(diào)速的目的。
PLC全稱可編程控制器,是在電器控制技術(shù)和計算機(jī)技術(shù)的基礎(chǔ)上開發(fā)出來的,并逐漸發(fā)展成為以微機(jī)處理器為核心,把自動化技術(shù)、計算機(jī)技術(shù)、通信技術(shù)融為一體的新型工業(yè)控制裝置。隨著PLC性價比的不斷提高,其應(yīng)用領(lǐng)域還將不斷擴(kuò)大。PLC對步進(jìn)電機(jī)具有良好的控制能力,利用其高速脈沖輸出功能或運(yùn)動控制功能,即可實現(xiàn)對步進(jìn)電機(jī)的控制。利用PLC控制步進(jìn)電機(jī),其脈沖分配可以由軟件實現(xiàn),也可由硬件組成。
2.硬件設(shè)計
2.1控制要求
在步進(jìn)電機(jī)單元完成本實驗。
使用移位寄存器指令,可以大大簡化程序設(shè)計。移位寄存器指令所描述的操作過程如下,若在輸入端輸入一串脈沖信號,在移位脈沖作用下,脈沖信號依次移位到各個寄存器的內(nèi)部繼電器中,并將這些內(nèi)部繼電器的狀態(tài)輸出,每個內(nèi)部繼電器可在不同的時間內(nèi)得到由輸入端輸入的一串脈沖信號。
圖2.1 步進(jìn)電動機(jī)控制的模擬實驗面板圖
2.2選擇PLC型號
選擇合適的機(jī)型是PLC控制系統(tǒng)硬件配置的關(guān)鍵問題。目前,國內(nèi)外生產(chǎn)PLC的廠家很多,不同的廠家的PLC場頻隨談基本功能相似,但有些特殊功能、價格、服務(wù)及使用的編程指令和編程軟件都不同。而同一廠家生產(chǎn)的PLC產(chǎn)品又有不同的系列,同一系列中又有不同的CPU型號,不同系列、不同型號的。因此,如何選擇合適的機(jī)型至關(guān)重要。
PLC的選擇主要應(yīng)從PLC 的機(jī)型、容量、I/O模塊、電源模塊、特殊功能模 2
塊、通信聯(lián)網(wǎng)能力等方面加以綜合考慮。PLC機(jī)型選擇的基本原則是在滿足功能要求及保證可靠、維護(hù)方便的前提下,力爭最佳的性能價格比。選擇時應(yīng)主要考慮到合理的結(jié)構(gòu)型式,安裝方式的選擇,相應(yīng)的功能要求,響應(yīng)速度要求,系統(tǒng)可靠性的要求,機(jī)型盡量統(tǒng)一等因素。
2.2.1I/O點數(shù)的估計
I/O點數(shù)是PLC的一項重要指標(biāo).合理選擇I/O點數(shù)計可使系統(tǒng)滿足控制要求,又可使系統(tǒng)總投資量最低。PLC的輸入輸出總點數(shù)和種類應(yīng)根據(jù)被控對象所需控制的模擬量、開關(guān)量等輸入/輸出設(shè)備情況來確定,一般一個輸入/輸出元件要占用一個輸入/輸出點??紤]到今后的調(diào)整和擴(kuò)充,一般應(yīng)在估計的總點數(shù)上再加上20%到30%的備用量。
2.2.2 用戶存儲器容量的估算
PLC常用的內(nèi)存有EPROM、EEPROM和帶鋰電池供電的RAM。一般微型和小型PLC的存儲容量是固定的,介于1-2KB之間。用戶應(yīng)用程序占用多少內(nèi)存與許多因素有關(guān),如I/O點數(shù)、控制要求、運(yùn)算處理量、程序結(jié)構(gòu)等。因此在程序設(shè)計之前只能粗略的估算。
2.2.3 CPU功能與結(jié)構(gòu)的選擇
PLC的功能日益強(qiáng)大,一般PLC都具有開關(guān)量邏
輯運(yùn)算、定時、計數(shù)、數(shù)據(jù)處理等基本功能,有些PLC還可擴(kuò)展各種特殊功能模塊,如通信模塊、位置控制模塊等,選型時可考慮以下幾點:
1)功能與任務(wù)相適應(yīng)
2)PLC的處理速度應(yīng)滿足實時控制的要求 3)PLC結(jié)構(gòu)合理、機(jī)型統(tǒng)一 4)在線編程合理和離線編程的選擇
2.2.4機(jī)型選擇
綜上所述,可知本次步進(jìn)電動機(jī)控制的模擬中PLC型號選擇:I/O點數(shù)的統(tǒng)計:輸入1點(SD);輸出4點(A、B、C、D),控制步進(jìn)電機(jī)。SD為啟動按鈕。估計PLC用戶程序長度:為I/O點數(shù)的(10-20)倍,選用S7-200 CPU226 CN AC/DC/RLY輸出的PLC即能滿足要求。
2.3 系統(tǒng)設(shè)計流程示意圖
圖2.2 系統(tǒng)設(shè)計流程圖
2.4 I/O分配表
表2.1 I/O分配表
2.5 I/O接線圖
圖2.3 I/O接線圖
3.軟件設(shè)計
3.1設(shè)計梯形圖 3.3.1 梯形圖編程語言概述
梯形圖(LAD)是與電氣控制電路圖相呼應(yīng)的圖形語言。它沿用了繼電器、觸點、串并聯(lián)等術(shù)語和類似的圖形符號,并簡化了符號,還增加了一些功能性的指令。梯形圖是融邏輯操作、控制于一體,面向?qū)ο蟮?、實時的、圖形化的編程語言。梯形圖信號流向清楚、簡單、直觀、易懂,很適合電氣工程人員使用。梯形圖(LAD)在PLC中使用得非常普遍,通常各廠家,各型號PLC都把它作為第一用戶語言。
3.3.2 梯形圖指令程序
3.2設(shè)計指令表
指令語句表(STL)使用助記符來表達(dá)PLC的各種控制功能的。它類似于計算機(jī)的匯編語言,但比匯編語言直觀易懂,編程簡單,因此也是應(yīng)用很廣泛的一種編程語言。這種編程語言可使用簡易編程器編程,但比較抽象,一般于梯形圖語言配合使用,互為互補(bǔ)。目前,大多數(shù)PLC都有語句表編程功能,但各廠家生產(chǎn)PLC的語句表(STL)所用的助記符互不相同,不能兼容。
Network 1 // 網(wǎng)絡(luò)標(biāo)題
LD T40 EU SHRB M0.0, M20.0, +4
Network 2 LD M20.4 ON I0.0 R M20.0, 4
Network 3 LD M20.3 ON I0.0 R M0.1, 1
Network 4 LD M20.0 S M0.1, 1 Network 5 LD I0.0 AN M0.1 = M0.0 Network 6 LD I0.0 AN T41 TON T40, +1
Network 7 LD T40 TON T41, +1
Network 8 LD M20.0 = Q0.0
Network 9 LD M20.1 = Q0.1
Network 10 LD M20.2 = Q0.2
Network 11 LD M20.3 = Q0.3
4.調(diào)試
步進(jìn)電機(jī)的控制系統(tǒng)由可編程控制器和步進(jìn)電機(jī)功率驅(qū)動器組成,控制系統(tǒng)中PLC用來產(chǎn)生控制脈沖;通過PLC編程輸出一定數(shù)量的方波脈沖,控制步進(jìn)電機(jī)的轉(zhuǎn)角;同時通過編程控制脈沖頻率。
在輸入端輸入一串脈沖信號(1000),在移位脈沖作用下,此脈沖信號依次移位(1000-0100-0010-0001-1000-…...)至各個寄存器的內(nèi)部繼電器(Q0.0-Q0.1-Q0.2-Q0.3-Q0.0-……)中,并將這些內(nèi)部繼電器的狀態(tài)輸出(LED燈A亮-B亮-C亮-D亮-A亮-……)。
若將梯形圖網(wǎng)絡(luò)三中復(fù)位指令的指令操作數(shù)M0.1改為M0.2或M0.3,各個寄存器的內(nèi)部繼電器的狀態(tài)輸出將發(fā)生改變(1000-0100-0010-0001,即A亮-B亮-C亮-D亮),不會循環(huán)移位;
若將梯形圖網(wǎng)絡(luò)四中置位指令的指令操作數(shù)M0.1改為M0.2或M0.3,各個寄存器的內(nèi)部繼電器的狀態(tài)輸出將發(fā)生改變(1000-1100-1110-1111,即A亮-AB亮-ABC亮-ABCD亮),不會循環(huán)移位。
5.結(jié)束語
這次課程設(shè)計我不僅把知識融會貫通,而且豐富了大腦,同時在查找資料的過程中也了解了許多課外知識,開拓了視野,認(rèn)識了將來電子的發(fā)展方向,使自己在專業(yè)知識方面和動手能力方面有了質(zhì)的飛躍。
課程設(shè)計是對學(xué)校所學(xué)知識的全面總結(jié)和綜合應(yīng)用,對所學(xué)知識理論的檢驗與總結(jié),能夠培養(yǎng)和提高設(shè)計者獨立分析和解決問題的能力。
在不斷的努力下我的課程設(shè)計終于完成了。課程設(shè)計不僅是對前面所學(xué)知識的一種檢驗,而且也是對自己能力的一種提高。通過這次課程設(shè)計使我明白了自己原來知識太理論化了,面對單獨的課題的是感覺很茫然。自己要學(xué)習(xí)的東西還太多,以前老是覺得自己什么東西都會,什么東西都懂,有點眼高手低。通過這次畢業(yè)設(shè)計,我才明白學(xué)習(xí)是一個長期積累的過程,在以后的工作、生活中都應(yīng)該不斷的學(xué)習(xí),努力提高自己知識和綜合素質(zhì)。
不管學(xué)會的還是學(xué)不會的的確覺得困難比較多,真是萬事開頭難,不知道如何入手。最后終于做完了有種如釋重負(fù)的感覺。此外,還得出一個結(jié)論:知識必須通過應(yīng)用才能實現(xiàn)其價值!有些東西以為學(xué)會了,但真正到用的時候才發(fā)現(xiàn)是兩回事,所以我認(rèn)為只有到真正會用的時候才是真的學(xué)會了。
在設(shè)計過程中,我通過查閱大量有關(guān)資料,與同學(xué)交流經(jīng)驗和自學(xué),并向老師請教等方式,使自己學(xué)到了不少知識,也經(jīng)歷了不少艱辛,但收獲同樣巨大。在整個設(shè)計中我懂得了許多東西,也培養(yǎng)了我獨立工作的能力,樹立了對自己工作能力的信心,相信會對今后的學(xué)習(xí)工作生活有非常重要的影響。
總之,通過這次課程設(shè)計大大提高了動手的能力,使我充分體會到了在創(chuàng)造過程中探索的艱難和成功時的喜悅。雖然這個設(shè)計做的也不太好,但是在設(shè)計過程中所學(xué)到的東西是這次課程設(shè)計的最大收獲和財富,使我終身受益。
6.參考文獻(xiàn)
[1] 劉順禧.電氣控制技術(shù).北京:北京理工大學(xué)出版社,1995 [2] 袁任光.可編程序控制器(PLC)應(yīng)用技術(shù)與實例.第2版.廣州:華南理工大學(xué)出版社,2000 [3] 謝劍英.微型計算機(jī)控制技術(shù).第3版.北京:國防工業(yè)出版社,2001 [4] 西門子公司.SIMATIC S7-200可編程序控制器系統(tǒng)手冊,2000 [5] 鄧則名.電器與可編程序控制器應(yīng)用技術(shù).機(jī)械工業(yè)出版社,1997 [6] 廖常初.PLC編程及應(yīng)用.北京:機(jī)械工業(yè)出版社,2002 [7] 陳在平.可編程控制器技術(shù)與應(yīng)用系統(tǒng)設(shè)計.機(jī)械工業(yè)出版社,2002 [8] 何衍慶.可編程序控制器原理及應(yīng)用技巧.北京:化學(xué)工業(yè)出版社,2000 [9] 譚浩強(qiáng).PLC程序設(shè)計教程.北京:清華大學(xué)出版社,2000
第二篇:三菱PLC與步進(jìn)電機(jī)控制練習(xí)題 1
三菱PLC與步進(jìn)電機(jī)控制練習(xí)題 1
1.參數(shù)設(shè)置與工作要求。
按照自己設(shè)計的電氣圖設(shè)置,主回路由一個帶星-三角降壓啟動的正反轉(zhuǎn)電機(jī)控制回路【正、反轉(zhuǎn)啟動時,星形運(yùn)行時間 4秒,再轉(zhuǎn)換成三角運(yùn)行;正、反轉(zhuǎn)轉(zhuǎn)換時的時間間隔為5 秒】、變頻器控制的單速電機(jī)三速段變速控制回路【設(shè)置參數(shù):變頻器設(shè)置為第一速段為25Hz加速時間 2 秒,第二速段為35Hz、第三速段為50 Hz】、步進(jìn)電機(jī)控制回路【設(shè)置參數(shù):步進(jìn)電機(jī),第一次動作為正向旋轉(zhuǎn)4 圈,脈沖頻400Hz;第二次動作為正向旋轉(zhuǎn) 3圈脈沖頻率400Hz;第三次動作為反向向旋轉(zhuǎn)6圈,脈沖頻率600Hz:步進(jìn)驅(qū)動器設(shè)置為4 細(xì)分,電流設(shè)置為1.5A?!拷M成。競賽以電機(jī)旋轉(zhuǎn)“順時針旋轉(zhuǎn)為正向,逆時針為反向”為準(zhǔn)。
(1)整個動作實現(xiàn)過程應(yīng)采用無人工干預(yù)的方式,由PLC控制實現(xiàn)。
(2)整個動作實現(xiàn)過程不考慮任何特殊情況下的如緊急停車或自動恢復(fù)。
(3)使用SB1作為起動、SB2停止的控制方式,并有工作狀態(tài)指示。
(4)整個控制電路(含主回路與控制回路),必須按自己設(shè)計的圖紙連接實現(xiàn)。
(5)熱繼電器FR1、FR2的整定電流均為0.4A。
2.工藝過程實現(xiàn)。
按下啟動按鈕SB1后,M1按降壓啟動模式(星形)正轉(zhuǎn);4 s后,轉(zhuǎn)入三角形運(yùn)轉(zhuǎn)(為保證轉(zhuǎn)換時不出現(xiàn)短路,應(yīng)在程序上使KMY轉(zhuǎn)成KM△的時間間隔為0.2秒)。同時,步進(jìn)電機(jī)M3第一次正向旋轉(zhuǎn) 4 圈停車;停2s后,變頻器所控電機(jī)M2以第二速段正向旋轉(zhuǎn) 6s停車(時間包含加速時間),第一次動作過程結(jié)束。停 1.5s后,步進(jìn)電機(jī)M3第二次正向旋轉(zhuǎn) 3圈停止;此時再停 2s 后,變頻器所控電機(jī)M2按第一速段反向旋轉(zhuǎn) 8s停車,當(dāng)變頻器所控電機(jī)M2停車的同時電機(jī)M1停轉(zhuǎn)(在停轉(zhuǎn)前的過程中電機(jī)M1一直保持三角形運(yùn)轉(zhuǎn)),第二次動作過程結(jié)束。停5s 后,M1按降壓啟動模式(星形)反轉(zhuǎn);4 s后,轉(zhuǎn)入三角形運(yùn)轉(zhuǎn)(為保證轉(zhuǎn)換時不出現(xiàn)短路,應(yīng)在程序上使KMY轉(zhuǎn)成KM△的時間間隔為 0.2秒)。同時,步進(jìn)電機(jī)M3第三次反向旋轉(zhuǎn)6圈停止;再停2s后,變頻器所控電機(jī)M2按第三速段正向旋轉(zhuǎn),按下停止按鈕SB2后,整個動作過程結(jié)束。
二、不考慮特殊情下系統(tǒng)故障的問題
在編程時考慮例如緊急停止、突然斷電情況下系統(tǒng)當(dāng)時的運(yùn)行狀態(tài),重新啟動時,按下啟動按鈕系統(tǒng)從當(dāng)時狀態(tài)恢復(fù)并繼續(xù)運(yùn)行、按下復(fù)位按鈕再按啟動按鈕系統(tǒng)重新開始從頭運(yùn)行。
第三篇:ARM的步進(jìn)電機(jī)細(xì)分控制報告
基于ARM的步進(jìn)電機(jī)細(xì)分驅(qū)動控制設(shè)計
一、ARM簡介
ARM 公司是一家IP供應(yīng)商,其核心業(yè)務(wù)是IP核以及相關(guān)工具的開發(fā)和設(shè)計。半導(dǎo)體廠商通過購買ARM公司的IP授權(quán)來生產(chǎn)自己的微處理器芯片。由此以來,處理器內(nèi)核來自ARM公司、各芯片廠商結(jié)合自身已有的技術(shù)優(yōu)勢以及芯片的市場定位等因數(shù)使芯片設(shè)計最優(yōu)化,從而產(chǎn)生了一大批高度集成、各據(jù)特色的SOC芯片。
ARM微處理器具有以下特點:采用RISC指令集、使用大量寄存器、ARM/THUMB指令支持、三/五級流水線具有低功耗、低成本、高性能等。
到目前為止,ARM公司的IP核已經(jīng)由ARM7,ARM9發(fā)展到今天的ARM11版本,ARM微處理器及技術(shù)的應(yīng)用已經(jīng)廣泛深入到國民經(jīng)濟(jì)的各個領(lǐng)域, 如工業(yè)控制領(lǐng)域、網(wǎng)絡(luò)應(yīng)用、消費類電子產(chǎn)品及成像和安全產(chǎn)品等領(lǐng)域。
鑒于ARM7所具備的強(qiáng)大功能完全可以滿足本次設(shè)計要求,本次設(shè)計仍使用ARM7系列芯片。
二.步進(jìn)電機(jī)細(xì)分控制方案
1、步進(jìn)電機(jī)細(xì)分技術(shù)簡介
細(xì)分驅(qū)動技術(shù)在七十年代中期由美國學(xué)者首次提出,基本原理是將繞組中的電流細(xì)分。由常規(guī)的矩形波供電改為階梯波供電,此時繞組中的電流將按一定的階梯順序上升和下降,從而將每一自然步進(jìn)行細(xì)分。步進(jìn)電機(jī)細(xì)分控制的本質(zhì)是通過對勵磁繞組中的電流控制,使步進(jìn)電機(jī)合成磁場為均勻離散化的圓形旋轉(zhuǎn)磁場。采用細(xì)分驅(qū)動技術(shù)可以改善步進(jìn)電機(jī)的運(yùn)行品質(zhì),減少轉(zhuǎn)矩波動、抑制振蕩、降低噪音、提高步距分辨率。
2、硬件框圖設(shè)計
系統(tǒng)總體硬件框圖設(shè)計如圖2-1所示:
0
圖2-1總體設(shè)計框圖
3、軟件總體設(shè)計流程圖
圖2-2 軟件設(shè)計流程圖
4、步進(jìn)電機(jī)
圖2-3 28BYJ-48-5VDC步進(jìn)電機(jī)
中間部分是轉(zhuǎn)子,由一個永磁體組成,邊上的是定子繞組。當(dāng)定子的一個繞組通電時,將產(chǎn)生一個方向的電磁場,如果這個磁場的方向和轉(zhuǎn)子磁場方向不在同一條直線上,那么定子和轉(zhuǎn)子的磁場將產(chǎn)生一個扭力將定子扭轉(zhuǎn)。依次改變繞組的磁場,就可以使步進(jìn)電機(jī)正轉(zhuǎn)或反轉(zhuǎn)(比如通電次序為A->B->C->D正轉(zhuǎn),反之則反轉(zhuǎn))。而且按照通電順序的不同,可分為單四拍(A-B-C-D)、雙四拍(AB-BC-CD-DA)、單雙八拍(A-AB-B-BC-C-CD-D-DA)三種工作方式。單四拍與雙四拍的步距角相等,但單四拍的轉(zhuǎn)動力矩小。八拍工作方式的步距角是單四拍與雙四拍的一半,因此,八拍工作方式既可以保持較高的轉(zhuǎn)動力矩又可以提高控制精度。
由于步進(jìn)電機(jī)的驅(qū)動電流較大,單片機(jī)不能直接驅(qū)動,一般都是使用ULN2003達(dá)林頓陣列驅(qū)動,當(dāng)然,使用下拉電阻或三極管也是可以驅(qū)動的,只不過效果不是那么好,產(chǎn)生的扭力比較小。
5、電機(jī)驅(qū)動ULN2003簡介
ULN2003 是高耐壓、大電流復(fù)合晶體管陣列,由七個硅NPN 復(fù)合晶體管組成。ULN2003是大電流驅(qū)動陣列,多用于單片機(jī)、智能儀表、PLC、數(shù)字量輸出卡等控制電路中??芍苯域?qū)動繼電器等負(fù)載。輸入5VTTL電平,輸出可達(dá)500mA/50V。ULN2003是高耐壓、大電流達(dá)林頓陳列,由七個硅NPN達(dá)林頓管組成。
圖2-4 ULN2003芯片引腳圖
該電路的特點如下: ULN2003的每一對達(dá)林頓都串聯(lián)一個2.7K的基極電阻,在5V的工作電壓下它能與TTL和CMOS電路 直接相連,可以直接處理原先需要標(biāo)準(zhǔn)邏輯緩沖器來處理的數(shù)據(jù)。ULN2003 是高壓大電流達(dá)林頓晶體管陣列系列產(chǎn)品,具有電流增益高、工作電壓高、溫度范圍寬、帶負(fù)載能力強(qiáng)等特點,適應(yīng)于各類要求高速大功率驅(qū)動的系統(tǒng)。ULN2003 工作電壓高,工作電流大,灌電流可達(dá)500mA,并且能夠在關(guān)態(tài)時承受50V 的電壓,輸出還可以在高負(fù)載電流并行運(yùn)行。其接線圖如下所示:
圖2-5 步進(jìn)電機(jī)驅(qū)動電路 6、12864液晶顯示簡介
12864是128*64點陣液晶模塊的點陣數(shù)簡稱。液晶屏類型:STN FSTN;模塊顯示效果:黃綠底黑字、藍(lán)底白字、白底黑字;驅(qū)動方式:1/64 DUTY 1/9 BIAS;背光:LED白色、LED黃綠色;控制器:KS0108或兼容 ST7920 T6963C;數(shù)據(jù)總線:8 位并口/6800 方式 串口;工作溫度:-20℃~+70℃;儲藏溫度:-30℃~+80℃;點陣格式:128 x 64;現(xiàn)實角度:6:00直視;基本用途:該點陣的屏顯成本相對較低,適用于各類儀器,小型設(shè)備的顯示領(lǐng)域。其接線圖如下所示:
圖2-6 12864液晶顯示與LPC2131接口接線圖
三、硬件電路圖
圖2-7 系統(tǒng)硬件電路圖
四、總結(jié)
此次基于ARM的步進(jìn)電機(jī)細(xì)分驅(qū)動控制設(shè)計,由于掌握知識及時間有限,我們目前只實現(xiàn)了對步進(jìn)電機(jī)正反轉(zhuǎn)控制以及三種運(yùn)行方式(單四拍、雙四拍、單雙八拍)的選擇控制,并且實現(xiàn)了在12864液晶顯示屏上顯示相關(guān)的信息。連接好硬件電路,上電復(fù)位,程序開始運(yùn)行。此時步進(jìn)電機(jī)不轉(zhuǎn)動,按下啟停鍵,步進(jìn)電機(jī)開始轉(zhuǎn)動,初始值設(shè)為正傳,按反轉(zhuǎn)鍵開始反轉(zhuǎn),再按正傳鍵則開始正傳。當(dāng)按下加速鍵時電機(jī)開始加速,當(dāng)按下減速鍵時電機(jī)開始減速。
當(dāng)然,此次課程設(shè)計還存在很多問題,實現(xiàn)的功能較簡單,這都需要以后不斷加強(qiáng)相關(guān)知識的學(xué)習(xí)從而不斷提高自己。
最后,感謝李紅巖老師和黃夢濤老師的辛勤教誨。
五、心得體會
這次課程設(shè)計的硬件部分由我來完成,雖然不用焊接電路,但是在畫硬件圖的過程中仍遇到很多問題。例如對Protel軟件的不熟悉,許多操作需要多次嘗試,才能正確完成;還有就是在電路的連接過程中,由于自己的馬虎,線路有錯連和少連的現(xiàn)象。但是經(jīng)過自己的不斷努力,最終還是完成了任務(wù)。
通過這次課程設(shè)計,我從一開始對系統(tǒng)的不太熟悉,到能開發(fā)一個簡單的系
統(tǒng),在這整個過程中我學(xué)到了很多東西,掌握了一些常用的開發(fā)技能,也發(fā)現(xiàn)了大量的問題,有些在設(shè)計過程中已經(jīng)解決,有些還有待今后慢慢學(xué)習(xí)。只要學(xué)習(xí)就會有更多的問題,有更多的難點,但也會有更多的收獲。
在本次ARM課程設(shè)計訓(xùn)練中,不僅鍛煉了自己的動手能力,也在向同學(xué)老師請教的過程中學(xué)到了不少東西,十分感謝老師和同學(xué)的幫助。通過本次課程設(shè)計,我最深的感觸便是,許多東西都需要自己親自去做去實踐去學(xué)習(xí),才能真正的弄懂,才能真正的學(xué)到東西。
在整個的設(shè)計和實踐過程中,通過老師的指導(dǎo)和同學(xué)的幫助,我們組最終在最后時間完成了任務(wù)。通過這次課程設(shè)計,才知道自己需要學(xué)習(xí)的東西還有很多,下來之后一定得加緊學(xué)習(xí)。平常我們都只是在課堂上學(xué)習(xí),通過這次課程設(shè)計,實現(xiàn)了從理論到實踐的飛躍。增強(qiáng)了認(rèn)識問題,分析問,解決問題的能力。
最后感謝老師對我們此次課設(shè)的耐心指導(dǎo)和幫助!
經(jīng)過這次ARM課程設(shè)計,使我對這學(xué)期ARM課程做了全面的復(fù)習(xí),并學(xué)會將其應(yīng)用于實踐,在這次基于ARM的步進(jìn)電機(jī)細(xì)分控制中,我對于ARM、步進(jìn)電機(jī)、液晶顯示及相關(guān)軟件都有了進(jìn)一步的認(rèn)識,也是我發(fā)現(xiàn)團(tuán)隊合作的重要性,更激起了我對于電子設(shè)計方面的熱情。
不過,通過這次課程設(shè)計,我同樣感受到了自身知識的缺乏,如不太熟悉使用上位機(jī)進(jìn)行監(jiān)控、ARM的掌握不夠透徹、還不能脫離參考資料獨立進(jìn)行軟硬件設(shè)計等,這些都需要我以后不斷加強(qiáng)學(xué)習(xí)鍛煉加以增強(qiáng),這將對于我今后進(jìn)一步的學(xué)習(xí)打下基礎(chǔ),我以后會不斷根據(jù)自身缺點進(jìn)行學(xué)習(xí)鍛煉,使自己不斷提高。最后,感謝老師的辛勤教誨!
六、參考文獻(xiàn)
1.ARM嵌入式系統(tǒng)基礎(chǔ)教程[第2版] 主編 周立功 北京航空航天大學(xué)出版社.2008 2.步進(jìn)電動機(jī)及其驅(qū)動控制系統(tǒng) 主編 劉寶廷 哈爾濱工業(yè)大學(xué)出版社.1997
附錄
#include“config.h” #define
MOTOA
1<<10
// P0.10
#define
MOTOB
1<<11
// P0.11
#define
MOTOC
1<<12
// P0.12 #define
MOTOD
1<<13
// P0.13 #define
key1
1<<17
// 加速 #define
key2
1<<18
// 減速 #define
key3
1<<19
//正反轉(zhuǎn) #define
key4
1<<20
//啟停
#define
KEYCON 0x001e0000 // LED控制字 #define
MOTOCON 0x00003c00 // MOTO控制字
#define
GPIOSET(PIN)IO0SET = PIN
// 方便修改置位端口 #define
GPIOCLR(PIN)IO0CLR = PIN
// 方便修改清位端口 #define
RS
1<<9
//P0.9 #define
SID
1<<6
//P0.6 #define
E
1<<4
//P0.4 #define
PSB
1<<2
//P0.2并行或串行,選擇低電平串行模式 #define
RST
1<<25
//P1.25,復(fù)位腳
unsigned char DAT1[64]=“低速—單四拍A-B-C-D運(yùn)行方式”;unsigned char DAT2[64]=“中速—雙四拍AB-BC-CD-DA運(yùn)行方式”;unsigned char DAT3[64]=“高速—單雙八拍A-AB-B-BC-C-CD-D-DA運(yùn)行方式”;unsigned char DAT4[64]=“低速反轉(zhuǎn)—單四拍D-C-B-A運(yùn)行方式”;unsigned char DAT5[64]=“中速反轉(zhuǎn)—雙四拍AD-DC-CB-BA運(yùn)行方式”;unsigned char DAT6[64]=“高速反轉(zhuǎn)—單雙八拍D-CD-C-BC-B-AB-A-DA運(yùn)行方式”;unsigned char DAT7[64]=“
停
止
”;unsigned char DAT8[64]=“步進(jìn)電機(jī)細(xì)分控制測控1002班:劉怡楠&石娟利”;
void TransferCom(unsigned char data0);void TransferData(unsigned char data1);void delay(unsigned int m);void lcd_mesg(unsigned char *adder1);void SendByte(unsigned char Dbyte);void init(void);void LCD12864_init(void);void DelayNS(uint32 dly);void MOTO_Mode1(uint8 i);
// A-B-C-D void MOTO_Mode10(uint8 i);void MOTO_Mode2(uint8 i);
// AB-BC-CD-DA-AB void MOTO_Mode20(uint8 i);void MOTO_Mode3(uint8 i);
// A-AB-B-BC-C-CD-D-DA-A void MOTO_Mode30(uint8 i);
int main(void){
unsigned int t=0;//啟停標(biāo)志
unsigned int f=0;//正反轉(zhuǎn)標(biāo)志
unsigned int i=0;//電機(jī)運(yùn)行模式標(biāo)志
PINSEL0=0x00000000;
PINSEL1=0X00000000;
PINSEL2&=~(0x00000006);//設(shè)置所有I/O口為普通GPIO口
IO0DIR =MOTOCON;// 配置I/O輸入輸出方向
LCD12864_init();//液晶端口初始化
while((IO0PIN&key1)&&(IO0PIN&key2)&&(IO0PIN&key3)&&(IO0PIN&key4)!=0)
{ init();
lcd_mesg(DAT8);
//顯示界面
}
while(1)
{
if(t==0)//電機(jī)停止
{ init();
lcd_mesg(DAT7);
IO0CLR=MOTOCON;
if((IO0PIN&key4)==0)t=!t;//key4控制啟停轉(zhuǎn)換
} else if(t==1)//電機(jī)啟動
{ if((IO0PIN&key1)==0)//key1控制加速
{ if(i>=2)i=2;
else i++;
DelayNS(10);
}
if((IO0PIN&key2)==0)//key2控制減速
{ if(i<=0)i=0;
else i--;
DelayNS(10);
}
if((IO0PIN&key3)==0)f=!f;//key3控制正反轉(zhuǎn)
if((IO0PIN&key4)==0)t=!t;
if(f==0)
//正轉(zhuǎn)
{ if(i==0)MOTO_Mode1(10);//低速
else if(i==1)MOTO_Mode2(10);//中速
else if(i==2)MOTO_Mode3(10);//高速
}
else if(f==1)//反轉(zhuǎn)
{ if(i==0)MOTO_Mode10(10);//低速
else if(i==1)MOTO_Mode20(10);//中速
else if(i==2)MOTO_Mode30(10);//高速
} }
}
return(0);}
void DelayNS(uint32 dly){ uint32 i;
for(;dly>0;dly--)
for(i=0;i<5000;i++);} void MOTO_Mode1(uint8 i)
//單四拍A-B-C-D運(yùn)行方式 {
while((IO0PIN&key1)&&(IO0PIN&key2)&&(IO0PIN&key3)&&(IO0PIN&key4)!=0)
{
init();
lcd_mesg(DAT1);//顯示字符串DAT1
/* A */
GPIOSET(MOTOA);
DelayNS(i);
GPIOCLR(MOTOA);
/* B */
GPIOSET(MOTOB);
DelayNS(i);
GPIOCLR(MOTOB);
/* C */
GPIOSET(MOTOC);
DelayNS(i);
GPIOCLR(MOTOC);
/* D */
GPIOSET(MOTOD);
DelayNS(i);
GPIOCLR(MOTOD);
} } void MOTO_Mode10(uint8 i)
//單四拍D-C-B-A運(yùn)行方式 {
while((IO0PIN&key1)&&(IO0PIN&key2)&&(IO0PIN&key3)&&(IO0PIN&key4)!=0)
{
init();
lcd_mesg(DAT4);
//顯示字符串DAT4
/* D */
GPIOSET(MOTOD);
DelayNS(i);
GPIOCLR(MOTOD);
/* C */
GPIOSET(MOTOC);
DelayNS(i);
GPIOCLR(MOTOC);
/* B */
GPIOSET(MOTOB);
DelayNS(i);
GPIOCLR(MOTOB);
/* A */
GPIOSET(MOTOA);
DelayNS(i);
GPIOCLR(MOTOA);
} } void MOTO_Mode2(uint8 i)
//雙四拍AB-BC-CD-DA運(yùn)行方式 {
while((IO0PIN&key1)&&(IO0PIN&key2)&&(IO0PIN&key3)&&(IO0PIN&key4)!=0)
{
init();
lcd_mesg(DAT2);
//顯示字符串DAT2
GPIOSET(MOTOA);
GPIOSET(MOTOB);
DelayNS(i);
GPIOCLR(MOTOA);
GPIOCLR(MOTOB);
/* BC */
GPIOSET(MOTOB);
GPIOSET(MOTOC);
DelayNS(i);
GPIOCLR(MOTOB);
GPIOCLR(MOTOC);
/* CD */
GPIOSET(MOTOC);
GPIOSET(MOTOD);
DelayNS(i);
GPIOCLR(MOTOC);
GPIOCLR(MOTOD);
/* DA */
GPIOSET(MOTOD);
GPIOSET(MOTOA);
DelayNS(i);
GPIOCLR(MOTOD);
GPIOCLR(MOTOA);
} } void MOTO_Mode20(uint8 i)
//雙四拍AD-DC-CB-BA運(yùn)行方式 {
while((IO0PIN&key1)&&(IO0PIN&key2)&&(IO0PIN&key3)&&(IO0PIN&key4)!=0)
{
init();
lcd_mesg(DAT5);
//顯示字符串DAT5
GPIOSET(MOTOA);
GPIOSET(MOTOD);
DelayNS(i);
GPIOCLR(MOTOA);
GPIOCLR(MOTOD);
/* DC */
GPIOSET(MOTOD);
GPIOSET(MOTOC);
DelayNS(i);
GPIOCLR(MOTOD);
GPIOCLR(MOTOC);
/* CB */
GPIOSET(MOTOC);
GPIOSET(MOTOB);
DelayNS(i);
GPIOCLR(MOTOC);
GPIOCLR(MOTOB);
/* BA */
GPIOSET(MOTOB);
GPIOSET(MOTOA);
DelayNS(i);
GPIOCLR(MOTOB);
GPIOCLR(MOTOA);
} } void MOTO_Mode3(uint8 i)
//單雙八拍A-AB-B-BC-C-CD-D-DA運(yùn)行方式 {
while((IO0PIN&key1)&&(IO0PIN&key2)&&(IO0PIN&key3)&&(IO0PIN&key4)!=0)
{
init();
lcd_mesg(DAT3);
//顯示字符串DAT3
/* A */
GPIOSET(MOTOA);
DelayNS(i);
GPIOCLR(MOTOA);
/* AB */
GPIOSET(MOTOA);
GPIOSET(MOTOB);
DelayNS(i);
GPIOCLR(MOTOA);
GPIOCLR(MOTOB);
/* B */
GPIOSET(MOTOB);
DelayNS(i);
GPIOCLR(MOTOB);
/* BC */
GPIOSET(MOTOB);
GPIOSET(MOTOC);
DelayNS(i);
GPIOCLR(MOTOB);
GPIOCLR(MOTOC);
/* C */
GPIOSET(MOTOC);
DelayNS(i);
GPIOCLR(MOTOC);
/* CD */
GPIOSET(MOTOC);
GPIOSET(MOTOD);
DelayNS(i);
GPIOCLR(MOTOC);
GPIOCLR(MOTOD);
/* D */
GPIOSET(MOTOD);
DelayNS(i);
GPIOCLR(MOTOD);
/* DA */
GPIOSET(MOTOD);
GPIOSET(MOTOA);
DelayNS(i);
GPIOCLR(MOTOD);
GPIOCLR(MOTOA);
} } void MOTO_Mode30(uint8 i)
//單雙八拍D-CD-C-BC-B-AB-A-DA運(yùn)行方式 {
while((IO0PIN&key1)&&(IO0PIN&key2)&&(IO0PIN&key3)&&(IO0PIN&key4)!=0)
{
init();
lcd_mesg(DAT6);
//顯示字符串DAT6
/* D */
GPIOSET(MOTOD);
DelayNS(i);
GPIOCLR(MOTOD);
/* CD */
GPIOSET(MOTOC);
GPIOSET(MOTOD);
DelayNS(i);
GPIOCLR(MOTOC);
GPIOCLR(MOTOD);
/* C */
GPIOSET(MOTOC);
DelayNS(i);
GPIOCLR(MOTOC);
/* BC */
GPIOSET(MOTOB);
GPIOSET(MOTOC);
DelayNS(i);
GPIOCLR(MOTOB);
GPIOCLR(MOTOC);
/* B */
GPIOSET(MOTOB);
DelayNS(i);
GPIOCLR(MOTOB);
/* AB */
GPIOSET(MOTOA);
GPIOSET(MOTOB);
DelayNS(i);
GPIOCLR(MOTOA);
GPIOCLR(MOTOB);
/* A */
GPIOSET(MOTOA);
DelayNS(i);
GPIOCLR(MOTOA);
/* DA */
GPIOSET(MOTOD);
GPIOSET(MOTOA);
DelayNS(i);
GPIOCLR(MOTOD);
GPIOCLR(MOTOA);
} } void delay(unsigned int m){
unsigned int i,j;
for(i=0;i for(j=0;j<50;j++);} void init(void){ delay(40); //大于40ms的延時程序 IO0SET=PSB;//設(shè)置為串行工作方式 delay(1); IO1CLR=RST;//復(fù)位 delay(1); IO1SET=RST;//復(fù)位置高 delay(10); TransferCom(0x30);//RE=0,G=0,圖片顯示關(guān) delay(100); TransferCom(0x0C);//D=1,顯示開 delay(100); TransferCom(0x01);//清屏 delay(10); TransferCom(0x06);//模式設(shè)置,光標(biāo)從右向左加1位移動 delay(100);} void lcd_mesg(unsigned char *adder1){ unsigned char i; TransferCom(0x80); delay(100); for(i=0;i<32;i++) { TransferData(*adder1); adder1++; } TransferCom(0x90); delay(100); for(i=32;i<64;i++) { TransferData(*adder1); adder1++; } } void SendByte(unsigned char Dbyte){ unsigned char i; for(i=0;i<8;i++) { IO0CLR=E; if((Dbyte&0x80)==0x80)IO0SET=SID; else IO0CLR=SID; Dbyte=Dbyte<<1; IO0SET=E; IO0CLR=E; } } void TransferCom(unsigned char data0){ IO0SET=RS; SendByte(0xf8); // 11111,RW=0,RS=1,0 SendByte(0xf0&data0);//高4位 SendByte(0xf0&data0<<4);//低4位 IO0CLR=RS; } void TransferData(unsigned char data1){ IO0SET=RS; SendByte(0xfa); // 11111,RW=0,RS=1,0 SendByte(0xf0&data1);//高4位 SendByte(0xf0&data1<<4);//低4位 IO0CLR=RS;} void LCD12864_init(void){ IO0DIR|=(E|SID|RS);//設(shè)置為輸出 IO0CLR=(E|SID|RS); IO1DIR|=RST; IO1CLR=RST; //復(fù)位 delay(1); IO1SET=RST; //復(fù)位置高 } 高性能的PLC控制步進(jìn)電機(jī)在機(jī)器人機(jī)械手 摘要:在最近幾年,一個完整的多軸數(shù)字控制系統(tǒng)已經(jīng)研制成功。本文 介紹了一個用工業(yè)可編程邏輯控制(PLC)來控制五軸轉(zhuǎn)子位置,方向和速度,從而減少電路元件的數(shù)量,降低成本和提高可靠性。一些實驗結(jié)果表明是由控制器的高性能和功能得來的。關(guān)鍵詞: PLC,機(jī)器人和步進(jìn)電機(jī)。 1、簡介 運(yùn)動控制的主要目的是設(shè)計控制系統(tǒng)能實現(xiàn)真正的自動運(yùn)動機(jī)器。這種性能必須達(dá)到優(yōu)化機(jī)械,即生產(chǎn)力實現(xiàn)更高的工作速度,盡量減少能源要求,減少了使機(jī)械磨損的因素(1)。一個完全數(shù)字化的體系來說通過對基于總線控制系統(tǒng)的最大的靈活性應(yīng)用系統(tǒng)提供高性能的伺服控制是必需的。在大多數(shù)情況下,PLC是一種固態(tài)裝置,設(shè)計工作在嘈雜的工業(yè)環(huán)境并執(zhí)行所有的邏輯功能,早先就實現(xiàn)了對鼓機(jī)電繼電器開關(guān),機(jī)械定時器和計數(shù)器的使用(2)。步進(jìn)電機(jī),通常用于微型電子計算機(jī),現(xiàn)已廣泛應(yīng)用于機(jī)器人(3)。在本文中,我提出了各軸包含一個由plc控制的步進(jìn)電機(jī)的五檔速度控制軸機(jī)器人。(SLC 150) 2、可編程控制器 PLC,像一臺電腦,采用了微處理器芯片進(jìn)行處理和存儲芯片來存儲方案。PLC的基本結(jié)構(gòu)如圖1所示,輸入設(shè)備是監(jiān)控機(jī)器或被控制的過程的傳感器。這些傳感器的狀態(tài)(ON或OFF)被輸送到PLC控制器。取決于這些傳感器輸入狀態(tài)的PLC的輸出可能切換到活力馬達(dá),繼電器,閥門等....,來控制機(jī)器或過程。SLC150的PLC[2]有10個輸入,編號從1到10的,然后再從10數(shù)到1的IO當(dāng)作 IO1的輸入。SLCI50有12個輸出編號從11至16,和111至116。 3、機(jī)器人的描述、圖2顯示了一個典型的機(jī)器人(4)。它由一英寸上有8-32螺紋孔的12英寸至14英寸大小的底板和炮塔——一個周圍配備了傳送帶的旋轉(zhuǎn)平臺(它的每一英寸的中心有8-32螺紋孔)。這些孔配合安裝在機(jī)器人的手臂和手腕馬達(dá)的相對于其中心的不同地;,炮塔鉗,可連接炮塔和炮塔軸;炮塔裝載,可連接底板唇,覆蓋炮塔馬達(dá),和支撐炮塔軸和炮塔。炮塔軸是用來保留炮塔和炮塔內(nèi)的炮架集合,炮塔軸承(有兩個)的 呈遞擔(dān)保裝入舉行炮塔軸,推力 軸承安裝在炮塔的軸上,以適應(yīng) 機(jī)器人的重量,提供平穩(wěn)和旋轉(zhuǎn) 炮塔,推力墊圈安裝在炮塔軸接口的推力軸承的安裝和炮塔鉗總成(他們是在任的推力軸承一面放置),炮塔齒輪(有二分之一254?0tha屆一,步進(jìn)電機(jī)(五電機(jī)),數(shù)字編碼器,40齒)臂環(huán)節(jié),是一個機(jī)器人手爪手,提供下巴 位置和動態(tài)壓縮力信息到控制器。 一、設(shè)計摘要 摘要: DSP數(shù)字信號處理(Digital Signal Processing,簡稱DSP)是一門涉及許多學(xué)科而又廣泛應(yīng)用于許多領(lǐng)域的新興學(xué)科。DSP 芯片是一種特別適合數(shù)字信號處理運(yùn)算的微處理器,主要用來實時、快速地實現(xiàn)各種數(shù)字信號處理算法用DSP 芯片實現(xiàn)IIR 數(shù)字濾波器,不僅具有精確度高、不受環(huán)境影響等優(yōu)點,而且因DSP 芯片的可編程性,可方便地修改濾波器參數(shù),從而改變?yōu)V波器的特性,設(shè)計十分靈活。IIR數(shù)字濾波器有其獨特的優(yōu)點,IIR數(shù)字濾波器單位響應(yīng)為無限脈沖序列, IIR數(shù)字濾波器采用遞歸型結(jié)構(gòu),即結(jié)構(gòu)上帶有反饋環(huán)路。 本課題主要應(yīng)用MATLAB軟件設(shè)計IIR數(shù)字濾波器,并對所設(shè)計的濾波器進(jìn)行仿真;應(yīng)用DSP集成開發(fā)環(huán)境——CCS調(diào)試匯編程序。利用MATLAB仿真得到的濾波器系數(shù),編程實現(xiàn)IIR數(shù)字濾波器,得出濾波結(jié)果波形,并對結(jié)果進(jìn)行分析與總結(jié)。 關(guān)鍵字:DSP IIR濾波器 編程 二、設(shè)計目的 (1)通過設(shè)計對DSP芯片有進(jìn)一步的了解。(2)掌握IIR濾波器的設(shè)計方法。(3)培養(yǎng)一定的匯編及c語言能力。 三、設(shè)計原理 3.1 IIR數(shù)字濾波器的理論分析 從IIR數(shù)字濾波器的實現(xiàn)來看,有直接型、級聯(lián)型、并聯(lián)型和格型等基本網(wǎng)絡(luò)結(jié)構(gòu)。不同的結(jié)構(gòu)形式會有不同的運(yùn)算誤差,其穩(wěn)定性、運(yùn)算速度、所占用的存儲空間等也有所不同。其中直接Ⅱ型僅需要N級延遲單元,且可作為級聯(lián)型和并聯(lián)型結(jié)構(gòu)中的基本單元,是最常用的IIR數(shù)字濾波器結(jié)構(gòu)之一。IIR數(shù)字濾波器的設(shè)計方法有兩類[4],一類是借助于模擬濾波器的設(shè)計方法設(shè)計出模擬濾波器,利用沖激響應(yīng)不變法或雙線性變換法轉(zhuǎn)換成數(shù)字濾波器,然后用硬件或軟件實現(xiàn);另一類是直接在頻域或時域中進(jìn)行設(shè)計,設(shè)計時需要作輔助工具。對系統(tǒng)傳遞函數(shù)為 [3] H(z)??bzrr?0Nk?0M?r 1??akz?k對應(yīng)的差分方程為: y(n)??brx(n?r)??aky(n?k) r?0k?1MN的IIR數(shù)字波濾器來說,設(shè)計的任務(wù)就是尋求一種因果關(guān)系和物理上可實現(xiàn)的系統(tǒng)傳遞函數(shù)使H(z)滿足上述的關(guān)系,為此可這樣使其頻率響應(yīng)能夠滿足所希望得到的頻域指標(biāo)。 3.2 TMS320C5502的體系結(jié)構(gòu) TMS320VC5402處理器在本系列中處于先進(jìn)水平。它具有運(yùn)算速度快,內(nèi)部存儲空間大,外部接口性能好等優(yōu)點。所以我選擇了技術(shù)上比較先進(jìn),價格又較便宜的C5402作為硬件開發(fā)對象。下面結(jié)合C5402的實際情況,介紹一下該芯片的體系結(jié)構(gòu)。C5402共有144個引腳,其中有20根地址線AO-A19,16根數(shù)據(jù)線DO-D15,4個外部可屏蔽引腳INTO#-INT3#和一個不可屏蔽中斷引腳BIO#,剩下的引腳可以分成以下幾類:存儲器控制引腳,時鐘/晶振引腳,多通道緩沖串口引腳,主機(jī)接口通訊引腳,電源引腳,初始化和復(fù)位引腳,通用輸入/輸出引腳,以及用于測試的IEEE1149.1標(biāo)準(zhǔn)JTAG口。 3.3 IIR數(shù)字濾波器的設(shè)計流程 在設(shè)計濾波器時首先要有清晰的思路,因此流程圖的設(shè)計至關(guān)重要。本設(shè)計采用的是基于DSP的IIR數(shù)字濾波,針對其要完成的功能,對其流程進(jìn)行了初步規(guī)劃,如圖1所示: 開始系統(tǒng)初始化分配數(shù)據(jù)空間設(shè)置數(shù)據(jù)指針從指定端口讀數(shù)據(jù)x(n)并從數(shù)據(jù)存儲器讀讀取系數(shù)完成數(shù)據(jù)的乘加運(yùn)算修改數(shù)據(jù)指針為下一次乘加運(yùn)算做準(zhǔn)備保存結(jié)果從指定端口輸出結(jié)果圖1 IIR數(shù)字濾波器設(shè)計流程 根據(jù)設(shè)計流程,通過DSP仿真軟件編譯出適合參數(shù)要求的匯編程序。運(yùn)用匯編語言進(jìn)行程序編寫使其具有更好的實時性,此外運(yùn)用匯編語言編寫更有助于以后的設(shè)計拓展。 利用TMS320C5402實現(xiàn)IIR的程序中應(yīng)注意以下幾點: (1)數(shù)據(jù)存放要求。因為采用MAC指令和循環(huán)尋址,所以輸入數(shù)據(jù)和濾波器系數(shù)的存放要按照一定的要求。數(shù)據(jù)塊和系數(shù)塊都要放在雙尋址數(shù)據(jù)存儲區(qū)。(2)循環(huán)尋址的使用。為了使用循環(huán)尋址,除了對數(shù)據(jù)的存放有要求外,先還要設(shè)置BK為塊長N。由于使用了循環(huán)尋址,數(shù)據(jù)和系數(shù)的指針在操作后以循環(huán)的方式增加1。 (3)數(shù)據(jù)的初始化。輸入數(shù)據(jù)塊要初始化為全0。這樣在運(yùn)算中不會對輸入產(chǎn)生影響。 四、IIR數(shù)字濾波器的軟件和硬件設(shè)計 4.1 IIR數(shù)字濾波器的數(shù)據(jù)存儲器設(shè)計 TMS320C54X定點DSP提供了單周期乘/累加指令MAC和循環(huán)尋址方式,使IIR數(shù)字濾波器每個樣值的計算可以在一個周期內(nèi)完成。IIR數(shù)字濾波器每個樣值的計算就是實現(xiàn)兩數(shù)組對應(yīng)項乘積的累加和。在計算時有前向通道和反饋通道兩部分,因此在計算設(shè)計時要充分考慮x(n)、y(n)和h(n)系數(shù)的存放位置,并正確初始化這兩個存儲塊指針,這樣在計算中才能夠準(zhǔn)確取數(shù)據(jù),實現(xiàn)乘加運(yùn)算。數(shù)據(jù)存儲器X:AR2X0X1X2AR1COEF:數(shù)據(jù)存儲器B2B1B0A2A1 圖2 存儲過程 4.2 IIR濾波器的MATLAB輔助設(shè)計 對于脈沖響應(yīng)不變法,它是將s域內(nèi)的H(s)轉(zhuǎn)換成z域內(nèi)的H(z),但是在映射時,S域內(nèi)不能一一對應(yīng)到Z域內(nèi)的單位圓上,因此容易在仿真中易產(chǎn)生混疊現(xiàn)象,影響實驗效果?;诖耍敬卧O(shè)計在MATLAB的仿真中優(yōu)先考慮應(yīng)用雙線性變換法。 IIR低通數(shù)字濾波器根據(jù)相關(guān)技術(shù)指標(biāo)進(jìn)行matlab仿真,從而計算出相應(yīng)的傳輸函數(shù)。其仿真結(jié)果結(jié)果如圖3所示: 圖3 利用matlab仿真圖 根據(jù)以上仿真結(jié)果及相應(yīng)的系數(shù)和N值,在相關(guān)技術(shù)指標(biāo)不變的情況下,我選用了ChebyshevI型雙線性變換法。 4.3基于DSP的IIR數(shù)字濾波器的硬件設(shè)計 硬件設(shè)計總體方案: TI公司的2000系列和5000系列的DSP都通用型的芯片,考慮到2000系列的DSP多用于控制方面,而5000系列較2000系列具有更高的時鐘頻率、更低的價格和更加強(qiáng)大的運(yùn)算功能,所以在數(shù)字濾波器系統(tǒng)的設(shè)計中采用了TI公司的一款高性能、低功耗的定點DSP: TMS320VC5402。該DSP具有較快的運(yùn)算速度:運(yùn)算速度最快可達(dá)532MIPS;采用了低功耗設(shè)計方式:內(nèi)核電壓為1.8V,I/O電壓為3.3 V。數(shù)字濾波系統(tǒng)的具體方案框圖如圖6所示: ADCTMS320VC5402FLASHSRAMJTAG時鐘電源DAC圖4數(shù)字濾波器系統(tǒng)方案框圖 通常的設(shè)計中會采用SV供電并行的ADC(模數(shù)轉(zhuǎn)換)和DAC(數(shù)模轉(zhuǎn)換)芯 片與DSP連接,傳輸數(shù)據(jù)過程中會占用總線的時間,而且需要采用多片電平轉(zhuǎn)換器件將SV電平轉(zhuǎn)換為3.3V的邏輯電平??紤]到TMS320VC5402的片上包含兩個McBSP(多通道緩沖串行口)接口,可以將這兩個通道模仿實現(xiàn)SPI的時序,因此本設(shè)計中采用了SPI接口器件,ADC芯片采用的是TLV 1570,實現(xiàn)將需要濾波信號從模擬轉(zhuǎn)換到數(shù)字信號的實時采樣。數(shù)模轉(zhuǎn)換芯片采用的是TLV 5608,實現(xiàn)濾波后的信號從數(shù)字信號恢復(fù)為所需要的模擬信號。JTGA口供DSP芯片下載程序調(diào)試。 PMST=FFA0H, ST1=2300H,;SWWSR=0, OVM=1,F(xiàn)RCT=1,SXM=1STM #X,AR1STM #Y,AR2 STM #d,AR3;RPT A,#5;初始化d(n),d(n-1),d(n-2)=0 STL A,*AR3+ STM #2,AR0 ;初始化Arn是地址偏移量為常數(shù) INLOOP:STM #d+5,AR3;STM #table,AR4;IIR的系數(shù)A2,A1,B2,B1,B0 PORTR 100H,*AR1 ;從端口讀入數(shù)據(jù) LD *AR1,7,ASTM #N-1,BRC ;計算IIR的節(jié)數(shù)N RPT ELOOP LOOP:MAC *AR4+,*AR3-,A ;input+d(n-2)*A2 MAC*AR4,*AR3,A-;input+d(n-2)*A2+d(n-1)*A1 MAC*AR4+,*AR3-,A STH A,*AR3+0;d(n)=input+d(n-2)*A2+d(n-1)*A1 MPY *AR4+,*AR3-,A ;d(n-2)*B2 MAC*AR4+,*AR3,A;d(n-2)*B2+d(n-1)*B1 DELAY*AR3-;d(n-2)=d(n-1)MAC*AR4+,*AR3,A;d(n-2)*B2+d(n-1)*B1+d(n)*B0 DELAY*AR3-;d(n-1)=d(n)ELOOP:STHA,*AR2;output=d(n-2)*B2+d(n-1)*B1+d(n)*B0 PORTW *AR2,200h ;將結(jié)果寫入文件中BINLOOP END 五、仿真分析及結(jié)果 5.1 CCS仿真細(xì)節(jié) CCS是一個開放的環(huán)境,可以通過設(shè)置不同的驅(qū)動程序完成對不同環(huán)境的支持。CCS setup 配置程序就是用來定義DSP芯片和目標(biāo)板類型的。在第一次使用CCS之前必須首先運(yùn)行CCS setup 配置程序。在以后的使用中,若想改變CCS應(yīng)用平臺的類型,可以再次運(yùn)行該配置程序來改變設(shè)置。CCS軟件集成了TI公司的Simulator和Emulatord 的驅(qū)動程序,用戶可以直接用TI的仿真器進(jìn)行開發(fā)測試。 5.2 IIR數(shù)字濾波的軟件調(diào)試 在效果圖中,上面波形為DSP實驗箱產(chǎn)生的濾波前的效果圖,下面波形為進(jìn)行IIR濾波后的效果圖。從兩圖的比較可以看出,所設(shè)計的IIR濾波器收到了較好的效果,完成了設(shè)計要求。 在編寫及調(diào)試的過程中主要遇到以下問題: (1)在編寫程序的過程中要對所涉及的存儲單元進(jìn)行初始化,這樣在數(shù)據(jù)或是代碼段進(jìn)行匯編時才不會出現(xiàn)問題。 (2)編寫程序需要對數(shù)據(jù)段、代碼段、堆棧段進(jìn)行設(shè)置。要編寫相應(yīng)的.cmd(鏈接命令文件)文檔對其進(jìn)行合理化的分配空間。 (3)在編寫程序時一定要編寫相應(yīng)的中斷向量表文件,這樣在匯編時才不會出錯。 5.3 芯片選擇 此設(shè)計中采用的是C5502 Device Simulator芯片,IIR輸入信號入口地址data_in,輸出地址為out。 圖4 芯片選擇 5.4創(chuàng)建項目 圖5 創(chuàng)建項目 5.5加載程序 圖6 加載程序 5.6程序 (1)IIR.asm.global _iir,_init,_outdata _iir bset frct sub #1,t0 mov t0,mmap(csr)add t0,ar0 mov xar2,xdp mov ar2,cdp mov #0,ac0 rpt csr macmz *ar0-,*cdp+,ac0 add t0,ar1 mov xar3,xdp mov ar3,cdp rpt csr macmz *ar1-,*cdp+,ac0 mar *ar1+ mov hi(ac0),*ar1 mov hi(ac0),t0 bclr frct ret _init sub #1,t0 mov t0,mmap(csr)mov #0,ac0 rpt csr mov ac0,*ar0+ rpt csr mov ac0,*ar1+ ret _outdata mov t1,ac0 sub #2,ac0 mov ac0,mmap(csr)add ac0,ar0 rpt csr delay *ar0-mar *ar0+ mov t0,*ar0 ret 圖7 匯編源程序 (2)IIR55.c #include “math.h” #define signal_1_f 500 #define signal_2_f 10000 #define signal_sample_f 25000 #define pi 3.1415926 #define IIRNUMBER_L 2 #define bufer_L 256 int N_L=IIRNUMBER_L;int data_in[bufer_L];int out[bufer_L];int x[IIRNUMBER_L+1];int y[IIRNUMBER_L+1];int k=0;int bufer=bufer_L;int fBn[IIRNUMBER_L]={0,0x634a};int fAn[IIRNUMBER_L]={0xe5c,0xe5c};extern int iir(int *x,int *y,int *fAn,int *fBn,int N_L);extern int init(int *,int *,int);extern int outdata(int *,int,int);void inputwave();void main(){ int iirout;inputwave();init(x,y,N_L);while(1){ x[0]=data_in[k];iirout=iir(x,y,fAn,fBn,N_L);outdata(out,iirout,bufer);k++;if(k>=bufer_L){ k=0;} } } void inputwave(){ float wt1;float wt2;int i;for(i=0;i<=bufer_L;i++){ wt1=2*pi*i*signal_1_f;wt1=wt1/signal_sample_f;wt2=2*pi*i*signal_2_f;wt2=wt2/signal_sample_f;data_in[i]=(cos(wt1)+cos(wt2))/2*32768;} } 圖8 c程序 (3)Ink.cmd-stack 0x0500-sysstack 0x0500-heap 0x1000-c-u _Reset-l rts55.lib MEMORY { PAGE 0: RAM(RWIX): origin=0x000100,length=0x01ff00 ROM(RIX): origin=0x020100,length=0x01ff00 VECS(RIX): origin=0xffff00,length=0x000200 PAGE 2: IOPORT(RWI):origin=0x000000, length=0x020000 } SECTIONS { .text >ROM PAGE 0 .data >ROM PAGE 0 .bss >RAM PAGE 0 .const >RAM PAGE 0 .sysmem >RAM PAGE 0 .stack >RAM PAGE 0 .cio >RAM PAGE 0 .sysstack >RAM PAGE 0 .switch >RAM PAGE 0 .cinit >RAM PAGE 0 .pinit >RAM PAGE 0 .vectors >VECS PAGE 0 .ioport >IOPORT PAGE 2 } 圖9 命令程序 5.7運(yùn)行結(jié)果 圖10 運(yùn)行結(jié)果 5.8更改圖形參數(shù) 圖11 更改參數(shù)過程 5.9波形圖 圖12波形圖 圖13 濾波前時域波形 圖14濾波前頻域波形 圖15 濾波后時域波形 圖16 濾波后頻域波形 六、心得體會 參考文獻(xiàn) 【1】汪春梅,孫洪波TMS320C55x DSP原理及應(yīng)用.電子工業(yè)出版社.2011.6 【2】 戴明楨.TMS320C54xDSP結(jié)構(gòu)、原理及應(yīng)用[M].北京航空航天大學(xué)出版社,2001,8.【3】 胡圣堯.DSP原理及應(yīng)用[M].東南大學(xué)出版社,2008.7.【4】清源科技.TMS320C54xDSP應(yīng)用程序設(shè)計教程[M].機(jī)械工業(yè)出版社,2004,1.【5】鄒彥.DSP原理及應(yīng)用[M].北京:電子工業(yè)出版社,2005,1.第四篇:高性能的PLC控制步進(jìn)電機(jī)在機(jī)器人機(jī)械手外文翻譯
第五篇:太原理工大學(xué)DSP課設(shè)報告