2024年3月7日發(作者:幼兒園特色教育)

廣東白云學院
畢業設計(論文)開題報告
題目:基于霍爾傳感器的控制電機測速裝置
的設計與實現
課 題 類 型: 論文 □ 設計 □
學 生 姓 名
學 號:
班 級:07自動化2班
專業(全稱):自動化
系 別:電子信息工程系
指 導 教 師:
2010年 10月
基于霍爾傳感器的電機測速裝置的設計與實現
摘要
在工業生產生活中,經常會遇到各種需要測量轉速的場合,例如在發電機、電動機、機床主軸等旋轉設備的實驗運轉和控制中,常需要分時或連續測量、顯示其轉速及瞬時速度。為了能精確地測量轉速,還要保證測量的實時性,要求能測的瞬時速度。針對工業上常見的發動機設計了以單片機STC89C52為控制核心的轉速測量系統,本文介紹基于霍爾傳感器的電機測速系統,該系統利用霍爾傳感器采集脈沖信號,通過定時計數法程序,將轉速結果實時顯示出來。實際測試表明,該系統能滿足發動機轉速測量要求。
關鍵詞: 單片機;電機測速系統;霍爾傳感器;定時
SENSOR BASED ON HALL OF MOTOR
SPEED DEVICE DESIGN
ABSTRACT
In the cour of industrial production in life often need to measure
speed encounter various occasions. For example, AT the engines motors
machine tool spindles and other rotating equipment’s operation and
control of the piolt often need frequent time-sharing or continuous
measurements show its speed and instantaneous order to
accurately measured. The rotate spee measurement system for the common
engine is designed with the single chip paper inroduces a
microcomputer-bad debugger選擇的是FET Debugger!然后檢查LCD接口電路,有時候接觸不良也會不亮的。我遇到一些LCD不亮的板子,大部分都是焊接不良才導致不亮的。檢查下程序里watchdog的設置,要及時清除watchdog的!最后顯示出結果如4.4圖就是正常的
4.4圖LCD1602正常顯示
L298N驅動電路調試:在焊接硬件電路時需細心排除元器件和焊接等方面可能出現的故障,元器件的安裝位置出錯或引腳插錯都可能導致電路短路或實現不了電路應有的功能,甚至燒壞元器件。為方便調試,用信號發生器產生的10KHz的正弦信號送給L298N驅動電路,調試直到OUT1和OUT2可以輸出矩形脈沖信號為止,該驅動電路調試即可完成。
通過以上的電路功能調試,就可以確定電路設計的問題所在可以及時進行更改。達到最佳的設計效果。
4.4 軟件部分調試
在進行軟件編程調試時需要用到單片機的集成開發環境Keil
uVision3軟件,編程時極易出現誤輸入或其他的一些語法錯誤,最重要的還有一些模塊無語法錯誤卻達不到預期的功能,都要經過調試才能排除。Keil uVision3 軟件具有很強大的編程調試功能,能夠模擬仿真實際單片機的端口和內部功能部件的狀態值。該軟件中有硬件調試和軟件調試功能,可以觀察單片機內存單元對應的運行值,可以顯示單片機端口、中斷、定時器2、定時器2還有串口對應的運行值??梢詥尾秸{試也可以模塊調試,最好的是可以對你所懷疑的語句模塊設置斷點。Keil uVision3 具有的強大的編譯調試功極大地方便了對軟件部分的調試。在具體調試過程中,系統將各功能模塊如數據處理程序、按鍵程序設計、中斷服務子程序、LCD顯示程序分別分開進行調試,最后進行主程序的整體調試。編譯無誤后生成目標代碼.HEX文件
一般為了更好的觀察仿真的效果及各部分的功能等問題,我們學生大多數采用ISIS 7 Professional軟件進行仿真,利用ISIS 7 Professional軟件畫出原理圖(附圖3),可以形象的顯示出各部分的運行情況,很清楚各部分參數的多少!但是我們要注意仿真圖效果與實際的硬件電路效果是有一定的差異的,我們必須很好調試,找到控制的最佳效果
最后采用STC 單片機下載軟件STC_ISP_V580將其下載到實驗板的單片機中。下載軟件的最后一步:點擊軟件STC_ISP_V580界面中的[下載]按鈕,在點擊前一定要保持實驗板的串行通信線及電源線與PC機連接良好,并且實驗板的電源開關處于關閉狀態,然后點擊[下載]按鈕,再打開實驗板電源開關,此時軟件將自動完成程序下載。最后將硬件和軟件結合
起來整體調試實現系統的測速功能。
4.5實驗調試與系統優化
設計基本完成題目中的各項要求,在調試過程中發現了許多的問題。其中電機轉速的測量比較精確,與實際轉速相差1轉秒分左右,精度在全量程范圍內優于1轉秒,存在一定的誤差,經分析主要是由以下原因造成:
1)由于電機的轉盤是采用塑料盤片磨制而成,高速旋轉時容易打飄不穩,導致獲得的脈沖信號頻率與實際轉速有一定的誤差。
2) 中斷處理的進入和中斷處理程序都會有一定時間的誤差,從而導致定時時間的誤差,這也是造成測量誤差的一個因素。
3)在固定裝置時,由于是手動操作,從而導致初始獲得信號有一定的時差。
通過各系統分析的結果,然后進入系統設計的優化。在弄清楚霍爾傳感器的電機測速裝置各部件的工作原理的情況下,編制了電機的控制持續,制定一個合理高效的調試方法步聚。我的調試步驟如下:
根據智能小車的硬件,編寫簡單的測試程序對硬件的電路分別進行測試。
1)編寫的程序對硬件測試沒有問題后,再劃分功能模塊,編寫功能模塊的程序,并進行調試;
2)若發現程序效果不理想,則首行考慮程序流程是否合理,再檢查語句是否書寫正確。
3)最后進行整個持續的調試,這是最后一步,與是最難的一步,要協調好各個模塊之間的先后順序,處理好他們之間因為鎖死狀態。
4)對寫好的代碼進行優化,使代碼變得更為簡潔。
在軟件編寫與調試部分我完全按照上面的步驟去做,由于以前沒有用過PWM調制控制,PWM調制控制的學習實踐花了一段時間。
因此,總程序經過多次調式和修改后,最終能夠使霍爾傳感器的電機測
速裝置具有測速顯示,運行時間顯示,電機運行速度控制,的功能,基本上完成了本設計的任務
第五章 總結
在這三個月的設計過程中,我邊查資料邊進行軟件的調試,在這三個月中我做了以下工作:
(1)對設計中所需要的元件分析其原理和性能,極其應用和發展。
(2)詳細介紹霍爾傳感器的電機測速裝置硬件設計的方案,電路圖,并附上說明。
(3)詳細介紹軟件設計方法,并給出個部分的程序清單。
(4)給出對本設計進行仿真調試與優化的過程。
在制作的過程中兩大部分的功能模塊花了很大的功夫,一個是電機的驅動程序,一個是LCD液晶顯示程序。
在本裝置的研制過程中,充分考慮了作為便攜裝置其電源的提供、功率的損耗、體積的大小、價位的高低、使用及攜帶的方便性等因素。本裝置不受人群、時間、地點等的影響,對任何人都適用。而且還能快速、準確地測量。本產品成本低、技術含量高、其穩定性可靠性已經過實踐的考驗。本裝置是將我們的學習知識和社會的需求結合創作出來的。
參考文獻
[1] 吳波等。工程創新設計與實踐教程,電子工業出版社
[2] 周興華,手把手教你學單片機,北京航空航天大學出版社
[3] 姚福安 編著 ,電子電路設計與實現,山東科學技術出版社
[4] 于長官。自動控制技術及應用,哈爾濱工業大學出版社
[5] 胡壽松。自動控制原理,科學出版社
[6]江太輝,石秀芳.MCS-52系列單片機原理與應用.廣州:華南理工大學出版社,2002.8
[7]楊忠煌,黃博俊,李文昌.單芯片8051實務與應用.北京:中國水利水電出版社,2001
[8]張世銘,王振和.直流調速系統.武漢:華中理工大學出版社,1988.103~107
[12]王旭,王積森.機械設計課程設計.機械工業出版社,2003
[13]陸玉,何在洲,修延偉.機械設計課程設計(第3版).機械工業出版社,1999
[14]陳隆昌,閻治安,劉新正.控制電機.西安電子科技大學出版社,2000.
致 謝
白駒過隙,轉眼四年的學習生活就將結束了。本論文是在劉崇進老師的悉心指導下完成的,老師嚴謹的治學態度,務實的工作作風,孜孜不倦的學習精神令我敬佩至深,受益非淺。陳老師很忙,但還是抽出時間來指導我們,修改我們的論文,且從來都是不厭其煩地為我們解答各種問題,特別是在我論文完成的這段時間。在這里我要特別謝謝劉老師。
其次感謝我的同學和朋友,他們給予了我無私的幫助和無窮的精神動力。在我遇到知識上的或技術上的難點時,他們總是能給我及時的援助。感謝我同宿舍的其他同學,謝謝她們在這大學四年里給我的幫助和關心。
最后,特別感謝父母和親人在我求學過程中自始至終的支持。
附錄1:硬件總圖
附錄2:電路PCB版圖
附錄3:ISIS 7 Professional仿真圖
附錄4:基于霍爾傳感器的電機轉速裝置元件清單
序號 元件名稱 數量
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
STC89C52單片機
L298N電機驅動芯片
LCD1602液晶顯示
10K電阻排
霍爾傳感器
10K滑動電阻
發光二極管
控制按鍵
IN4148
10K歐姆電阻
22PF電容
10UF25V電容
12MHZ晶振
DV9.0直流電機
5V~12V電源插座
1個
1個
1個
1個
1個
1個
2個
2個
4個
3個
2個
1個
1個
1個
1個
附錄5:程序清單
電機測速程序
PWM 控制 直流電機
晶振為11.0592M
利用定時器控制產生占空比可變的 PWM 波
按K1,PWM值增加,則占空比減小,電機轉速加大。
按K2,PWM值減小,則占空比增加,電機轉速減少。
當PWM值增加到最大值或減小到最小值時,蜂鳴器將報警。*********************************************************
#include "reg51.,shi;
void ddelay(uint);
void lcd_wait(void);
void display();
void initLCM();
void
WriteCommandLCM(uchar
WCLCM,uchar BusyC);
void STR();
void account();
void Beep(void);
void delayms(uchar ms);
void delay(uchar t);
*********************************************************
void main(void)
{ TMOD=0x21 ;
TH0=0xfc ;1ms延時常數
TL0=0x66 ;頻率調節
TH1=PWM ;脈寬調節
TL1=0 ;
ET0=1 ;
ET1=1 ;
TR0=1 ;
RCAP2H = 0x3C; 定時器2
定時50MS
RCAP2L = 0x0B0;
ET2 = 1;
TR2=1; 外部中斷
IT0=1; 下降沿觸發中斷
EX0=1; 開外中斷0
EA=1 ; 開總中斷
initLCM();初始化LCD1602
WriteCommandLCM(0x01,1);清顯示屏
dianji1=1; 電機開機默認正轉
dianji2=0;
while(1)
{ display( );
do
{ if(PWM!=0xff)
{ PWM++;
delayms(10);}
el Beep(); }
while(K1==0);
do
{ if(PWM!=0x02)
{ PWM--;
delayms(10);
}
el Beep();
}
while(K2==0);}}
*********************************************************
定時器0中斷服務程序.
*********************************************************
void timer0()interrupt 1
{
TR1=0 ;
TH0=0xfc ;
TL0=0x66 ;
TH1=PWM ;
TR1=1 ;
ENA=0 ; 啟動輸出
}
*********************************************************
定時器1中斷服務程序
*********************************************************
void timer1()interrupt 3
{TR1=0 ;
ENA=1 ;結束輸出
}
*********************************************************
蜂鳴器子程序
*********************************************************
void Beep(void)
{uchar i ;
for(i=0;i<100;i++)
{ delay(100);
BEEP=!BEEP ;Beep取反
}
BEEP=1 ;關閉警示燈
delayms(100);
}
**********************************************************
void ex0_isr (void) interrupt 0
using 1外部中斷0服務函數
{ count++;
}
******************************************************
void timer_2(void) interrupt 5 中斷入口,閃爍
{ uchar timecount,quanshu;
TF2=0;
timecount++;
if(timecount>20)
{timecount=0;
miao++;
quanshu=count;
count=0;
speed=quanshu;
}
if(miao>59)
{miao=0;
fen++;
}
if(fen>59)
{ fen=0;
shi++;
}
if(shi>59)
shi=0;
}
*********************************************************
延時子程序
*********************************************************
void delay(uchar t)
{ while(t--);
}
*********************************************************
延時子程序
*********************************************************
void delayms(uchar ms)
{ uchar i ;
while(ms--)
{ for(i=0;i<120;i++);
}
}
********************************************************
void STR()
{str0[0]='S';
str0[1]='p';
str0[2]='e';
str0[3]='e';
str0[4]='d';
str0[5]=' ';
str0[6]=':';
str0[7]=speed1000+0x30;
str0[8]=speed%+0x30;
str0[8]='.';
str0[9]=speed%10010+0x30;
str0[10]=speed%10+0x30;
str0[11]=' ';
str0[12]='r';
str0[13]='';
str0[14]='s';
str0[15]=' ';
str1[0]='t';
str1[1]='i';
str1[2]='m';
str1[3]='e';
str1[4]=':';
str1[5]=shi10+0x30;
str1[6]=shi%10+0x30;
str1[7]=':';
str1[8]=fen10+0x30;
str1[9]=fen%10+0x30;
str1[10]=':';
str1[11]=miao10+0x30;
str1[12]=miao%10+0x30;
str1[13]=' ';
str1[14]=' ';
str1[15]=' ';
}
void ddelay(uint k)
{ uint i,j;
for(i=0;i {for(j=0;j<60;j++) {;} } } **********寫指令到LCD子函數************ void WriteCommandLCM(uchar WCLCM,uchar BusyC) {if(BusyC)lcd_wait(); DATAPORT=WCLCM; LCM_RS=0; * 選中指令寄存器* LCM_RW=0; 寫模式 LCM_EN=1; _nop_(); _nop_(); _nop_(); LCM_EN=0; } **********寫數據到LCD子函數************ void WriteDataLCM(uchar WDLCM) {lcd_wait( ); 檢測忙信號 DATAPORT=WDLCM; LCM_RS=1; * 選中數據寄存器 * LCM_RW=0; 寫模式 LCM_EN=1; _nop_(); _nop_(); _nop_(); LCM_EN=0; } ***********lcd內部等待函數************* void lcd_wait(void) { DATAPORT=0xff; 讀LCD前若單片機輸出低電平,而讀出LCD為高電平,則沖突,Proteus仿真會有顯示邏輯黃色 LCM_EN=1; LCM_RS=0; LCM_RW=1; _nop_(); _nop_(); _nop_(); while(DATAPORT&BUSY) { LCM_EN=0; _nop_(); _nop_(); LCM_EN=1; _nop_(); _nop_(); } LCM_EN=0; } **********LCD初始化子函數*********** void initLCM( ) {DATAPORT=0; ddelay(15); WriteCommandLCM(0x38,0); 三次顯示模式設置,不檢測忙信號 ddelay(5); WriteCommandLCM(0x38,0); ddelay(5); WriteCommandLCM(0x38,0); ddelay(5); WriteCommandLCM(0x38,1);8bit數據傳送,2行顯示,5*7字型,檢測忙信號 WriteCommandLCM(0x08,1); 關閉顯示,檢測忙信號 *******顯示指定坐標的一串WriteCommandLCM(0x01,1); 清屏,檢測忙信號 WriteCommandLCM(0x06,1); 顯示光標右移設置,檢測忙信號 WriteCommandLCM(0x0c,1); 顯示屏打開,光標不顯示,不閃爍,檢測忙信號 } ****顯示指定坐標的一個字符子函數**** void DisplayOneChar(uchar X,uchar Y,uchar DData) { Y&=1; X&=15; if(Y)X|=0x40; 若y為1(顯示第二行),地址碼+0X40 X|=0x80; 指令碼為地址碼+0X80 WriteCommandLCM(X,0); WriteDataLCM(DData); } 字符子函數***** void DisplayListChar(uchar X,uchar Y,uchar *DData) { uchar ListLength=0; Y&=0x01; X&=0x0f; while(X<16) {DisplayOneChar(X,Y,DData[ListLength]); ListLength++; X++; } } void display() {STR(); DisplayListChar(0,0,str0); DisplayListChar(0,1,str1); }
本文發布于:2024-03-07 07:02:51,感謝您對本站的認可!
本文鏈接:http://www.newhan.cn/zhishi/a/1709766171153590.html
版權聲明:本站內容均來自互聯網,僅供演示用,請勿用于商業和其他非法用途。如果侵犯了您的權益請與我們聯系,我們將在24小時內刪除。
本文word下載地址:(完整版)大學本科畢業設計(論文).doc
本文 PDF 下載地址:(完整版)大學本科畢業設計(論文).pdf
| 留言與評論(共有 0 條評論) |