在线免费观看成年人视频-在线免费观看国产-在线免费观看国产精品-在线免费观看黄网站-在线免费观看精品

產(chǎn)品分類

當(dāng)前位置: 首頁(yè) > 傳感測(cè)量產(chǎn)品 > 工業(yè)傳感器 > 測(cè)距傳感器

類型分類:
科普知識(shí)
數(shù)據(jù)分類:
測(cè)距傳感器

gp2d12紅外測(cè)距傳感器:Arduino + GP2D12紅外測(cè)距傳感器+LCD1602

發(fā)布日期:2022-10-09 點(diǎn)擊率:85


gp2d12紅外測(cè)距傳感器:Arduino  + GP2D12紅外測(cè)距傳感器+LCD1602

一:

GP2Y0A21YKIR Sensor是日本夏普公司推出的一款性價(jià)比高、最常用的紅外測(cè)距傳感器、其與GP2D12測(cè)量射程相同,但探測(cè)面積略有增加,可用來(lái)對(duì)物體的距離進(jìn)行測(cè)量,實(shí)現(xiàn)輪式機(jī)器人的避障功能。它不但體積小、功耗低、價(jià)格便宜,而且測(cè)距效果好,適合廣大機(jī)器人發(fā)燒友使用。趕快給你的機(jī)器人配備一雙犀利的眼睛吧!
技術(shù)規(guī)格:
1.測(cè)量射程范圍:10 - 80 cm
2.最大允許角度:>40°
3.電源電壓:4.5 - 5.5V
4.平均功耗:33 - 40mA
5.峰值功耗:約200mA
6.更新頻率/周期:25Hz/40ms
7.模擬輸出噪聲:<200mV 8.精度和采集的AD位數(shù)以及轉(zhuǎn)化計(jì)算公式相關(guān),10AD一般能達(dá)到0.1CM. 9.測(cè)量距離與輸出模擬電壓關(guān)系:2.4V~0.4V模擬信號(hào)對(duì)應(yīng)10cm~80cm,輸出與距離成反比非線性關(guān)系。 尺寸:29.5×13×13.5 mm 實(shí)驗(yàn)任務(wù)是:把GP2D12紅外線測(cè)距傳感器采集的數(shù)據(jù),通過(guò)Arduino控制器的算式轉(zhuǎn)換為實(shí)際距離值,再顯示在集成了I2C接口的LCD1602液晶面板上。 上圖就是GP2D12紅外線測(cè)距傳感器的電壓值與距離值的關(guān)系曲線,從這個(gè)曲線可以看出,電壓輸出與距離成反比,而且是非線性關(guān)系。根據(jù)上圖關(guān)系曲線,大約關(guān)系為10cm距離時(shí)有2.55V輸出,80cm距離時(shí)有0.42V輸出。可以通過(guò)該曲線擬合出電壓值與距離值的數(shù)學(xué)關(guān)系式,但是這個(gè)關(guān)系式里的距離是參考距離值,實(shí)際距離值=(參考距離值-0.42)cm,另外由于Arduino的模擬量采樣命令analogRead(),采樣的數(shù)據(jù)范圍是0至1023,對(duì)應(yīng)的電壓范圍是0至5V,每格數(shù)據(jù)代表0.0049V,于是讀取的有效數(shù)據(jù)應(yīng)該由86(0.42V)至520(2.548V)。所以最終可以推導(dǎo)出實(shí)際距離與采樣數(shù)據(jù)之間的關(guān)系式為: ? 實(shí)際距離=2547.8/((float)采樣數(shù)據(jù)*0.49-10.41)-0.42 這個(gè)實(shí)際距離與采樣數(shù)據(jù)之間的關(guān)系式,您會(huì)在下面程序中再次看到,我用紅色字體標(biāo)注出來(lái)了。 實(shí)驗(yàn)中,我們用到的I2C接口的LCD1602也是比較方便的。 二:1602: 用四根杜邦線,把1602LCD后面的I2C接口四個(gè)引腳與Xbee傳感器擴(kuò)展板V5的I2C專用端口連接起來(lái),就可以實(shí)現(xiàn)Arduino控制器與LCD1602液晶的I2C硬件聯(lián)系,如文章的第一張圖所示。這個(gè)集成了I2C接口的1602LCD好用,不僅體現(xiàn)在硬件連線方便,而且您使用專門為這個(gè)LCD液晶寫(xiě)的庫(kù)文件LiquidCrystal_I2C,編寫(xiě)程序也特別簡(jiǎn)單。 把GP2D12傳感器連接到Arduino傳感器擴(kuò)展板的模擬量端口0、LCD1602的I2C引腳連接到傳感器擴(kuò)展板的I2C專用端口,又安裝好和LiquidCrystal_I2庫(kù)文件,那就可以編寫(xiě)GP2D12傳感器距離值采集和LCD1602液晶顯示的程序了。 實(shí)驗(yàn)所需要的代碼是這樣: #include

GP2D12使用注意及使用優(yōu)化方式:
1. 當(dāng)多個(gè)GP2D12同時(shí)連接Arduino板使用時(shí),由于供電量的增加,可能造成電壓不穩(wěn)定而對(duì)測(cè)量結(jié)果產(chǎn)生偏差。從硬件角度可以通過(guò)在VCC與 GND之間接電容的方式來(lái)穩(wěn)定對(duì)GP2D12的供電,減少供電電壓波動(dòng)對(duì)測(cè)量結(jié)果的影響,或者在GND與數(shù)據(jù)線之間接一個(gè)電容減小輸出電壓的波動(dòng)略去可能出現(xiàn)的誤差信號(hào),提高數(shù)據(jù)穩(wěn)定性。(接線見(jiàn)附錄圖)
2. 針對(duì)測(cè)量時(shí)可能產(chǎn)生的干擾和誤差數(shù)值,可能從軟件的角度進(jìn)行改進(jìn)和防止,通過(guò)多次的測(cè)量記錄,排除一場(chǎng)輸入量后,取均值來(lái)的到一個(gè)較為穩(wěn)定更為接近實(shí)際值的測(cè)量數(shù)據(jù)。其次可以根據(jù)實(shí)際的使用要求,可以進(jìn)行有效值的范圍定義,過(guò)濾超出范圍的測(cè)量結(jié)果,該范圍可根據(jù)使用情況自行界定。
3. 針對(duì)紅外傳感器測(cè)量時(shí),可能受環(huán)境光影響測(cè)量結(jié)果,在安放使用時(shí)竟可能避免傳感器正對(duì)燈光的使用,可以將 GP2D12的發(fā)射接收端水平放置進(jìn)行測(cè)量,盡可能減少環(huán)境光帶來(lái)的干擾。
總體來(lái)說(shuō)GP2D12在對(duì)測(cè)量精度要求不高,測(cè)量范圍在1m以內(nèi)的情況下,對(duì)物體距離值的定位是非常簡(jiǎn)單有效地、操作簡(jiǎn)便、實(shí)用性強(qiáng)。
gp2d12<a title=紅外測(cè)距傳感器:Arduino + GP2D12紅外測(cè)距傳感器+LCD1602 第1張" title="gp2d12紅外測(cè)距傳感器:Arduino + GP2D12紅外測(cè)距傳感器+LCD1602 第1張-傳感器知識(shí)網(wǎng)"/>

gp2d12紅外測(cè)距傳感器:GP2D12 IR Sensor 夏普紅外測(cè)距 Arduino傳感器(附送傳感器線)

產(chǎn)品介紹:
GP2D12 IR Sensor 是日本夏普公司推出的一款性價(jià)比高、常用的紅外測(cè)距傳感器、其可用來(lái)對(duì)物體的距離進(jìn)行測(cè)量,實(shí)現(xiàn)輪式機(jī)器人的避障功能。它不但體積小、功耗低、價(jià)格便宜,而且測(cè)距效果好,適合廣大機(jī)器人發(fā)燒友使用。貨量充足,全部現(xiàn)貨供應(yīng)。
GP2D12產(chǎn)品規(guī)格參數(shù):
1.測(cè)量射程范圍:10 to 80 cm
2.允許角度:>40°
3.電源電壓:4.5 to 5.5V
4.平均功耗:35mA
5.峰值功耗:約200mA
6.更新頻率/周期:25Hz/40ms
7.模擬輸出噪聲:<200mV 8.測(cè)量距離與輸出模擬電壓關(guān)系:2.4V~0.4V模擬信號(hào)對(duì)應(yīng)10cm~80cm,輸出與距離成反比非線性關(guān)系。 產(chǎn)品圖片: 現(xiàn)在購(gòu)買此傳感器贈(zèng)送一根30cm長(zhǎng)進(jìn)口彩色排線。(數(shù)量有限,欲購(gòu)從速) GP2D12 IR Sensor 夏普紅外測(cè)距正面圖 GP2D12 IR Sensor 夏普紅外測(cè)距背面圖 GP2D12 IR Sensor 外形尺寸 模擬信號(hào)與測(cè)量距離對(duì)應(yīng)表 ADC0831可以將模擬信號(hào)轉(zhuǎn)為數(shù)字信號(hào)輸出 GP2D12 IR Sensor 夏普紅外測(cè)距傳感器引腳接線圖解 GP2D12 IR Sensor 夏普紅外測(cè)距傳感器快速對(duì)比圖 GP2D12 IR Sensor 夏普紅外測(cè)距傳感器的應(yīng)用實(shí)例 夏普公司推出的其他型號(hào)產(chǎn)品 GP2D12 IR Sensor 夏普紅外測(cè)距傳感器與控制器相連 相關(guān)資料: Arduino應(yīng)用之夏普GP2D12紅外測(cè)距傳感器網(wǎng)址:(復(fù)制網(wǎng)址到瀏覽器打開(kāi)) 有問(wèn)有答: 1.夏普紅外測(cè)距邊界問(wèn)題: 2.Arduino驅(qū)動(dòng)安裝失敗? 解決的方法: 1.html 3.Arduino uno R3+雙H橋驅(qū)動(dòng)板+紅外遙控小車編程問(wèn)題 :   4.采用現(xiàn)成零件 在家自制Arduino手機(jī): mod=viewthread&tid=3858 5.利用Xbee模塊實(shí)現(xiàn)兩個(gè)UNO控制器的通信: mod=viewthread&tid=5284 6.新人求問(wèn),關(guān)于紅外避障模塊: 前沿科技: 1.利用紅外熱釋電傳感器制作屬于自己的報(bào)警裝置: 2.Arduino與Kinect打造“體感智能車”:   3.玩轉(zhuǎn)Arduino-編譯環(huán)境軟件: 4.Arduino IDE錯(cuò)誤提示問(wèn)題原因匯總: 5.Arduino+Processing 制作極客風(fēng)格繪圖機(jī): 6.Arduino兼容的3D手勢(shì)控制器: 7.玩轉(zhuǎn)Arduino-閃爍的LED: 8.基于Arduino UNO與超聲波傳感器的音樂(lè)魔方: 9.利用Arduino超聲波傳感器自制倒車?yán)走_(dá): 教學(xué)視頻: 1.紅外無(wú)線傳輸之旋轉(zhuǎn)電位計(jì)控制LED燈: 2.紅外無(wú)線發(fā)射接收之顏色識(shí)別系統(tǒng): 3.Arduino紅外無(wú)線遙控解碼距離測(cè)試: 4.Arduino-2WD輕量型移動(dòng)機(jī)器人紅外遙控演示: 5.Arduino-4WD移動(dòng)機(jī)器人尋線與避障功能演示網(wǎng)址:   6.Arduino-4WD移動(dòng)機(jī)器人偵測(cè)避障功能演示網(wǎng)址:   技術(shù)博客: 1.關(guān)于Sharp GP2D12紅外測(cè)距傳感器:   2.奧松機(jī)器人帶你“走進(jìn)科學(xué)世界”: 3.奧松機(jī)器人助力中國(guó)教育亮相東南衛(wèi)視《好好學(xué)習(xí)吧》娛樂(lè)節(jié)目: 4.玩轉(zhuǎn)Arduino控制器——入門篇:   5.玩轉(zhuǎn)Arduino控制器——基于Arduino互動(dòng)電子入門套 件:   6.超聲波測(cè)距原理及應(yīng)用實(shí)例: 百度百科: 1.Arduino百度百科(點(diǎn)擊名稱) 2.哈爾濱奧松機(jī)器人科技有限公司(點(diǎn)擊名稱) 3.“機(jī)器人爸爸”于欣龍(點(diǎn)擊名稱) 維基百科: 1.夏普GP2D12紅外測(cè)距傳感器(點(diǎn)擊名稱) 2.夏普GP2Y0A02YK0F 紅外測(cè)距傳感器(點(diǎn)擊名稱) 【為了給親們提供更方便快捷的技術(shù)服務(wù)與支持,奧松機(jī)器人特開(kāi)設(shè)技術(shù)社區(qū)為大家答疑解惑 ,即有專門的技術(shù)人員為您回帖,更有眾多的電子愛(ài)好者可以一起交流學(xué)習(xí)心得! gp2d12紅外測(cè)距傳感器:Arduino  + GP2D12紅外測(cè)距傳感器+LCD1602  第2張紅外測(cè)距傳感器:Arduino + GP2D12紅外測(cè)距傳感器+LCD1602 第2張-傳感器知識(shí)網(wǎng)"/>

gp2d12紅外測(cè)距傳感器:GP2D12紅外測(cè)距傳感器原理與單片機(jī)源程序等詳細(xì)資料

GP2D12紅外測(cè)距傳感器使用介紹
一、“看到”障礙物的眼睛——紅外測(cè)距傳感器
機(jī)器視覺(jué)中最接近人眼的莫過(guò)于攝像頭了,可圖像處理小車的“大腦”對(duì)付不了,至少目前的“大腦”能力不夠,等進(jìn)化后也許能夠應(yīng)付。
為了能“看到”障礙物,小車目前能用的主要是各類測(cè)距傳感器,典型的有超聲波和紅外兩種,此外還有利用光線的反射強(qiáng)弱來(lái)判斷的,這種方式不具備“測(cè)距”功能,但可以判斷有無(wú)!因?yàn)椴煌矬w表面及顏色反射的能力不同(看后面的數(shù)據(jù))。
本文主要討論的是機(jī)器人中最常用的紅外測(cè)距傳感器  ——  GP2D12。
首先認(rèn)識(shí)一下:
0.png (150.57 KB, 下載次數(shù): 64)
下載附件
2017-11-25 21:29 上傳
模塊共三個(gè)接口:紅線---VCC_5V;黑線---GND;黃線—PC5(ADC數(shù)據(jù)采樣)
將模塊通電,黃線接到ADC通道輸入端即可工作;將采樣得到的電壓值通過(guò)填入表格,進(jìn)行線性化處理,得到線性化公式。通過(guò)公式,可將ADC采樣值轉(zhuǎn)化為距離值。實(shí)測(cè),在10cm—30cm范圍內(nèi),較為準(zhǔn)確,最大誤差在1cm。模塊對(duì)被測(cè)角度的靈敏度很高,同一位置,不同的角度,誤差可以超過(guò)5cm,最好的測(cè)量角度是90度。
  之所以選擇 GP2D12  紅外測(cè)距傳感器,理由如下:
首先是因?yàn)樵跈C(jī)器人活動(dòng)中(不包含工業(yè)機(jī)器人)這個(gè)傳感器最常用,幾乎每家國(guó)外的機(jī)器人配件供應(yīng)商都提供。使用英文版搜索一下 “MiniSumo”,你將會(huì)發(fā)現(xiàn) GP2D12使用是多么普遍。
其二是因?yàn)樗臏y(cè)距范圍和小車的“個(gè)頭”及運(yùn)動(dòng)速度匹配,對(duì)于 10cm 見(jiàn)方、運(yùn)動(dòng)速度10 – 30cm/s  的小個(gè)頭,能“看到”幾米開(kāi)外的東西意義不大,而 10 – 80cm  正是它所要關(guān)注的范圍。
GP2D12的工作原理我理解為(僅供參考,歡迎指正):
它是由一個(gè)紅外發(fā)射管和一個(gè) PSD(Position Sensing Device位置敏感檢測(cè)裝置)以及相應(yīng)的計(jì)算電路構(gòu)成,Sharp  公司的 PSD 很有特色,它可以檢測(cè)到光點(diǎn)落在它上面的微小位移, 分辨率達(dá)微米,GP2D12 正是利用這個(gè)特性實(shí)現(xiàn)了幾何方式測(cè)距。
紅外發(fā)射管發(fā)出的光束,遇到障礙物反射回來(lái),落在 PSD 上,構(gòu)成了一個(gè)等腰三角形, 借助于 PSD 可以測(cè)得三角形的底,而兩個(gè)底角是固定的,由發(fā)射管確定,此時(shí)便可通過(guò)底邊 推算出高,也就是我們所要的距離。如下圖所示:
0.png (27.21 KB, 下載次數(shù): 66)
下載附件
2017-11-25 22:12 上傳
測(cè)量原理示意圖
 從圖中可以看出,這是一個(gè)頂角極銳的等腰三角形,底邊只有2cm  ,高卻要有10 – 80cm,所以 PSD 的分辨率必須極高,否則微小的偏差都會(huì)帶來(lái)距離的巨大誤差。從這一點(diǎn)也可以得出,它的測(cè)距結(jié)果很難穩(wěn)定、精確,畢竟比值太大。
因?yàn)?PSD 的尺寸有限,從圖中就很容易理解為何它的測(cè)量距離超出范圍后就不可能是有效數(shù)據(jù),連趨勢(shì)都得不到。
從上述原理描述還可以知道,它不是連續(xù)測(cè)量,得到底邊長(zhǎng)度后,必須經(jīng)過(guò)計(jì)算才能得到距離值,然后轉(zhuǎn)換為模擬信號(hào)輸出。
這兩個(gè)推論在那篇“Sharp  GP2D12  applicationNote”(應(yīng)用指南)有所印證,具體表現(xiàn)為它測(cè)距的強(qiáng)指向性和輸出的不確定性(噪音高達(dá)  200mV,相對(duì)于 2.4V 的滿量程輸出而言達(dá)5%)。 這篇文章好像是國(guó)外一個(gè)愛(ài)好者寫(xiě)的,他做了大量的測(cè)試,對(duì)使用者掌握GP2D12 的性能及合理的使用它極有幫助。
0.png (59.56 KB, 下載次數(shù): 65)
下載附件
2017-11-25 22:16 上傳
總有人問(wèn)     GP2D12  是否能用于某些場(chǎng)合?如果能仔細(xì)吃透上述指標(biāo),自然會(huì)有答案。 還有人問(wèn)它與超聲波傳感器那個(gè)好,我想這些指標(biāo)也會(huì)告訴你!  至于更詳細(xì)的內(nèi)容,讀者可進(jìn)一步閱讀GP2D12的數(shù)據(jù)手冊(cè)以及上面介紹的應(yīng)用指南, 在此我就不再贅述。
  在硬件上,沒(méi)有太多的難度,但是要用好GP2D12,軟件上似乎要做些努力,必須解決的有兩個(gè)問(wèn)題:
一是信號(hào)的線性化 ,因?yàn)檩敵雠c距離的關(guān)系是非線性的,為便于程序中使用距離信息,必須將模擬信號(hào)轉(zhuǎn)換為相應(yīng)得距離值。
二是濾波 ,因?yàn)榘凑丈鲜鰬?yīng)用指南的測(cè)量分析,GP2D12的輸出噪聲很大;此外,還由于測(cè)量的非連續(xù)性,導(dǎo)致連續(xù)的距離變化對(duì)應(yīng)的輸出為階躍信號(hào),也需要通過(guò)濾波將其平滑。
2.1  線性化
關(guān)于線性化,開(kāi)始時(shí)我也一籌莫展,曾想用折線近似實(shí)現(xiàn),但嘗試后覺(jué)得代碼量太大,而且需要做大量數(shù)據(jù)采集。
后來(lái)在acroname網(wǎng)站上(二年前),發(fā)現(xiàn)了一個(gè)極好的“東東”  —個(gè)用 Excel 制作的電子表,表格的格式如下:

gp2d12-使用表格(本文附件可下載)
0.png (70.06 KB, 下載次數(shù): 108)
下載附件
2017-11-25 21:25 上傳
里面有作者根據(jù) GP2D12 特性建立的數(shù)學(xué)模型(線性化公式),并預(yù)留的使用者輸入?yún)?shù)的地方,只需按其要求填入:
AD 的位數(shù)、AD 供電電壓(滿量程),并采集 8 點(diǎn)(10cm 間隔)GP2D12  的輸出電壓, 填入表中,它就可自動(dòng)生成線性化公式的參數(shù) ,提供了整形和浮點(diǎn)兩種格式,還附有由此產(chǎn)生的結(jié)果與實(shí)際的偏差表,并用生動(dòng)的圖形表示,十分直觀、實(shí)用。
此表可在embedream的相關(guān)資料中下載,本該提供它的原始鏈接,無(wú)奈現(xiàn)在沒(méi)有了,只找到了一個(gè)類似的文檔  —  Sharp IR Range Finder Voltage-to-Range Conversion Article 內(nèi)容也是討論線性化的,讀者不妨一讀。配合此文也許更容易理解使用那張Excel 表格。
0.png (67 KB, 下載次數(shù): 56)
下載附件
2017-11-25 22:20 上傳
根據(jù)上述公式及程序得到的結(jié)果如下:
GP2D12 不同顏色測(cè)距結(jié)果對(duì)比
0.png (14.13 KB, 下載次數(shù): 58)
下載附件
2017-11-25 22:22 上傳
第一列為實(shí)際距離,第二列障礙物表面為白紙,第三列障礙物為褐色木盒,讀者可比照Excel 表中的數(shù)據(jù),可以看出基本吻合。同時(shí)還可以從上面數(shù)據(jù)中看出,GP2D12  確實(shí)如其手冊(cè)中所說(shuō),基本不受障礙物的顏色影響。
0.png (363.2 KB, 下載次數(shù): 51)
下載附件
2017-11-25 22:23 上傳
2.2  濾波
濾波主要解決兩個(gè)問(wèn)題,一是在GP2D12恒定輸出階段,按應(yīng)用指南的分析,有不小的噪聲,需要通過(guò)濾波消除。
二是由于其非連續(xù)測(cè)量的特性,導(dǎo)致其測(cè)量連續(xù)變化的距離時(shí),輸出是階躍形式的,這對(duì)程序判斷極為不利,為了弱化這個(gè)影響,也期望通過(guò)濾波實(shí)現(xiàn)。
根據(jù) GP2D12 的手冊(cè),其測(cè)量周期為  40ms  左右(38ms),綜合小車單片機(jī)的內(nèi)存及處理需求,采用 5ms 采樣一次,取最近 8 次的結(jié)果平均值的濾波方式,也就是說(shuō),一個(gè)測(cè)量周期采 8 個(gè)數(shù)據(jù)平均。
這樣處理可以降低噪聲的影響,這點(diǎn)容易理解。至于弱化階躍信號(hào),不知讀者是否認(rèn)同?
我是這樣考慮:在出現(xiàn)階躍信號(hào)時(shí),8 個(gè)數(shù)據(jù)中隨著時(shí)間推移,新的信號(hào)所占的權(quán)重不斷加大,使得信號(hào)逐漸從前一個(gè)信號(hào)平緩的過(guò)渡到新的信號(hào)上。但是這樣處理,導(dǎo)致了距離信號(hào)反映滯后,要到下一個(gè)信號(hào)快到時(shí),本次的輸出才接近本次的信號(hào)。就這一點(diǎn)而言,似 乎有些不盡合理,有待讀者深入探討。
紅外測(cè)試數(shù)據(jù):10cm   11.55--11.66
15cm  16.15--16.38
16.5cm  17.46--17.92
18cm   20.01--20.13
19cm  19.44--19.81
20cm  20.01--20.15
22cm  21.56--21.82
23cm  23.20--23.66
24.5cm  23.96--24.23
28cm  27.39--27.93
stm32單片機(jī)紅外測(cè)距源程序如下:
#include "stm32f10x_lib.h"
#include "stdio.h"
#define countof(a)   (sizeof(a) / sizeof(*(a)))
#define TxBufferSize   (countof(TxBuffer) - 1)
u8 TxBuffer[]="
ADC Example1: ADC TO DMA TO UART1
";
u8 TxCounter=0;
#define ADC1_DR_Address    ((u32)0xC)
USART_InitTypeDef USART_InitStructure;
ADC_InitTypeDef ADC_InitStructure;
DMA_InitTypeDef DMA_InitStructure;
vu16 ADC_ConvertedValue;
ErrorStatus HSEStartUpStatus;

void RCC_Configuration(void);
void GPIO_Configuration(void);
void NVIC_Configuration(void);

void Delay_us(unsigned short us)
{
unsigned short i;
while(us--)
{
for(i=0;i<10;i++);    } } void Delay_ms(unsigned short ms) {    unsigned short i;        while(ms--)    {        for(i=0;i

RCC_Configuration();

NVIC_Configuration();

GPIO_Configuration();

USART_InitStructure.USART_BaudRate=9600;
 USART_InitStructure.USART_WordLength=USART_WordLength_8b;
 USART_InitStructure.USART_StopBits=USART_StopBits_1;
 USART_InitStructure.USART_Parity=USART_Parity_No;
 USART_InitStructure.USART_HardwareFlowControl=USART_HardwareFlowControl_None;
 USART_InitStructure.USART_Mode=USART_Mode_Rx | USART_Mode_Tx;
 USART_InitStructure.USART_Clock=USART_Clock_Disable;
 USART_InitStructure.USART_CPOL=USART_CPOL_Low;
 USART_InitStructure.USART_CPHA=USART_CPHA_2Edge;
 USART_InitStructure.USART_LastBit=USART_LastBit_Disable;

USART_Init(USART1, &USART_InitStructure);

USART_ITConfig(USART1, USART_IT_TXE, ENABLE);
 USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);

USART_Cmd(USART1, ENABLE);

DMA_DeInit(DMA_Channel1);
 DMA_InitStructure.DMA_PeripheralbaseAddr=ADC1_DR_Address;
 DMA_InitStructure.DMA_MemorybaseAddr=(u32)&ADC_ConvertedValue;
 DMA_InitStructure.DMA_DIR=DMA_DIR_PeripheralSRC;
 DMA_InitStructure.DMA_BufferSize=1;
 DMA_InitStructure.DMA_PeripheralInc=DMA_PeripheralInc_Disable;
 DMA_InitStructure.DMA_MemoryInc=DMA_MemoryInc_Disable;
 DMA_InitStructure.DMA_PeripheralDataSize=DMA_PeripheralDataSize_HalfWord;
 DMA_InitStructure.DMA_MemoryDataSize=DMA_MemoryDataSize_HalfWord;
 DMA_InitStructure.DMA_Mode=DMA_Mode_Circular;
 DMA_InitStructure.DMA_Priority=DMA_Priority_High;
 DMA_InitStructure.DMA_M2M=DMA_M2M_Disable;
 DMA_Init(DMA_Channel1, &DMA_InitStructure);

DMA_Cmd(DMA_Channel1, ENABLE);

ADC_InitStructure.ADC_Mode=ADC_Mode_Independent;
 ADC_InitStructure.ADC_ScanConvMode=ENABLE;
 ADC_InitStructure.ADC_ContinuousConvMode=ENABLE;
 ADC_InitStructure.ADC_ExternalTrigConv=ADC_ExternalTrigConv_None;
 ADC_InitStructure.ADC_DataAlign=ADC_DataAlign_Right;
 ADC_InitStructure.ADC_NbrOfChannel=1;
 ADC_Init(ADC1, &ADC_InitStructure);

ADC_RegularChannelConfig(ADC1, ADC_Channel_15, 1, ADC_SampleTime_55Cycles5);

ADC_DMACmd(ADC1, ENABLE);

ADC_Cmd(ADC1, ENABLE);

ADC_ResetCalibration(ADC1);

while(ADC_GetResetCalibrationStatus(ADC1));

ADC_StartCalibration(ADC1);

while(ADC_GetCalibrationStatus(ADC1));

ADC_SoftwareStartConvCmd(ADC1, ENABLE);
 for(i=0;i

Tmp_Dat=  ADC_ConvertedValue;
distance=(1/(Tmp_Dat*0.+0.))-4.0;
printf("
%ld
",Tmp_Dat);
  printf("%.2f",distance);

Tmp_Dat=Tmp_Dat*3300/0x0fff;
TxBuffer[0]=Tmp_Dat/1000+'0';
TxBuffer[1]='.';
TxBuffer[2]=(Tmp_Dat%1000)/100+'0';
TxBuffer[3]=(Tmp_Dat%100)/10+'0';
TxBuffer[4]=Tmp_Dat%10+'0';
TxBuffer[5]='V';
USART_SendData(USART1, '[');
while (!(USART1->SR & USART_FLAG_TXE));   //等待緩沖區(qū)空
while (!(USART1->SR & USART_FLAG_TC));   //等待發(fā)送完成
USART_SendData(USART1, TxBuffer[0]);
while (!(USART1->SR & USART_FLAG_TXE));   //等待緩沖區(qū)空
while (!(USART1->SR & USART_FLAG_TC));   //等待發(fā)送完成
USART_SendData(USART1, TxBuffer[1]);
while (!(USART1->SR & USART_FLAG_TXE));   //等待緩沖區(qū)空
while (!(USART1->SR & USART_FLAG_TC));   //等待發(fā)送完成
USART_SendData(USART1, TxBuffer[2]);
while (!(USART1->SR & USART_FLAG_TXE));   //等待緩沖區(qū)空
while (!(USART1->SR & USART_FLAG_TC));   //等待發(fā)送完成
USART_SendData(USART1, TxBuffer[3]);
while (!(USART1->SR & USART_FLAG_TXE));   //等待緩沖區(qū)空
while (!(USART1->SR & USART_FLAG_TC));   //等待發(fā)送完成
USART_SendData(USART1, TxBuffer[4]);
while (!(USART1->SR & USART_FLAG_TXE));   //等待緩沖區(qū)空
while (!(USART1->SR & USART_FLAG_TC));   //等待發(fā)送完成
USART_SendData(USART1, TxBuffer[5]);
while (!(USART1->SR & USART_FLAG_TXE));   //等待緩沖區(qū)空
while (!(USART1->SR & USART_FLAG_TC));   //等待發(fā)送完成
USART_SendData(USART1, ']');
while (!(USART1->SR & USART_FLAG_TXE));   //等待緩沖區(qū)空
while (!(USART1->SR & USART_FLAG_TC));   //等待發(fā)送完成
printf("
");
 }
}
void RCC_Configuration(void)
{

RCC_DeInit();

RCC_HSEConfig(RCC_HSE_ON);

HSEStartUpStatus=RCC_WaitForHSEStartUp();
 if(HSEStartUpStatus==SUCCESS)
 {

FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);

FLASH_SetLatency(FLASH_Latency_2);

RCC_HCLKConfig(RCC_SYSCLK_Div1);

RCC_PCLK2Config(RCC_HCLK_Div1);

RCC_PCLK1Config(RCC_HCLK_Div2);

RCC_ADCCLKConfig(RCC_PCLK2_Div4);

RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_7);

RCC_PLLCmd(ENABLE);

while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY)==RESET)
{
}

RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);

while(RCC_GetSYSCLKSource() !=0x08)
{
}
 }

RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA, ENABLE);

RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1 | RCC_APB2Periph_GPIOC, ENABLE);

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_USART1, ENABLE);
}
void GPIO_Configuration(void)
{
 GPIO_InitTypeDef GPIO_InitStructure;

GPIO_InitStructure.GPIO_Pin=GPIO_Pin_5;
 GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AIN;
 GPIO_Init(GPIOC, &GPIO_InitStructure);

GPIO_InitStructure.GPIO_Pin=GPIO_Pin_9;
 GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
 GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;
 GPIO_Init(GPIOA, &GPIO_InitStructure);

GPIO_InitStructure.GPIO_Pin=GPIO_Pin_10;
 GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING;
 GPIO_Init(GPIOA, &GPIO_InitStructure);
}
void NVIC_Configuration(void)
……………………
…………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
復(fù)制代碼
0.png (60.43 KB, 下載次數(shù): 88)
下載附件
2017-11-25 22:44 上傳
所有資料51hei提供下載:
紅外模塊.zip
(2.25 MB, 下載次數(shù): 507)
2017-11-25 15:43 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
gp2d12紅外<a title=測(cè)距傳感器:Arduino + GP2D12紅外測(cè)距傳感器+LCD1602 第3張" title="gp2d12紅外測(cè)距傳感器:Arduino + GP2D12紅外測(cè)距傳感器+LCD1602 第3張-傳感器知識(shí)網(wǎng)"/>

gp2d12紅外測(cè)距傳感器:紅外測(cè)距儀(KTR-GP2D12紅外測(cè)距傳感器)使用說(shuō)明書(shū)

《紅外測(cè)距儀(KTR-GP2D12紅外測(cè)距傳感器)使用說(shuō)明書(shū)》由會(huì)員分享,可在線閱讀,更多相關(guān)《紅外測(cè)距儀(KTR-GP2D12紅外測(cè)距傳感器)使用說(shuō)明書(shū)(2頁(yè)珍藏版)》請(qǐng)?jiān)谌巳宋膸?kù)網(wǎng)上搜索。

紅外測(cè)距儀(KTR-GP2D12紅外測(cè)距傳感器)使用說(shuō)明書(shū)1.概述紅外測(cè)距儀是一種光學(xué)測(cè)量距離的工具。是利用光的反射強(qiáng)度來(lái)測(cè)定距離的,具有精度高、低功耗、體積小,不受干擾等特點(diǎn)。當(dāng)有障礙物在紅外測(cè)距儀的一到五米的距離內(nèi),測(cè)距儀會(huì)把距離轉(zhuǎn)換成電信號(hào)輸出。輸出方式可根據(jù)用戶來(lái)定。可廣泛應(yīng)用在小區(qū)路口、收費(fèi)站的來(lái)車檢測(cè),家居安防,短距離的測(cè)量等。2.技術(shù)參數(shù)電源輸入:DC 924V電流: 50mA功耗:小于1W測(cè)量距離D:1D5 米誤差: 0.01米輸出信號(hào):TTL電平(0/5V),RS485(可選)。使用溫度:060儲(chǔ)存溫度:-4070電氣接口:4針航空頭 3.接線說(shuō)明 顏色棕色黑色藍(lán)色黃色信號(hào)DC-INGNDS+S-GND說(shuō)明電源正輸入電源地電平信號(hào)輸出信號(hào)地4.注意事項(xiàng) 必須保持產(chǎn)品表面干凈,否則會(huì)影響測(cè)量距離。5、型號(hào):KTR-GP2D12(紅外測(cè)距傳感器)6、品牌:KITOZER(開(kāi)拓者)

下一篇: PLC、DCS、FCS三大控

上一篇: 電氣控制線路圖控制原

推薦產(chǎn)品

更多