View Single Post
Old 12-12-2005, 04:56 PM   #2
falleaf
PIC Bang chủ
 
falleaf's Avatar
 
Tham gia ngày: May 2005
Bài gửi: 2,631
:
Send a message via Yahoo to falleaf
Em chú ý một điều, đó là nguồn của siêu âm Polaroid cần là rất lớn, lên đến 2A cho một siêu âm. Chính vì vậy, nếu em làm không đủ nguồn, thì siêu âm không đọc được.

Với vấn đề của em, nên xử lý một cách "thông minh hơn" như sau:

- Dùng cảm biến siêu âm, đặt trước bề mặt tường (độ dày tường phải trên 20 cm - phần này em nghiên cứu kỹ về siêu âm sẽ biết vì sao phải vậy).

- Đo khoảng cách chính xác từ siêu âm đến tường. Khoảng cách này với siêu âm Polaroid là 80cm, 1m, 2m, 3m, 6m, 8m và 10m.

- Ở mỗi khoảng cách, em phát và thu 10 lần, sau đó di chuyển đến khoảng cách khác.

- Em lặp lại thí nghiệm này 3 lần.

- Như vậy, em sẽ có một mảng dữ liệu ở mỗi khoảng cách là 30 mẫu.

- Dùng phương pháp trung bình để tính ra mean, bởi vì phân bố đo được của cảm biến siêu âm có dạng Gaussian.

- Từ dữ liệu của mấy khoảng cách khác nhau, em tìm hàm tuyến tính giữa timer và khoảng cách. Để làm việc này, em dùng thuật toán linear fit data, hoặc linear best fit data. Nó cho phép em fit được đường tuyến tính tốt nhất qua các điểm.

- Với hệ số này, em chỉ cần đo timer, thì sẽ xác định được. Nếu lớn hơn hoặc nhỏ hơn giá trị timer nào đó, em bật hoặc tắt đèn. Không cần phải tính toán ngược lại khoảng cách rồi mới so sánh khoảng cách.

Việc làm này, giúp em calibrate được cái siêu âm, và cũng dùng để tính được khoảng cách một cách chính xác. Ngoài ra, từ việc làm này, em có thể truyền thẳng giá trị timer về máy tính, sau đó mới dùng chương trình máy tính để tính toán, thì nó sẽ thuận tiện và nhanh hơn rất nhiều lần.

Về thuật toán đo khoảng cách. Em có thể dùng chức năng capture, nhưng chức năng này chỉ có ở PIC16F88, hoặc 16F628A, chứ không có ở 16F84.

Vì thế, em nên dùng chức năng EXTINT trên chân RB0 để nhận echo. Khi đó ngắt xảy ra, thì em đọc echo. Còn khi em phát, thì em bật timer lên, thì timer bắt đầu đếm từ 0, đến khi có tín hiệu EXTINT, thì đọc giá trị timer ra. Em có thể dùng timer1 với 16 bit, hoặc timer0, timer2 với 8 bit. Nhớ dùng bộ chia timer Prescaler hợp lý, bởi vì em có những khoảng cách đo trong tầm ngắn.

Tuy nhiên, em kiểm tra lại, bây giờ anh không nhớ chính xác lắm thông số, nhưng Polaroid có rất nhiều mức giới hạn, nếu em muốn đo ở khoảng cách rất ngắn, thì phải chuyển mode. Khoảng cách của em là 50cm đến 1m3. Đó là khoảng cách rất ngắn. Còn thông thường, Polaroid 6500 đo được từ 80cm đến 10m.

Trong trường hợp này, em phải chọn mode đo khoảng cách ngắn.

Các khoảng cách trên kia, em sẽ chuyển lại thành: 40cm, 50cm, 60cm...130cm. Rồi lại thực hiện như anh đã nói trên kia.

Chúc vui.
falleaf vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn