You are on page 1of 3

cảm biến siêu âm srf05 có khả năng phát hiện vật cản trong tầm 1cm->4m quá tốt

để làm luận văn có liên quan đến vấn đề vật cản...

http://www.robot-electronics.co.uk/images/srf05a.jpg

Các chân giao tiếp như sau:

http://www.robot-electronics.co.uk/images/srf05p2.jpg

giản đồ điều khiển:

http://www.robot-electronics.co.uk/images/srf05tma.gif

từ giản đồ ta nhận thấy:

để cho sf05 hoạt động thì cần cấp 1 xung mức cao có độ rộng>=10uS trên chân Tri
Sau khi nhận được xung từ chân Tri thì srf05 sẽ tạo ra 8 xung để phát siêu âm, sau
khi hoàn thành việc phát 8 xung này thì srf05 sẽ kéo chân echo lên mức 1, độ rộng
của mức 1 trên chân echo tương ứng với khoản cách của vật cản với srf05, nếu ko
có vật cản thì nó sẽ được trả về mức 0 sau 30ms( ở đây nhiều bạn hiểu sai là khi có
vật cản thì srf05 mới trả về 1 xung mức cao có độ rộng từ 100uS ->30mS tương ứng
với khoảng cách)

Đặc biệt là srf05 chỉ có thể nhận xung trên chân Tri tối đa là 20Hz, cho nên việc kích
xung trên chân Tri phải phù hợp thì srf05 mới hoạt động chính xác.

chương trình này mình viết cho 89 và đã test với srf05, kết quả chạy chính xác với
độ chia là 1cm, các bạn có thể tham khảo thử nha:

#include<at89x52.h>
#include<lcd.c>//down load (http://www.megaupload.com/?d=BQAJS55Z)
unsigned char array[5];
void inter() interrupt 0
{
unsigned int time_return;
char i;
TR0=0;
time_return=(TH0<<8)|TL0;
time_return=(time_return-15535)/58;
TR0=1;
for(i=0;i<5;i++)
{
array[i]=time_return%10;
time_return/=10;
}
mov(1,5);
for(i=4;i>=0;i--)
{
dat(array[i]+48);
}
dat_str(":cm");
}
void time() interrupt 1
{
unsigned char i;
TR0=0;
P1_0=1;

TH0=0x3c;
TL0=0xaf;
for(i=0;i<3;i++);

P1_0=0;
P3_2=1;
while(!P3_2);
TR0=1;
}
void main()
{
TMOD=1;
TH0=0x3c;
TL0=0xaf;
ET0=1;
EX0=1;
IT0=1;
EA=1;
TR0=1;
int_lcd();
dat_str("Time xung tra ve");
while(1)
{
}
}
chân echo nối vào P3_2, chân Tri nối vào P1_0, các chân lcd 16x2 thì sửa lại theo ý
bạn trong file lcd.c down ở trên.

1. 2 chân Trigger và Echo là 2 chân dùng để giao tiếp với VĐK. Chân Trigger là chân
nhận xung từ VĐK. Độ dài của xung điều khiển nhỏ nhất là 10uS. Sau khi có xung
điều khiển này thì mạch của cảm biến sẽ phát ra 8 xung có tần số siêu âm ra con
phát. Sau khi xung thứ 8 phát ra thì chân Echo bắt đầu lên mức 1. Thời gian ở mức 1
của chân Echo là từ 100uS tới 25mS tùy vào vị trí của vật cản, nếu vật cản càng gần
thì độ dài của xung từ chân Echo càng ngắn. Nếu không có vật cản thì sau 30mS
chân Echo sẽ từ mức 1 xuống mức 0.

2. 2 chân Trigger và Echo ở 2 mode đều có nhiệm vụ như nhau, tuy nhiên khi ở
mode 1 thì xung Trigger đưa vào 1 chân, xung Echo xuất ra 1 chân riêng biệt, còn ở
mode 2 thì xung Trigger và Echo lần lượt đưa vào và xuất ra đều ở cùng 1 chân, là
chân số 3. Và hình như theo mình đọc được thì sau khi kết thúc xung Trigger đưa
vào thì khoảng 700uS sau xung Echo mới bắt đầu lên mức 1.

Theo ý kiến của mình sau khi tìm hiểu là như vậy, nếu có gì sai thì mong mọi người
bổ sung giúp!

You might also like