Robofun 機器人論壇

 找回密碼
 申請會員
搜索
熱搜: 活動 交友 discuz
樓主: yao412030
打印 上一主題 下一主題

EZ1超音波連接運用在ARDUINO上大問題!

[複製鏈接]
跳轉到指定樓層
1#
發表於 2011-9-16 19:24:18 | 顯示全部樓層 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
本帖最後由 yao412030 於 2011-9-16 19:32 編輯

小弟我的專題是運用EZ1兩顆超音波和ARDUINO做防碰撞自走車,我超音波裝置電源有和馬達分開用
現在我遇到一個很大的問題就是兩顆超音波同時工作時會出現干擾...輸出的類比值非常不穩定
數值會突然降低又拉上去
而我用單一顆超音波就不會有這個問題,我現在的接法是GND +5V AN直接拉ARDUINO
現在的問題就是兩顆同時工作會出現干擾造成我的車明明前面沒障礙物他就是會自己左右亂轉...
想請問這邊的神人有沒有辦法可以解決我的問題阿??
是否可以提供我兩顆EZ1串接同時使用時可以正常運作不互相干擾的電路圖或接法呢??
這個問題我已經卡了3個月了還是無解
真的是拜託大家幫幫我!!
謝謝!
2#
 樓主| 發表於 2011-9-17 22:07:18 | 顯示全部樓層
回復 3# vegewell
V大您好....你PO這個東西小弟我之前就有找到了....
只是這三種方式我不太清楚用哪一個,我現在認為應該是用Simultaneous Operation
他那個電路圖有幾條線我真的搞不懂要怎麼接才好...
他的RX線是串聯EZ1  AN旁邊寫Wire AN to an AD input
和BW旁邊寫Wire BW to Logic High我就真的看不懂他到底要我接哪條線
可否請V大幫幫我....
我昨天去問專題老師還被罵說我沒做功課....我猜他也不會
只能請教神人們,幫幫小弟我吧!!!
3#
 樓主| 發表於 2011-9-18 21:57:25 | 顯示全部樓層
回復  yao412030
這裡有很詳細的說明(6 SENSORS):


請仔細看過後,有問題再逐一的提出,

下圖除了藍 ...
vegewell 發表於 2011-9-18 21:28

大大您第二個網址我不能開欸....
小弟我還會多多研究!!!
先謝謝您!
4#
 樓主| 發表於 2011-9-18 21:59:32 | 顯示全部樓層
本帖最後由 yao412030 於 2011-9-18 23:03 編輯
這裡有人用四個, 放置 前 後 左 右不同方向,

你有沒有試過不同方向?
另外他們使用 LV-MaxSonar-EZ1 不是 ...
vegewell 發表於 2011-9-18 19:20

大大您好~不同方向當然是不會有干擾問題
不過小弟我是要做自走車車子前方必須左右兩端需架設感測器,如果兩個感測器朝同方向發射就會干擾
我的是要同一方向放在左右邊不同位置,而我是買MaxSonar-EZ1請問還可以照接嗎??
http://twitpic.com/5s0yp9/full這是我找到的圖....他好像是Daisy Chaining with Constantly Looping
他的藍色線我有點搞不懂,他是三個sensor的AN拉出來接在一起在拉到ARDUINO的ANALOG即可??
還是三個連線一起之後再一個一個另外拉線出來到ARDUINO的ANALOG接腳呢??
有點看不懂還請大大指導!!!
5#
 樓主| 發表於 2011-9-19 21:04:10 | 顯示全部樓層
小弟我今天花了2小時把文章看了看一下,這幾天會開始實際操作~
謝謝大大們的詳細解說,如果有問題還要麻煩大大了~感恩
6#
 樓主| 發表於 2011-9-19 22:33:04 | 顯示全部樓層
回復 14# vegewell
大大您好
小弟我剛剛看了你PO的程式碼發現我編譯檢查時ARDUINO說有錯誤
sketch_sep19a.cpp: In function 'void setup()':
sketch_sep19a:8: error: invalid conversion from 'int*' to 'uint8_t'
sketch_sep19a:8: error: initializing argument 1 of 'void pinMode(uint8_t, uint8_t)'
sketch_sep19a.cpp: In function 'void loop()':
sketch_sep19a:28: error: invalid conversion from 'int*' to 'uint8_t'
sketch_sep19a:28: error: initializing argument 1 of 'int analogRead(uint8_t)'
sketch_sep19a:34: error: call of overloaded 'print(int [2])' is ambiguous
C:\Program Files\Arduino\arduino-0022\hardware\arduino\cores\arduino/Print.h:44: note: candidates are: void Print::print(const String&) <near match>
C:\Program Files\Arduino\arduino-0022\hardware\arduino\cores\arduino/Print.h:46: note:                 void Print::print(char, int) <near match>
C:\Program Files\Arduino\arduino-0022\hardware\arduino\cores\arduino/Print.h:47: note:                 void Print::print(unsigned char, int) <near match>
C:\Program Files\Arduino\arduino-0022\hardware\arduino\cores\arduino/Print.h:48: note:                 void Print::print(int, int) <near match>
C:\Program Files\Arduino\arduino-0022\hardware\arduino\cores\arduino/Print.h:49: note:                 void Print::print(unsigned int, int) <near match>
C:\Program Files\Arduino\arduino-0022\hardware\arduino\cores\arduino/Print.h:50: note:                 void Print::print(long int, int) <near match>
C:\Program Files\Arduino\arduino-0022\hardware\arduino\cores\arduino/Print.h:51: note:                 void Print::print(long unsigned int, int) <near match>

好像是這行開始出錯的pinMode(ultraSoundSignalPins, INPUT); // Switch signalpin to input
請問我該如何修改呢??
7#
 樓主| 發表於 2011-9-20 12:29:25 | 顯示全部樓層
回復 18# vegewell
大大我發現你PO給我的程式碼和你給我樓上網址PO的程式碼有個地方不一樣才造成編譯錯誤!!
這次你PO給我的程式碼
pinMode(ultraSoundSignalPins, INPUT); // Switch signalpin to input
   }
這是樓上網址PO裡面的
pinMode(ultraSoundSignalPins, INPUT); // Switch signalpin to input
   }
我剛剛用樓上網址PO的程式碼進行編譯就OK了~
8#
 樓主| 發表於 2011-9-20 18:19:19 | 顯示全部樓層
依照那國外做者,請先試試下圖的接法:


arduino的程式如下

int ultraSoundSignalPins[] = {0, ...
vegewell 發表於 2011-9-19 17:25


小弟我現在在測試大大這張電路圖接法還有這個的程式碼http://arduino.cc/forum/index.php/topic,65727.0.html
小弟我發現當我使用5V的時候感測器都沒動作....
之後我降成3.3V之後感測器有動作而且兩顆不會互相干擾....
可是小弟我發現一個問題是當我手指整個蓋住感測器他的類比值是10
可是我把手拉到離感測器約8公分時類比值也差不多顯示10~12左右
請問大大有辦法解決這類比值數據上的間隔吧....這樣間隔實在是太小了
感謝囉!
9#
 樓主| 發表於 2011-10-4 18:53:46 | 顯示全部樓層
回復 21# vegewell
大大您好阿....小弟我這幾天實在是在搞專題初審太忙了
現在才搞玩,第一階段算是順利過了
很謝謝您
至於我為什麼會知道要用3.3V是因為我測試結果發現5V整個做動非常不正常....
加上我知道這個感測器有5V和3.3V的工作電壓
所以我就測試就測出來囉....
至於類比值問題,小弟我會參考您提供給我的訊息!!!
現在為止目前做動是正常,可是還是有點問題...
小弟我就先謝謝大大指導囉!
10#
 樓主| 發表於 2011-10-15 22:10:56 | 顯示全部樓層
本帖最後由 yao412030 於 2011-10-15 22:12 編輯

大大您好
小弟我又遇到問題了.....
就是小弟我有寫說如果左右兩科都偵測到障礙物時,要判斷哪邊距離障礙物比較遠,轉向離障礙物較遠的方向時
我的超音波類比值整個會怪怪的
假如說我前方有到牆壁,左邊比較接近牆壁,正常來說左邊類比值一定會小於右邊,可是我的卻不是,我的居然是左邊大於右邊...
反之也是一樣....
數值整個變非常奇怪,我也檢查我的程式碼好像也沒啥問題在....
我只用大大您提供的電路給我兩顆雖然不會互相干擾,左右其中一顆偵測到也不會發現說有類比值不穩的地方,可是兩顆同時偵測到就會出現問題
可否請大大幫助我呢?
謝謝!!
小弟我提供一下當兩邊都有遇到障礙物判斷距離轉向的寫法!!
}else if(right && left <= 30 && right<left){ //偵測到左右方障礙物且左方距離障礙物較遠減速轉向左方
      analogWrite(g_nMotor_2_Pin_B,255);
      analogWrite( g_nMotor_1_Pin_A, 0);
      analogWrite( g_nMotor_1_Pin_B , 120);
    l = 1;
  }else if (right >= 30 && right < left){ //偵測結束回復速度
      analogWrite( g_nMotor_1_Pin_A, 0);
      analogWrite( g_nMotor_1_Pin_B , 180);
  }else if(right && left <= 30 && right>left){ //偵測到左右方障礙物且右方距離障礙物較遠減速轉向右方
      analogWrite(g_nMotor_2_Pin_A,255);
      analogWrite( g_nMotor_1_Pin_A, 0);
      analogWrite( g_nMotor_1_Pin_B , 120);
  }else if (left >= 30 && right > left){ //偵測結束回復速度
      analogWrite( g_nMotor_1_Pin_A, 0);
      analogWrite( g_nMotor_1_Pin_B , 180);
    r = 1;
11#
 樓主| 發表於 2011-10-16 14:21:42 | 顯示全部樓層
回復 25# vegewell
大大我是整台車架空起來測量.....
這是示意圖

正常來說距離牆壁10公分的類比值一定會比20公分的小....
可是我的剛好相反,導致我的車會轉向10公分的那方....
可是我程式碼沒有寫錯....不知道是不是那邊出了問題
12#
 樓主| 發表於 2011-10-17 22:30:01 | 顯示全部樓層
回復 28# vegewell
大大您好,小弟我測試之後發現不管是架起來還是放在地上跑假如兩顆同時偵測到那個類比值就會很奇怪....
我自己也不知道要如何解釋....因為她每次詭異的狀態都不一定....
我在想我是不是用錯電路了...應該要使用Simultaneous Operation才對...
我現在還在思考這個問題,小弟我先謝謝您的協助了ˊ!!
我很感激!!
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

小黑屋|手機版|Archiver|機器人論壇 from 2005.07

GMT+8, 2024-5-10 04:21 , Processed in 0.251826 second(s), 9 queries , Apc On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回復 返回頂部 返回列表