久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2163|回復: 0
打印 上一主題 下一主題
收起左側

單片機循跡避障車教程

[復制鏈接]
跳轉到指定樓層
樓主
ID:411046 發表于 2018-10-17 13:05 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
循跡避障車教程需要材料:直流電機4只                 小車底盤2個
  車輪4個
  超聲波模塊1個
  紅外探測模塊2個
  L298N電機驅動模塊1個
  杜邦線若干
                 1.5V電池8節(12V電源)
  萬能板一個
  Arduino開發板一個
  M3螺絲螺母若干
原理講解1.小車前進后退轉彎原理其輸入輸出對應真值表如下(以LN1,LN2,OUT1,OUT2為例):
  

模塊中ENA,ENB分別為兩個電機的調速口,在Arduino中接PWM數字口,利用PWM調節速度(如果不需要此功能直接接到5V電源)。    試驗中,我將左側兩個電機并聯到OUT1,OUT2口,右側兩個電機并聯到OUT3,OUT4口。以一個方向為參考方向(即正向),電機極性一定要清楚,OUT1,OUT3接正向,OUT2,OUT4接反向。下面是電機輸出結果表
  

2.循跡原理    其工作方式是白色紅外發光管發射紅外光,經過反射被黑色接收管接收,接收到了返回高電平,否則低電平。原理:
由于黑色具有吸收光線的作用,當小車到達黑色部分時,其發射光被吸收,返回低電平,達到檢測路徑的功能。
此時,小車的位置相對于軌跡來說,偏右,我們應該左轉矯正位置。同理,偏左應該右轉
當兩面探頭都不在,或都在軌跡上,那么前進。
3.超聲波避障原理知識1  超聲波
超聲波是一種頻率高于20000赫茲的聲波,它的方向性好,穿透能力強,易于獲得較集中的聲能,可以在介質中傳播,可用于測距、測速、清洗、焊接、碎石、殺菌消毒等。在醫學、軍事、工業、農業上有很多的應用。超聲波因其頻率下限大于人的聽覺上限而得名。超聲波在空氣中傳播速度約340米/秒,隨著溫度的變化,傳播速度有所變化。
知識2  超聲波測速原理
超聲波測速是利用超聲波發射管發射超聲波同時開始計時,收到發射回波后產生一個信號,將發射和接收到回波的時間乘以超聲波在介質中的傳播速度除以2就是超聲波發射到物體的距離。利用超聲波模塊完成測速。
2.1 HC-SR04超聲模塊
HC-SR04有單片機STC11、升壓ICMAX232及運算放大器TL074構成,HC-SR04超聲波測距模塊可提供2cm-400cm的非接觸式距離感測功能,測距精度可高達3mm;模塊包括超聲波發射器、接收器與控制器。超聲波測速儀每隔一相等時間,發出一超聲脈沖信號,每隔一段時間接收到物體反射回的該超聲脈沖信號,根據發出和接收到的信號間的時間間隔差和聲速,測出被測物體的距離。
基本工作原理:
采用IO口TGIG觸發測距,給至少10us的高電平信號;
模塊自動發送8個40KHz的方波,自動檢測是否有信號返回;
有信號返回,通過IO口ECHO輸出一個高電平,高電平持續的時間就是超聲波從發射到返回的時間。測試距離=(高電平時間*聲速(340m/s))/2.
參數的設置
時序圖的說明
以上時序圖表明你在只需要提供一個10us以上脈沖觸發信號,該模塊內部將發出8個40KHz周期電平并檢測回波。一旦檢測到有回波信號則輸出回響信號。回響信號的脈沖寬度與所測的距離成正比。由此通過發射信號到收到的回響信號時間間隔可以計算得到距離。公式:us/58=厘米;或是:距離=高電平時間*聲速(340m/s)/2;建議測量周期為60ms以上,以防止發射信號對回響信號的影響。
注:1、此模塊不宜帶電連接,若要帶電連接,則先讓模塊的GND端先連接,否則會影響模塊的正常工作。
2、測距時,被測物體的面積不少于0.5平方米且平面盡量要求平整,否則影響測量的結果。
1.3原理圖及模塊實物
單片機超聲模塊說明(HC-SR04)
避障原理:利用測車子正前方障礙的距離,設定一個值,當距離小于這個值時,車子后退,或者轉彎。具體程序代碼
int IN1=7;
int IN2=8;
const int TrigPin = 13;
const int EchoPin = 12;
int ENA=5;//左直流電機
int IN3=9;
int IN4=10;
int ENB=6;//右直流電機
int IR_right=2;//定義右紅外傳感器引腳
int IR_left=3;//定義左紅外傳感器引腳
int IR_middle_1=A2;
int IR_middle_2=A3;//定義中間紅外傳感器引腳
int c;//用于保存超聲波測出的距離

void forward()//前進
{
  digitalWrite(IN1,HIGH);
  digitalWrite(IN2,LOW);
  analogWrite(ENA,45);
  digitalWrite(IN4,LOW);
  digitalWrite(IN3,HIGH);
  analogWrite(ENB,45);
}
void backward()//后退
{
  digitalWrite(IN1,LOW);
  digitalWrite(IN2,HIGH);
  analogWrite(ENA,100);
  digitalWrite(IN4,HIGH);
  digitalWrite(IN3,LOW);
  analogWrite(ENB,100);
}
void left()//左轉
{
  digitalWrite(IN1,LOW);
  digitalWrite(IN2,HIGH);
  analogWrite(ENA,100);
  digitalWrite(IN4,LOW);
  digitalWrite(IN3,HIGH);
  analogWrite(ENB,100);
}
void right()//右轉
{
  digitalWrite(IN1,HIGH);
  digitalWrite(IN2,LOW);
  analogWrite(ENA,100);
  digitalWrite(35,HIGH);
  digitalWrite(36,LOW);
  analogWrite(ENB,100);
}
void stopp()//停止
{
  digitalWrite(IN1,HIGH);
  digitalWrite(IN2,HIGH);
  digitalWrite(IN3,HIGH);
  digitalWrite(IN4,HIGH);
  analogWrite(ENA,100);
  analogWrite(ENB,100);
}

void setup() {
  
  Serial.begin(9600);

  pinMode(IN1,OUTPUT);
  pinMode(IN2,OUTPUT);
  pinMode(IN3,OUTPUT);
  pinMode(IN4,OUTPUT);
  pinMode(ENA,OUTPUT);
  pinMode(ENB,OUTPUT);
  stopp();
  pinMode(IR_right,INPUT);
  pinMode(IR_left,INPUT);
  pinMode(IR_middle_1,INPUT);
  pinMode(IR_middle_2,INPUT);
}
void loop(){
    digitalWrite(TrigPin, LOW); //低高低電平發一個短時間脈沖去TrigPin
    delayMicroseconds(2);
    digitalWrite(TrigPin, HIGH);
    delayMicroseconds(10);
    digitalWrite(TrigPin, LOW);
    delay(20);            //消除信號干擾
    c = pulseIn(EchoPin, HIGH) / 58.0; //將回波時間換算成cm
    c = (int(c * 100.0)) / 100.0; //保留兩位小數
   /*如果前方距離小于二十厘米,即前方有障礙,
    * 那么后退一步,轉個方向
   */
    if(c<20){
        backward();
        delay(100);//自己去調試距離,下同
        right();
        delay(100);
      }
    int Right=digitalRead(IR_right);
    int  Left=digitalRead(IR_left);
    //如果中間為高電平,左、右為低電平
    //說明小車沒有偏離軌道
   if((Middle_1==HIGH || Middle_2==HIGH)&&( Right==LOW && Left==LOW)){
   forward();
   }
    //如果右邊為高電平,中間、左為低電平
    //說明小車偏右
    else if((Middle_1==LOW && Middle_2==LOW) && Right==HIGH && Left==LOW){
      right();//小車左轉
   }  
//如果左邊為高電平,中間、右為低電平
//說明小車偏左
    else if((Middle_1==LOW && Middle_2==LOW) &&Right==LOW && Left==HIGH){
    left();//小車右轉
    }
//小車的3紅外傳感器距離可能導致3傳感器都為低電平或者沒檢測到黑線3傳感器都為高電平
//小車默認前進
    else{
   forward();
     }  
     }



分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 欧美在线| 免费看欧美一级片 | 精品一区二区三区av | 九九热在线视频 | 欧美成人手机视频 | h小视频 | 精久久久 | 最新黄色毛片 | 久久中文一区二区 | 免费观看成人av | 国产成人精品一区二区三区在线 | 一级黄a视频 | 亚洲一区二区在线视频 | 国产精品毛片在线 | 欧美成人黄色小说 | 欧美网站一区 | 久久综合色综合 | 免费观看的av毛片的网站 | 久久精品欧美一区二区三区不卡 | 欧美男男videos | 欧美精品久久久久久久久老牛影院 | 欧美一级在线 | 国产精品久久国产精品 | 成人无遮挡毛片免费看 | 欧美中文在线 | 国产精品久久久久久久久久免费看 | 国产综合第一页 | 91欧美精品成人综合在线观看 | 美女久久久久久久久 | 国产精品一区二区久久久久 | 亚洲国产精品久久久 | 久久精品欧美一区二区三区不卡 | 成人在线视频观看 | 久久精品欧美一区二区三区麻豆 | 精品一区二区三区电影 | 国产一区二区精品在线 | 精品欧美一区二区三区久久久 | 一区二区三区在线电影 | 国产精品久久久久久一区二区三区 | 国产精品视屏 | 国产精品一区二区三区在线 |