




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、基于51單片機(jī)的直流電機(jī)控制一、 試驗(yàn)器件選擇1、 控制芯片的作用主要是與L289相連接驅(qū)動(dòng)直流電機(jī),以及與八位數(shù)碼管相連顯示。(1)、AT89C51是一種帶4K自己FLASH存儲(chǔ)器的低壓、高性能CMOS8為微處理器。單片機(jī)的可擦除只讀存儲(chǔ)器可以反復(fù)擦除1000次。該器件采用ATMEL高密度非易失真存儲(chǔ)制造技術(shù)制造,與工業(yè)標(biāo)準(zhǔn)的MCS-51指令集和輸出關(guān)鍵相兼容。由于將多功能8位CPU和閃存組合在單個(gè)芯片中,ATMEL的AT89C51是一種高效微控制器。AT89C51單片機(jī)為很多嵌入式控制系統(tǒng)提供了一種靈活性?shī)W高且廉價(jià)的方案。(2)、AT89C51引腳圖如下:2、電機(jī)驅(qū)動(dòng)芯片(1)、電機(jī)驅(qū)動(dòng)芯
2、片選擇L298。其主要功能是作為單片機(jī)與直流電機(jī)中間的過(guò)度鏈接,單片機(jī)輸出的信號(hào)通過(guò)L298加載到直流電機(jī)上驅(qū)動(dòng)直流電機(jī)運(yùn)行。其引腳圖如下:(2)、主要工作原理:1、15腳分別是兩個(gè)H橋的電流反饋腳,不用時(shí)可以直接接地;2、3為一對(duì)輸出端口,13、14為一對(duì)輸出端口;4為驅(qū)動(dòng)電壓輸入,最小值必須比輸入的低電平高2;5、7一對(duì)輸入端口,10、12一對(duì)輸入端口,TTL電平兼容6、11使能端,低電平禁止輸出;8、9分別為接地和邏輯電源3、直流電機(jī)。在protues中選擇motor-encoder直流電機(jī),引腳圖如下:上方左右的兩個(gè)引腳在點(diǎn)擊運(yùn)轉(zhuǎn)時(shí)輸出頻率相同的方波,但是在相位上相差90 ,而且在正轉(zhuǎn)
3、和反轉(zhuǎn)是相反,因此可以根據(jù)這兩個(gè)引腳的輸出情況判斷點(diǎn)擊的轉(zhuǎn)向。上方中間的引腳每當(dāng)電機(jī)轉(zhuǎn)一圈就輸出一個(gè)正脈沖,可以據(jù)此冊(cè)數(shù)點(diǎn)擊的轉(zhuǎn)速。左右兩個(gè)引腳是電機(jī)的電壓輸入端。4、 74HC74。當(dāng)D觸發(fā)器的D和CLK輸入端分別接電機(jī)上方的左右兩個(gè)輸出端口時(shí)可以根據(jù)D觸發(fā)器的輸出情況判斷點(diǎn)擊的轉(zhuǎn)速。5、 八位數(shù)碼管。用以顯示。二、系統(tǒng)硬件設(shè)計(jì)連接1、 系統(tǒng)的器件連接圖如下:2、單片機(jī)與數(shù)碼管通過(guò)P0口和P2口相連,其中P2口選擇點(diǎn)亮哪一個(gè)數(shù)碼管,P0口則控制被點(diǎn)亮的數(shù)碼管顯示的數(shù)據(jù)。3、單片通過(guò)P10和P11和L298的第一對(duì)輸入端IN1和IN2相連,然后又L298的第一對(duì)輸出端OUT1和OUT2與直流電
4、機(jī)相連,已達(dá)到控制直流電機(jī)的目的。4、從P14到P17分別接一個(gè)Button按鈕來(lái)實(shí)現(xiàn)PID控制,P36和P37分別接Button按鈕實(shí)現(xiàn)對(duì)電機(jī)的加速與減速控制。5、雙刀雙擲開(kāi)關(guān)SW1課實(shí)現(xiàn)點(diǎn)擊的正轉(zhuǎn)與反轉(zhuǎn),單刀雙擲開(kāi)關(guān)SW2可實(shí)現(xiàn)點(diǎn)擊的開(kāi)啟與停止。三、 系統(tǒng)程序設(shè)計(jì)及功能實(shí)現(xiàn)1、 程序流程圖:開(kāi)始輸入一個(gè)值,點(diǎn)擊Enter按鈕,通過(guò)PID算法,改變PWM波輸出讓電機(jī)運(yùn)行循環(huán)通過(guò)按鈕加減改變當(dāng)前值,Enter鍵確定判斷新的輸入值與當(dāng)前值的差值,將差值加到原值上,通過(guò)PID算法改變PWM波輸出控制電機(jī)運(yùn)行2、 各部分實(shí)現(xiàn)程序:(1)、普通延時(shí):#include <delay.h>vo
5、id delayms(unsigned char x) unsigned char i ; while(x-) for(i = 0 ; i < 120 ; i+) ;(2)、數(shù)碼管顯示:#include <reg51.h>#include <display.h>#include <delay.h>void display_lilun(double num) char code table = 0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, /07對(duì)應(yīng)數(shù)碼 0x7f, 0x6f, 0x77, 0x7c, 0
6、x39, 0x5e, 0x79, 0x71; /8F對(duì)應(yīng)數(shù)碼long int n=num; P0 = 0; P2 =0x7f; P0 = tablen % 1000/100; delayms(2);/百位加小數(shù)點(diǎn) P0 = 0; P2 =0xbf; P0 = tablen % 100 / 10; delayms(2);/十位 P0 = 0; P2 =0xdf; P0 = tablen % 10; delayms(2);/個(gè)位 P0 = 0; /關(guān)閉顯示器void display(double num,int dir) char code table = 0x3f, 0x06, 0x5b, 0x
7、4f, 0x66, 0x6d, 0x7d, 0x07, /07對(duì)應(yīng)數(shù)碼 0x7f, 0x6f, 0x77, 0x7c, 0x39, 0x5e, 0x79, 0x71; /8F對(duì)應(yīng)數(shù)碼long int n=num*10; P0 = 0; P2 =0xf7; P0 = tablen / 1000; delayms(2); /百位加小數(shù)點(diǎn) P0 = 0; P2 =0xfb; P0 = tablen % 1000/100; delayms(2); /百位加小數(shù)點(diǎn) P0 = 0; P2 =0xfd; P0 = tablen % 100 / 10+128; delayms(2);/十位 P0 = 0; P
8、2 =0xfe; P0 = tablen % 10; delayms(2);/個(gè)位 P0 = 0; /關(guān)閉顯示器if(dir=1)P0=0;P2=0xef;P0=0x40;delayms(2);(3)、按鍵掃描:#include <reg51.h>sbit jiashi=P13; /對(duì)各個(gè)按鈕進(jìn)行位定義sbit jianshi=P14;sbit jia=P15;sbit jian=P16;sbit enter=P17;extern int num_key5; /定義全局變量void keyscan()if(jiashi=0)while(!jiashi);num_key0+;if(j
9、ianshi=0)while(!jianshi);num_key1+;if(jia=0)while(!jia);num_key2+;if(jian=0)while(!jian);num_key3+;if(enter=0)while(!enter);num_key4+;(4)、PWM波輸出:#include <reg51.h>#include <delay.h>#include <PWM.h>extern int PWM ; /賦初值extern int start,sudu_lilun;extern double dis_count;sbit S2 =P36
10、 ; /PWM值減少鍵sbit S3 =P37 ; /PWM值增加鍵void PWM_duty() if(start>=1) PWM=sudu_lilun;doif(PWM!=0xff) PWM+ ;delayms(10); while(S3=0);doif(PWM>=0x02)PWM- ;delayms(10); while(S2=0);(5)、中斷服務(wù)程序:#include <reg51.h>extern int PWM,count,count1,dir,count20ms_flag;extern double dis_count;sbit PWM_OUT1=P11
11、;sbit PWM_OUT2=P10;void timer0() interrupt 1 long int i; TR1=0 ;dir=0; TL0=0x00;TH0=0xd8; /10msTL0=0xf0; TH1=PWM ; TR1=1 ;PWM_OUT1=0 ; /啟動(dòng)輸出PWM_OUT2=0;if(i+=492)count20ms_flag=1;i=0;dis_count=(double)(count+count1)/2;count=0;count1=0;void timer1() interrupt 3 TR1=0 ;if(dir=0)PWM_OUT1=1 ; /結(jié)束輸出PWM_OU
12、T2=0;elsePWM_OUT1=0;PWM_OUT2=1;void EIRQ0(void) interrupt 0EX0=0;count+;EX0=1;void EIRQ1(void) interrupt 2EX1=0;count1+;EX1=1;(6)、PID控制:#include <PID.h>#include <PWM.h>int P,I,D;extern int sudu_lilun;typedef struct PID /定義結(jié)構(gòu)體int SetPoint; /目標(biāo)long SumError; /誤差double Proportion; /比例系數(shù)doub
13、le Integral; /積分系數(shù) double Derivative; /微分系數(shù)int LastError; int PrevError; PID;static PID sPID;static PID *sptr = &sPID;void IncPIDInit()sptr->SumError = 0;sptr->LastError =0; /Error-1sptr->PrevError =0; /Error-2sptr->Proportion =0.5; /比例系數(shù)sptr->Integral =0.3; /積分系數(shù)sptr->Derivati
14、ve = 0.3; /微分系數(shù)sptr->SetPoint =sudu_lilun;int IncPIDCalc(int NextPoint)register int iError, iIncpid; /當(dāng)前的誤差值iError = sptr->SetPoint - NextPoint; /計(jì)算增加量iIncpid = sptr->Proportion * iError /Ek項(xiàng)- sptr->Integral * sptr->LastError /Ek1項(xiàng)+ sptr->Derivative * sptr->PrevError; /Ek2項(xiàng)/存儲(chǔ)當(dāng)前
15、誤差以便后面計(jì)算sptr->PrevError = sptr->LastError;sptr->LastError = iError;/返回增量值return(iIncpid);(7)、main函數(shù):#include <reg51.h>#include <intrins.h>#include <key.h>#include <delay.h>#include <display.h>#include <PWM.h>#include <PID.h>sbit P10=P12; /確定電機(jī)轉(zhuǎn)向int
16、num_key5;int PWM,PWM1,count,count1,dir,sudu_lilun,start,count20ms_flag;double dis_count;int PWM_PID;void init();void main() init(); while(1) PWM_duty();if(P10=1)dir=0;elsedir=1; keyscan();sudu_lilun=num_key0*10-num_key1*10+num_key2-num_key3;display_lilun(sudu_lilun);if(num_key4=1)start=1;display(dis_count,dir)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 南昌交通學(xué)院《醫(yī)學(xué)綜合1(基礎(chǔ)到臨床)》2023-2024學(xué)年第二學(xué)期期末試卷
- 南通大學(xué)杏林學(xué)院《中國(guó)畫(huà)創(chuàng)作》2023-2024學(xué)年第二學(xué)期期末試卷
- 榆林能源科技職業(yè)學(xué)院《經(jīng)貿(mào)數(shù)據(jù)搜集與處理》2023-2024學(xué)年第二學(xué)期期末試卷
- 甘肅工業(yè)職業(yè)技術(shù)學(xué)院《中醫(yī)推拿與養(yǎng)生》2023-2024學(xué)年第二學(xué)期期末試卷
- 硬質(zhì)堤壩加固方案(3篇)
- 公司年度規(guī)劃方案(3篇)
- 客廳拆除改造方案(3篇)
- 涂料店面升級(jí)方案(3篇)
- 閑置資產(chǎn)考核方案(3篇)
- 足球線上教學(xué)課件
- 【MOOC】線性代數(shù)-同濟(jì)大學(xué) 中國(guó)大學(xué)慕課MOOC答案
- 離斷傷應(yīng)急救護(hù)原則教學(xué)
- 四川省瀘州市(2024年-2025年小學(xué)五年級(jí)語(yǔ)文)人教版摸底考試((上下)學(xué)期)試卷及答案
- 人教版勞動(dòng)教育一年級(jí)上冊(cè)全冊(cè)課件
- 生物統(tǒng)計(jì)學(xué)習(xí)題集
- 義務(wù)教育信息科技課程標(biāo)準(zhǔn)(2024年版)
- 微信公眾號(hào)開(kāi)發(fā)服務(wù)協(xié)議
- 校園網(wǎng)規(guī)劃設(shè)計(jì)方案
- 城市公交特許經(jīng)營(yíng)協(xié)議
- 2025年江蘇省南通市中考生物試卷(含答案解析)
- 籃球大單元教學(xué)計(jì)劃
評(píng)論
0/150
提交評(píng)論