女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

您好,歡迎來電子發燒友網! ,新用戶?[免費注冊]

您的位置:電子發燒友網>電子元器件>傳感器>

淺談基于紅外傳感器的雷達設計

2018年09月24日 15:51 作者:工程師譚軍 用戶評論(0
?
  紅外傳感系統是用紅外線為介質的測量系統,按照功能可分成五類, 按探測機理可分成為光子探測器和熱探測器。 紅外傳感技術已經在現代科技、國防和工農業等領域獲得了廣泛的應用
?
  紅外線對射管的驅動分為電平型和脈沖型兩種驅動方式。由紅外線對射管陣列組成分離型光電傳感器。該傳感器的創新點在于能夠抵抗外界的強光干擾。太陽光中含有對紅外線接收管產生干擾的紅外線,該光線能夠將紅外線接收二極管導通,使系統產生誤判,甚至導致整個系統癱瘓。本傳感器的優點在于能夠設置多點采集,對射管陣列的間距和陣列數量可根據需求選取。
?
  紅外線技術在測速系統中已經得到了廣泛應用,許多產品已運用紅外線技術能夠實現車輛測速、探測等研究。紅外線應用速度測量領域時,最難克服的是受強太陽光等多種含有紅外線的光源干擾。外界光源的干擾成為紅外線應用于野外的瓶頸。針對此問題,這里提出一種紅外線測速傳感器設計方案,該設計方案能夠為多點測量即時速度和階段加速度提供技術支持,可應用于公路測速和生產線下料的速度稱量等工業生產中需要測量速度的環節。
?
  紅外技術已經眾所周知,這項技術在現代科技、國防科技和工農業科技等領域得到了廣泛的應用。紅外傳感系統是用紅外線為介質的測量系統,按照功能能夠分成五類:(1)輻射計,用于輻射和光譜測量;(2)搜索和跟蹤系統,用于搜索和跟蹤紅外目標,確定其空間位置并對它的運動進行跟蹤;(3)熱成像系統,可產生整個目標紅外輻射的分布圖像;(4)紅外測距和通信系統;(5)混合系統,是指以上各類系統中的兩個或者多個的組合。
?
  紅外傳感器根據探測機理可分成為:光子探測器(基于光電效應)和熱探測器(基于熱效應)。
?
  原理
?
  待測目標
?
  根據待測目標的紅外輻射特性可進行紅外系統的設定。
?
  大氣衰減
?
  待測目標的紅外輻射通過地球大氣層時,由于氣體分子和各種氣體以及各種溶膠粒的散射和吸收,將使得紅外源發出的紅外輻射發生衰減。
?
?
  它接收目標的部分紅外輻射并傳輸給紅外傳感器。相當于雷達天線,常用是物鏡。
?
  輻射調制器
?
  對來自待測目標的輻射調制成交變的輻射光,提供目標方位信息,并可濾除大面積的干擾信號。又稱調制盤和斬波器,它具有多種結構。
?
  紅外探測器
?
  這是紅外系統的核心。它是利用紅外輻射與物質相互作用所呈現出來的物理效應探測紅外輻射的傳感器,多數情況下是利用這種相互作用所呈現出的電學效應。此類探測器可分為光子探測器和熱敏感探測器兩大類型。
?
  探測器制冷器
?
  由于某些探測器必須要在高溫下工作,所以相應的系統必須有制冷設備。經過制冷,設備可以縮短響應時間,提高探測靈敏度。
?
  信號處理系統
?
  將探測的信號進行放大、濾波,并從這些信號中提取出信息。然后將此類信息轉化成為所需要的格式,最后輸送到控制設備或者顯示器中。
?
  顯示設備
?
  這是紅外設備的終端設備。常用的顯示器有示波器、顯像管、紅外感光材料、指示儀器和記錄儀等。
?
  依照上面的流程,紅外系統就可以完成相應的物理量的測量。紅外系統的核心是紅外探測器,按照探測的機理的不同,可以分為熱探測器和光子探測器兩大類。下面以熱探測器為例子來分析探測器的原理。
?
  熱探測器是利用輻射熱效應,使探測元件接收到輻射能后引起溫度升高,進而使探測器中依賴于溫度的性能發生變化。檢測其中某一性能的變化,便可探測出輻射。多數情況下是通過熱電變化來探測輻射的。當元件接收輻射,引起非電量的物理變化時,可以通過適當的變換后測量相應的電量變化。
?
  圖上所示為歐姆龍公司生產的漫反射式和對射式光電傳感器,這兩種傳感器主要用于事件檢測和物體定位。圖中的紅燈和綠燈表示傳感器的狀態。
?
  紅外傳感器已經在現代化的生產實踐中發揮著它的巨大作用,隨著探測設備和其他部分的技術的提高,紅外傳感器能夠擁有更多的性能和更好的靈敏度。
?
  類型
?
  紅外線傳感器依動作可分為:
?
  (1) 將紅外線一部份變換為熱,藉熱取出電阻值變化及電動勢等輸出信號之熱型。
?
  (2) 利用半導體遷徙現象吸收能量差之光電效果及利用因PN 接合之光電動勢效果的量子型。
?
  熱型的現象俗稱為焦熱效應,其中最具代表性者有測輻射熱器 (THERMAL BOLOMETER),熱電堆(THERMOPILE)及熱電(PYROELECTRIC)元件。
?
  熱型的優點有:可常溫動作下操作,波長依存性(波長不同感度有很大之變化者)并不存在,造價便宜;
?
  缺點:感度低、響應慢(MS之譜)。
?
  量子型 的優點:感度高、響應快速(ΜS 之譜);
?
  缺點:必須冷卻(液體氮氣) 、有波長依存性、價格偏高;
?
  紅外線傳感器特別是利用遠紅外線范圍的感度做為人體檢出用,紅外線的波長比可見光長而比電波短。紅外線讓人覺得只由熱的物體放射出來,可是事實上不是如此,凡是存在于自然界的物體,如人類、火、冰等等全部都會射出紅外線,只是其波長因其物體的溫度而有差異而已。人體的體溫約為36~37°C,所放射出峰值為9~10微米的遠紅外線,另外加熱至400~700°C的物體,可放射出峰值為3~5微米(不是MM)的中間紅外線。

  雷達通常在軍事領域運用較多,民用方面也有很多,在此就不一一舉例說明了。

  本次設計主要是想通過紅外測距傳感器配合單片機系統實現“雷達”硬件,通過異步串口通信,將數據傳輸至PC,并通過Peocessing開發上位機“雷達”界面用以顯示。

  在傳感器的測試文檔中,小楊通過矩形數量來顯示傳感器輸出值。

  今天既然說是“雷達”,那小楊就模擬一個“雷達”界面。

  雷達硬件組成:

  老套路,發煙測試,通過最簡單的方法實現效果。

  SHARP的GP2Y0A21YK0F傳感器性能穩定,好用不貴,且不需要再設計外圍電路。

  那剩下的就是具備ADC+串口通信功能的單片機系統咯,出于最簡單實現的初衷,小楊就用下面這款了:

  開發板兼容ArduinoIDE編程。不在這里過多贅述,相關信息請參閱工作室的其他文檔。

  整體連接如下:

  忘了說,掃描需要云臺,就用舵機簡單模擬一個,關于舵機控制,請參考:

  下面直接展示代碼:

  // Visual Micro is in vMicro》General》Tutorial Mode

  //

  /*

  Name: LeiDa.ino

  Created: 2018/7/22 13:23:31

  Author: 禾灮\HeGuang

  */

  // Define User Types below here or use a .h file

  //

  #include 《Servo.h》。

  // Define Function Prototypes that use User Types below here or use a .h file

  //// 初始化設置

  const int VoPin = 14;

  long duration;

  int distance;

  Servo myServo; // Creates a servo object for controlling the servo motor

  int Range_SHARP(){

  duration = analogRead(VoPin);

  distance = (1024 - duration)/10 - 50;

  return distance;

  }

  // The setup() function runs once each time the micro-controller starts

  void setup(){

  pinMode(VoPin, INPUT);

  Serial.begin(9600);

  myServo.attach(10);

  }

  // Add the main program code into the continuous loop() function

  void loop(){

  for(int i=15;i《=165;i++){

  myServo.write(i);

  distance = Range_SHARP();

  Serial.print(i);

  Serial.print(“,”);

  Serial.print(distance);

  Serial.print(“。”);

  delay(50);

  }

  for(int i=165;i》15;i--){

  myServo.write(i);

  distance = Range_SHARP();

  Serial.print(i);

  Serial.print(“,”);

  Serial.print(distance);

  Serial.print(“。”);

  delay(50);

  }

  }1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253

  完成了這些準備,下面就該上位機開發了。

  雷達上位機

  開發用到的軟件:Processing,一款非常好用的交互上位機設計軟件。

  上位機界面如下:

  不多說,直接上代碼:

  import processing.serial.*;

  import java.awt.event.KeyEvent;

  import java.io.IOException;

  Serial myPort;

  String angle=“”;

  String distance=“”;

  String data=“”;

  String noObject;

  float pixsDistance;

  int iAngle, iDistance;

  int index1=0;

  int index2=0;

  PFont orcFont;

  void setup() {

  size (1200, 700); //這個分辨率自己根據你的電腦的配置和顯示屏幕配置進行更改。

  smooth();

  myPort = new Serial(this,“COM7”, 9600); //這個串口號一定要更改。

  myPort.bufferUntil(‘。’);

  }

  void draw() {

  fill(98,245,31);

  noStroke();

  fill(0,4);

  rect(0, 0, width, height-height*0.065);

  fill(98,245,31);

  drawRadar();

  drawLine();

  drawObject();

  drawText();

  }

  void serialEvent (Serial myPort) {

  data = myPort.readStringUntil(‘。’);

  data = data.substring(0,data.length()-1);

  index1 = data.indexOf(“,”);

  angle= data.substring(0, index1);

  distance= data.substring(index1+1, data.length());

  iAngle = int(angle);

  iDistance = int(distance);

  }

  void drawRadar() {

  pushMatrix();

  translate(width/2,height-height*0.074);

  noFill();

  strokeWeight(2);

  stroke(98,245,31);

  // draws the arc lines

  arc(0,0,(width-width*0.0625),(width-width*0.0625),PI,TWO_PI);

  arc(0,0,(width-width*0.27),(width-width*0.27),PI,TWO_PI);

  arc(0,0,(width-width*0.479),(width-width*0.479),PI,TWO_PI);

  arc(0,0,(width-width*0.687),(width-width*0.687),PI,TWO_PI);

  // draws the angle lines

  line(-width/2,0,width/2,0);

  line(0,0,(-width/2)*cos(radians(30)),(-width/2)*sin(radians(30)));

  line(0,0,(-width/2)*cos(radians(60)),(-width/2)*sin(radians(60)));

  line(0,0,(-width/2)*cos(radians(90)),(-width/2)*sin(radians(90)));

  line(0,0,(-width/2)*cos(radians(120)),(-width/2)*sin(radians(120)));

  line(0,0,(-width/2)*cos(radians(150)),(-width/2)*sin(radians(150)));

  line((-width/2)*cos(radians(30)),0,width/2,0);

  popMatrix();

  }

  void drawObject() {

  pushMatrix();

  translate(width/2,height-height*0.074);

  strokeWeight(9);

  stroke(255,10,10); // red color

  pixsDistance=iDistance*((height-height*0.1666)*0.025);

  if(iDistance《40){

  line(pixsDistance*cos(radians(iAngle)),-pixsDistance*sin(radians(iAngle)),(width-width*0.505)*cos(radians(iAngle)),-(width-width*0.505)*sin(radians(iAngle)));

  }

  popMatrix();

  }

  void drawLine() {

  pushMatrix();

  strokeWeight(9);

  stroke(30,250,60);

  translate(width/2,height-height*0.074);

  line(0,0,(height-height*0.12)*cos(radians(iAngle)),-(height-height*0.12)*sin(radians(iAngle)));

  popMatrix();

  }

  void drawText() {

  pushMatrix();

  if(iDistance》40) {

  noObject = “Out of Range”;

  }else {

  noObject = “In Range”;

  }

  fill(0,0,0);

  noStroke();

  rect(0, height-height*0.0648, width, height);

  fill(98,245,31);

  textSize(25);

  text(“10cm”,width-width*0.3854,height-height*0.0833);

  text(“20cm”,width-width*0.281,height-height*0.0833);

  text(“30cm”,width-width*0.177,height-height*0.0833);

  text(“40cm”,width-width*0.0729,height-height*0.0833);

  textSize(28);

  text(“Object: ” + noObject, width-width*0.875, height-height*0.0277);

  text(“Angle: ” + iAngle +“ °”, width-width*0.48, height-height*0.0277);

  text(“Distance: ”, width-width*0.26, height-height*0.0277);

  if(iDistance《40) {

  text(“ ” + iDistance +“cm”, width-width*0.225, height-height*0.0277);

  }

  textSize(25);

  fill(98,245,60);

  translate((width-width*0.4994)+width/2*cos(radians(30)),(height-height*0.0907)-width/2*sin(radians(30)));

  rotate(-radians(-60));

  text(“30°”,0,0);

  resetMatrix();

  translate((width-width*0.503)+width/2*cos(radians(60)),(height-height*0.0888)-width/2*sin(radians(60)));

  rotate(-radians(-30));

  text(“60°”,0,0);

  resetMatrix();

  translate((width-width*0.507)+width/2*cos(radians(90)),(height-height*0.0833)-width/2*sin(radians(90)));

  rotate(radians(0));

  text(“90°”,0,0);

  resetMatrix();

  translate(width-width*0.513+width/2*cos(radians(120)),(height-height*0.07129)-width/2*sin(radians(120)));

  rotate(radians(-30));

  text(“120°”,0,0);

  resetMatrix();

  translate((width-width*0.5104)+width/2*cos(radians(150)),(height-height*0.0574)-width/2*sin(radians(150)));

  rotate(radians(-60));

  text(“150°”,0,0);

  popMatrix();

  }


非常好我支持^.^

(0) 0%

不好我反對

(0) 0%

( 發表人:金巧 )

      發表評論

      用戶評論
      評價:好評中評差評

      發表評論,獲取積分! 請遵守相關規定!

      ?