Nghiên cứu module thu phát sóng RF

I. DẪN NHẬP. 1. LÍ DO CHỌN ĐỀ TÀI. Truyền dữ liệu không dây là một mảng lớn trong điện tử thông tin, dữ liệu được truyền đi có thể là tương tự cũng có thể là số. Trong truyền dữ liệu không dây, hiệu quả nhất vẫn là truyền bằng sóng điện từ hay sóng Radio, bởi những ưu điểm là truyền ở khoảng cách xa, đa hướng, tần số hoạt động cao. Hiện nay, truyền dữ liệu số được ứng dụng rất rộng rãi, nhất là trong lĩnh vực điều khiển, thông tin số. Nhiều vi mạch hỗ trợ xử lý tín hiệu không dây được sử dụng như PT2248, PT2249, PT9148, PT9149, PT2262, PT2272, HT640, HT648 Vấn đề đặt ra là các vi mạch này truyền dữ liệu chỉ dành cho mục đích riêng là điều khiển thiết bị, thông tin được truyền đi đã được mã hoá sẵn, số bit dữ liệu truyền đi thấp, không phù hợp với nhu cầu truyền dữ liệu hàng loạt và liên tục. Giải quyết vấn đề này, em tận dụng khả năng của vi điều khiển về truyền nhận dữ liệu nối tiếp nhờ vào bộ UART trong chíp. Vi điều khiển có khả năng thực hiện truyền thông đa xử lý rất thích hợp cho việc truyền dữ liệu trong một hệ thống mạng không dây gồm nhiều bộ xử lý tớ. Đề tài xây dựng một hệ thống đơn giản gồm board phát dữ liệu vàboard thu dữ liệu. Dữ liệu bên phát được mã hoá bằng vi điều khiển. Một module phát sẽ được nối vào vi điều khiển thực hiện điều chế ASK và phát dữ liệu tới bên thu. Bên thu thu nhận tín hiệu RF bằng một mạch thu siêu tái sinh, dữ liệu thu được sẽ được vi điều khiển mã hoá và hiển thị qua led đơn. 2. MỤC TIÊU. Nghiên cứu được cách thức truyền dữ liệu nối tiếp của VĐK. Ứng dụng được module thu phát RF có sẵn. → Từ đó thiết kế và thi công mạch chạy thành công. II. CƠ SỞ CHUNG. 1. GIỚI THIỆU VỀ TRUYỀN THÔNG NỐI TIẾP. Khi một bộ vi xử lý truyền thông với thế giới bên ngoài thì nó cấp dữ liệu dưới dạng từng khúc 8 bít (byte) một. Trong một số trường hợp chẳng hạn như các máy in thì thông tin đơn giản được lấy từ đường bus dữ liệu 8 bít và được gửi đi tới bus dữ liệu 8 bít của máy in. Điều này có thể làm việc chỉ khi đường cáp bus không quá dài vì các đường cáp dài làm suy giảm thậm chí làm méo tín hiệu. Ngoài ra, đường dữ liệu 8 bít giá thường đắt. Vì những lý do này, việc truyền thông nối tiếp được dùng để truyền dữ liệu giữa hai hệ thống ở cách xa nhau hàng trăm đến hàng triệu dặm. Hình dưới là sơ đồ truyền nối tiếp so với sơ đồ truyền song song. Sơ đồ truyền nối tiếp so với sơ đồ truyền song song. Thực tế là trong truyền thông nối tiếp là một đường dữ liệu duy nhất được dùng thay cho một đường dữ liệu 8 bít của truyền thông song song làm cho nó không chỉ rẻ hơn rất nhiều mà nó còn mở ra khả năng để hai máy tính ở cách xa nhau có truyền thông qua đường thoại. Đối với truyền thông nối tiếp thì để làm được các byte dữ liệu phải được chuyển đổi thành các bít nối tiếp sử dụng thanh ghi giao dịch vào - song song - ra -nối tiếp. Sau đó nó có thể được truyền quan một đường dữ liệu đơn. Điều này cũng có nghĩa là ở đầu thu cũng phải có một thanh ghi vào - nối tiếp - ra - song song để nhận dữ liệu nối tiếp và sau đó gói chúng thành từng byte một. Tất nhiên, nếu dữ liệu được truyền qua đường thoại thì nó phải được chuyển đổi từ các số 0 và 1 sang âm thanh ở dạng sóng hình sin. Việc chuyển đổi này thực thi bởi một thiết bị có tên gọi là Modem là chữ viết tắt của “Modulator/ demodulator” (điều chế/ giải điều chế). Khi cự ly truyền ngắn thì tín hiệu số có thể được truyền như nói ở trên, một dây dẫn đơn giản và không cần điều chế. Tuy nhiên, để truyền dữ liệu đi xa dùng các đường truyền chẳng hạn như đường thoại thì việc truyền thông dữ liệu nối tiếp yêu cầu một modem để điều chế (chuyển các số 0 và 1 về tín hiệu âm thanh) và sau đó giải điều chế (chuyển tín hiệu âm thanh về các số 0 và 1). Truyền thông dữ liệu nối tiếp sử dụng hai phương pháp đồng bộ và dị bộ. Phương pháp đồng bộ truyền một khối dữ liệu (các ký tự) tại cùng thời điểm trong khi đó truyền dị bộ chỉ truyền từng byte một. Có thể viết phần mềm để sử dụng một trong hai phương pháp này, những chương trình có thể rất dài và buồn tẻ. Vì lý do này mà nhiều nhà sản xuất đã cho ra thị trường nhiều loại IC chuyên dụng phục vụ cho truyền thông dữ liệu nối tiếp. Những IC này phục vụ như các bộ thu - phát dị bộ tổng hợp UART (Universal Asynchronous Receiver Transmitter) và các bộ thu - phát đồng - dị bộ tổng hợp UBART (Universal Asynchronous Receiver Transmitter). Truyền thông nối tiếp dị bộ và đóng khung dữ liệu. Dữ liệu đi vào ở đầu thu của đường dữ liệu trong truyền dữ liệu nói tiếp toàn là các số 0 và 1, nó thật là khó làm cho dữ liệu ấy có nghĩa là nếu bên phát và bên thu không cùng thống nhất về một tệp các luật, một thủ tục, về cách dữ liệu được đóng gói, bao nhiêu bít tạo nên một ký tự và khi nào dữ liệu bắt đầu và kết thúc. Truyền thông dữ liệu nối tiếp dị bộ được sử dụng rộng rãi cho các phép truyền hướng kỹ tự, còn các bộ truyền dữ liệu theo khối thì sử dụng phương phát đồng bộ. Trong phương pháp dị bộ, mỗi ký tự được bố trí giữa các bít bắt đầu (start) và bít dừn (stop). Công việc này gọi là đóng gói dữ liệu. Trong đóng gói dữ liệu đối với truyền thông dị bộ thì dữ liệu chẳng hạn là các ký tự mã ASCII được đóng gói giữa một bít bắt đầu và một bít dừng. Bít bắt đầu luôn luôn chỉ là một bít, còn bít dừng có thể là một hoặc hai bít. Bít bắt đầu luôn là bít thấp (0) và các bít dừng luôn là các bít cao (bít 1). Ví dụ, hãy xét ví dụ trên hình 10.3 trong đó ký tự “A” của mã ASCII (8 bít nhị phân là 0100 0001) đóng gói khung giữa một bít bắt đầu và một bít dừng.

doc23 trang | Chia sẻ: banmai | Lượt xem: 7641 | Lượt tải: 1download
Bạn đang xem trước 20 trang tài liệu Nghiên cứu module thu phát sóng RF, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
1-2010 GVHD: Th.s Lê Tấn Cường SVTH: Đoàn Minh Huy MSSV: 05111041 NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN: Giáo viên hướng dẫn I. DẪN NHẬP. 1. LÍ DO CHỌN ĐỀ TÀI. Truyền dữ liệu không dây là một mảng lớn trong điện tử thông tin, dữ liệu được truyền đi có thể là tương tự cũng có thể là số. Trong truyền dữ liệu không dây, hiệu quả nhất vẫn là truyền bằng sóng điện từ hay sóng Radio, bởi những ưu điểm là truyền ở khoảng cách xa, đa hướng, tần số hoạt động cao. Hiện nay, truyền dữ liệu số được ứng dụng rất rộng rãi, nhất là trong lĩnh vực điều khiển, thông tin số. Nhiều vi mạch hỗ trợ xử lý tín hiệu không dây được sử dụng như PT2248, PT2249, PT9148, PT9149, PT2262, PT2272, HT640, HT648… Vấn đề đặt ra là các vi mạch này truyền dữ liệu chỉ dành cho mục đích riêng là điều khiển thiết bị, thông tin được truyền đi đã được mã hoá sẵn, số bit dữ liệu truyền đi thấp, không phù hợp với nhu cầu truyền dữ liệu hàng loạt và liên tục. Giải quyết vấn đề này, em tận dụng khả năng của vi điều khiển về truyền nhận dữ liệu nối tiếp nhờ vào bộ UART trong chíp. Vi điều khiển có khả năng thực hiện truyền thông đa xử lý rất thích hợp cho việc truyền dữ liệu trong một hệ thống mạng không dây gồm nhiều bộ xử lý tớ. Đề tài xây dựng một hệ thống đơn giản gồm board phát dữ liệu vàboard thu dữ liệu. Dữ liệu bên phát được mã hoá bằng vi điều khiển. Một module phát sẽ được nối vào vi điều khiển thực hiện điều chế ASK và phát dữ liệu tới bên thu. Bên thu thu nhận tín hiệu RF bằng một mạch thu siêu tái sinh, dữ liệu thu được sẽ được vi điều khiển mã hoá và hiển thị qua led đơn. 2. MỤC TIÊU. Nghiên cứu được cách thức truyền dữ liệu nối tiếp của VĐK. Ứng dụng được module thu phát RF có sẵn. → Từ đó thiết kế và thi công mạch chạy thành công. II. CƠ SỞ CHUNG. GIỚI THIỆU VỀ TRUYỀN THÔNG NỐI TIẾP. Khi một bộ vi xử lý truyền thông với thế giới bên ngoài thì nó cấp dữ liệu dưới dạng từng khúc 8 bít (byte) một. Trong một số trường hợp chẳng hạn như các máy in thì thông tin đơn giản được lấy từ đường bus dữ liệu 8 bít và được gửi đi tới bus dữ liệu 8 bít của máy in. Điều này có thể làm việc chỉ khi đường cáp bus không quá dài vì các đường cáp dài làm suy giảm thậm chí làm méo tín hiệu. Ngoài ra, đường dữ liệu 8 bít giá thường đắt. Vì những lý do này, việc truyền thông nối tiếp được dùng để truyền dữ liệu giữa hai hệ thống ở cách xa nhau hàng trăm đến hàng triệu dặm. Hình dưới là sơ đồ truyền nối tiếp so với sơ đồ truyền song song. Sơ đồ truyền nối tiếp so với sơ đồ truyền song song. Thực tế là trong truyền thông nối tiếp là một đường dữ liệu duy nhất được dùng thay cho một đường dữ liệu 8 bít của truyền thông song song làm cho nó không chỉ rẻ hơn rất nhiều mà nó còn mở ra khả năng để hai máy tính ở cách xa nhau có truyền thông qua đường thoại. Đối với truyền thông nối tiếp thì để làm được các byte dữ liệu phải được chuyển đổi thành các bít nối tiếp sử dụng thanh ghi giao dịch vào - song song - ra -nối tiếp. Sau đó nó có thể được truyền quan một đường dữ liệu đơn. Điều này cũng có nghĩa là ở đầu thu cũng phải có một thanh ghi vào - nối tiếp - ra - song song để nhận dữ liệu nối tiếp và sau đó gói chúng thành từng byte một. Tất nhiên, nếu dữ liệu được truyền qua đường thoại thì nó phải được chuyển đổi từ các số 0 và 1 sang âm thanh ở dạng sóng hình sin. Việc chuyển đổi này thực thi bởi một thiết bị có tên gọi là Modem là chữ viết tắt của “Modulator/ demodulator” (điều chế/ giải điều chế). Khi cự ly truyền ngắn thì tín hiệu số có thể được truyền như nói ở trên, một dây dẫn đơn giản và không cần điều chế. Tuy nhiên, để truyền dữ liệu đi xa dùng các đường truyền chẳng hạn như đường thoại thì việc truyền thông dữ liệu nối tiếp yêu cầu một modem để điều chế (chuyển các số 0 và 1 về tín hiệu âm thanh) và sau đó giải điều chế (chuyển tín hiệu âm thanh về các số 0 và 1). Truyền thông dữ liệu nối tiếp sử dụng hai phương pháp đồng bộ và dị bộ. Phương pháp đồng bộ truyền một khối dữ liệu (các ký tự) tại cùng thời điểm trong khi đó truyền dị bộ chỉ truyền từng byte một. Có thể viết phần mềm để sử dụng một trong hai phương pháp này, những chương trình có thể rất dài và buồn tẻ. Vì lý do này mà nhiều nhà sản xuất đã cho ra thị trường nhiều loại IC chuyên dụng phục vụ cho truyền thông dữ liệu nối tiếp. Những IC này phục vụ như các bộ thu - phát dị bộ tổng hợp UART (Universal Asynchronous Receiver Transmitter) và các bộ thu - phát đồng - dị bộ tổng hợp UBART (Universal Asynchronous Receiver Transmitter). Truyền thông nối tiếp dị bộ và đóng khung dữ liệu. Dữ liệu đi vào ở đầu thu của đường dữ liệu trong truyền dữ liệu nói tiếp toàn là các số 0 và 1, nó thật là khó làm cho dữ liệu ấy có nghĩa là nếu bên phát và bên thu không cùng thống nhất về một tệp các luật, một thủ tục, về cách dữ liệu được đóng gói, bao nhiêu bít tạo nên một ký tự và khi nào dữ liệu bắt đầu và kết thúc. Truyền thông dữ liệu nối tiếp dị bộ được sử dụng rộng rãi cho các phép truyền hướng kỹ tự, còn các bộ truyền dữ liệu theo khối thì sử dụng phương phát đồng bộ. Trong phương pháp dị bộ, mỗi ký tự được bố trí giữa các bít bắt đầu (start) và bít dừn (stop). Công việc này gọi là đóng gói dữ liệu. Trong đóng gói dữ liệu đối với truyền thông dị bộ thì dữ liệu chẳng hạn là các ký tự mã ASCII được đóng gói giữa một bít bắt đầu và một bít dừng. Bít bắt đầu luôn luôn chỉ là một bít, còn bít dừng có thể là một hoặc hai bít. Bít bắt đầu luôn là bít thấp (0) và các bít dừng luôn là các bít cao (bít 1). Ví dụ, hãy xét ví dụ trên hình 10.3 trong đó ký tự “A” của mã ASCII (8 bít nhị phân là 0100 0001) đóng gói khung giữa một bít bắt đầu và một bít dừng. Đóng khung một ký tự “A” của mã ASCII (41H) có tín hiệu là 1 (cao) được coi như là một dấu (mark) , còn không có tín hiệu tức là 0 (thấp) thì được coi là khoảng trống (space) . Lưu ý rằng phép truyền bắt đầu với start sau đó bít D0, bít thấp nhất LSB, sau các bít còn lại cho đến bít D7, bít cao nhất MSB và cuối cùng là bít dừng stop để báo kết thúc ký tự “A”. Trong truyền dữ liệu nếu dữ liệu có thể được vừa phát và vừa được thu thì gọi là truyền song công. Điều này tương phản với truyền đơn công chẳng hạn như các máy in chỉ nhận dữ liệu từ máy tính. Truyền song công có thể có hai loại là bán song công và song công hoàn toàn phụ thuộc vào truyền dữ liệu có thể xảy ra đồng thời không? Nếu dữ liệu được truyền theo một đường tại một thời điểm thì được gọi là truyền bán song công. Nếu dữ liệu có thể đi theo cả hai đường cùng một lúc thì gọi là song công toàn phần. Tất nhiên, truyền song công đòi hỏi hai đường dữ liệu (ngoài đường âm của tín hiệu), một để phát và một để thu dữ liệu cùng một lúc. 2. GIỚI THIỆU VỀ UART TRONG VI ĐIỀU KHIỂN AVR ATMEGA32. Vi điều khiển Atmega32 có 1 module truyền thông nối tiếp USART. Có 3 chân chính liên quan đến module này đó là chân xung nhịp - XCK (chân số 1), chân truyền dữ liệu – TxD (Transmitted Data) và chân nhận dữ liệu – RxD (Reveived Data). Trong đó chân XCK chỉ được sử dụng như là chân phát hoặc nhận xung giữ nhịp trong chế độ truyền động bộ. Tuy nhiên bài  này chúng ta không khảo sát chế độ truyền thông đồng bộ, vì thế bạn chỉ cần quan tâm đến 2 chân TxD và RxD. Vì các chân truyền/nhận dữ liệu chỉ đảm nhiệm 1 chức năng độc lập (hoặc là truyền, hoặc là nhận), để kết nối các chip AVR với nhau (hoặc kết nối AVR với thiết bị hỗ trợ UART khác) bạn phải đấu “chéo” 2 chân này. TxD của thiết bị thứ nhất kết nối với RxD của thiết bị 2 và ngược lại. Module USART trên chip Atmega32 hoạt động “song công” (Full Duplex Operation), nghĩa là quá trình truyền và nhận dữ liệu có thể xảy ra đồng thời. Baud rate (tốc độ Baud): như trong ví dụ trên về việc truyền 1 bit trong 1ms, bạn thấy rằng để việc truyền và nhận không đồng bộ xảy ra thành công thì các thiết bị tham gia phải “thống nhất” nhau về khoảng thời dành cho 1 bit truyền, hay nói cách khác tốc độ truyền phải được cài đặt như nhau trước, tốc độ này gọi là tốc độ Baud. Theo định nghĩa, tốc độ baud là số bit truyền trong 1 giây. Ví dụ nếu tốc độ baud được đặt là 19200 thì thời gian dành cho 1 bit truyền là 1/19200 ~ 52.083us.          Frame (khung truyền): do truyền thông nối tiếp mà nhất là nối tiếp không đồng bộ rất dễ mất hoặc sai lệch dữ liệu, quá trình truyền thông theo kiểu này phải tuân theo một số quy cách nhất định. Bên cạnh tốc độ baud, khung truyền là một yếu tốc quan trọng tạo nên sự thành công khi truyền và nhận. Khung truyền bao gồm các quy định về số bit trong mỗi lần truyền, các bit “báo” như bit Start và bit Stop, các bit kiểm tra như Parity, ngoài ra số lượng các bit trong một data  cũng được quy định bởi khung truyền. Hình 1 là một ví dụ của một khung truyền theo UART, khung truyền này được bắt đầu bằng một start bit,  tiếp theo là 8 bit data, sau đó là 1 bit parity dùng kiểm tra dữ liệu và cuối cùng là 2 bits stop.        Start bit: start là bit đầu tiên được truyền trong một frame truyền, bit này có chức năng báo cho thiết bị nhận biết rằng có một gói dữ liệu sắp được truyền tới. Ở module USART trong AVR, đường truyền luôn ở trạng thái cao khi nghỉ (Idle), nếu một chip AVR muốn thực hiện việc truyền dữ liệu nó sẽ gởi một bit start bằng cách “kéo” đường truyền xuống mức 0. Như vậy, với AVR bit start là mang giá trị 0 và có giá trị điện áp 0V (với chuẩn RS232 giá trị điện áp của bit start là ngược lại). start là bit bắt buộc phải có trong khung truyền.        Data: data hay dữ liệu cần truyền là thông tin chính mà chúng ta cần gởi và nhận. Data không nhất thiết phải là gói 8 bit, với AVR bạn có thể quy định số lượng bit của data là 5, 6, 7, 8 hoặc 9 (tương tự cho hầu hết các thiết bị hỗ trợ UART khác). Trong truyền thông nối tiếp UART, bit có ảnh hưởng nhỏ nhất (LSB – Least Significant Bit, bit bên phải) của data sẽ được truyền trước và cuối cùng là bit có ảnh hưởng lớn nhất (MSB – Most Significant Bit, bit bên trái).        Parity bit: parity là bit dùng kiểm tra dữ liệu truyền đúng không (một cách tương đối). Có 2 loại parity là parity chẵn (even parity) và parity lẻ (odd parity). Parity chẵn  nghĩa là số lượng số 1 trong dữ liệu bao gồm bit parity luôn là số chẵn. Ngược lại tổng số lượng các số 1 trong parity lẻ luôn là số lẻ. Ví dụ, nếu dữ liệu của bạn là 10111011 nhị phân, có tất cả 6 số 1 trong dữ liệu này, nếu parity chẵn được dùng, bit parity sẽ mang giá trị 0 để đảm bảo tổng các số 1 là số chẵn (6 số 1). Nếu parity lẻ được yêu cầu thì giá trị của parity bit là 1. Hình 1 mô tả ví dụ này với parity chẵn được sử dụng. Parity bit không phải là bit bắt buộc và vì thế chúng ta có thể loại bit này khỏi khung truyền (các ví dụ trong bài này tôi không dùng bit parity).        Stop bits: stop bits là một hoặc các bit báo cho thiết bị nhận rằng một gói dữ liệu đã được gởi xong. Sau khi nhận được stop bits, thiết bị nhận sẽ tiến hành kiểm tra khung truyền để đảm bảo tính chính xác của dữ liệu. Stop bits là các bits bắt buộc xuất hiện trong khung truyền, trong AVR USART có thể là 1 hoặc 2 bits (Trong các thiết bị khác Stop bits có thể là 2.5 bits).  Trong ví dụ ở hình 1, có 2 stop bits được dùng cho khung truyền.Giá trị của stop bit luôn là giá trị nghỉ (Idle) và là ngược với giá trị của start bit, giá trị stop bit trong AVR luôn là mức cao (5V).        (Chú ý và gợi ý: khung truyền phổ biến nhất là : start bit+ 8 bit data+1 stop bit)        Sau khi nắm bắt các khái niệm về truyền thông nối tiếp, phần tiếp theo chúng ta sẽ khảo sát cách thực hiện phương pháp truyền thông này trên chip AVR (cụ thể là chip Atmega32). Thanh ghi:        Cũng như các thiết bị khác trên AVR, tất cả hoạt động và tráng thái của module USART được điều khiển và quan sát thông qua các thanh ghi trong vùng nhớ I/O. Có 5 thanh ghi được thiết kế riêng cho hoạt động và điều khiển của USART, đó là: UDR: hay thanh ghi dữ liệu, là 1 thanh ghi 8 bit chứa giá trị nhận được và phát đi của USART. Thực chất thanh ghi này có thể coi như 2 thanh ghi TXB (Transmit data Buffer) và RXB (Reveive data Buffer) có chung địa chỉ. Đọc UDR thu được giá trị thanh ghi đệm dữ liệu nhận, viết giá trị vào UDR tương đương đặt giá trị vào thanh ghi đệm phát, chuẩn bị để gởi đi. Chú ý trong các khung truyền sử dụng 5, 6 hoặc 7 bit dữ liệu, các bit cao của thanh ghi UDR sẽ không được sử dụng UCSRA (USART Control and Status Register A): là 1 trong 3 thanh ghi điều khiển hoạt động của module USART.        Thanh ghi UCSRA chủ yếu chứa các bit trạng thái như bit báo quá trình nhận kết thúc (RXC), truyền kết thúc (TXC), báo thanh ghi dữ liệu trống (UDRE), khung truyền có lỗi (FE), dữ liệu tràn (DOR), kiểm tra parity có lỗi (PE)…Bạn chú ý một số bit quan trọng của thanh ghi này: * UDRE (USART Data Register Empty) khi bit bày bằng 1 nghĩa là thanh ghi dữ liệu UDR đang trống và sẵn sàng cho một nhiệm vụ truyền hay nhận tiếp theo. Vì thế nếu bạn muốn truyền dữ liệu đầu tiên bạn phải kiểm tra xem bit UDRE có bằng 1 hay không, sau khi chắc chắn rằng UDRE=1 hãy viết dữ liệu vào thanh ghi UDR để truyền đi. * U2X là bit chỉ định gấp đôi tốc độ truyền, khi bit này được set lên 1, tốc độ truyền so cao gấp 2 lần so với khi bit này mang giá trị 0. * MPCM là bit chọn chế độ hoạt động đa xử lí (multi-processor). UCSRB (USART Control and Status Register B): đây là thanh ghi quan trọng điều khiển USART. Vì thế chúng ta sẽ khảo sát chi tiết từng bit của thanh ghi này. * RXCIE (Receive Complete Interrupt Enable) là bit cho phép ngắt khi quá trình nhận kết thúc. Việc nhận dữ liệu truyền bằng phương pháp nối tiếp không đồng bộ thường được thực hiện thông qua ngắt, vì thế bit này thường được set bằng 1 khi USART được dung nhận dữ liệu. * TXCIE (Transmit Complete Interrupt Enable) bit cho phép ngắt khi quá trình truyền kết thúc. * UDRIE (USART Data Register Empty Interrupt Enable) là bit cho phép ngắt khi thanh ghi dữ liệu UDR trống. * RXEN (Receiver Enable) là một bit quan trọng điều khiển bộ nhận của USART, đề kích hoạt chức năng nhận dữ liệu bạn phải set bit này lên 1. * TXEN (Transmitter Enable) là bit điều khiển bộ phát. Set bit này lên 1 bạn sẽ khởi động bộ phát của USART. * UCSZ2 (Chracter size) bit này kết hợp với 2 bit khác trong thanh ghi UCSRC quy định độ dài của dữ liệu truyền/nhận. Chúng ta sẽ khảo sát chi tiết khi tìm hiểu thanh ghi UCSRC. * RXB8 (Receive Data Bit 8) gọi là bit dữ liệu 8. Bạn nhớ lại rằng USART trong AVR có hỗ trợ truyền dữ liệu có độ dài tối đa 9 bit, trong khi thanh ghi dữ liệu là thanh ghi 8 bit. Do đó, khi có gói dữ liệu 9 bit được nhận, 8 bit đầu sẽ chứa trong thanh ghi UDR, cần có 1 bit khác đóng vai trò bit thứ chín, RXD8 là bit thứ chín này. Bạn chú ý là các bit được đánh số từ 0, vì thế bit thứ chín sẽ có chỉ số là 8, vì lẽ đó mà bit này có tên là RXD8 (không phải RXD9). * TXB8 (Transmit Data Bit 8), tương tự như bit RXD8, bit TXB8 cũng đóng vai trò bit thứ 9 truyền thông, nhưng bit này được dung trong lúc truyền dữ liệu.    UCSRC (USART Control and Status Register C): thanh ghi này chủ yếu quy định khung truyền và chế độ truyền. Tuy nhiên, có một rắc rối nho nhỏ là thanh ghi này lại có cùng địa chỉ với thanh ghi UBRRH (thanh ghi chứa byte cao dùng để xác lập tốc độ baud), nói một cách khác 2 thanh ghi này là 1. Vì thế bit 7 trong thanh ghi này, tức bit URSEL là bit chọn thanh ghi. Khi URSEL=1, thanh ghi này được chip AVR hiểu là thanh ghi điều khiển UCSRC, nhưng nếu bit URSEL=0 thì thanh ghi UBRRH sẽ được sử dụng.        Các bit còn lại trong thanh ghi UCSRC được mô tả như sau: * UMSEL (USART Mode Select) là bit lựa chọn giữa 2 chế độ truyền thông đồng bộ và không đồng bộ. Nếu  UMSEL=0, chế độ không đồng bộ được chọn, ngược lại nếu UMSEL=1, chế độ đồng bộ được kích hoạt. * Hai bit UPM1 và UPM0( Parity Mode) được dùng để quy định kiểm tra pariry. Nếu UPM1:0=00, parity không được sử dụng (mode này khá thông dụng), UPM1:0=01 không được sử dụng, UPM1:0=10 thì parity chẵn được dùng, UPM1:0=11 parity lẻ được sử dụng (xem thêm bảng 1). Bảng 1: chọn kiểm tra parity. * USBS (Stop bit Select), bit Stop trong khung truyền bằng AVR USART có thể là 1 hoặc 2 bit, nếu USBS=0 thì Stop bit chỉ là 1 bit trong khi USBS=1 sẽ có 2 Stop bit được dùng. * Hai bit UCSZ1 và UCSZ2 (Character Size) kết hợp với bit UCSZ2 trong thanh ghi UCSRB tạo thành 3 bit quy định độ dài dữ liệu truyền. Bảng 2 tóm tắt các giá trị có thể có của tổ hợp 3 bit này và độ dài dữ liệu truyền tương ứng. Bảng 2: độ dài dữ liệu truyền. * UCPOL (Clock Pority) là bit chỉ cực của xung kích trong chế độ truyền thông đồng bộ. nếu UCPOL=0, dữ liệu sẽ thay đổi thay đổi ở cạnh lên của xung nhịp, nếu UCPOL=1, dữ liệu thay đổi ở cạnh xuống xung nhịp. Nếu bạn sử dụng chế độ truyền thông không đồng bộ, hãy set bit này bằng 0.. UBRRL và UBRRH (USART Baud Rate Register): 2 thanh ghi thấp và cao quy định tốc độ baud.        Nhắc lại là thanh ghi UBRRH dùng chung địa chỉ thanh ghi UCSRC, bạn phải set bit này bằng 0 nếu muốn sử dụng thanh ghi UBRRH. Như bạn quan sát trong hình trên, chỉ có 4 bit thấp của UBRRH được dùng, 4 bit này kết hợp với 8 bit trong thanh ghi UBRRL tạo thành thanh ghi 12 bit quy định tốc độ baud. Chú ý là nếu bạn viết giá trị vào thanh ghi UBRRL, tốc độ baud sẽ tức thì được cập nhật, vì thế bạn phải viết giá trị vào thanh ghi UBRRH trước khi viết vào thanh ghi UBRRL.        Giá trị gán cho thanh ghi UBRR không phải là tốc độ baud, nó chỉ được USART dùng để tính tốc độ baud. Bảng 3 hướng dẫn cách tính tốc độ baud dựa vào giá trị của thanh ghi UBRR và ngược lại, cách tính giá trị cần thiết gán cho thanh ghi UBRR khi đã biết tốc độ baud. Bảng 3: tính tốc độ baud.        Trong các công thức trong bảng 3, fOSC là tốc tần số xung nhịp của hệ thống (thạch anh hay nguồn xung nội…). Để tiện cho bạn theo dõi, tôi đính kèm bảng ví dụ cách đặt giá trị cho UBRR theo tốc độ baud mẫu. III. Nghiên cứu về các module phát thu RF 1. Khối thu, phát RF không có IC giải mã. Mạch thu Thông số kỹ thuật: Điện áp hoạt động 4.5V đến 5.5V Dòng điện hoạt động 4mA ứng với 5V Nhiệt độ hoạt động -10C - 60C Độ nhạy -105dBm Tốc độ dòng dữ liệu cực đại 4.8k Dữ liệu ngõ ra TTL Mạch phát: Thông số kỹ thuật: Điện áp hoạt động 2.5 V đến 12V Dòng điện hoạt động 4mA ứng với 5V, 15mA với 9V Dòng điện tĩnh 10uA Nhiệt độ hoạt động -10C – 60C Kiểu mã hóa ASK Tốc độ dòng dữ liệu cực đại 9.6k Dữ liệu ngõ vào TTL Công suất tiêu thụ 20mW ứng với 5V 2.Mạch phát thu co IC giải mã. Trên thị thường có rất nhiều dòng module thu phát có IC giải mã khác nhau. Xin lấy ví dụ về cặp IC thu phát giả mã thông dụng là IC PT2262/PT2272. a.Tìm hiểu chung. Module thu: Module phát: Giới thiệu: PT2262 và PT2272 là sản phẩm của Princeton Technology được phát triển và ra đời sau dòng mã hóa 12E/D của hãng Holtek PT2262 có 2 loại chính : loại có 8 địa chỉ mã hóa , 4 địa chỉ dữ liệu và loại có 6 địa chỉ mã hóa và 6 địa chỉ dữ liệu. Mã hóa 12 bit 1khung A0-->A7,D0-->D3 ( * các linh kiện PT2262 đưa vào việt Nam chỉ có loại PT2262 với 8 địa chỉ mã hóa và 4 địa chỉ dữ liệu. -- Tương tự với PT2262 có 2 kiểu thì PT2272 cũng có 2 kiểu : PT2272 có 8 địa chỉ giải mã và 4 dữ liệu đầu ra Thường được kí hiệu : PT2272 - L4 + một loại nữa là PT2272 có 6 địa chỉ giải mã và 6 giữ liệu ra : kí hiệu PT2272 - L6 . ( loại L4 là thông dụng ở việt nam và ít có loại L6 ). PT2262 có " 3 mũ 12 " mã hóa tức là có thể mã hóa 531441 mã mới có thể trùng lặp lại. So với thằng anh HT12E ra đời trước nó thì nó trội hơn hẳn về cái khoản mật mã này. ( HT12E chỉ có 2 mũ 12 mã hóa ) cách mã hóa PT2262 có thể làm được bằng cách nối ngắn mạch các chân " mã hóa địa chỉ " lên dương nguồn ( mã hóa + ) và xuống âm nguồn ( mã hóa - ) hoặc có thể bỏ trống ( mã hóa 0 ). + Dữ liệu + mã hóa được truyền trên một khung 12 bit gồm 8 bit đầu là mã hóa (A0-->A7 ) và 4 dữ liệu . Bởi vậy bạn có thể truyền được song song 4 bit dữ liệu 0 hoặc 1. nếu để truyền dữ liệu thì nên để mặc định cho 4 chân dữ liệu này là 0 hoặc là 1 bằng cách nối thêm điện trở " kéo lên " hoặc " đưa xuống GND) để tránh nhiễu. PT2262 dùng dao động ngoài : đơn giản là chỉ cần lắp thêm 1 điện trở dao động vào chân 15 và chân 16 của PT2262. + Tín hiệu encoder được đưa ra ở chân 17 của PT2262, chân này thường ở mức 1 khi tín hiệu nghỉ và mức 0 khi tín hiệu hoạt động. Tín hiệu đưa ra gồm : sóng mang dao động ví dụ : PT2262 mắc điện trở 4,7 megaom thì PT2272 sẽ mắc 470k giải mã : các chân mã hóa của PT2262 ( chân 1 đến chân 8 ),nối thế nào thì các chân giải mã của PT2272 cũng phải nối tương tự như vậy. Chân nào nối dương, chân nào nối âm, chân nào bỏ trống ...v.v thì chân ( 1 đến 8 )của PT2272 hãy làm như thế . Khi truyền một mã đúng và giải mã đúng thì chân 17 của PT2272 sẽ có điện áp cao đưa ra , báo hiệu là đã đúng mã hóa. 4 chân dữ liệu có thể truyền song song, nối tiếp rất độc lập. Sơ đồ mạch phát dung IC PT2262: Các chân A0 đến A7 là các chân mã hóa. Nếu các chân này ở mạch PT2262 được dung như thế nào thì PT2272 cũng được dung như vậy. Khi đó thì các mạch phát và mạch thu sẽ hiểu nhau, còn mấy mạch phát khác sẽ không nhận ra. Các chân 10 đến 13 là các chân data khi truyền. Như vậy IC này có thể truyền song song 4 bit. Chân 15 và 16 dùng để gắn điện trở tạo thành tần số truyền như mong muốn.Giá trị điện trở ở chân 15 và 16 ở IC PT 2272 nhỏ hơn 10 lần so với PT2262. Chân 17 dùng để truyền dữ liệu và khi truyền sẽ ở mức 0v. Sơ đồ mạch thu: Chân 17 PT 2272 sẽ lên mức 1 khi nhận được dữ liệu đúng. Các chân 10 đến 13 sẽ nhận data và thể hiện mức logic tương ứng khi nhận. Ngoài ra còn có các module phat thu khác: Module thu 2 kênh data. Module phát 2 kenh data. IV.ỨNG DỤNG MODULE THU PHÁT PT2262/2272 VÀO THỰC TẾ Với khả năng truyền nhận dữ liệu không dây ta có thể dùng rất nhiều trong thực tế. Sau đây là 1 chương trình dữ liệu giữa 2 vi điều khiển bằng module RF. 1.Lưu đồ giải thuật. Mạch thu Mạch phát. 2.Chương trình Chương trình được viết bằng Code Vision AVR a.Chương trình của mạch nhận tính RF. #include #include bit x0,x1,x2,x3; // External Interrupt 0 service routine interrupt [EXT_INT0] void ext_int0_isr(void) { x0=PINA.0; x1=PINA.1; x2=PINA.2; x3=PINA.3; PORTC.4=~x0; PORTC.5=~x2; PORTC.6=~x1; PORTC.7=~x3; delay_ms(200); } void main(void) { PORTA=0x00; DDRA=0x00; PORTB=0x00; DDRB=0x00; PORTC=0x00; DDRC=0xFF; PORTD=0x00; DDRD=0x00; // External Interrupt(s) initialization // INT0: On // INT0 Mode: Low level GICR|=0x40; MCUCR=0x03; MCUCSR=0x00; GIFR=0x40; TIMSK=0x00; ACSR=0x80; SFIOR=0x00; // Global enable interrupts #asm("sei") while (1) { PORTC=0xff; }; } b.Chương trình mạch phát. #include #include bit x0,x1,x2,x3; void main(void) { PORTA=0x00; DDRA=0x00; PORTB=0x00; DDRB=0x00; PORTC=0x00; DDRC=0xFF; PORTD=0x00; DDRD=0x00; TIMSK=0x00; ACSR=0x80; SFIOR=0x00; #asm("sei") while (1) { x0=PINA.0; x1=PINA.1; x2=PINA.2; x3=PINA.3; PORTC.4=x0; PORTC.5=x2; PORTC.6=x1; PORTC.7=x3; }; } V. KẾT LUẬN. Qua thời gian thực hiện đồ án, em đã tiếp thu được nhiều kinh nghiệm qúi báu về truyền dữ liệu cũng như kỹ thuật cao tần, mặc dù những tài liệu về những lĩnh vực này rất hiếm. Mặc dầu rất cố gắng tham khảo các tài liệu, các mạch mẫu trên mạng internet, song do thời gian thực hiện đề tài không nhiều cộng với những kinh nghiệm về các mạch cao tần còn thiếu nên đề tài vẫn chưa đạt hết mục đích đã đề ra. Điều chế ASK vẫn còn nhiều hạn chế trong truyền thông không dây, nhất là về vấn đề nhiễu. VI. HƯỚNG PHÁT TRIỂN CỦA ĐỀ TÀI. a. Về khả năng ứng dụng: Đề tài truyền dữ liệu không dây là tiền đề cho các ứng dụng sâu hơn như: truyền dữ liệu báo động cháy nổ, truyền thông tin, âm thanh kỹ thuật số… b. Về đặc tính kỹ thuật: truyền dữ liệu với kỹ thuật điều chế ASK tuy dễ thực hiện, song tính ổn định không cao do nhiễu ảnh hưởng trực tiếp đến biên độ tín hiệu. Có nhiều giải pháp thay thế cho kiểu điều chế này. Phổ biến là kỹ thuật điều chế FSK, PSK, MSK, GMSK… Đây là những phương pháp điều chế rất phổ biến trong thông tin di động hiện đại hiện nay. Những phương pháp này đã được tích hợp hoá nhờ những vi mạch chuyên dụng, làm nâng cao độ tin cậy của hệ thống. TÀI LIỆU THAM KHẢO: Embedded C Programming and the Atmel AVR - Richard Barnett, Larry O’cull, Sarah Cox. RF design guide - Peter Vizmuller High Frequency Techniques – Josep F. White

Các file đính kèm theo tài liệu này:

  • docbai bao cao.doc
Tài liệu liên quan