基于proteus的步進(jìn)電機(jī)電機(jī)仿真設(shè)計_第1頁
基于proteus的步進(jìn)電機(jī)電機(jī)仿真設(shè)計_第2頁
基于proteus的步進(jìn)電機(jī)電機(jī)仿真設(shè)計_第3頁
基于proteus的步進(jìn)電機(jī)電機(jī)仿真設(shè)計_第4頁
基于proteus的步進(jìn)電機(jī)電機(jī)仿真設(shè)計_第5頁
已閱讀5頁,還剩13頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、 基于proteus的步進(jìn)電機(jī)電機(jī)仿真摘要:步進(jìn)電機(jī)廣泛應(yīng)用在生產(chǎn)實踐的各個領(lǐng)域。它最大的應(yīng)用是在數(shù)控機(jī)床的制造中,因為步進(jìn)電機(jī)不需要A/D轉(zhuǎn)換,能夠直接將數(shù)字脈沖信號轉(zhuǎn)化成為角位移,所以被認(rèn)為是理想的數(shù)控機(jī)床的執(zhí)行元件。本設(shè)計利用proteus仿真軟件進(jìn)行電路仿真,系統(tǒng)通過設(shè)置四個按鍵分別控制不進(jìn)電機(jī)的起止、圈數(shù)、方向、不進(jìn)速度,使用1602液晶顯示以上參數(shù)。整個系統(tǒng)具有穩(wěn)定性好,實用性強(qiáng),操作界面友好等優(yōu)點。關(guān)鍵詞:proteus 仿真 不進(jìn)電機(jī) 拍數(shù)一、 Proteus簡介Proteus ISIS是英國Labcenter公司開發(fā)的電路分析與實物仿真軟件。它運(yùn)行于Windows操作系統(tǒng)上,

2、可以仿真、分析(SPICE)各種模擬器件和集成電路,該軟件的特點是:實現(xiàn)了單片機(jī)仿真和SPICE電路仿真相結(jié)合。具有模擬電路仿真、數(shù)字電路仿真、單片機(jī)與其外圍電路組成的系統(tǒng)的仿真、RS232動態(tài)仿真、I2C調(diào)試器、SPI調(diào)試器、鍵盤和LCD系統(tǒng)仿真的功能;有各種虛擬儀器,如示波器、邏輯分析儀、信號發(fā)生器等。支持主流單片機(jī)系統(tǒng)的仿真。目前支持的單片機(jī)類型有:68000系列、8051系列、AVR系列、PIC12系列、PIC16系列、PIC18系列、Z80系列、HC11系列以與各種外圍芯片。提供軟件調(diào)試功能。在硬件仿真系統(tǒng)中具有全速、單步、設(shè)置斷點等調(diào)試功能,同時可以觀察各個變量、寄存器等的當(dāng)前狀態(tài)

3、,因此在該軟件仿真系統(tǒng)中,也必須具有這些功能;同時支持第三方的軟件編譯和調(diào)試環(huán)境,如Keil C51 uVision2等軟件。具有強(qiáng)大的原理圖繪制功能??傊?,該軟件是一款集單片機(jī)和SPICE分析于一身的仿真軟件,功能極其強(qiáng)大。二、整體電路分析如下圖,整個設(shè)計以STC89C51單片機(jī)為中心,由復(fù)位電路,時鐘電路,電機(jī)驅(qū)動,步進(jìn)電機(jī),顯示電路等組成,硬件模塊如圖2-1所示:圖1 硬件模塊圖通過按鍵進(jìn)行相應(yīng)的參數(shù)設(shè)定,單片機(jī)接收到信號后經(jīng)過判斷驅(qū)動電機(jī)驅(qū)動模塊,然后由驅(qū)動電路驅(qū)動步進(jìn)電機(jī)運(yùn)轉(zhuǎn),并用1602顯示設(shè)置的參數(shù)。三、系統(tǒng)硬件電路選擇與設(shè)計1、主控器的選擇按照題目要求本次主控單元使用C51單片

4、機(jī)對整個系統(tǒng)進(jìn)行控制。STC89C51RC包含512字節(jié)RAM 、32條I/O口線、3個16位定時/計數(shù)器、8輸入4優(yōu)先級嵌套中斷結(jié)構(gòu)、1個串行I/O口(可用于多機(jī)通信、I/O擴(kuò)展或全雙工UART)以與片振蕩器和時鐘電路。此外,由于器件采用了靜態(tài)設(shè)計,可提供很寬的操作頻率圍(頻率可降至0)??蓪崿F(xiàn)兩個由軟件選擇的節(jié)電模式、空閑模式和掉電模式。空閑模式凍結(jié)CPU,但RAM、定時器、串口和中斷系統(tǒng)仍然工作。掉電模式保存RAM的容,但是凍結(jié)振蕩器,導(dǎo)致所有其它的片功能停止工作。由于設(shè)計是靜態(tài)的,時鐘可停止而不會丟失用戶數(shù)據(jù)。運(yùn)行可從時鐘停止處恢復(fù)。所以該單片機(jī)可以滿足系統(tǒng)要求,電路圖如下:圖2 單片

5、機(jī)最小系統(tǒng)電路圖2、步進(jìn)電機(jī)選擇步進(jìn)電機(jī)是一種能夠?qū)㈦娒}沖信號轉(zhuǎn)換成角位移或線位移的機(jī)電元件,它實際上是一種單相或多一樣步電動機(jī)。單相步進(jìn)電動機(jī)有單路電脈沖驅(qū)動,輸出功率一般很小,其用途為微小功率驅(qū)動。多相步進(jìn)電動機(jī)有多相方波脈沖驅(qū)動,用途很廣。本設(shè)計使用的是四相三拍步進(jìn)電機(jī),連接圖如下:圖3 步進(jìn)電機(jī)接線圖3、驅(qū)動電路的選擇驅(qū)動模塊我們使用集成驅(qū)動芯片ULN2003,給芯片是高耐壓、大電流達(dá)林頓管由七個硅NPN 達(dá)林頓管組成。該電路的特點如下:ULN2003 的每一對達(dá)林頓都串聯(lián)一個2.7K 的基極電阻,在5V 的工作電壓下它能與TTL 和CMOS 電路直接相連,可以直接處理原先需要標(biāo)準(zhǔn)邏輯

6、緩沖器來處理的數(shù)據(jù)。ULN2003 工作電壓高,工作電流大,灌電流可達(dá)500mA,并且能夠在關(guān)態(tài)時承受50V 的電壓,輸出還可以在高負(fù)載電流并行運(yùn)行。1腳輸入,16腳輸出,你的負(fù)載接在VCC與16腳之間,不用9腳。圖4 ULN2003部結(jié)構(gòu)圖圖5 ULN2003管腳圖ULN2003是大電流驅(qū)動陣列,多用于單片機(jī)、智能儀表、PLC、數(shù)字量輸出卡等控制電路中。可直接驅(qū)動繼電器等負(fù)載。所以足以滿足驅(qū)動步進(jìn)電機(jī)的要求,連接圖如下:圖6 uln2003接線圖4、顯示電路的LCD顯示模塊是把LCD顯示屏、背景光源、線路 板和驅(qū)動集成電路等部件構(gòu)造成1個整體作為1個獨(dú) 立部件使用,只留1個接口與外部通信。顯

7、示模塊通 過這個接口接收顯示的命令和數(shù)據(jù),并按指令和數(shù)據(jù) 的要求進(jìn)行顯示,外部電路通過這個接口讀出顯示模 塊的工作狀態(tài)和顯示數(shù)據(jù)。1602液晶模塊部的字 符發(fā)生存儲器(CGROM)已經(jīng)存儲了160個不同的點陣字符圖形,這些字符有:阿拉伯?dāng)?shù)字、英文字母的大 小寫、常用的符號和日文假名等,每1個字符都有1個 固定的代碼。用戶對模塊寫入適當(dāng)?shù)目刂泼?,即?完成清屏、顯示、地址設(shè)置等操作 。設(shè)計采用并行方式控制,LCD與單片機(jī)的通訊接口電路如圖3所示采用直連的方法。圖7 1602顯示電路接線圖5鍵盤輸入模塊電路 設(shè)計中,鍵盤采用非編碼鍵盤系統(tǒng)中的獨(dú)立式按 鍵結(jié)構(gòu)。鍵盤工作方式采用定時掃描方式。采用定

8、時 器TO定時,通過輸出數(shù)據(jù),識別按鍵的工作狀態(tài)。鍵 盤主要用來提供人機(jī)接口,電路如圖3所示,采用獨(dú)立 式按鍵電路,各按鍵開關(guān)均采用了上拉電阻,保證在按 鍵斷開時,各IO有確定的高電平。按鍵功定義如 下:當(dāng)P32按下時,步進(jìn)電機(jī)開始加速;當(dāng)P33按下 時,步進(jìn)電機(jī)開始減速;當(dāng)P34按下時,步進(jìn)電機(jī)開始 正轉(zhuǎn);當(dāng)P35按下時,步進(jìn)電機(jī)開始反轉(zhuǎn)。按鍵抖動的消除采用軟件消抖實現(xiàn)。連接圖如下:圖8 按鍵接連接圖四、系統(tǒng)軟件設(shè)計1、軟件流程圖圖9 系統(tǒng)流程圖2程序代碼見附件。五、總結(jié)采用模塊程序設(shè)計,逐個模塊調(diào)好以后,再進(jìn)行系統(tǒng)程序總調(diào)試。利用仿真軟件Proteus與KeilC5l進(jìn) 行調(diào)試。 系統(tǒng)實現(xiàn)

9、了可程序設(shè)定和顯示步進(jìn)角、步進(jìn)方向 和步進(jìn)速度,支持用開關(guān)量單獨(dú)控制步進(jìn)電機(jī)的轉(zhuǎn)向, 轉(zhuǎn)速。電路簡單可靠,結(jié)構(gòu)緊湊,控制靈活,成本低,可 移植性強(qiáng)。經(jīng)實驗驗證,本系統(tǒng)對步進(jìn)電機(jī)的各項控 制都能達(dá)到比較理想的效果,具有較高的實用價值。通過此次課程設(shè)計,我不僅將知識融會貫通,而且在查找資料的過程中也了解了許多課外知識,開拓了視野,使自己在專業(yè)知識方面和動手能力方面有了很大的提高,讓我學(xué)會了理論到實踐的轉(zhuǎn)化,即如何將自己學(xué)到的運(yùn)用到以后的生活和工作中,同時,也讓我意識到團(tuán)隊精神的重要性。此外,感丁老師的悉心教導(dǎo)以與同學(xué)的幫助,正是王老師細(xì)心的輔導(dǎo)和提供的一些參考資料還有同學(xué)們的互相幫助,讓我順利的完

10、成了畢業(yè)設(shè)計,相信這對我以后的生活和工作都會有很大的幫助。六參考文獻(xiàn)1徐薇莉,柱中控制理論與設(shè)計M:交通大學(xué)出版 社2003 2黃 堅自動控制原理與其應(yīng)用M:高等教育, 2004 3先鋒工作室單片機(jī)程序設(shè)計實例M:清華大學(xué), 20034王幸之,鐘愛琴AT89系列單片機(jī)原理與接口技術(shù)M:航天大學(xué),2004 5康華光,大欽模擬電子電路M:高教育,2004 七附錄(1) 整體電路圖(2)程序代碼#include <reg51.h> #include <intrins.h> #define uchar unsigned char#define uint unsigned int

11、#define delayNOP(); _nop_();_nop_();_nop_();_nop_();unsigned char code FFW8=0xfe,0xfc,0xfd,0xf9,0xfb,0xf3,0xf7,0xf6; /反轉(zhuǎn)unsigned char code REV8=0xf6,0xf7,0xf3,0xfb,0xf9,0xfd,0xfc,0xfe; /正轉(zhuǎn)/unsigned char code FFW8=0x01,0x03,0x02,0x06,0x04,0x0c,0x08,0x09; /反轉(zhuǎn)/unsigned char code REV8=0x09,0x08,0x0c,0x0

12、4,0x06,0x02,0x03,0x01; /正轉(zhuǎn)sbit K1 = P32; /運(yùn)行與停止sbit K2 = P33; /設(shè)定圈數(shù)sbit K3 = P34; /方向轉(zhuǎn)換sbit K4 = P35; /速率調(diào)整sbit LCD_RS = P20; sbit LCD_RW = P21;sbit LCD_EN = P22;bit on_off=0; /運(yùn)行與停止標(biāo)志bit direction=1; /方向標(biāo)志bit rate_dr=1; /速率標(biāo)志bit snum_dr=1; /圈數(shù)標(biāo)志uchar code cdis1 = "NO.0738230126 "uchar cod

13、e cdis2 = " 2012/5/24"uchar code cdis3 = " STOP "uchar code cdis4 = "NUM: RATE: "uchar code cdis5 = " RUNNING "uchar m,v=0,q=0;uchar number=0,number1=0; uchar snum=20,snum1=20; /預(yù)設(shè)定圈數(shù)uchar rate=3; /預(yù)設(shè)定速率uchar data_temp,data_temP0,data_temp2; /*/* /* 延時t毫秒 /* 1

14、1.0592MHz時鐘,延時約1ms /* /*/void delay(uint t) uchar k; while(t-) for(k=0; k<124; k+) /*/void delayB(uchar x) /x*0.14MS uchar i; while(x-) for (i=0; i<13; i+) /*/* /*檢查LCD忙狀態(tài) /*lcd_busy為1時,忙,等待。為0時,閑,可寫指令與數(shù)據(jù)。 /* /*/ bit lcd_busy() bit result; LCD_RS = 0; LCD_RW = 1; LCD_EN = 1; delayNOP(); result

15、 = (bit)(P0&0x80); LCD_EN = 0; return(result); /*/* /*寫指令數(shù)據(jù)到LCD /*RS=L,RW=L,E=高脈沖,D0-D7=指令碼。 /* /*/void lcd_wcmd(uchar cmd) while(lcd_busy(); LCD_RS = 0; LCD_RW = 0; LCD_EN = 0; _nop_(); _nop_(); P0 = cmd; delayNOP(); LCD_EN = 1; delayNOP(); LCD_EN = 0; /*/* /*寫顯示數(shù)據(jù)到LCD /*RS=H,RW=L,E=高脈沖,D0-D7=數(shù)

16、據(jù)。 /* /*/void lcd_wdat(uchar dat) while(lcd_busy(); LCD_RS = 1; LCD_RW = 0; LCD_EN = 0; P0 = dat; delayNOP(); LCD_EN = 1; delayNOP(); LCD_EN = 0; /*/* /* LCD初始化設(shè)定 /* /*/void lcd_init() delay(30); lcd_wcmd(0x38); /16*2顯示,5*7點陣,8位數(shù)據(jù) delay(5); lcd_wcmd(0x38); delay(5); lcd_wcmd(0x38); delay(5); lcd_wcm

17、d(0x0c); /顯示開,關(guān)光標(biāo) delay(5); lcd_wcmd(0x06); /移動光標(biāo) delay(5); lcd_wcmd(0x01); /清除LCD的顯示容 delay(5);/*/* /* 設(shè)定顯示位置 /* /*/void lcd_pos(uchar pos) lcd_wcmd(pos | 0x80); /數(shù)據(jù)指針=80+地址變量/*/* /* LCD1602初始顯示子程序 /* /*/void LCD_init_DIS() delay(10); /延時 lcd_init(); /初始化LCD lcd_pos(0); /設(shè)置顯示位置為第一行的第1個字符 m = 0; whi

18、le(cdis1m != '0') /顯示字符 lcd_wdat(cdis1m); m+; lcd_pos(0x40); /設(shè)置顯示位置為第二行第1個字符 m = 0; while(cdis2m != '0') lcd_wdat(cdis2m); /顯示字符 m+; delay(3000); /延時 lcd_pos(0); /設(shè)置顯示位置為第一行的第1個字符 m = 0; while(cdis3m != '0') /顯示字符 lcd_wdat(cdis3m); m+; lcd_pos(0x40); /設(shè)置顯示位置為第二行第1個字符 m = 0;

19、while(cdis4m != '0') lcd_wdat(cdis4m); /顯示字符 m+; for(m=0;m<2;m+) lcd_pos(0x0c+m); /顯示方向符號 lcd_wdat(0x3e); /*/*/*數(shù)據(jù)轉(zhuǎn)換子程序/*/*/void data_conv() data_temP0=data_temp/10; /高位 if(data_temP0=0) data_temP0=0x20; /高位為0不顯示 else data_temP0=data_temP0+0x30; data_temp2=data_temp%10; /低位 data_temp2=dat

20、a_temp2+0x30; /*/*/*數(shù)據(jù)顯示子程序/*/*/void data_dis() data_temp = snum; /顯示圈數(shù) data_conv(); lcd_pos(0x44); lcd_wdat(data_temP0); lcd_pos(0x45); lcd_wdat(data_temp2); data_temp = rate; /顯示速率 data_conv(); lcd_pos(0x4d); lcd_wdat(data_temP0); lcd_pos(0x4e); lcd_wdat(data_temp2);/*/*/* 顯示運(yùn)行方向符號/*/*/void motor_

21、DR() if(direction=1) /正轉(zhuǎn)方向標(biāo)志 for(m=0;m<2;m+) lcd_pos(0x0c+m); /顯示方向符號 lcd_wdat(0x3e); else for(m=0;m<2;m+) /反轉(zhuǎn)方向標(biāo)志 lcd_pos(0x0c+m); /顯示方向符號 lcd_wdat(0x3c); /*/*/* 顯示運(yùn)行狀態(tài)/*/*/void motor_RUN() if(on_off=1) TR0=1; lcd_pos(0); /設(shè)置顯示位置為第一行的第1個字符 m = 0; while(cdis5m != '0') lcd_wdat(cdis5m);

22、 /RUNNING m+; motor_DR(); / else TR0=0; P0 =0x0f; lcd_pos(0); /設(shè)置顯示位置為第一行的第1個字符 m = 0; while(cdis3m != '0') lcd_wdat(cdis3m); /STOP m+; motor_DR(); / snum=snum1; / number1=0; /清圈數(shù)計數(shù)器 /* * 主程序 * */main() LCD_init_DIS(); TMOD = 0x01; /T0定時方式1 TL0 = 0x33; TH0 = 0xf5; EA = 1; ET0 = 1; P1=0; while(1) if(K1=0) /beep(); while(K1=0); /等待鍵釋放 on_off=on_off; motor_RUN(); /K1 end/*/ if(K2=0) if(snum_

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論