freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

畢業(yè)設(shè)計(jì)-基于atmega8單片機(jī)尋跡小車設(shè)計(jì)-資料下載頁

2025-01-16 22:14本頁面
  

【正文】 return(Kp*err_P+Kd*err_D)。 } 27 第五章 ICC AVR 與 Proteus 仿真 前面,已經(jīng)完成了系統(tǒng)硬件連接與軟件設(shè)計(jì),在接下了的這章,就要進(jìn)行系統(tǒng)的仿真驗(yàn)證整個(gè)系統(tǒng)的可行性,本 次仿真系統(tǒng)采用的是 ICC AVR 和 Proteus 搭建的系統(tǒng)仿真調(diào)適平臺(tái)。 ICC AVR 與 Proteus 說明 ICC AVR 是一款非常好用的 AVR 編譯軟件。它綜合了編輯器和工程管理器的集成工作環(huán)境 ,使用符合 ANSI 標(biāo)準(zhǔn)的 C 語言來開發(fā)微控制器 MCU 程序的一個(gè)工具 。 Proteus 是當(dāng)前 EDA( Electronic Design Auromation) 市場(chǎng)上性價(jià)比最高和性能最強(qiáng)的一款單片機(jī)軟件仿真系統(tǒng),它由 ISIS 原理圖設(shè)計(jì)、仿真系統(tǒng)和ARES 印制電路板設(shè)計(jì)系統(tǒng)組成。其中, ISIS 能夠完成模擬電 路仿真、數(shù)字電路仿真以及單片機(jī)實(shí)驗(yàn)仿真。 模擬光電檢測(cè)電路 在 Proteus 仿真中,以電阻、 LED 燈和開關(guān)串聯(lián)接入電源來以模擬光電開關(guān)檢測(cè)黑線的過程。電路圖如圖 51 所示。 圖 51 光電開關(guān)模擬電路 開關(guān) 2 開關(guān) 1 開關(guān) 0 開關(guān) 3 開關(guān) 4 開關(guān) 5 PC0~PC5 28 手動(dòng)閉合“開關(guān) 0” ~“開關(guān) 5”中一個(gè),則相應(yīng) PC 端口輸出高電平。以此模擬光電開關(guān)檢測(cè)到黑線。 表 51 開關(guān)閉合模擬黑線位置 Proteus 仿真過程以及結(jié)果 巡線小車程序使用 ICC AVR 軟件編寫源代碼,并編譯生成 .hex 文件,導(dǎo)入Proteus 中模擬運(yùn)行。在仿真過程中為了便于觀察左右兩側(cè)電機(jī)電壓的占空比,在 Proteus 中調(diào)入示波器 A,示波器 B。分別輸出右電機(jī)電壓波形圖和左電機(jī)電壓波形圖。如圖示波器 A、示波器 B 的接法。 圖 52 示波器的接線及對(duì)應(yīng)電機(jī) 開關(guān) 0 開關(guān) 1 開關(guān) 2 開關(guān) 3 開關(guān) 4 開關(guān) 5 模擬黑線位置 閉合 開 開 開 開 開 最右端 開 閉合 開 開 開 開 偏右 開 開 閉合 開 開 開 中心 開 開 開 閉合 開 開 中心 開 開 開 開 閉合 開 偏左 開 開 開 開 開 閉合 最左端 29 Proteus 仿真步驟及結(jié)論: ( 1)點(diǎn)擊 Proteus 左下角運(yùn)行程序,開始模擬小車的運(yùn)行過程。此時(shí)左右電機(jī)都已相同速度轉(zhuǎn)動(dòng),左右示波器輸出相同占空比波形。 ( 2)當(dāng)閉合開關(guān) 2 或開關(guān) 3(黑線在中心)左右電機(jī)轉(zhuǎn)速任然相同。 ( 3)斷開所有開關(guān),閉合開關(guān) 4(黑線偏左)。右電機(jī)轉(zhuǎn)速稍微比左電機(jī)快,觀察示波器,示波器 A 高電平持續(xù)時(shí)間比示波器 B 更長(zhǎng)。 ( 4)斷開所有開關(guān),閉合開關(guān) 5(黑線最左)。右電機(jī)轉(zhuǎn)速明顯比左電機(jī)快,觀察示波器,示波器 A 高電平持續(xù)時(shí)間比示波器 B 更長(zhǎng)。 ( 5)黑線在偏右模擬同上。 結(jié)論: 模擬小車巡線運(yùn)行成功。 30 結(jié) 論 本論文設(shè)計(jì)以 ATmega8 單片機(jī)為基礎(chǔ)設(shè)計(jì)了一套能自動(dòng)巡線并行駛的小車電路及程序。其中電路圖包括實(shí)物電路圖和仿真電路圖兩套電路。不同之處在于仿真電路圖 以 按鍵 開關(guān)模擬光電開關(guān) 并 省去了程序下載電路。程序中 ADC 子程序, PWM 調(diào)速子程序, PID 控制子程序,電機(jī)速度選擇程序都含有,并都能按預(yù)期的執(zhí)行。在 Proteus 仿真中也得到了驗(yàn)證,仿真很成功。但是仿真依然是處于理論的基礎(chǔ),只是驗(yàn)證的電路圖及程序的可行 性。在實(shí)際的小車運(yùn)行中人需要要考慮很多問題,比如光電開關(guān)的誤差 ;實(shí) 際小車的運(yùn)行速度是否會(huì)影響檢測(cè)黑線 ; 小車經(jīng)過不同角度的彎道速度應(yīng)該 取 多 少 ; 還有 PID 控制中 PK 、 DK 取值 。都這些問題實(shí)際制作小車過程中都需要一一考慮并調(diào)試修改。 31 參考文獻(xiàn) [1]章政 ,吳懷宇 ,程磊 .大學(xué)生智能汽車設(shè)計(jì)基礎(chǔ)與實(shí)踐 .電子工業(yè)出社 .2022,7 [2]張建民 ,機(jī)電一體化系統(tǒng)設(shè)計(jì) (第三版 ),高等教育出版社 2022,7 [3]熊和金 . 智能汽車系統(tǒng)研究的若干問題 ,2022,2:37~40 [4]姜培剛,蓋玉先 .機(jī)電一體化系統(tǒng)設(shè)計(jì) .北京 :機(jī)械工業(yè)出版社, [5]馬潮,詹衛(wèi)前,狄 德根 .ATmega8 原理與應(yīng)用 .2022,3 [6]唐一平 ,機(jī)械工程專業(yè)英語 ,電子工業(yè)出版社 ,2022,10 [7]楊路明 ,郭浩志 .C 言語程序設(shè)計(jì)教程 .北京郵電大學(xué)出版社 ,2022,5 [8]郁有文 ,常建 ,程繼紅 .傳感器原理及工程應(yīng)用 (第二版 ).西安 :西安電子科技大學(xué)出版社 ,2022 [9]黃智偉 ,全國(guó)大學(xué)生電子設(shè)計(jì)競(jìng)賽訓(xùn)練教程 .北京 :電子工業(yè)出版社 ,2022 [10]鄒逢興,微機(jī)計(jì)算機(jī)原理與接口技術(shù) .北京:清華大學(xué)出版社, [11]周斌 ,李立國(guó) ,黃開勝 .智能車光電傳感器布局對(duì)路徑的識(shí)別的影響 研究 .電子產(chǎn)品世界 ,2022,5 139~140 [12]夏路易 ,石宗義 .電路原理圖與電路板設(shè)計(jì)教程 Protel :北京希望電子出版社 ,2022 [13] 沈文, AVR 單片機(jī) C 語言開發(fā)編程入門指導(dǎo) .北京:清華大學(xué)出版社 [14] and of the CIRP,1989,2(38):627634 [15]Daniel Hunt ’ s Newest Threat. New York:Chapman and Hall,1987 32 謝 辭 經(jīng)過半年的忙碌和工作,本次畢業(yè)設(shè)計(jì)已經(jīng)接近尾聲,作為一個(gè)本科生的畢業(yè)設(shè)計(jì),由于經(jīng)驗(yàn)的匱乏,難免有許多考慮不周全的地方,如果沒有導(dǎo)師 的督促指導(dǎo),以及一起工作的同學(xué)們的支持,想要完成這個(gè)設(shè)計(jì)是難以想象的。 在這里首先要感謝 張老師。老師平日里工作繁忙,但在我做畢業(yè)設(shè)計(jì)的每個(gè)階段,從外出實(shí)習(xí)到查閱資料,設(shè)計(jì)草案的確定和修改,中期檢查等整個(gè)過程中都給予了我悉心的指導(dǎo)。除了敬佩張老師的專業(yè)水平外, 他 嚴(yán)肅 的科學(xué)態(tài)度,嚴(yán)謹(jǐn)?shù)闹螌W(xué)精神,精益求精的工作作風(fēng),深深地感染和激勵(lì)著我。 其次要感謝和我一起作畢業(yè)設(shè)計(jì)的其他同學(xué),他們?cè)谠O(shè)計(jì)中勤奮工作,克服了許多困難來完成此次畢業(yè)設(shè)計(jì),并承擔(dān)了大部分的工作量。如果沒有他們的努力工作,此次設(shè)計(jì)的完成將 變得非常困難。 然后還要感謝大學(xué)四年來所有的老師,為我打下扎實(shí)的專業(yè)知識(shí)基礎(chǔ);同時(shí)還要感謝所有的同學(xué)們,正是因?yàn)橛辛怂麄兊闹С趾凸膭?lì),此次畢業(yè)設(shè)計(jì)才會(huì)順利完成。 33 附錄 1 include include define uchar unsigned char define uint unsigned int define countertop 10000 define Kp 600 define Kd 1200 uchar IR_state0=0。 // 定義 IR 傳感器的狀態(tài) int err[3]={0}。 //定義三次的誤差值 int err_D=0,err_P=0。 //定義偏差,利用比例,差分 int std_left=0,std_right=0,t_b=0。 char num[6]={0,0,0,0,0,0}。 int i=0。 void port_init(void) { PORTB = 0x00。 DDRB = 0xff。 PORTC = 0x00。 DDRC = 0x00。 } //call this routine to initialize all peripherals void init_devices(void) { //stop errant interrupts until set up CLI()。 //disable all interrupts port_init()。 34 MCUCR = 0x00。 GICR = 0x00。 TIMSK = 0x00。 //timer interrupt sources SEI()。 //reenable interrupts //all peripherals are now initialized } /************************************ adc 初始化 *************************************/ void adc_init() { ACSR=0x80。 //關(guān)掉模擬比較器的電源 (禁用模擬比較器 ) ADMUX=(1REFS0)。//設(shè)置參考電壓為 AREF 端輸入; ADCSRA=(1ADEN)。//使能 ADC。選擇的是連續(xù)模式 SFIOR=0x00。 //adc 高速模式選擇 } /************************************ atmega8 ADC 轉(zhuǎn)換程序 *************************************/ unsigned char adc_get(int q) // q 為要 ADMUX 值,可以選擇 ADC 通道 { unsigned int temp。 ADMUX=q。 ADCSRA|=(1ADSC)。 //開始轉(zhuǎn)換 while(!(ADCSRamp。(1ADIF))){。} //等待轉(zhuǎn)換完成 ADCSR|=(1ADIF)。 //清標(biāo)志 temp=ADC。 //讀數(shù) temp=temp*5/0x03ff。 //轉(zhuǎn)換成 05(表示 05) return (unsigned char)(temp)。 } 35 void adc_all() //獲取 PC0~PC5 6 個(gè)通道的信息并存放在 num[]數(shù)組中 { num[0]=adc_get(0x40)。 num[1]=adc_get(0x41)。 num[2]=adc_get(0x42)。 num[3]=adc_get(0x43)。 num[4]=adc_get(0x44)。 num[5]=adc_get(0x45)。 } /************************************ 速度選擇子程序 *************************************/ void speed(uchar level) { switch(level) { case 2:std_left=2022。std_right=2022。break。 //定義速度 1,低速 case 5:std_left=5000。std_right=5000。break。 //定義速度 2,中速 case 10:std_left=8000。std_right=8000。break。 //定義速度 3,高速 } } 36 void ErrSet() //誤差處理函數(shù) { err[2]=err[1]。err[1]=err[0]。 switch(IR_state0) { case 0: err[0]=0。speed(10)。break。 //線在正中心 case 3: err[0]=1。speed(5)。break。 //左偏 1 case 1: err[0]=1。speed(5)。break。 //右偏 1 case 4: err[0]=2。speed(2)。break。 //左偏 2 case 2: err[0]=2。speed(2)。break。 //右偏 2 } } /************************************ 定時(shí)器 1 相位修正 PWM 初始化 *************************************/ void init_timer1_PWM(unsigned int x,unsigned int y) { DDRB|=(1PB1)|(1PB2)。 TCCR1B=0x0。//先停止 TC1 TCNT1=0。//設(shè)置 TCNT1 的初值 OCR1A=x。//設(shè)置 OC1A 的初值 OCR1B=y。//設(shè)置 OC1B 的初值 ICR1=countertop。//設(shè)置 ICR 的初值 TCCR1A|=(1COM1A1)|(1COM1B1)|(1WGM11)。 TCCR1B|=(1WGM13)|(1CS11)。 } 37 //調(diào)節(jié)占空比 void timer1_PWM(int x,int y) { if (x=countertop) x=countertop。 //避免 PWM 值超過計(jì)數(shù)器的最大值; if (y=countertop) y=countertop。 //避免 PWM 值超過計(jì)數(shù)器的最大值; OCR1A=x。 OCR1B=y。 } /************************************ /采樣函數(shù) *************************************/ void Sample() { for(i=0。i6。i++){num[i]=0。} //清楚數(shù)組 num[] adc_all()。 if(num[0]1) {IR_state0=2。} //右偏 2 if(num[1]1) {IR_state0=1。 } //右偏 1 if(num[2]1) {IR_state0=0。 } //中心 if(num[3]1) {IR_state0=0。 } //中心 if(num[4]1) {IR_state0=3。 } //左偏 1 if(num[5]1) {IR_state0=4。 } //左偏 2 //else {IR_state0=0。} } int PidSet() { err_P=err[0]。 err_D=err[0]err[1]。 return(Kp*err_P+Kd*err_D)。 } //主函數(shù) int main() { int leftpwm=0,rightpwm=0。 38 int value=0。 adc_init()。 init_devices()。 init_timer1_PWM(4000,4000)。 while(1) //循環(huán)巡線 { Sample()。 ErrSet()。 value=PidSet()。 leftpwm=std_leftvalue。 rightpwm=std_right+value。 timer1_PWM(leftpwm,rightpwm)。 } } 39 附錄 2 實(shí)物電路圖 40 附錄 3 模擬電路圖
點(diǎn)擊復(fù)制文檔內(nèi)容
醫(yī)療健康相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1