PIC Vietnam

Go Back   PIC Vietnam > Microchip PIC > PIC - Thiết kế và Ứng dụng

Tài trợ cho PIC Vietnam
Trang chủ Đăng Kí Hỏi/Ðáp Thành Viên Lịch Bài Trong Ngày Vi điều khiển

PIC - Thiết kế và Ứng dụng Ý tưởng cho các sản phẩm sử dụng PIC/dsPIC và các sản phẩm của Microchip

Trả lời
 
Ðiều Chỉnh Xếp Bài
Old 10-06-2006, 06:18 PM   #1
bachelor1979
Đệ tử 1 túi
 
Tham gia ngày: Jun 2006
Bài gửi: 20
:
tính độ giữ chậm

hi !
tôi cần tính độ giử chậm của 1 xung so với 1 xung chuẩn với các đặc điểm sau:
biên độ các xung khoảng 100V, độ rộng cỡ mikros
xung cần đo trôi dần về xung chuẩn (tức là dộ giữ chậm sẽ giảm dần sau mỗi chu kỳ)
chu kỳ lặp lại của xung chuẩn cỡ vài s
tôi định dùng các bộ định thời và ngắt ngoài của PIC để đo, sau đó gửi dữ liệu tới PC qua RS232 để xử lý.
Ý tưởng là thế nhưng bắt tay vào làm mới thấy khó, các bác nào có kinh nghiệm và quan tâm thì giúp tôi với nhé !
bachelor1979 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 10-06-2006, 07:09 PM   #2
namqn
Trưởng lão PIC bang
 
Tham gia ngày: Feb 2006
Nơi Cư Ngụ: Tp. HCM, Việt Nam
Bài gửi: 3,025
:
Send a message via Yahoo to namqn
Bạn có thể cho biết từ gốc tiếng Anh của 'độ giữ chậm' hay không?
Xung chuẩn là dạng xung gì?

Thân,
__________________
Biển học mênh mông, sức người có hạn.

Đang gặp vấn đề cần được giúp đỡ? Hãy dành ra vài phút đọc luồng sau:
http://www.picvietnam.com/forum/showthread.php?t=1263
namqn vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 11-06-2006, 09:52 AM   #3
bachelor1979
Đệ tử 1 túi
 
Tham gia ngày: Jun 2006
Bài gửi: 20
:
độ giữ chậm là "timedelay" nó là khoảng thời gian tính từ lúc có xung chuẩn đến lúc xuất hiện xung cần đo, xung chuẩn là xung có chu kỳ lặp lại cố định dùng để đo timedelay, nó ko có gì đặc biệt đâu. Mong các bác chỉ giáo giúp, có gì ko hiểu về bài toán cứ hỏi em xin trả lời ngay !
Thân
bachelor1979 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 11-06-2006, 02:21 PM   #4
lhmai
Nhập môn đệ tử
 
Tham gia ngày: Jul 2005
Bài gửi: 3
:
Đó có phải là đo độ lệch phase giữa xung cần đo và xung chuẩn ? Với độ rộng xung cỡ micro giây thì sai số sẽ rất lớn nếu dùng PIC với thạch anh 20Mhz, vì khi đó 1 chu kỳ máy đã là 200ns. Nhảy đến được phần xử lý trong ngắt có khi phải mất cả us rồi. Theo tôi, cần dùng các linh kiện khác tách ra 1 xung có độ rộng bằng độ lệch pha, giữ lại, rồi mới đưa vào uC để tính ra số và truyền đi, không nên đưa trực tiếp các xung vào PIC.
lhmai vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 11-06-2006, 05:54 PM   #5
namqn
Trưởng lão PIC bang
 
Tham gia ngày: Feb 2006
Nơi Cư Ngụ: Tp. HCM, Việt Nam
Bài gửi: 3,025
:
Send a message via Yahoo to namqn
Còn nhiều yếu tố cần được xác định trước khi có thể đề xuất một giải pháp.

Giả thiết là bạn chỉ phát xung chuẩn và xung cần đo ở dạng sóng vuông. Độ chính xác của thời gian trễ (time delay) cần thiết là bao nhiêu? Bạn có thể phát xung chuẩn nhanh hơn (khoảng vài miligiây một xung chẳng hạn) hay không?

Sau cùng, tôi nhắc lại một ý mà tôi thường đề cập khi trả lời các câu hỏi dạng này: bạn nên cho biết bài toán gốc, đừng hỏi cách thực hiện một điều gì đó mà bạn cho là giải pháp của bài toán.

Thân,
__________________
Biển học mênh mông, sức người có hạn.

Đang gặp vấn đề cần được giúp đỡ? Hãy dành ra vài phút đọc luồng sau:
http://www.picvietnam.com/forum/showthread.php?t=1263
namqn vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 23-06-2006, 10:27 PM   #6
bachelor1979
Đệ tử 1 túi
 
Tham gia ngày: Jun 2006
Bài gửi: 20
:
Trích:
Nguyên văn bởi namqn
Còn nhiều yếu tố cần được xác định trước khi có thể đề xuất một giải pháp.

Giả thiết là bạn chỉ phát xung chuẩn và xung cần đo ở dạng sóng vuông. Độ chính xác của thời gian trễ (time delay) cần thiết là bao nhiêu? Bạn có thể phát xung chuẩn nhanh hơn (khoảng vài miligiây một xung chẳng hạn) hay không?

Sau cùng, tôi nhắc lại một ý mà tôi thường đề cập khi trả lời các câu hỏi dạng này: bạn nên cho biết bài toán gốc, đừng hỏi cách thực hiện một điều gì đó mà bạn cho là giải pháp của bài toán.

Thân,
Mấy lần đăng nhập mà ko post được bài, ko hiểu lỗi tại sao, hôm nay mới post được may quá !!!!!!!!!!!!!!!!!
OK, tôi xin trình bày bài toán gốc cho bạn namqn được rõ:
nguyên lý hoạt động của một đài radar nhìn vòng (gọi tắt là VIKO) có thể được tóm tắt một cách cơ bản như sau.
- 1 xung thăm dò (chính là xung chuẩn) được phát lên không gian với chu kỳ lặp lại 10 giây (tương ứng với 6 vòng quét/1 phút)
- Khi gặp mục tiêu cần phát hiện (máy bay, tên lửa, ...) sẽ có 1 xung phản xạ từ chúng ngược trở về VIKO (tất nhiên gặp những mục tiêu tàng hình thì ... chịu )
- trong điều kiện lý tưởng (môi trường đồng nhất, đẳng hướng, ...) có thể coi vận tốc lan truyền sóng điện từ xấp xỉ vận tốc ánh sáng c, gọi t là thời gian tính từ lúc phát xung thăm dò đến lúc nhận được xung phản xạ (chính là độ giữ chậm mà bạn namqn đã từng hỏi) ta có thể tính được cự ly tức thời từ mục tiêu tới VIKO theo công thức sau: d = t*c/2
- dựa trên những điều này VIKO sẽ tạo ra được một điểm dấu mục tiêu trên màn hình để người quan sát có thể xác định được hướng xuất hiện của mục tiêu (gọi là góc phương vị) và khoảng cách từ mục tiêu tới vị trí quan sát (vị trí đặt VIKO)
Giá thành của 1 VIKO là rất lớn (tất nhiên !!!!!) và để phục vụ cho các mục đích nhỏ hơn (luyện tập, kiểm tra, ...) người ta đã có các thiết bị tạo giả ra các xung thăm dò và xung phản xạ (tất nhiên chỉ dừng ở mức tạo giả phần thị tần - không tạo giả phần cao tần, và như vậy là đủ cho bài toán của chúng ta). Nhiệm vụ của tôi (và các bạn !!!) là phải xử lý thông tin nhận được từ các xung đó và hiển thị lên PC như một màn hình VIKO (mô phỏng màn hình VIKO trên PC)
Hãy tạm gác sang 1 bên phần xử lý sơ bộ xung đầu vào (tức là hạn mức biên độ từ 100V xuống còn 5V, kéo dãn độ rộng và sửa dạng xung cho vi điều khiển có thể xử lý được mà vẫn giữ được độ chính xác của sườn lên - tương ứng với thông số về độ giữ chậm, ...) - tin tôi đi, nội việc này thôi đã đủ làm chúng ta đau đầu rồi !!! Các bạn hãy giúp tôi nhận được thông tin về độ giữ chậm từ các xung phản xạ so với xung chuẩn (không phải chỉ 1 xung phản xạ mà là nhiều xung xuất hiện 1 cách ngẫu nhiên - tương ứng với việc có hay không có của các mục tiêu, và độ giữ chậm này có thể giảm dần or tăng dần - tương ứng với việc mt bay vào or bay ra)
Bài toán của tôi là như vậy đấy bạn namqn và các bạn à ! Một số giải pháp tôi đã đề cập ở các bài trước, các bạn có cao kiến gì hãy chỉ giáo cho tôi nhé !
Thân !
bachelor1979 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 23-06-2006, 11:47 PM   #7
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
Nguyên tắc quãng đường = thời gian * vận tốc/2, người ta còn gọi là flying time, và phương pháp định vị người ta gọi là TOF = Time Of Flight. Có lẽ vì bạn dùng từ timedelay = độ giữ chậm thì anh Nam không hiểu.

Nguyên tắc này nói một cách sơ lược, đó là thời điểm , chúng ta phát một xung đi (xem chỉ là cạnh xung thôi, không quan tâm độ rộng). Sóng siêu âm, điện từ, hoặc gì gì đó, sẽ bay trong không gian hoạt động với vận tốc . Như vậy, tổng thời gian đi về của xung này, chính là 2 lần thời gian bay của sóng từ điểm đầu đến điểm cuối (vì còn phải dội ngược về). Nguyên tắc, nếu ta đo được thời gian bay của sóng, thì chúng ta xác định được quãng đường theo công thức:



Về bài toán của bạn, thực chất không có gì khác bài toán siêu âm, tuy nhiên, một vấn đề rất nghiêm trọng, đó là thời gian bay của sóng của bạn quá nhanh (bằng vận tốc ánh sáng). Do vậy, VIKO thực sự làm việc gì?

VIKO thực hiện giống như trên cái thước ban-me, có nghĩa là nó phát ra xung liên tục ở một độ phân giải nhất định, sau đó đến khi nào có sự trùng lặp sóng, thì nó xác định được độ phân giải đó. Bởi vì thực tế, không thể phát hiện được độ sai lệch thời gian khi sóng chuyển động với vận tốc ánh sáng. Đây là một giải pháp khá hay, dùng giải pháp của thước ban-me cơ để đo thời gian Không biết F hiểu như vậy có đúng không .

Oki, việc đơn giản, đó là bạn nhận xung về. Chính xác là bạn cần phải dùng ngắt ngoài để xử lý thôi, nhưng một lưu ý rằng, độ rộng xung của bạn rất nhỏ, nó bắt cạnh lên, chúng ta quan tâm ở đó đã.

Ngắt xảy ra trong PIC chiếm khoảng 20 - 30 dòng lệnh, nếu viết tối ưu code và phụ thuộc chương trình, sẽ có thể giảm nữa. Tổng cộng riêng xử lý ngắt hết khoảng 5 - 10us.

Như vậy, đây sẽ là sai số chủ yếu mà bạn cần phải tính đến. Nói chung, giải pháp dùng ngắt của bạn hoàn toàn không có gì không được cả. Dùng ngắt đọc cạnh lên của xung là oki, còn phần cạnh xuống, không biết bạn có cần đọc không, vì mình không biết chi tiết và nguyên lý chính xác của nó như thế nào. Nhưng mà nếu phải đọc cạnh xuống nữa, thì cái này thật là khó.

Nếu phải đọc cạnh xuống nữa, thì phải thực hiện như sau:
Ngắt cạnh lên
enable lại ngắt ngoài (dùng ngắt trong ngắt để lưu lại giá trị cạnh xuống), sau đó xử lý cả hai. Đây là giải pháp.
Bạn xem bài viết về xử lý ngắt trong ngắt bên dientuvietnam, box Vi điều khiển PIC, bài viết những câu đố vui...

Còn vấn đề xử lý ngắt như thế nào, tuỳ vào bạn muốn viết chương trình bằng MPASM hay C?

Có bài hướng dẫn của F bên phần Học PIC trong 1 ngày, để viết ngắt cho PIC trong MPASM.

Thuật toán của bạn sẽ phải được thực hiện như sau:

Đặt timer = 0;
Phát xung (nhớ tính toán lại thời gian thực chính xác khi xung được phát đi);
Chờ tín hiệu phản hổi trên chân RB0 (ngắt ngoài);
Nếu có ngắt
đọc timer;
giá trị timer chính là giá trị TOF
Nếu không (không có vật cản)
thoát;

Chỉ đơn giản vậy thôi. Còn việc xử lý chi tiết của hệ thống bạn thế nào, thực tình F không biết cái hệ thống VIKO nó ra sao, như thế nào, nguyên lý hoạt động thể nào, chỉ dựa vào mô tả của bạn để đoán ra nguyên lý hoạt động. Nếu có thể, bạn mô tả nguyên lý hoạt động và có hình ảnh minh hoạ rõ hơn, chúng ta sẽ có bài toán hay đó, vì làm một cái thước ban-me để đo thời gian đúng là một ý tưởng hay, chỉ không biết độ phân giải của nó là cỡ nào thôi.

Chúc vui

PS> Về việc bạn đăng nhập không thành công, nhớ thông báo cho F qua email, và bạn thử chọn nút ghi nhớ user, pw rồi đăng nhập, F nghĩ như vậy sẽ thành công.
Goodluck
falleaf vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 24-06-2006, 01:48 PM   #8
bachelor1979
Đệ tử 1 túi
 
Tham gia ngày: Jun 2006
Bài gửi: 20
:
- Về việc đăng nhập ko thành công, cám ơn ADMIN đã hướng dẫn, tôi sẽ thử theo cách của bạn, có lẽ tại tôi sử dụng mạng công cộng (INTERNET TRÀ ĐÁ !!!) nên đôi khi mạng cũng hơi bị đơ 1 chút (điều này khi còn ở VN chắc F cũng đã biết).
- Về bài toán tính TOF: Thuật toán để tính TOF của 1 xung phản xạ cơ bản đúng như F đã trình bày (chỉ xử lý cạnh lên thôi, ko cần xử lý cạnh xuống). Nhưng trong bài toán của tôi ko chỉ có 1 xung phản xạ mà có thể nhiều hơn, và quan trọng là CHÚNG NẰM CÙNG TRÊN 1 KÊNH, có nghĩa là nếu tôi dùng 1 chân nào đó (chân số 1 của PIC chẳng hạn) để làm chân nhận tín hiệu ngắt ngoài của xung phản xạ, tương tự chân 0 nhận tín hiệu ngắt của xung chuẩn và phát triển chương trình theo thuật toán mà F đã trình bày thì sẽ xuất hiện các trường hợp sau:
1 Phát xung chuẩn (xung thăm dò) -> kích hoạt chương trình ngắt tại chân 0 chương trình này sẽ set time = 0.
2 Nhận được xung phản xạ 1 -> kích hoạt chương trình ngắt tại chân 1, chương trình này sẽ read time, TOF1 = giá trị time đọc được
3 Chấm hết ko có gì xảy ra ở chân 1 nữa -> dễ quá đợi đến khi có xung chuẩn xuất hiện tại chân 0 (sau 10 giây nữa) quay trở lại bước 1
4 Lại nhận được xung phản xạ 2 tại chân 1 -> làm gì tiếp đây ? Theo tôi lúc này chương trình ngắt tại chân 1 (gọi tắt Là CTN1) và chg trình ngắt chân 0 (CTN0) sẽ phải thay đổi, cụ thể là cần thêm 1 cái biến counter toàn cục (tạm gọi là C), CTN0 sẽ set C = 0, CTN1 sẽ tăng C lên 1 và kiểm tra, nếu C = 1 -> TOF1 = giá trị time đọc được, nếu C = 2 -> TOF2 = TOF1 + giá trị time đọc được, nếu C = n -> TOFn = TOF(n-1) + readtime(), tất nhiên n <7
- Như F nói thời gian xử lý ngắt khoảng 5-10us, OK quá đủ để tính TOF, tuy nhiên sẽ là ko đủ nếu các xung phản xạ quá gần nhau (tức là các mục tiêu bay sát nhau) khi này có lẽ CTN1 chỉ xử lý được với TOF1, đây là 1 vấn đề mà tôi chưa giải quyết được.
- Thêm 1 vấn đề nữa, TOF giảm dần từ vài ms tới 0 (khi TOF = 0 và mục tiêu là 1 quả tên lửa không đối đất thì... BÙM... VIKO và hệ thống phòng không xung quanh nó sẽ biến mất trên bản đồ địa chính !!!) nhưng độ phân giải của các xung phản xạ lại tăng dần (khi các mục tiêu ở xa VIKO thì độ phân giải cỡ vài us và sẽ tăng dần khi chúng bay dần vào đài VIKO), thế thì cần phải cho bộ định thời hoạt động trong chế độ nào đây ? 16 bit hay 8 bit ?
Hay là bỏ cách tư duy này đi, nhưng tôi chưa nghĩ ra cách nào hay hơn cả ! F và các bạn giúp tôi với nhé !!!
Thân !!!
bachelor1979 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Trả lời


Quyền Sử Dụng Ở Diễn Ðàn
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is Mở
Smilies đang Mở
[IMG] đang Mở
HTML đang Tắt

Chuyển đến


Múi giờ GMT. Hiện tại là 10:06 PM.


Được sáng lập bởi Đoàn Hiệp
Powered by vBulletin®
Page copy protected against web site content infringement by Copyscape
Copyright © PIC Vietnam