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

正文內(nèi)容

智能超聲波避障小車-畢業(yè)設(shè)計論文-閱讀頁

2024-12-21 17:46本頁面
  

【正文】 號 Pin 當(dāng)為 UART 模式時,接外部電路 UART 的 RX 端; 當(dāng)為電平觸發(fā)模式時,接外部電路的 Echo 端。 超聲波測距原理 超聲波測距的實現(xiàn)是通過發(fā)射器發(fā)射出長約 6mm、頻率為 40KHZ 的超聲波信號,接收頭接收到被物體反射回來的超聲波,并且產(chǎn)生毫伏級的微弱電壓信號,計算出時間差來實現(xiàn)的。 光電傳感器 光電傳感器是光源、光學(xué)通路和光電元件組成的對環(huán)境進(jìn)行檢測的傳感器,他能夠?qū)z測到的環(huán)境中的變化轉(zhuǎn)化成光信號的變化,再通過光電元件將光信號轉(zhuǎn)化為電信號。 光電檢測方法的優(yōu)點有精度高、反應(yīng)快、傳感器的結(jié)構(gòu)簡單、非接觸可測參數(shù)多、形式靈活多 樣等。 第 9 頁 共 47 頁 LCD1602 液晶顯示 液晶顯示 LCD 實物圖見圖 35。~ 的芯片工作電壓, ()工作電流,模塊最佳工作電壓是 。它由若干個 5 7 或者 5 11 等點陣字符位組成,一個點距作為每位之間的間隔,字符尺寸為 (W H)mm每個點陣字符位都可以顯示一個字符,每行之間也有間隔,所以在 LCD1602顯示中也是有字符間距和行間距的。具有厚度薄、適用于大規(guī)模集成電路直接驅(qū)動的特點 [4]。 3腳液晶顯示器對比度的調(diào)整端 V0,對比度最弱是當(dāng)接正電源時,對比度最高時是當(dāng)接地電源由于對比度過高即可能產(chǎn)生 ―鬼影 ‖,可使用一個 1K 的電位器來調(diào)整對比度。 7~ 14腳為 8位雙向數(shù)據(jù)端 D0~ D7; 15~ 16腳為背燈電源或空腳: 15腳為背光正極, 16腳為背光負(fù)極。超聲波由空氣進(jìn)行傳播,途中如果遇到障礙物則被彈回,當(dāng)超聲波模塊接收器接收到超聲波的反射波后,將會產(chǎn)生一個提示信號并由 Echo 腳反饋給單片機(jī),此時單片機(jī)將立即停止計時器的計時,并取出計數(shù)寄存器中的值進(jìn)行換算。超聲波接口電路見圖41。 第 11 頁 共 47 頁 圖 42 紅外線收發(fā)電路 單片機(jī)主控電路 此模塊是小車的單片機(jī)驅(qū)動部分,它負(fù)責(zé)控制超聲波模塊、紅外線測距模塊、液晶顯示模塊、 L298N 控制模塊及警示燈模塊的工作。 單片機(jī)利用計時器統(tǒng)計超聲波發(fā)射和接受的時間再經(jīng)過換算,得出小車距離障礙物的距離,通過 LCD 顯示當(dāng)前距離值。 圖 43 單片機(jī)主控電路 電源電路 使用 電池,首先輸出給電機(jī)供電,然后通過 7805 穩(wěn)壓管穩(wěn)壓出 5V 的電壓給傳感器和單片機(jī)供電。在本模塊中,還增加了一個撥碼開關(guān),這樣可以隨時關(guān)閉電源,以便調(diào)試。 第 12 頁 共 47 頁 圖 44 電源電路 本模塊只需要一組電源 即可滿足智能小車的電機(jī)驅(qū)動、單片機(jī)控制、傳感器等所有單元的供電,需求設(shè)計非常合理。 LCD1602 顯示電路 本設(shè)計利用 LCD1602 顯示電路。在單片機(jī)電路中利用一組 I/O 口進(jìn)行數(shù)據(jù)的傳輸,再從另一組 I/O 口分配三個 I/O 口作為指令與數(shù)據(jù)選擇和控制。如圖 45 LCD1602 顯示電路所示,電阻 R8用于設(shè)置一個偏壓,也就是液晶字顏色深度 ; R9 設(shè)置一個偏壓,設(shè)置液晶的背光亮度。由于從單片機(jī)中輸出的信號功率很弱,即使在沒有任何外在負(fù)載的情況下也無法正常帶動電機(jī),為了解決這一點我在實際電路中加入了電機(jī)的驅(qū)動芯片以提高輸入電機(jī)信號的功率,從而能夠根據(jù)需要控制電機(jī)轉(zhuǎn)動。在本設(shè)計中我利用電機(jī)驅(qū)動芯片 L298N,一款集成的 H 橋芯片。它的具有幾個時能端子可以外接高低電平進(jìn)行控制,本設(shè)計利用單片機(jī)進(jìn)行軟件控制,極大地滿足本設(shè)計的功能需求。因為電機(jī)有很大的電感,而根據(jù)電感的原理,在斷電瞬間會有和電源一樣的電勢。 L298N 芯片具有較大的驅(qū)動功率,可在 6~46V 的直流電壓下,提供最大 2A 的額定電流,并且具有過熱自動關(guān)斷及電流反饋檢測的強大功能,十分安全可靠;但為了能保證 L298N 的正常工作,我另外 安裝了幾個續(xù)流二極管。利用單片機(jī)調(diào)整出 PWM 脈沖和高低電平對直流電機(jī)進(jìn)行驅(qū)動和控制。其外形、管腳分布如圖 47 所示。其 4個開關(guān)被稱為 ―橋臂 ‖。通過這個原理實現(xiàn)了直流電機(jī)的正反轉(zhuǎn)。 (2)惰行 —— 如果 4個開關(guān)全部都斷開,那么電機(jī)慣性所產(chǎn)生的電勢就將無法形成一個完整的電路,這就使得電機(jī)將慣性轉(zhuǎn)動較長的時間。要想可控制地改變電壓比較麻煩,所以就產(chǎn)生了通過利用斷續(xù)供電的方式即脈寬調(diào)試方式改變供給電機(jī)的平均功率,這同樣 第 15 頁 共 47 頁 也實現(xiàn)改變電機(jī)速度的目的。這種斷續(xù)供電的 方式被我們稱為 ―PWM 脈寬調(diào)制 ‖。采用 PWM 進(jìn)行電機(jī)調(diào)速控制,實際是保持加在電機(jī)電樞上的脈沖電壓頻率保持不變,調(diào)節(jié)脈沖的寬度。如圖 49所示。 圖 49 PWM 等效圖示意圖 PWM 方式可以方便地實現(xiàn)調(diào)速功能。并且由于硬件電路上不復(fù)雜,驅(qū)動電路的輸入端也可以不用進(jìn)行光耦合隔離,將單片機(jī)引腳與其直接相連即可。但由于阻力 f 是無法確定的,因為在不同的電機(jī)、不同的減速箱、不同的轉(zhuǎn)速都會使 f 產(chǎn)生變化,所以無法保證每次電機(jī)的阻力 f 相同,這就使得同樣的 PWM 得不到同樣的速度。但電池的在電電壓是隨電量消耗而減小的,且由于電池內(nèi)阻的因素,電池的電壓隨著消耗而減小。 影響直流電機(jī)轉(zhuǎn)速的原因還有一點,這是由電機(jī)的原理決定,在電機(jī)的額定電壓下,電機(jī)的最快轉(zhuǎn)速就是在其的空載速度,也就是說,當(dāng)電機(jī)負(fù)載很輕時,稍加驅(qū)動功率就能使其達(dá)到了最快的 速度,此時即使再提高 PWM 也無法繼續(xù)提高電機(jī)速度了,應(yīng)為PWM 的改變并不會再次提升電壓,因此當(dāng)電機(jī)具有很輕的負(fù)載時, PWM 連改變速度的能力也大為減弱。 第 16 頁 共 47 頁 在利用電機(jī)驅(qū)動小車前進(jìn)時,小車的兩個直流電機(jī)都正轉(zhuǎn);在其后退時,則其兩電機(jī)都反轉(zhuǎn);在其左轉(zhuǎn)前進(jìn)時,則其左電機(jī)停轉(zhuǎn)而右電機(jī)正轉(zhuǎn);在其右轉(zhuǎn)前進(jìn)時,則其右電機(jī)不轉(zhuǎn)而左電機(jī)正轉(zhuǎn);在其進(jìn)入減速區(qū)時,可由單片機(jī)調(diào)制 PWM 的變頻實現(xiàn)調(diào)速,即通過軟件來改變輸出 PWM 脈沖波形的占空比,以實現(xiàn)調(diào)速。 光警示電路 本光警示電路,由一個 LED,一個限流電阻,一個上拉電阻組成。例如,在發(fā)光二極管的一端添加一個限流電阻可以有效減小流過發(fā)光二極管的電流,防止損壞 LED 燈。故可根據(jù) U= IR 計算出限流電阻的取值。利用 LED 作為警示元件,于在三個傳感器位置處設(shè)置。如圖 410 光警示電路所示, 電阻用于限 流可以保護(hù)二極管不燒,也能調(diào)節(jié)亮度。無論是在單片機(jī)上電時,或者是發(fā)生故障后的情況下都要進(jìn)行復(fù)位操作。在 RST 引腳出現(xiàn)低電平后的第二個機(jī)器周期后立刻執(zhí)行復(fù)位操作。在圖中 R7為上拉電阻,可有效地 防止外界干擾,不加的話,有可能會干擾到那個引腳,引起頻繁觸發(fā)中斷。除了上電復(fù)位外,有時還需要進(jìn)行手動復(fù)位來排除故障。而其設(shè)計比較簡單,只需將復(fù)位端口經(jīng)上拉電阻和按鍵與電源 GND 接通即可實現(xiàn)。圖中 S R7構(gòu)成了按鍵的復(fù)位電路。 第 17 頁 共 47 頁 圖 411 單片機(jī)復(fù)位電路 單片機(jī)時鐘震蕩電路 本設(shè)計利用 ATmage16單片機(jī)內(nèi)置 RC 震蕩電路作為 8MHz 時鐘源,標(biāo)定的單片機(jī)片內(nèi)提供了固定的 、 、 的 RC 振蕩時鐘源。C情況下的標(biāo)稱數(shù)值。選擇這個時鐘 ( 此時不能對 CKOPT 進(jìn)行編程 ) 之后就無需配置外部晶振了。在 5V, 25176。1%的精度,已足夠本設(shè)計的需求。 表 41 內(nèi)部 RC 振蕩器頻率范圍 第 18 頁 共 47 頁 5 軟件設(shè)計 本設(shè)計系統(tǒng)軟件采用模塊化結(jié)構(gòu),由主程序﹑避障子程序、電機(jī)驅(qū)動子程序﹑顯示子程序﹑測量距離子程序、光警示子程序構(gòu)成。其中:避障中斷服務(wù)子程序完成對超聲波探測器產(chǎn)生的外部中斷進(jìn)行處理,如果超出預(yù)定的危險距離就左轉(zhuǎn)進(jìn)行避障。 Csb_Init()。 while(1) { Car_Void()。 } 避障子程序 避障函數(shù)就是輪詢幾個傳感器的返值然后做出對應(yīng)的操作: void Car_Void(void) { uchar ult_scan = 0。 Csb_Get()。 //判斷超聲波是否檢測到障礙。 //延時以消除超聲波干擾 if(!ult_scan) uled_led_clr。 //根據(jù)三探頭的狀態(tài)做出動作判斷 if(!ult_scan amp。 linf_scan amp。 rinf_scan) control_flag = 1。amp。amp。 else if(!ult_scan amp。 !linf_scan amp。 rinf_scan) control_flag = 2。amp。amp。 else if(!ult_scan amp。 linf_scan amp。 !rinf_scan) control_flag = 1。amp。amp。 else if(!ult_scan amp。 !linf_scan amp。 !rinf_scan) control_flag = 1。 } 電機(jī)驅(qū)動子程序 L298N通過改變對應(yīng)電平值的方式,驅(qū)動小車的前后左右行駛: void Car_Stop() //停止 { RIN1_clr。 LIN1_clr。 } void Car_Straight(void) //前進(jìn) { RIN1_clr。 //右 電機(jī)為高電平 LIN1_clr。 //左 電機(jī)為高電平 } void Car_Turn_Right(void) //右轉(zhuǎn) { RIN1_clr。 LIN1_set。 第 21 頁 共 47 頁 } void Car_Turn_Left(void) //左轉(zhuǎn) { RIN1_set。 LIN1_clr。 } 控制電平有兩個: RIN1和 RIN2,其中一個高另一個低就是前進(jìn)或后退。 const uchar table2[] = Distance: 。 clr_rs。 _delay_ms(5)。 _delay_ms(5)。 } 寫數(shù)據(jù)就是為了在屏幕上顯示對應(yīng)的東西: void Write_Data(uchar data) //LCD 寫數(shù)據(jù) { _delay_ms(1)。 PORTC = data。 set_en。 clr_en。 void Sent_Lcd(uchar data) //LCD 寫入距離值 { if(data == 0xff) { Write_Com(0xcb)。39。 Write_Com(0xcd)。39。 Write_Com(0xce)。39。 } else { uchar temp[3]。 temp[1] = data % 100 / 10。 //取對應(yīng)位的數(shù)字 Write_Com(0xcb)。 Write_Com(0xcd)。 Write_Com(0xce)。 //寫數(shù)據(jù) } } 初始化函數(shù): void Lcd_Init() //LCD 初始化 { DDRA |= 0xe0。 clr_rw。 第 23 頁 共 47 頁 Write_Com(0x38)。 Write_Com(0x0C)。 Write_Com(0x01)。 Write_Com(0x80)。 uchar i。i 16。 Write_Com(0xc0)。i 16。 } 測量距離子程序 值得獲取和轉(zhuǎn)換,轉(zhuǎn)換方法與定時器分頻值有關(guān) : volatile uchar csb_flag = 0。 unsigned char csb_data。 //從定時器寄存器中取值 temp = temp 。 csb_flag = 0。 Sent_Lcd(csb_data)。 else csb_flag = 0xff。 第 24 頁 共 47 頁 } void Csb_Init(void) //超聲波初始化 { Lcd_Init()。= ~0x01。 PORTD |= 0x01。 //分頻器設(shè)置 TCNT1H = 0x00。 //地位寄存器 } 0x05 也就是說是 0101,也就是 1024 分頻,本設(shè)計選用的是 8MHz 內(nèi)部 RC 振蕩器作為時鐘源,而 1024 分頻后就是 8000000/1024=,每秒鐘震 蕩 次數(shù)是 次,用 1/=,得出每震蕩一次花時間 秒,通過在啟動超聲波的時候給計時器的計時寄存器清零,然后接到返回信號的時候暫停定時器就能知道中間一共震蕩了多少次。 然后進(jìn)入 Data_Change()。
點擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1