單片機課程設(shè)計報告溫控直流電機轉(zhuǎn)速_第1頁
單片機課程設(shè)計報告溫控直流電機轉(zhuǎn)速_第2頁
單片機課程設(shè)計報告溫控直流電機轉(zhuǎn)速_第3頁
單片機課程設(shè)計報告溫控直流電機轉(zhuǎn)速_第4頁
單片機課程設(shè)計報告溫控直流電機轉(zhuǎn)速_第5頁
已閱讀5頁,還剩7頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

-.z.摘要本論文要求使用單片機進行電路設(shè)計,同時單片機部分應(yīng)帶有顯示功能。單片機對*個位置進行溫度監(jiān)控,當(dāng)外部溫度≥45℃時,電動機加速正轉(zhuǎn),當(dāng)溫度≥75℃時,電動機全速正轉(zhuǎn);當(dāng)外部溫度≤10℃時,電動機加速反轉(zhuǎn),當(dāng)溫度≤0℃時,電動機全速反轉(zhuǎn);當(dāng)溫度回到10℃~45℃之間時電動機逐漸停止轉(zhuǎn)動。溫度采集模塊可以采用一只溫度傳感器DS18B20,此傳感器,可以很容易直接讀取被測溫度值,利用單片機的一個I/O口的引腳,通過軟件對這個引腳不斷地輸出高低電平來實現(xiàn)PWM波的輸出,51系列單片機無PWM輸出功能,可以采用定時器配合軟件的方法輸出。對精度要求不高的場合,非常實用。所謂脈沖寬度調(diào)制是指用改變電機電樞電壓接通與斷開的時間的占空比來控制電機轉(zhuǎn)速的方法,稱為脈沖寬度調(diào)制(PWM)。PWM驅(qū)動裝置是利用全控型功率器件的開關(guān)特性來調(diào)制固定電壓的直流電源,按一個固定的頻率來接通和斷開,并根據(jù)需要改變一個周期內(nèi)“接通”與“斷開”時間的長短,改變直流電動機電樞上電壓的“占空比”來改變平均電壓的大小,從而控制電動機的轉(zhuǎn)速。因此,這種裝置又稱為“開關(guān)驅(qū)動裝置”。對于直流電機調(diào)速系統(tǒng),其方法是通過改變電機電樞電壓導(dǎo)通時間與通電時間的比值(即占空比)來控制電機速度。本次設(shè)計可以作為簡單控制向復(fù)雜控制的過度,實現(xiàn)直流電機啟動、正反轉(zhuǎn)控制和順序控制外,還要進行轉(zhuǎn)速控制。為以后復(fù)雜控制設(shè)計做基礎(chǔ)。關(guān)鍵詞:PWM;單片機;溫度控制-.z.1設(shè)計總說明1.1引言在電氣時代的今天,電動機一直在現(xiàn)代化的生產(chǎn)和生活中起著十分重要的作用,無論在工業(yè)農(nóng)業(yè)生產(chǎn)、交通運輸、國防航空航天、醫(yī)療衛(wèi)生、商務(wù)與辦公設(shè)備,還是在日常生活中的家用電器,都在大量地使用著各式各樣的電動機。據(jù)資料統(tǒng)計,現(xiàn)在有的90%以上的動力源來自于電動機,我國生產(chǎn)的電能大約有60%用于電動機。電動機與人們的生活息息相關(guān),密不可分。隨著現(xiàn)代化步伐的邁進,人們對自動化的需求越來越高,使電動機控制向更復(fù)雜的控制發(fā)展。1.2研究意義對電動機的控制可分為簡單控制和復(fù)雜控制兩種,簡單控制是對電動機進行啟動、制動、正反轉(zhuǎn)控制和順序控制,復(fù)雜控制是對電動機的轉(zhuǎn)速轉(zhuǎn)速、轉(zhuǎn)角、轉(zhuǎn)矩、電壓、電流等物理量進行控制。本次設(shè)計可以作為簡單控制向復(fù)雜控制的過度,實現(xiàn)直流電機啟動、制動、正反轉(zhuǎn)控制和順序控制外,還要進行轉(zhuǎn)速控制。為以后復(fù)雜控制做為基礎(chǔ)學(xué)習(xí)。直流電動機具有良好的起動、制動性能,宜于在大*圍內(nèi)平滑調(diào)速,早期直流電動機的控制均以模擬電路為基礎(chǔ),采用運算放大器、非線性集成電路以及少量的數(shù)字電路組成,控制系統(tǒng)的硬件部分非常復(fù)雜,功能單一,而且系統(tǒng)非常不靈活、調(diào)試?yán)щy,阻礙了直流電動機控制技術(shù)的發(fā)展和應(yīng)用*圍的推廣。隨著單片機技術(shù)的日新月異,使得許多控制功能及算法可以采用軟件技術(shù)來完成,為直流電動機的控制提供了更大的靈活性,并使系統(tǒng)能達(dá)到更高的性能。采用單片機構(gòu)成控制系統(tǒng),可以節(jié)約人力資源和降低系統(tǒng)成本,從而有效的提高工作效率,可以實現(xiàn)復(fù)雜的控制,控制靈活性和適應(yīng)性好,無零點漂移,控制精密高,可提供人機界面,多機聯(lián)網(wǎng)工作。采用智能功率電路驅(qū)動比傳統(tǒng)的分立功率器件組成的驅(qū)動體積小,功能強;減少了電路元器件數(shù)量,提高了系統(tǒng)的可靠性;監(jiān)控更容易實現(xiàn);集成化使電路的連線減少,減少了布線電容和電感以及信號傳輸?shù)难訒r,增加了系統(tǒng)抗干擾的能力;集成化使系統(tǒng)成本大大降低。1.3系統(tǒng)設(shè)計內(nèi)容本設(shè)計將介紹一種基于單片機的溫度控制直流電機轉(zhuǎn)速系統(tǒng)。該系統(tǒng)采用AT89C51單片機為核心,通過AT89C51單片機驅(qū)動數(shù)字溫度傳感器DS18B20,進行溫度數(shù)據(jù)采集通過溫度的比較和溫度*圍設(shè)定的程序控制產(chǎn)生PWM(脈寬調(diào)制)信號;通過L298驅(qū)動芯片來控制直流電機的啟動、速度、方向的變化;通過LM016L顯示溫度。論文包括對單片機的功能及各個管腳和晶振復(fù)位電路的介紹,整個電路設(shè)計包括溫度采集模塊,單片機控制模塊,溫度顯示模塊,和電機及電機驅(qū)動模塊。2系統(tǒng)方案設(shè)計2.1系統(tǒng)的設(shè)計要求及主要技術(shù)指標(biāo)本論文要求使用單片機進行電路設(shè)計,同時單片機部分應(yīng)帶有顯示功能。單片機對*個位置進行溫度監(jiān)控,當(dāng)外部溫度≥45℃時,電動機加速正轉(zhuǎn),當(dāng)溫度≥75℃時,電動機全速正轉(zhuǎn);當(dāng)外部溫度≤10℃時,電動機加速反轉(zhuǎn),當(dāng)溫度≤0℃時,電動機全速反轉(zhuǎn);當(dāng)溫度回到10℃~45℃之間時電動機逐漸停止轉(zhuǎn)動。2.2系統(tǒng)總體方案系統(tǒng)總體方案設(shè)計,如下圖1單單片機溫度顯示溫度采集DS18B20PWM輸出電機驅(qū)動L298直流電動機系統(tǒng)供電圖1系統(tǒng)總體方案圖2.3總體方案論述該系統(tǒng)采用AT89C51單片機為核心,通過DS18B20進行溫度采集,送入單片機,經(jīng)過軟件編程進行溫度的比較和*圍劃定,然后通過程序控制由單片機產(chǎn)生不同的PWM(脈沖寬度調(diào)制)信號,送給電機驅(qū)動芯片L298的使能端口,通過L298驅(qū)動芯片來控制直流電機的啟動、速度、方向的變化;單片機將溫度數(shù)據(jù)傳送給LM016L顯示溫度。整個電路設(shè)計包括溫度采集模塊,單片機控制模塊,溫度顯示模塊,和電機及電機驅(qū)動模塊。3硬件電路設(shè)計3.1溫度采集模塊的電路連接DS18B20有三個管腳:GND為電源地,DQ為數(shù)字信號輸入/輸出端,VCC為外接供電電源接入端(用寄生電源方式時接地)。在硬件上,DS18B20與單片機的連接有兩種方法,一種是VCC接外部電源,GND接地,I/O與單片機的I/O線相連;另一種是用寄生電源供電,此時VCC、GND接地,I/O接單片機I/O。無論是內(nèi)部寄生電源還是外部供電,I/O口線要接5KΩ左右的上拉電阻。本系統(tǒng)中DS18B20的DQ口與單片機的P3.3口連接,GND接地。Protues軟件仿真圖如圖2所示。圖2DS18B20的Protues仿真圖3.2轉(zhuǎn)速控制模塊設(shè)計A(IN1)、B(IN2)分別與AT89C51單片機的P1.0、P1.1相連接,輸入控制電位來控制電機的正反轉(zhuǎn)。ENA與單片機的P1.2口相連接,P1.2口輸出控制電動機轉(zhuǎn)速的PWM信號,來控制電動機的加速、減速,啟動、停止。由于我們使用的電機是線圈式的,在從運行狀態(tài)突然轉(zhuǎn)換到停止?fàn)顟B(tài)和從順時針狀態(tài)突然轉(zhuǎn)換到逆時針狀態(tài)時會形成很大的反向電流,在電路中加入二極管的作用就是在產(chǎn)生反向電流的時候進行泄流,保護芯片的安全。上面接電源那個是當(dāng)VS斷電后,電機的產(chǎn)生的磁場產(chǎn)生很大的電動勢保護電機(因為電機可能正傳或者反轉(zhuǎn),所以兩個方向均要設(shè)計二極管),接地那個作用在于保護單片機等元件。圖3轉(zhuǎn)速控制模塊protues仿真的電路圖3.3溫度顯示模塊設(shè)計數(shù)據(jù)手冊中可能介紹LM1602內(nèi)部D0~D7已有上拉,可以使用P0口直接驅(qū)動。在Proteus里L(fēng)M016L內(nèi)部可能沒有,應(yīng)該人為加上拉電阻。圖5溫度顯示模塊設(shè)計proteus仿真圖系統(tǒng)軟件設(shè)計4.1系統(tǒng)軟件構(gòu)架端口初始化端口初始化液晶顯示程序DS18B20函數(shù)初始化讀取溫度值并顯示延時開啟中斷T0定時器控制電動機正/反轉(zhuǎn),并通過PWM信號控制電動機轉(zhuǎn)速等待中斷開始返回圖6系統(tǒng)軟件總框圖元器件清單表2元器件清單名稱型號數(shù)量備注單片機AT89C511二極管1N40071電容CAP2220pF2100nF電解電容CAP-ELEC110uF晶振CRYSTAL112MHZ溫度采集器DS18B201電機控制元件L2981LCD顯示器LM016L1電機轉(zhuǎn)子MOTOR-DC1電阻排阻RESPESPACK11110K4.7K6電路設(shè)計仿真圖7設(shè)計電路的proteus仿真結(jié)論本方案實現(xiàn)了單片機通過對溫度的采集和比較對直流電機進行轉(zhuǎn)速控制,以及利用軟件模擬實現(xiàn)直流電機PWM調(diào)速的方法。以AT89C51單片機為控制核心,通過DS18B20進行溫度采集,送入單片機,經(jīng)過軟件編程進行溫度的比較和*圍劃定,然后通過程序控制由單片機產(chǎn)生不同的PWM(脈沖寬度調(diào)制)控制信號,送給電機驅(qū)動芯片L298的使能端口,通過L298驅(qū)動芯片來控制直流電機的啟動、速度、方向的變化實現(xiàn)了對普通直流電機的轉(zhuǎn)速調(diào)節(jié),為進一步研究和優(yōu)化直流電機控制方法提供了基礎(chǔ)。達(dá)到了系統(tǒng)的設(shè)計要求:單片機對*個位置進行溫度監(jiān)控,當(dāng)外部溫度≥45℃時,電動機加速正轉(zhuǎn),當(dāng)溫度≥75℃時,電動機全速正轉(zhuǎn);當(dāng)外部溫度≤10℃時,電動機加速反轉(zhuǎn),當(dāng)溫度≤0℃時,電動機全速反轉(zhuǎn);當(dāng)溫度回到10℃~45℃之間時電動機逐漸停止轉(zhuǎn)動。從這次的設(shè)計中,我真真正正的意識到,在以后的學(xué)習(xí)中,要理論聯(lián)系實際,把我們所學(xué)的理論知識用到實際當(dāng)中,學(xué)習(xí)單機片機更是如此,程序只有在經(jīng)常的寫與讀的過程中才能提高,這就是我在這次設(shè)計中的最大收獲。參考文獻實驗程序*include<reg51.h>*include<intrins.h>*difineuchar;unsignedchar*difineuint;unsignedint*definedelayNOP(){_nop_();_nop_();_nop_();_nop_();}sbitDQ=p3^3;sbitLCD_RS=p2^0;sbitLCD_RW=p2^1;sbitLCD_EN=p2^2;sbitMA=P1^0;sbitMB=p1^1;sbitPWM1=p1^2;ucharcodetemp_DISP_Title[]={"Currenttemp:"};ucharcurrent_temp_Display_Buffer[]={"TEMP:"};//溫度字符ucharcode_temperature_char[8]={0*0C,0*12,0*12,0*0C,0*00,0*00,0*00,0*00,0*00,};//溫度小數(shù)位對照表uchuarcodedf_Table[]={0,1,1,2,2,3,3,4,4,5,6,6,7,8,8,9,9};ucharCurrenT=0;//當(dāng)前讀取的溫度整數(shù)部分charSigned_Temp=0;//有符號溫度值ucharTemp_Value[]={0*00,0*00};//從DS18B20讀取溫度值ucharBack_Temp_Value[]={0*FF,0*FF};//溫度數(shù)據(jù)備份ucharDisplay_Digit={0,0,0,0};//待顯示的各溫度數(shù)位bitDS18B20_IS_OK=1;//傳感器正常標(biāo)志uinttCount=0;//---------------------------------------------------------------------//延時1//---------------------------------------------------------------------voidDelay*us(int*){uchari;while(*--)for(i=0;i<200;i++);}//---------------------------------------------------------------------//液晶控制函數(shù)------------------------------------------------------------------//ucharLCD_Busy_Check()reentrant//voidWrite_LCD_mand(ucharcmd)//voidWrite_LCD_Data(uchardata)//voidLCD_Initialise()//voidSet_LCD_POS(ucharpos)//voidWrite_NEW_LCD_Char()//---------------------------------------------------------------------//---------------------------------------------------------------------//延時2//---------------------------------------------------------------------voidDelay(unit*){while(--*);}//---------------------------------------------------------------------//初始化DS18B20//---------------------------------------------------------------------ucharInit_DS18B20(){ucharDQ=1;Delay(8);DQ=0;Delay(90);DQ=1;Delay(8);status=DQ;Delay(100);DQ=1;returnstatus;//初始化成功返回0}//---------------------------------------------------------------------//讀一字節(jié)//---------------------------------------------------------------------ucharReadOneByte(){uchari,dat=0;DQ=1;_nop_();for(i=0;i<8;i++){DQ=0;data>>=1;DQ=1;_nop_();_nop_();if(DQ)dat1=0*80;Delay(30);DQ=1;}returndat;}//---------------------------------------------------------------------//寫一字節(jié)//---------------------------------------------------------------------voidWriteOnebyte(uchardat){uchari;for(i=0;i<8;i++){DQ=0;DQ=dat&0*01;Delay(5);DQ=1;dat>>=1;}}//---------------------------------------------------------------------//讀取溫度值//---------------------------------------------------------------------voidRead_Temperature(){if(Init_DS18B20()==1)//DS18B20故障DS18B20_IS_OK=0;else{writeoneByte(0*CC);//跳過序列號writeoneByte(0*44);//啟動溫度轉(zhuǎn)換Init_DS18B20();writeoneByte(0*CC);writeoneByte(0*BE);//讀取溫度寄存器Temp_Value[0]=ReadOneByte();//溫度低8位Temp_Value[1]=ReadOneByte();//溫度高8位DS18B20_IS_OK=1;}}//---------------------------------------------------------------------//在LCD上顯示當(dāng)前溫度//---------------------------------------------------------------------voidDisplay_Temperature(){uchari;uchart=150;//延時值ucharng=0;//負(fù)數(shù)標(biāo)識//如果為負(fù)數(shù)則取反加1,并設(shè)置負(fù)數(shù)標(biāo)識if((Temp_Value[1]&0*F8)==0*F8){Temp_Value[1]=~Temp_Value[1];Temp_Value[0]=~Temp_Value[0]+1;if(Temp_Value[0]==0*00)Temp_Value[1]++;ng=1;}//查表得到溫度小數(shù)部分Display_Digit[0]=df_Table[Temp_Value[0]&0*0F];//獲取溫度整數(shù)部分(無符號)Current=((Temp_Value[0])&0*F0)>>4)|((Temp_Value[1]&0*07)<<4);//獲取有符號溫度值(忽略小數(shù)位)Signed_Temp=!ng"CurrenT:-CurrenT;//將整數(shù)部分分解為三位待顯示數(shù)字Display_Digit[3]=CurrenT/100;Display_Digit[2]=CurrenT%100/10;Display_Digit[1]=CurrenT%10;//刷新LCD顯示緩沖Current_Temp_Display_Buffer[11]=Display_Digit[0]+'0';Current_Temp_Display_Buffer[10]='.';Current_Temp_Display_Buffer[9]=Display_Digit[1]+'0';Current_Temp_Display_Buffer[8]=Display_Digit[2]+'0';Current_Temp_Display_Buffer[7]=Display_Digit[3]+'0';//高位為0時不顯示if(Diplay_Digit[3]==0)Current_Temp_Display_Buffer[7]='';//高位為0且次高位為0時,次高位不顯示if(Display_Digit[2]==0&&Display_Digit[3]==0)//負(fù)數(shù)符號顯示在恰當(dāng)位置if(ng){if(Current_Temp_Display_Buffer[8]=='')Current_Temp_Display_Buffer[8]=='-';elseif(Current_Temp_Display_Buffer[7]=='')Current_Temp_Display_Buffer[7]=='-';)else(Current_Temp_Display_Buffer[6]=='-';}//在第一行顯示標(biāo)題Set_LCD_POS(0*00);for(i=0;i<16;i++)Write_LCD_Data(Temp_Disp_Title[i]);//在第二行顯示當(dāng)前溫度Set_LCD_POS(0*40);for(i=0;i<16;i++)Write_LCD_Data(Current_Temp_Display_Buffer[i]);//顯示溫度符號℃Set_LCD_POS(0*4D);Write_LCD_Data(0*00);Set_LCD_POS(0*4E);Write_LCD_Data('C');}//---------------------------------------------------------------------//T0定時器控制電動機正/反轉(zhuǎn),并輸出PWM信號控制轉(zhuǎn)速//---------------------------------------------------------------------VoidT0_INT()interrup1{TH0=-50000/256;TL0=-50000%256;Read_Temperature();//讀取溫度if(!DS18B20_IS_OK)return;//讀錯時退出//讀取正常且溫度發(fā)生變化則刷新顯示if(Temp_Value[0]!=Back_Value[0]||Temp_Value[1]!=Back_Value[1]){Back_Temp_Value[0]=Temp_Value[0];Back_Temp_Value[1]=Temp_Value[1];Disply_Temperature();}//≥75℃或≤0℃時,電動機全速轉(zhuǎn)動,占空比為100%.if(Signed_Temp≥75)Signed_Temp=75;if(Signed_Temp≤0)Signed_Temp=0;//>=45℃時加速正轉(zhuǎn),75℃時全速運行if(Signed_Temp≥45){MA=1;MB=0;//正轉(zhuǎn)if(Signed_Temp==45)//PWM輸出(占空比:0%){PWM1=0;Delay*us(30);return;}elseif(Signed_Temp==75)//PWM輸出(占空比:

溫馨提示

  • 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)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論