步進電機設(shè)計報告
《步進電機設(shè)計報告》由會員分享,可在線閱讀,更多相關(guān)《步進電機設(shè)計報告(26頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、 步進電動機的設(shè)計報告 題 目:步進電動機的設(shè)計與制作 學(xué) 院:大數(shù)據(jù)與信息工程學(xué)院 專 業(yè):計算機科學(xué)與技術(shù) 班 級:電信113 學(xué)生姓名:王浩 指導(dǎo)教師:馬光喜老師
2、 2015年1月6日 目錄 前言---------------------------------------------------------------2 1. 設(shè)計目標(biāo)及內(nèi)容------------------------------------------------3 1.1 設(shè)計內(nèi)容---------------------------------------------------4 1.2 設(shè)計目的----------------------------------------------
3、-----4 2. 硬件原理及設(shè)計分析--------------------------------------------4 2.1 步進電機的工作原理-----------------------------------------5 2.2 液晶顯示原理 ----------------------------------------------5 2.3 步進電機轉(zhuǎn)速控制及顯示設(shè)計(LCD顯示轉(zhuǎn)速)的硬件框圖--------6 2.4 總的硬件電路圖---------------------------------------------7 3. 軟件分析及設(shè)計-
4、-----------------------------------------------8 3.1 軟件需求分析-----------------------------------------------8 3.2 程序流程圖-------------------------------------------------8 3.3 軟件代碼---------------------------------------------------9 4. 操作說明及結(jié)果分析-------------------------------------------18 5. 調(diào)試過程
5、中遇到的問題和解決方法-------------------------------18 6. 硬件實習(xí)總結(jié)-------------------------------------------------19 7. 參考文獻-----------------------------------------------------19 前言 在電子科技不斷飛速發(fā)展的今天,數(shù)字控制技術(shù)得到了廣泛而深入的應(yīng)用。步進電機是一種將數(shù)字信號直接轉(zhuǎn)換成角位移或線位移的控制驅(qū)動元件, 具有快速起動和停止的特點。因為步進電動機組成的控制系統(tǒng)結(jié)構(gòu)簡單,價格低廉,性能上能滿足工業(yè)控制
6、的基本要求,所以廣泛地應(yīng)用于手工業(yè)自動控制、數(shù)控機床、組合機床、機器人、計算機外圍設(shè)備、照相機,投影儀、數(shù)碼攝像機、大型望遠鏡、衛(wèi)星天線定位系統(tǒng)、醫(yī)療器件以及各種可控機械工具等等。 步進電機突出的優(yōu)點是它可以在寬廣頻率范圍內(nèi)通過改變脈沖頻率來實現(xiàn)調(diào)速,在需要精確定位的地方都要用到它,比如打印機、繪圖儀等。而LCD顯示屏在很多數(shù)碼產(chǎn)品中有著廣泛的應(yīng)用,如計算器,IC卡電話機,電子手表,掌上電腦,儀表顯示屏等。 同時,單片機也廣泛應(yīng)用于實時控制、智能儀器、儀表通信和家用電器等各個領(lǐng)域,所涉及的內(nèi)容非常廣泛,是計算機科學(xué)、電子學(xué)、自動控制等基礎(chǔ)知識的綜合應(yīng)用。單片機的應(yīng)用系統(tǒng)有硬件和軟件所組成。
7、本次硬件實習(xí)是基于51單片機對步進電機轉(zhuǎn)速進行控制,加之液晶的顯示,使其轉(zhuǎn)速的檔位和方向顯示在液晶上。 1. 設(shè)計目標(biāo)及內(nèi)容 1.1 設(shè)計內(nèi)容 1.1.1 利用實驗平臺上單片機P0口輸出脈沖序列,74LS244輸出開關(guān)量,開關(guān)K2—K7控制步進電機轉(zhuǎn)速,(分6檔),K0,K1控制轉(zhuǎn)向。驅(qū)動方式分兩種,四相四拍、四相八拍,通過軟件設(shè)計,控制步進電機的轉(zhuǎn)速和方向。并將轉(zhuǎn)速(1~6檔)和轉(zhuǎn)向(正轉(zhuǎn)“1”,反轉(zhuǎn)“0”) 顯示在LCD顯示器上 1.2 設(shè)計目的 1.2.1 了解步進電
8、機控制的基本原理; 1.2.2 掌握液晶顯示圖形的基本方法,從而對其它液晶屏的使用也能得心應(yīng)手。 2. 硬件原理及設(shè)計分析 2.1 步進電機的工作原理 該步進電機為一四相步進電機,采用單極性直流電源供電。只要對步進電機的各相繞組按合適的時序通電,就能使步進電機步進轉(zhuǎn)動。圖1是該四相反應(yīng)式步進電機工作原理示意圖。 圖1 四相步進電機步進示意圖 開始時,開關(guān)SB接通電源,SA、SC、SD斷開,B相磁極和轉(zhuǎn)子0、3號齒對齊,同時,轉(zhuǎn)子的1、4號齒就和C、D相 繞組磁極產(chǎn)生錯齒,2、5號齒就和D、A相繞組磁
9、極產(chǎn)生錯齒。當(dāng)開關(guān)SC接通電源,SB、SA、SD斷開時,由于C相繞組的磁力線和1、4號齒之間磁力線的作用,使轉(zhuǎn)子轉(zhuǎn)動,1、4號齒和C相繞組的磁極對齊。而0、3號齒和A、B相繞組產(chǎn)生錯齒,2、5號齒就和A、D相繞組磁極產(chǎn)生錯齒。依次類推,A、B、C、D四相繞組輪流供電,則轉(zhuǎn)子會沿著A、B、C、D方向轉(zhuǎn)動。 四相步進電機按照通電順序的不同,可分為單四拍、雙四拍、八拍三種工作方式。單四拍與雙四拍的步距角相等,但單四拍的轉(zhuǎn)動力矩小。八拍工作方式的步距角是單四拍與雙四拍的一半,因此,八拍工作方式既可以保持較高的轉(zhuǎn)動力矩又可以提高控制精度。 單四拍、雙四拍與八拍工作方式的電源通電時序與波形分別
10、如圖2.a、b、c所示: a. 單四拍 b. 雙四拍 c八拍 圖2 通電時序波形 本實驗使用的步進電機用直流+12V電壓,電機線圈由A、B、C、D四相組成。驅(qū)動方式為四相四拍方式,各線圈通電順序如下表。表中首先向A線圈輸入驅(qū)動電流, 接著B、C、D線圈驅(qū)動,最后又返回到A線圈驅(qū)動,按這種順序切換,電機軸按順時針方向旋轉(zhuǎn)。若通電順序相反,則電機軸按逆時針方向旋轉(zhuǎn)。 (注:為提高步進電機負載能力和運行平穩(wěn),可使用四相八拍驅(qū)動方式。) 順序/相 A B C D 0 0 1 1
11、 1 1 1 0 1 1 2 1 1 0 1 3 1 1 1 0 表二:驅(qū)動方式 2.2 液晶顯示原理 本實驗用的是1602液晶,1602液晶可以顯示兩行字符,其寫入字符是根據(jù)時序特點,寫指令,寫數(shù)據(jù)等操作。以下是1602液晶的相關(guān)資料, 讀狀態(tài) 輸入 RS=L,R/W=H,E=H 輸出 D0—D7=狀態(tài)字 寫指令 輸入 RS=L,R/W=L,D0—D7=指令碼,E=高脈沖 輸出 無 讀數(shù)據(jù) 輸入 RS=H,R/W=H,E=H 輸出 D0—D7=數(shù)
12、據(jù) 寫數(shù)據(jù) 輸入 RS=H,R/W=L,D0—D7=數(shù)據(jù),E=高脈沖 輸出 無 表二:基本操作時序表 讀寫操作時序如圖所示 圖3:讀操作時序 圖4:寫操作時序 2.3 步進電機轉(zhuǎn)速控制及顯示設(shè)計(LCD顯示轉(zhuǎn)速)的硬件框圖 如圖5所示,整個硬件圍繞51單片機,根據(jù)開關(guān)輸入通過外接電路控制步進電機的轉(zhuǎn)速和方向,并顯示在液晶上。 8051單片機作為處理器,整個硬件功能圍繞8051進行實現(xiàn),首先,由開關(guān)通過擴展輸入實現(xiàn)對整個硬件功能的控制。當(dāng)開關(guān)設(shè)置為某個狀態(tài)時,由8051單片機輸出相應(yīng)的值,通過擴展輸出對步進電機進行相應(yīng)方向和轉(zhuǎn)速的控制
13、,并由1602進行相應(yīng)的顯示。 8051單片機 開關(guān) 液晶LCD 步進電機 擴展輸出 驅(qū)動電路 LCD驅(qū)動電路 擴展輸入 圖5 硬件框圖 2.4 總的硬件電路圖 如硬件電路圖圖6所示。其中,74LS373為地址鎖存器,74LS244為帶3態(tài)輸出的八緩沖器,74LS273為帶清除的八觸發(fā)器;74LS138為三八譯碼器。開關(guān)由擴展輸入對單片機進行輸入相關(guān)變量,從而通過單片機對步進電機的轉(zhuǎn)速和方向進行控制。再有液晶進行相應(yīng)的顯示。 3. 軟件分析及設(shè)計 3.1
14、軟件需求分析 本實習(xí)要求用開關(guān)控制步進電機的轉(zhuǎn)速和方向,并將相應(yīng)的數(shù)據(jù)顯示在液晶上;通過分析,我們只需將開關(guān)的輸入量轉(zhuǎn)換成相應(yīng)的步進電機轉(zhuǎn)速即可,然而,通過前面講過的步進電機的相關(guān)驅(qū)動方式我們可以知道,轉(zhuǎn)速可以通過設(shè)置延時子程序的時間長短來實現(xiàn),而步進電機的方向則通過不同的時序來控制,從而加上很容易的實現(xiàn)步進電機的轉(zhuǎn)速控制,在根據(jù)液晶的時序規(guī)則來顯示相應(yīng)的數(shù)據(jù),很簡單的實現(xiàn)了整個實習(xí)要求。 3.2 程序流程圖 如圖(圖7:程序流程圖)所示,在程序開始后先進行各個參數(shù)的初始化,然后對開關(guān)量進行讀取,根據(jù)讀取的數(shù)值進行對步進電機的轉(zhuǎn)速量和方向量進行設(shè)置,并同時在LCD上顯示出相應(yīng)的數(shù)據(jù),定時
15、,置輸出地址,然后輸出相應(yīng)的參數(shù),從而實現(xiàn)對步進電機和液晶的相應(yīng)控制。
圖7:
如下圖(圖8:LCD框圖所示)為LCD液晶的顯示子程序框圖,程序先進行LCD初始化,然后進行清屏,在需要寫入時,對LCD進行寫操作,最后就可以顯示出來你想要的字符。
圖8:LCD程序框圖
3.3 軟件代碼
#include "reg52.h"
#include
16、d char //#define uint unisgned int //#define BYTE unsigned char //#define num unsigned int sbit k1 = P2^0; sbit k2 = P2^1; sbit k3 = P2^2; sbit k4 = P2^3; sbit k5 = P2^4; sbit k6 = P2^5; sbit k7 = P2^6; sbit k8 = P2^7; void delay1(unsigned int t) //電機驅(qū)動延時程序 { unsigned int k; whi
17、le(t--) { for(k=0; k<100; k++) } } void motor_ffw(unsigned char i) //電機順時針轉(zhuǎn)動程序 { P1=0x01; delay1(i); P1=0x02; delay1(i); P1=0x04; delay1(i); P1=0x08; delay1(i); } void motor_ffz(unsigned char i) //電機逆時針轉(zhuǎn)動程序 { P1=0x0
18、1; delay1(i); P1=0x02; delay1(i); P1=0x04; delay1(i); P1=0x08 delay1(i); } sbit RS = P0^5; //定義P2^5為液晶控制端口RS sbit RW = P0^6; sbit E = P0^7; uchar code table[]=" Gui zhou da xue " //字符定義 uchar code table1[]="wangxiaogang " uchar code table2[]="1120020075
19、 " uchar code table3[]=" SPEED:123456"; uchar code table4[]=" startstepmotor "; uchar code table5[]=" SPEED: "; uchar code table6[]="123456"; typedef unsigned char BYTE; //定義字符變量BYTE typedef unsigned int WORD; //定義整形變量WORD typedef bit BOOL; //字符變量BOOL //LCD驅(qū)動程序 void lcddelay(BYTE ms)
20、 // 延時子程序 { BYTE i; while(ms--) { for(i = 0; i< 250; i++) //循環(huán)250次 { _nop_(); _nop_(); _nop_(); //空操作延時1us _nop_(); } } } // 測試LCD忙碌狀態(tài)-忙檢測函數(shù) BOOL lcd_bz() { B
21、OOL result; //定義字符變量result,用于存放測試的LCD忙碌狀態(tài)值 RS = 0; // 寄存器的選擇控制口,選擇指令寄存器 RW = 1; // 讀寫操作控制端口, RW = 1表示讀操作 E = 1; // _nop_(); // 延時4us _nop_(); _nop_(); _nop_(); result = (BOOL)(P0 & 0x80); E = 0; return result; } //寫入指令數(shù)
22、據(jù)到LCD void lcd_wcmd(BYTE cmd) { while(lcd_bz()); RS = 0; RW = 0; E = 0; _nop_(); _nop_(); P0 = cmd; _nop_(); _nop_(); _nop_(); _nop_(); E = 1; _nop_(); _nop_(); _nop_(); _nop_(); E = 0; } //寫入字符顯示數(shù)據(jù)到LCD void lcd_wda
23、t(BYTE dat) { while(lcd_bz()); RS = 1; RW = 0; E = 0; P0 = dat; _nop_(); _nop_(); _nop_(); _nop_(); E = 1; _nop_(); _nop_(); _nop_(); _nop_(); E = 0; } } //LCD初始化設(shè)定 void lcd
24、_init() { lcd_wcmd(0x38); //設(shè)置LCD為8位數(shù)據(jù),兩行顯示,5*7點陣 lcddelay(1); lcd_wcmd(0x0E); //顯示開關(guān)控制指令設(shè)定,LCD開顯示和光標(biāo),不閃爍 lcddelay(1); lcd_wcmd(0x06); //設(shè)光標(biāo)和畫面的移動方式I/D=1,S=0 設(shè)置讀寫操作之后 AC自動加一,顯示不移動 lcddelay(1); lcd_wcmd(0x01); //清除LCD的顯示內(nèi)容 lcddelay(1); }
25、 void out0init()//外部中斷0的初始化 EX0 = 1; IT0 = 1; EA = 1; void lcd_xianshi() //lcd液晶顯示程序 lcd_wcmd(0x00); for(num=0;num<15;num++) { lcd_wdat(table[num]); delay(1); } lcd_wcmd(0x80+0x40); for(num=0;num<12;num++) { lcd_wdat(table1[num]); delay(1);
26、 } lcd_wcmd(0x80+0x40); for(num=0;num<10;num++) { lcd_wdat(table2[num]); } lcd_wcmd(0x80+0x40); for(num=0;num<11;num++) { lcd_wdat(table3[num]); delay(1); } lcd_wcmd(0x80+0x40); for(num=0;num<14;num++) { lcd_wdat(table4[num]); delay(1); } lcd_wcmd(0x8
27、0+0x40); for(num=0;num<6;num++) { lcd_wdat(table5[num]); delay(1); } void delay1ms(void) //判斷按鍵是否按下延時時間 誤差 0us { unsigned char a,b,c; for(c=1;c>0;c--) for(b=142;b>0;b--) for(a=2;a>0;a--); } void 0ut0inter(void) interrupt 0 using 1
28、 delay1ms(10) if(k1 = = 0) { delay1ms(2) if(k1 = =0) { lcd_wcmd(0x80+0x40+0x07); delay(1); lcd_wdat(table6[0]); delay(1); } else if(k2 = =0) { delay1ms(2) if(k2 = =0) { lcd_wcmd(0x80+0x40+0x07); delay(1); i=100; lcd_
29、wdat(table6[1]); } else if(k3 = =0) delay1ms(2) if(k3 = =0) { lcd_wcmd(0x80+0x40+0x07); delay(1); i=80; lcd_wdat(table6[2]); } else if(k4 = =0) delay1ms(2) if(k4 = =0) { lcd_wcmd(0x80+0x40+0x07); delay(1); i=60; lcd_wdat(table6[3])
30、; } else if(k5 = =0) delay1ms(2) if(k5 = =0) { lcd_wcmd(0x80+0x40+0x07); delay(1); i=40; lcd_wdat(table6[4]); } else if(k6 = =0) delay1ms(2) if(k6 = =0) { lcd_wcmd(0x80+0x40+0x07); delay(1); i=30; lcd_wdat(table6[5]); } motor_ffw(i);
31、 else if(k7 = =0) delay1ms(2) if(k7 = =0) { lcd_wcmd(0x80+0x40+0x07); delay(1); lcd_wdat(table6[0]); delay(1); if(k2 = = 0) delay1ms(2) if(k2 = =0) { lcd_wcmd(0x80+0x40+0x07); delay(1); i=100; lcd_wdat(table6[1]); } else
32、if(k3==0) delay1ms(2) if(k3 = =0) { lcd_wcmd(0x80+0x40+0x07); delay(1); i=80; lcd_wdat(table6[2]); } else if(k4 = =0) delay1ms(2) if(k4 = =0) { lcd_wcmd(0x80+0x40+0x07); delay(1); i=60; lcd_wdat(table6[3]); } else if(k5 = =0)
33、 delay1ms(2) if(k5 = =0) { lcd_wcmd(0x80+0x40+0x07); delay(1); i=40; lcd_wdat(table6[4]); } else if(k6 = =0) delay1ms(2) if(k6 = =0) { lcd_wcmd(0x80+0x40+0x07); delay(1); i=30; lcd_wdat(table6[5]); } lcd_wdat(table6[5]); motor_ffz(i)
34、; } void main (void) { lcd_xianshi(); lcd_init(); out0init(); while(1) { motor_ffw(i); delay1ms(80) motor_ffz(i); delay1ms(80) } } 4. 操作說明及結(jié)果分析 P1八位分別接開關(guān)開關(guān)的八個口,F(xiàn)208接38譯碼器,PO前四口分別接步進電機四口,F(xiàn)200接液晶 把程序燒寫進去后運行,液晶第一行顯示FX:當(dāng)K0撥上時液晶顯示FX:1,步進電機順時鐘轉(zhuǎn),當(dāng)K1撥上
35、時液晶顯示FX:0,步進電機逆時針轉(zhuǎn),開關(guān)K2—K7控制步進電機轉(zhuǎn)速,(分6檔),并正常顯示在液晶上,K2上撥時,第二行顯示SPEED:1;K3上撥時顯示SPEED:2;K4上撥時顯示SPEED:3; K5上撥時顯示SPEED:4;K5上撥時顯示SPEED:4;K6上撥時顯示SPEED:7;K7上撥時顯示SPEED:8;整個程序運行符合實習(xí)要求。 5. 調(diào)試過程中遇到的問題與解決方法 在整個調(diào)試過程中遇到了很多問題,現(xiàn)在就幾個比較有代表性和常見的問題加以說明。 首先,在本人調(diào)試步進電機速度時,剛開始遇到了電機只抖不轉(zhuǎn)的現(xiàn)象,當(dāng)時檢查了整個程序,未發(fā)生程序上的錯誤,于是很納悶。不過
36、再后來上網(wǎng)差了很多資料后才慢慢了解到,是一下子給步進電機的速度太大,使其無法正常加速到那個速度。比較好的解決方法就是減速或是慢慢加速到那個快的速度。 其次,就是在液晶顯示程序完成后,調(diào)試過程中會遇到?jīng)]執(zhí)行完一次程序閃一下,通過查找相關(guān)資料和仔細閱讀自己程序后才知道,原來是自己在寫程序的時候,每次判斷后都有液晶清屏,后來改了之后正常顯示了。其他方面沒有大的問題。最終我們完成了完美的程序。 6. 硬件實習(xí)總結(jié) 為期兩個星期的單片機軟件、硬件實習(xí)很快就結(jié)束了,雖然整個過程進行的不是那么太順利,實習(xí)過程中遇到了種種問題,但在自己不懈的努力和指導(dǎo)老師的殷切教誨下,終歸還是依依解決,正如大家
37、所說,在自己努力之下嘗到成功的滋味是一件很幸福的事情,的確如此。在這次實習(xí)中收獲很多,我覺得最值得一提的是通過本次實習(xí),培養(yǎng)了我對單片機的濃厚興趣,完成了這次實習(xí)任務(wù)覺得很有成就感。 在專業(yè)只是方面也收獲很多,首先,提高了自己的動手能力,并且在編程方面也有了很大的飛躍,通過本次的實習(xí),鞏固了單片機的知識,學(xué)以致用才是學(xué)習(xí)的最終目標(biāo)。我想這次實習(xí)在我以后的學(xué)習(xí)和工作中都會起到至關(guān)重要的幫助。 7. 參考文獻 【1】 趙德安.單片機原理與應(yīng)用.機械工業(yè)出版社 【3】 向艷.周天彤.程起才.史兵.C語言程序設(shè)計.清華大學(xué)出版社 【4】 朱正偉.何寶祥.劉訓(xùn)飛.數(shù)字電路邏輯設(shè)計.清華大學(xué)出版社 【5】 坂本正文(日). 步進電機應(yīng)用技術(shù).北京科學(xué)出版社 【6】 叢爽.李澤湘.實用運動控制技術(shù).電子工業(yè)出版社
- 溫馨提示:
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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 設(shè)備采購常用的四種評標(biāo)方法
- 車間員工管理須知(應(yīng)知應(yīng)會)
- 某公司設(shè)備維護保養(yǎng)工作規(guī)程
- 某企業(yè)潔凈車間人員進出管理規(guī)程
- 企業(yè)管理制度之5S管理的八個口訣
- 標(biāo)準化班前會的探索及意義
- 某企業(yè)內(nèi)審員考試試題含答案
- 某公司環(huán)境保護考核管理制度
- 現(xiàn)場管理的定義
- 員工培訓(xùn)程序
- 管理制度之生產(chǎn)廠長的職責(zé)與工作標(biāo)準
- 某公司各級專業(yè)人員環(huán)保職責(zé)
- 企業(yè)管理制度:5S推進與改善工具
- XXX公司環(huán)境風(fēng)險排查及隱患整改制度
- 生產(chǎn)車間基層管理要點及建議