Nghiên cứu và thiết kế hệ thống thu thập và xử lý dữ liệu nhiều kênh, thông minh trên cảm biến ánh sáng/tần số dùng mc68hc11

Mục Lục Lời mở đầu 1 Chương 1 CẢM BIẾN VÀ THU THẬP DỮ LIỆU NHỜ CẢM BIẾN 3 1.1. Tổng quan về cảm biến (sensor) 3 1.2. Cảm biến ánh sáng 4 1.2.1. Ánh sáng và phép đo quang 4 1.2.1.1. Tính chất của ánh sáng 4 1.2.1.2. Đơn vị đo năng lượng quang. 4 1.2.2. Một vài loại vật liệu và linh kiện chuyển đổi quang - điện 5 1.2.2.1. Tế bào quang dẫn 5 1.2.2.2. Photodiode 6 1.2.2.3. Phototransistor 8 1.2.2.4. Cảm biến quang phát xạ 9 1.3. Cảm biến ánh sáng/ tần số 9 1.3.1. Sơ đồ khối của một bộ cảm biến ánh sáng/ tần số 10 1.3.2. Sơ đồ nguyên lý 10 1.4. Thu thập dữ liệu nhờ cảm biến 10 1.5. Cảm biến thông minh 12 1.6. Ưu điểm của cảm biến lối ra tần số ( gọi tắt là cảm biến tần số ) 13 Chương 2 XỬ LÝ TÍN HIỆU TRONG CẢM BIẾN THÔNG MINH 16 2.1. Chuyển đổi các đại lượng vật lý khác sang miền tần số 16 2.2. Phương pháp thu thập dữ liệu cho hệ thống cảm biến đa kênh 16 2.2.1. Phương pháp thu thập dữ liệu với kênh chia sẻ thời gian 16 2.2.2. Thu thập dữ liệu với kênh chia sẻ không gian 17 2.3. Các phương pháp chuyển đổi tần số sang mã 18 2.3.1. Phương pháp đếm chuẩn trực tiếp 19 2.3.2. Phương pháp đếm gián tiếp (đo chu kỳ) 22 2.3.3. Phương pháp kết hợp hai bộ đếm 28 2.4. Các phép toán xử lý tín hiệu trong cảm biến thông minh / tần số 29 2.4.1. Toán tử cộng và trừ 30 2.4.2. Bộ nhân và bộ chia 31 2.4.3. Toán tử vi phân và tích phân 32 2.4.4. Một ứng dụng các toán tử 33 2.5. Thuật toán thông minh và giao tiếp bus 34 2.5.1. Thuật toán thông minh 34 2.5.2. Giao tiếp bus 34 Đại học Công Nghệ - Đại học Quốc Gia Hà Nội Lâm Hữu Thực Khoá luận tốt nghiệp - 5 - Chương 3 HỆ VI ĐIỀU KHIỂN NHÚNG VÀ LOẠI VI ĐIỀU KHIỂN MC68HC11 CỦA MOTOROLA 35 3.1. Các bộ vi điều khiển và các bộ xử lý nhúng 35 3.1.1. Bộ vi điều khiển so với bộ vi xử lý phổ thông 35 3.1.2. Các bộ vi điều khiển cho các hệ thống nhúng 35 3.1.3. Lựa chọn một bộ vi điều khiển 38 3.2. Tổng quan về MC68HC11E 39 3.2.1. Đặc trưng của họ vi điều khiển MC68HC11E 39 3.2.2. Cấu trúc khối MC68HC11E 41 3.2.3. Chân và cổng vào ra của MC68HC11E 41 3.2.3.1. VDD và VSS 44 3.2.3.2. RESET 45 3.2.3.4. Yêu cầu ngắt và che ngắt ( IRQ and XIRQ/VPPE) 46 3.2.3.5. STRA/AS và STRB/R/W 46 3.2.3.6. MODA, MODB chân điều khiển chọn mode 46 3.2.4. Bộ vi xử lý trung tâm 49 3.2.4.1. Các thanh ghi của CPU 50 3.2.4.2. Kiểu dữ liệu dùng trong CPU 51 3.2.4.3. Mã lệnh và toán tử 51 3.2.4.4. Các mode địa chỉ 51 3.2.5 Kết luận 51 3.3. Lựa chọn vi điều khiển MC68HC11 cho bộ cảm biến 51 Chương 4 XÂY DỰNG THỰC TẾ HỆ THỐNG THU THẬP DỮ LIỆU NHIỀU KÊNH, THÔNG MINH DÙNG CẢM BIẾN ÁNH SÁNG/TẦN SỐ DỰA TRÊN HỌ VI ĐIỀU KHIỂN MC68HC11 53 4.1. Mạch điện hỗ trợ chức năng tính toán của HC11 53 4.1.1. Thiết kế mạch điện (layout) 53 4.1.2. Sơ đồ khối bảng mạch 54 4.1.3. Miêu tả chung 55 4.1.4. Thiết bị trong EVB, và các thông số 56 4.2. Giới thiệu về C-spy 57 4.2.1. Tổng quan 57 4.2.2. Tiến hành cài đặt và sử dụng 57 4.2.2.1. Cài đặt 57 4.2.2.2. Sử dụng 58 4.3. Chương trình điều khiển và kết quả thực nghiệm 62 Đại học Công Nghệ - Đại học Quốc Gia Hà Nội Lâm Hữu Thực Khoá luận tốt nghiệp - 6 - Tóm tắt nội dung đề tài Nội dung đề tài: Nghiên cứu và thiết kế hệ thống thu thập dữ liệu nhiều kênh, thông minh trên cảm biến ánh sáng / tần số dùng Mc68HC11. Nội dung gồm hai phần: Phần thứ nhất: nghiên cứu hoạt động của hệ thống thu thập dữ liệu đa kênh thông minh. Phần này được viết trong 3 chương đầu. Nội dung mô tả nguyên lý hoạt động của cảm biến ánh sáng / tần số, cấu trúc và hoạt động của chíp MC68HC11 và cách thức xử lý tín hiệu trong cảm biến thông minh. Từ đó cung cấp cho ta tư duy để xây dựng hệ thống cảm biến dùng trong hoạt động thu thập dữ liệu với sự trợ giúp của máy tính. Phần thứ hai, chương còn lại báo cáo kết quả và quá trình xây dựng thực tế một hệ thống thu thập dữ liệu dùng cảm biến ánh sáng.

pdf77 trang | Chia sẻ: lvcdongnoi | Lượt xem: 2911 | Lượt tải: 0download
Bạn đang xem trước 20 trang tài liệu Nghiên cứu và thiết kế hệ thống thu thập và xử lý dữ liệu nhiều kênh, thông minh trên cảm biến ánh sáng/tần số dùng mc68hc11, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
: fx = fx1 + fx2 = f0 ( 2 2 N N x + 1 1 N N x ) Tổng tuyệt đối của hai chu kỳ Tx = Tx1 + Tx2 = T0 ( 2 2 N N x + 1 1 N N x ) Bộ cộng (trừ) thường được sử dụng trong các thành phần của bộ nhân hoặc bộ chia. Đại học Công Nghệ - Đại học Quốc Gia Hà Nội Lâm Hữu Thực Khoá luận tốt nghiệp - 37 - 2.4.2. Bộ nhân và bộ chia Trong lĩnh vực đo đạc tần số bộ nhân tần đóng vai trò như một bộ khuyếch đại biên độ của tín hiệu. Chúng sẽ làm tăng độ nhạy của thiết bị đo và mở rộng dải đo trong vùng tín hiệu nhỏ. Đồng thời chúng cải thiện bộ chuyển đổi từ tần số sang mã theo hai hướng sau. Thứ thất giúp tăng tốc độ cho phép giảm nhiễu lượng tử, thứ hai có thể giảm thời gian đo đạc, vì vậy sử dụng trong thiết bị đo để điều khiển nhiều đại lượng biến đổi chậm, hoặc giảm giải động của nhiễu bằng cách đo các đại lượng biến đổi nhanh. Cuối cùng bộ nhân tần có thể sử dụng cho việc đồng nhất tín hiệu, cho phép với các thiết bị đo được sử dụng với cảm biến với những tần số lối ra khác nhau được đồng nhất về cùng một tần số. Tiếp theo đây chúng ta sẽ xem xét một cách chi tiết hơn. Mặc dù trên thực tế bộ nhân tần đã được biết và sử dụng ở trong các công nghệ radio và đo lường học (pha và thời gian) trước đó một thời gian dài. Sự xuất hiện kỹ nghệ đo tần số với yêu cầu đặc biệt không chỉ mang lại cho chúng ta nhiều bộ nhân mới mà nó còn tạo ra nhiều vấn đề mới cần giải quyết. Bộ nhân tần là một bộ chuyển đổi những giao động điện ở lối vào với tần số fxi thành những giao động ở lối ra và với tần số trung bình fxout = km .fx1 Ở đây km là hệ số nhân tần, nếu km nhỏ hơn, ta có bộ nhân tần có chức năng của bộ chia. Dải làm việc của bộ nhân, hay dải thông là đặc tính xác định bằng mối quan hệ giữa tần số làm việc tối đa và tối thiểu. D = min max fxi fxi Tương tự, log2 của nó log2D là dải thông tính theo Octave, hay lgD là dải thông tính bằng Decac. Đặc trưng cơ bản của bộ nhân là hệ số nhân, tốc độ và phạm vi dải tần của nó. Bộ nhân tần có hệ số nhân tần lớn, tốc độ cao, và dải tần càng rộng càng tốt. Các yêu cầu này là mâu thuẫn với nhau. Thực tế, nếu ta tăng km thì giảm phạm vi tần số làm việc. Mặt khác nếu ta mở rộng dải thông thì phải giảm tốc độ làm việc. Dạng xung lối vào và lối ra của bộ nhân tần có sự khác biệt rất lớn. Nếu dạng xung lối vào không như mong muốn, có thể phải dùng thêm bộ tạo dạng xung. Sau đây là một vài điểm đặc biệt khi nhân tín hiệu có dạng xung khác nhau. Đại học Công Nghệ - Đại học Quốc Gia Hà Nội Lâm Hữu Thực Khoá luận tốt nghiệp - 38 - − Nếu tín hiệu cảm biến có dạng răng cưa, khi đó bộ đếm sẽ được thiết lập ở một số mức bởi điện áp lối vào. Sườn không đổi của điện áp răng cưa và mức kích hoạt không đổi làm cho bộ nhân không phù hợp khi làm việc trong một giải tần rộng. Bởi vì sự xắp xếp các xung theo thời gian là không đồng nhất, có một số thành phần lệch khỏi vị trí thông thường. Nguyên nhân là do sự thay đổi biên độ của xung răng cưa. Còn đối với những tín hiệu vào không phải là dạng xung răng cưa thì hệ thống có thể đạt được xung lối ra với một giải tần rộng. Sử dụng lối vào dạng dạng xung tam giác cân xứng, bộ nhân được thực hiện bằng cách liên tục lập lại việc chỉnh lưu dạng sóng. Thành phần một chiều được trừ đi khỏi tín hiệu lối vào, tiếp theo là tinh chỉnh dạng sóng. Sau cùng chúng ta đạt được điện áp tam giác song có tần số gấp đôi. − Đối với tín hiệu lối vào dạng hình sin, bộ nhân với bộ mã hóa không gian được thực hiện nhờ bộ chuyển đổi tín hiệu không tuyến tính (ví dụ: nhân chập bình phương, hoặc nhân chập bậc 3) (Vm.cos wt)2 = 2 1 V2m . cos2wt + 2 1 V2m (Vm.cos wt)3 = 4 1 V3m . cos3wt + 4 1 V3m. coswt Thành phần một chiều do bình phương được loại bỏ một cách thích hợp. Bộ nhân cũng hỗ trợ việc kết nối nhiều tầng mà không hạn chế về mặt giải tần . − Còn đối với lối vào là xung dạng chữ nhật thì bộ nhân tần dễ dàng thực hiện một cách đơn giản. 2.4.3. Toán tử vi phân và tích phân Các bộ vi phân và tích phân thường được sử dụng trong hệ thống điều khiển tự động, vi phân là một trong những toán tử khó nhất. Thông thừơng nó được biểu diễn theo cách sau đây. Ft = a. dt tdF )(1 Ở đây F1(t) = k x(t) là tần số xung lối vào; dt tdF )(1 là vi phân bậc 1 của F1(t). Trong trường hợp lý tưởng phương trình đạo hàm của một số hàm theo thời gian có thể được viết như sau Đại học Công Nghệ - Đại học Quốc Gia Hà Nội Lâm Hữu Thực Khoá luận tốt nghiệp - 39 - Ft(ideal) = t tFttF t ∆ −∆+ →∆ )()(. 1 0 lim = dt tdF )(1 Trong thực tế ∆ t không tiến đến 0 nhưng nó được cố định tại một giá trị nhỏ τ∆ , giá trị này là rất nhỏ khi so sánh với chu kỳ Tx trong trường hợp này ta có thể viết như sau: F(t) = τ∆ −∆+ )()(. 1 tFttF = τ∆ ∆ )(1 tF = k. dt tdF )(1 Tính tích phân xung tần số được quy về việc đếm xung nhờ các bộ đếm hai hướng. Việc thực thi chúng có thể tính toán nhờ phần mềm trong vi điều khiển. Khả năng của bộ tích phân này hạn chế bởi dung lượng bộ nhớ. Số lượng xung tích được bởi bộ đếm có thể được biểu diễn theo phương trình sau. N(τ ) = dttF∫τ 0 )( 2.4.4. Một ứng dụng các toán tử − Đồng nhất tín hiêu tần số: Trong hệ thống thu thập dữ liệu đa kênh, nhiều cảm biến các lối ra cẩm biến có thể có nhiều tần số dùng để biểu diễn thông tin. Thông thường dải tần số lối ra từ khoảng vài Hz tới vài MHz. Trong một dải rộng như vậy, để biến đổi thẳng sang mã, hay xử lý trực tiếp tại vi điều khiển là rất khó khăn. Thông thường trước khi đem vào xử lý, tín hiệu tần số phải qua bộ đồng nhất tần số để quy tất cả tín hiệu về dải tần duy nhất. Bộ đồng nhât tần số như vậy có thể xây dựng từ các phần tử cơ sở là các bộ nhân tín hiệu tần số và có thể đạt được độ chính xác cao, tốc độ lớn, tin cậy và ổn định trong một dải rộng. Ta biểu diễn hệ thống như vậy bằng sơ đồ sau: Hình 16. Sơ đồ khối đơn giản bộ đồng nhất tần số. Km fx fo Điều khiển Đại học Công Nghệ - Đại học Quốc Gia Hà Nội Lâm Hữu Thực Khoá luận tốt nghiệp - 40 - Như vậy ta thấy, trong sơ đồ khối đơn giản. Bộ đồng nhất tần số chỉ gồm bộ nhân tần với hệ số nhân được điều khiển bởi bộ điều khiển. Hệ số Km tuỳ thuộc vào tín hiệu lối vào và được tính toán bởi bộ điều khiển hình vẽ 16. 2.5. Thuật toán thông minh và giao tiếp bus 2.5.1. Thuật toán thông minh Hiểu thế nào là một thuật toán thông minh. Thông minh tức là khả năng đáp ứng lại thay đổi của môi trường ngoài hay thay đổi điều kiện hoạt động một cách nhanh nhạy và hiệu quả. Máy móc thông minh có nghĩa là nó có khả năng thích nghi, thay đổi phương thức làm việc sao cho hiệu quả nhất. Như vậy một hệ thống thông minh yêu cầu phải tự nhận biết được một số điều kiện môi trường ảnh hưởng tới khả năng làm việc của nó và phải có thông tin phản hồi từ lối ra về bộ điều khiển hoạt động. Để từ những có thể ra quyết định, hành động sao cho được tín hiệu lối ra phù hợp hơn với yêu cầu. Thông thường thuật toán thông minh cần phải có bộ vi xử lý trợ giúp. Bởi vì khối lượng tính toán trong thuật toán thông minh là rất lớn và thường xử lý bằng phần mềm. Đôi khi cũng có thể thực hiện bằng phần cứng. Trong trường hợp đó, thuật toán thông minh xây dựng từ thuật toán thông thường với bộ hồi tiếp (fedback) kết hợp với một số bộ so sánh. Do điều kiện thời gian chưa cho phép,các thuật toán thông minh chưa được trình bày ở đây. Nếu có điều kiện em sẽ tình bày sau. 2.5.2. Giao tiếp bus Hai loại giao tiếp bus thường sử dụng nhất trong cảm biến thông minh là chuẩn giao tiếp bus I2C và chuẩn RS232C. − I2C là loại giao tiếp bus rất được ưa chuộng trong cảm biến thông minh. Giao thức của nó khá là đơn giản và yêu cầu phần cứng là tối thiểu. Tuy nhiên bù lại ưu điểm phần cứng đơn giản, giao thức truyền thông của nó quá cứng nhắc. I2C được thay thế bằng một chuẩn giao tiếp bú khác I2S (Intergrated smart sensor bus). I2S tương tự như I2C nhưng được đơn giản hoá giao thức, chỉ giữ lại một phần nhỏ giao thức phức tạp nhưng cần thiết cho chức năng giao tiếp bus. Cả I2C và I2S đều đòi hỏi hai đường dây cho việc truyền tín hiệu: một đường dây thời gian và một đường dây dữ liệu. I2S có ưu điểm là không định nghĩa chiều dài bus. Chiều dài tối đa của nó tuỳ thuộc vào đầu cuối dữ liệu và đầu cuối kênh dữ liệu. − Chuẩn RS232C là chuẩn truyền dữ liệu nối tiếp dùng phổ biến trong khoa học máy tính. Ở đây nó dùng cho giao tiếp giữa cảm biến với may tính. Chi tiết về RS232C xin tham khảo tài liệu về khoa học máy tính. Đại học Công Nghệ - Đại học Quốc Gia Hà Nội Lâm Hữu Thực Khoá luận tốt nghiệp - 41 - Chương 3 HỆ VI ĐIỀU KHIỂN NHÚNG VÀ LOẠI VI ĐIỀU KHIỂN MC68HC11 CỦA MOTOROLA 3.1. Các bộ vi điều khiển và các bộ xử lý nhúng Trong mục này chúng ta bàn về nhu cầu đối với các bộ vi điều khiển và so sánh chúng với các bộ vi xử lý phổ thông như Pentium và các bộ vi xử lý x86 khác. Chúng ta cùng xem xét vai trò của các bộ vi điều khiển trong thị trường các sản phẩm nhúng. Ngoài ra, chúng ta cùng thảo luận về tiêu chuẩn chọn lựa một bộ vi điều khiển như thế nào? 3.1.1. Bộ vi điều khiển so với bộ vi xử lý phổ thông Sự khác nhau giữa một bộ vi điều khiển và một bộ vi xử lý là gì? Bộ vi xử lý ở đây là các bộ vi xử lý phổ thông như họ Intell x86 (8086, 80286, 80386, 80486 và pentium) hoặc họ Motorola 680x0 (68000, 68010, 68020, 68030, 68040 v.v...). Những bộ vi xử lý này không có RAM, ROM và không có các cổng vào ra trên chíp . Với lý do đó mà chúng được gọi chung là các bộ vi xử lý phổ thông. Hình17. Hệ thống vi xử lý được so sánh với hệ thống vi điều khiển. Bus dữ liệu CPU Vi xử lý phổ thông ROM RAM Địn h thời Cổng nối tiếp Cổng vào ra CPU RA M RO M Vào ra Bộ định Cổng nối tiếp (a) Vi xử lý phổ thông Bus địa chỉ (b) Bộ vi điều khiển Đại học Công Nghệ - Đại học Quốc Gia Hà Nội Lâm Hữu Thực Khoá luận tốt nghiệp - 42 - Một nhà thiết kế hệ thống sử dụng một bộ vi xử lý phổ thông chẳng hạn như Pentium hay 68040 phải bổ sung thêm RAM, ROM, các cổng vào ra và các bộ định thời ngoài để làm cho chúng hoạt động được. Mặc dù việc bổ sung thêm RAM, ROM và các cổng vào ra bên ngoài làm cho hệ thống cồng kềnh và đắt hơn, nhưng chúng có ưu điểm là linh hoạt chẳng hạn như người thiết kế có thể quyết định số lượng RAM, ROM và các cổng vào ra cần thiết phù hợp với bài toán trong tầm tay của mình. Điều này không thể có được đối với các bộ vi điều khiển. Một bộ vi điều khiển có một CPU (một bộ vi xử lý) cùng với một lượng cố định RAM, ROM, các cổng vào ra và một bộ định thời tất cả trên cùng một chip. Hay nói cách khác là bộ xử lý, RAM, ROM, các cổng vào ra và bộ định thời đều được nhúng với nhau trên cùng một chip; do vậy người thiết kế không thể bổ sung thêm bộ nhớ ngoài, cổng vào ra hoặc bộ định thời cho nó. Số lượng cố định của RAM, ROM trên chíp và số các cổng vào ra trong các bộ vi điều khiển làm cho chúng lý tưởng đối với nhiều ứng dụng mà trong đó giá thành và không gian lại hạn chế. Trong nhiều ứng dụng, ví dụ một bộ điều khiển ti vi từ xa thì không cần công suất tính toán của bộ vi xử lý 486 hoặc thậm chí như 8086. Trong rất nhiều ứng dụng thì không gian nó chiếm, công suất nó tiêu tốn và giá thành trên mọt đơn vị là những cân nhắc nghiêm ngặt hơn nhiều so với công suất tính toán. Những ứng dụng thường yêu cầu một số thao tác vào – ra để đọc các tín hiệu và tắt mở những bít nhất định. Điều thú vị là một số nhà sản xuất các bộ vi điều khiển đã đi xa hơn là tích hợp cả một bộ chuyển đổi ADC và các ngoại vi khác vào trong bộ vi điều khiển. Bảng 1. Một số sản phẩm được sử dụng các bộ vi điều khiển nhúng Thiết bị nội thất gia đình Văn phòng Ô tô Đồ điện trong nhà Máy đàm thoại Máy điện thoại, máy Fax Các hệ thống an toàn Các bộ mở cửa ga-ra xe Máy trả lời Máy tính gia đình Điện thoại Máy tính Các hệ thống an toàn Máy Fax Máy sao chụp Máy in laze Máy in màu Máy tính hành trình Điều khiển động cơ Túi đêm khí Thiết bị ABS Đo lường Hệ thống bảo mật Điều khiển truyền tin Đại học Công Nghệ - Đại học Quốc Gia Hà Nội Lâm Hữu Thực Khoá luận tốt nghiệp - 43 - Tivi, truyền hình cáp Máy quay camera Điều khiển từ xa Trò chơi điện tử Điện thoại tổ ong Các nhạc cụ điện tử Máy khâu Điều khiển ánh sáng Máy nhắn tin Đồ chơi Các dụng cụ tập thể hình Máy nhắn tin Giải trí Điều hoà nhiệt độ Điện thoại tổ ong Mở cửa không cần chìa khoá 3.1.2. Các bộ vi điều khiển cho các hệ thống nhúng Trong các tài liệu về các bộ vi xử lý ta thường thấy khái niệm hệ thống nhúng (Embeded system). Các bộ vi xử lý và các bộ vi điều khiển được sử dụng rộng rãi trong các sản phẩm hệ thống nhúng. Một sản phẩm nhúng sử dụng một bộ vi xử lý (hoặc một bộ vi điều khiển) để thực hiện một nhiệm vụ và chỉ một mà thôi. Một máy in là một ví dụ về một việc nhúng vì bộ vi xử lý nên trong nó chỉ làm một việc đo là nhận dữ liệu và in nó ra. Điều này khác với một máy tính PC dựa trên bộ xử lý Pentium ( hoặc một PC tương thích với IBM x86 bất kỳ ). Một PC có thể được sử dụng cho một số trạm bất kỳ các dịch vụ in, bộ đầu cuối kiểm kê nhà băng, máy chơi trò chơi điện tử, trạm dịch vụ mạng hoặc trạm đầu cuối Internet. Phần mềm cho các ứng dụng khác nhau có thể nạp và chạu. Tất nhiên là lý do hiển nhiên để một PC thực hiện hàng loạt các công việc là nó có bộ nhớ RAM và một hệ điều hành nạp phần mềm ứng dụng thường được đốt vào trong ROM. Một máy tính PC x86 chứa hoặc được nối tới các sản phẩm nhúng khác nhau chẳng hạn như bàn phím, máy in, modem, bộ điều khiển đĩa, card âm thanh, bộ điều khiển cdrom, chuột... Mỗi nội ngoại vi này có một bộ vi điều khiển bên trong nó để thực hiên chỉ một công việc, ví dụ bên trong mỗi con chuột có một bộ vi điều khiển để thực hiện công việc tìm vị trí con trỏ và gửi nó đến PC. Bảng 1liệt kê một số sản phẩm nhúng. Đại học Công Nghệ - Đại học Quốc Gia Hà Nội Lâm Hữu Thực Khoá luận tốt nghiệp - 44 - 3.1.3. Lựa chọn một bộ vi điều khiển Có 4 bộ vi điều khiển 8 bít chính. Đó là 6811 của Motorola, 8051 của Intel, z8 của Xilog và Pic 16x của Microchip Technology. Mỗi một loại trên đều có tập lệnh và thanh ghi riêng duy nhất, nên chúng đều không tương thích lẫn nhau. Cũng có những bộ vi điều khiển 16 bit và 32 bit được sản xuất bởi các hãng chíp khác nhau. Với tất cả những bộ vi điều khiển khác nhau như thế này thì lấy gì làm tiêu chuẩn lựa chọn đặt ra là như thê nào. Có ba tiêu chuẩn để lựa chọn các bộ vi điều khiển là: − Đáp ứng nhu cầu tính toán về mặt công suất tính toán và hiệu quả về mặt giá thành. Trong khi phân tích nhu cầu của một dự án dựa trên vi điều khiển, chúng ta trước hết phải biết là bộ vi điều khiển nào là 8 bit, 16 bit hay 32 bit có thể đáp ứng tốt nhất nhu cầu tính toán một cách hiệu quả nhất? Những tiêu chuẩn được đưa ra để cân nhắc là: + Tốc độ: Tốc độ lớn nhất mà vi điều khiển hỗ trợ là bao nhiêu? + Kiểu đóng vỏ: Đó là kiểu 40 chân DIP hay QFP hay là kiểu đóng vỏ khác (DIP – đóng vỏ theo 2 hàng chân. QFP là đóng vỏ vuông dẹt)? Đây là điều quan trọng đối với yêu cầu về không gian, kiểu lắp ráp và tạo mẩu thử cho sản phẩm cuối cùng. + Công suất tiên thụ: Điều này đặc biệt khắt khe đối với những sản phẩm dùng pin, ắc quy. + Dung lượng bộ nhớ RAM, ROM trên chíp. + Số chân vào – ra và bộ định thời trên chíp. + Khả năng dễ dàng nâng cấp. + Giá thành cho một đơn vị: Điều này quan trọng quyết định giá thành cuối cùng của sản phẩm mà một bộ vi điều khiển được sử dụng. Ví dụ có các bộ vi điều khiển giá 50 cent trên đơn vị khi được mua 100.000 bộ một lúc. + Có sẵn các công cụ phát triển phần mềm chẳng hạn như các trình biên dịch, trình hợp ngữ và gỡ rối. − Tiêu chuẩn thứ hai lựa chọn một bộ vi điều khiển là khả năng phát triển các sản phẩm xung quanh nó dễ dàng như thế nào? Các câu nhắc chủ yếu bao gồm khả năng có sẵn trình hợp ngữ, gỡ rối, trình biên dịch ngôn ngữ C hiệu quả về mã nguồn, Đại học Công Nghệ - Đại học Quốc Gia Hà Nội Lâm Hữu Thực Khoá luận tốt nghiệp - 45 - trình mô phỏng, hỗ trợ kỹ thuật và khả năng sử dụng trong nhà và ngoài môi trường. Trong nhiều trường hợp sự hỗ trợ của nhà cung cấp thứ ba ( nghĩa là nhà cung cấp khác không phải hãng sản xuất chíp ) cho chíp cũng tốt như, nếu không được tốt hơn sự hỗ trợ từ nhà sản xuất chíp. − Nguồn các bộ vi điều khiển có sẵn và tin cậy. Tiêu chuẩn thứ ba trong lựa chọn một bộ vi điều khiển là khả năng sẵn sàng đáp ứng về số lượng trong hiện tại và tương lai. Đối với một số nhà thiết kế điều này thậm chí còn quan trọng hơn cả hai tiêu chuẩn đầu tiên. 3.2. Tổng quan về MC68HC11E Ngoại trừ trường hợp khác biệt nhỏ, đa số dòng chíp MC68HC11 là tương đồng. Do tài liệu tham khảo MC68HC11E sẵn có, vì thế ta sẽ tìm hiểu hoạt động đặc trưng, cách thức vận hành, hoạt động của họ chíp này tượng trưng cho cả dòng chíp HC11. 3.2.1. Đặc trưng của họ vi điều khiển MC68HC11E MC68HC11E là dòng vi điều khiển tích hợp cao, 8 bit của Motorola. Vi điều khiển tích hợp một vi xử lý MC68HC11 với các thiết bị ngoại vi trên cùng một chíp. Dòng HC11E cấu thành với nhiều loại bộ nhớ khác nhau như RAM, ROM hay EPROM và EEPROM. Và với một số thiết bị khác hoạt động ở mức điện thế thấp. HC11E chế tạo từ công nghệ bán dẫn – oxit – kim loại bù mật độ cao (HCMOS) cho phép nó hoạt động với tần số từ 3MHz tới thế một chiều, mà tiêu thụ công suất không đáng kể. Sau đây là một số nét đặc trưng của họ HC11E: − Vi xử lý MC68HC11 của Motorola và tập lệnh của nó − Tiết kiệm công suất với hoạt động ở mode STOP và WAIT − Sử dụng thiết bị làm việc với điện thế thấp − Hỗ trợ 0, 256, 512 hoặc 768 bytes RAM , dữ liệu vẫn được duy trì khi standby − Hỗ trợ 0, 12, hoặc 20 Kbytes ROM hoặc EPROM − Hỗ trợ 0, 512, 2048 Bytes EEPROM với khả năng bảo vệ khối dùng cho chức năng bảo mật (2048 bytes với EEPROM ở bảng địa chỉ cơ sở trong HC811E2) − Giao diện ngoại vi nối tiếp đồng bộ (SPI) Đại học Công Nghệ - Đại học Quốc Gia Hà Nội Lâm Hữu Thực Khoá luận tốt nghiệp - 46 - − 8 kênh dành cho bộ chuyển đổi A/D 8 bit − 16 bit định thời hệ thống dành cho + Ba kênh bắt giữ tín hiệu lối vào (IC) + Bốn kênh so sánh lối ra (OC) + Một kênh có thể tuỳ chọn, như là kênh bắt giữ tín hiệu lối vào thứ tư, hay là kênh so sánh tín hiệu lối ra thứ năm. − Bộ cộng tích luỹ xung 8 bit − Mạch ngắt thời gian thực − Hệ thống giám sát sự hoạt động hợp lý của máy tính. − 38 chân dùng cho cổng vào ra dữ liệu chung + 16 chân vào ra dữ liệu hai hướng + 11 chân dữ liệu vào + 11 chân dữ liệu ra − Đóng gói + 52 chân gói palastic dạng PLCC + 52 chân gốm dạng CLCC + 52 chân palastic dạng TQFP, 10mmX10mm + 64 chân palastic dạng QFP + 48 chân palastic dạng DIP, MC68HC811E2 + 56 chân palastic dạng SDIP Đại học Công Nghệ - Đại học Quốc Gia Hà Nội Lâm Hữu Thực Khoá luận tốt nghiệp - 47 - 3.2.2. Cấu trúc khối MC68HC11E Hình 18.Sơ đồ khối của MC68HC11E. 3.2.3. Chân và cổng vào ra của MC68HC11E Họ vi điều khiển HC11E có thể đóng gói ở dạng: 52 chân PLCC, 52 chân CLCC, 64 chân QFP, 48 chân dạng bản mỏng QFP, 56 chân SDIP và 48 chân dạng DIP. Hầu hết các chân trong HC11E có hai chức năng được mô tả trong hình vẽ sau (Hình 18). Đại học Công Nghệ - Đại học Quốc Gia Hà Nội Lâm Hữu Thực Khoá luận tốt nghiệp - 48 - Hình 19.Sắp xếp các chân với gói dạng 52 chân PLCC hay CLCC. Hình 20. Gói 64 chân dạng QFP. Đại học Công Nghệ - Đại học Quốc Gia Hà Nội Lâm Hữu Thực Khoá luận tốt nghiệp - 49 - Hình 21.Gói 52 chân dạng TQFP. Hình22.Gói 56 chân dạng SDIP Đại học Công Nghệ - Đại học Quốc Gia Hà Nội Lâm Hữu Thực Khoá luận tốt nghiệp - 50 - Hình 23.Gói 48 chân dạng DIP. So với các họ vi điều khiển khác như 8051 thì đóng gói và sơ đồ chân của HC11 là khá phức tạp. Ở đây ta chỉ trình bày một số chân có chức năng quan trọng trong hoạt động của vi điều khiển. 3.2.3.1. VDD và VSS Nguồn cung cấp cho vi điều khiển thông qua chân VDD và VSS. VDD là chân nguồn, VSS là chân nối đất. Nguồn cung cấp cho vi điều khiển hoạt động bình thường là 5V. Các thiết bị (hoạt động với) thế thấp có dải điện áp hoạt động từ 3.0 tới 5.5V hoặc từ 2.7 tới 5.5V. Nguồn đưa vào vi điều khiển phải ổn định một cách tương đối. Nhưng vì một lý do nào đó, sự thăng giáng của nguồn sẽ làm xuất hiện các xung nhiễu trên chân của vi điều khiển. Vì vậy nguồn trước khi đưa vào vi điều khiển cần thông qua các mạch làm bằng. Cách thông dụng và hiệu quả nhất là dùng một con tụ đủ lớn nối song song với nguồn cấp cho vi điều khiển. Giá trị của tụ tuỳ thuộc vào tải. Đại học Công Nghệ - Đại học Quốc Gia Hà Nội Lâm Hữu Thực Khoá luận tốt nghiệp - 51 - 3.2.3.2. RESET RESET là chân điều khiển tín hiệu hai hướng. Nó được xem như là chân khởi tạo trạng thái vi điều khiển khi nó được khởi động. Đồng thời nó cũng là chân tín hiệu lối ra dùng để chỉ thị lỗi hệ thống do hệ thống giám sát hoạt động của vi điều khiển dò được (COP). CPU phân biệt hai loại tín hiệu RESET. Tín hiệu RESET xuất phát từ điều kiện bên ngoài hay ngay trong CPU (được điều khiển bởi chính CPU khi hệ thống giám sát tìm thấy lỗi mà nó cho là nghiêm trọng). CPU phân biệt giữa điều kiện reset nội và reset ngoại nhờ cảm biến được chân tín hiệu reset chuyển lên mức cao ngắn hơn hai chu kỳ xung đồng hồ sau khi tín hiệu reset xuất hiện. Vì vậy tuyệt đối cấm không được tuỳ tiện nối tụ và trở vào chân reset của vi điều khiển. Điều này nhằm tránh trễ xảy ra trên chân reset và có thể dẫn đến những quyết định sai lầm của CPU. Thông thường ta sử dụng bộ tạo tín hiệu reset MC3464 (hình vẽ 24). Hình 24. Sơ đồ mạch reset ngoại. 3.2.3.3. Chân XTAL, EXTAL và lối ra E_Clock (E) Hai chân XTAL, EXTAL cung cấp giao diện cho máy phát xung dao động bằng thạch anh hoặc bộ dao động có cấu trúc CMOS tương ứng dùng để điểu khiển mạch phát xung đồng hồ có trong vi điều khiển. Tần số của các máy phát ngoài phải cao gấp bốn lần tần số xung đồng hồ mong muốn. Thông thường chân XTAL ngắt ra khi có một bộ dao động CMOS nối vào chân EXTAL. Tuy nhiên để giảm nhiễu ở tần số rađiô (RFI) ta thường nối vào chân XTAL con trở có giá trị từ 10 KΩ tới 100KΩ. Chân lối ra XTAL chỉ được nối với một bộ dao động thạch anh. E là chân lối ra của bộ dao động nội trong vi điều khiển. Tín hiệu này dùng để chuẩn thời gian. Tần số lối ra chân E bằng ¼ tần số lối vào ở chân XTAL, EXTAL. Khi xung đồng hồ E ở mức thấp, một mạch vòng xử lý nội sẽ diễn ra. Khi nó ở mức cao, dữ liệu được truy cập. Tất cả các xung đồng hồ sẽ ngừng lại khi vi điều khiển ở Đại học Công Nghệ - Đại học Quốc Gia Hà Nội Lâm Hữu Thực Khoá luận tốt nghiệp - 52 - trạng thái STOP. Nhằm tránh phát sinh RFI, các thiết bị nối vào chân E sẽ ngắt khi vi điều khiển làm việc ở chế độ đơn. 3.2.3.4. Yêu cầu ngắt và che ngắt ( IRQ and XIRQ/VPPE) Chân lối vào IRQ là chân nhận tín hiệu ngắt không đồng bộ. Ta có thể chọn chế độ ngắt theo sườn âm của xung, hay ngắt theo biên độ (biên độ âm) của xung (dùng thanh ghi tuỳ chon). Tín hiệu ngắt khi reset luôn là chọn theo mức biên độ xung. Khi sử dụng tín hiệu ngắt theo mức biên độ xung, ta thường nối một điện trở 4.7k từ chân IRQ tới nguồn. Chân XIRQ là chân nhân tín hiệu ngắt không thể che vào vi điều khiển ngay sau chân reset được khởi tạo. Trong quá trình reset, bit X trong thanh ghi điều kiện có thể được đặt và tất cả các ngắt đều bị cấm cho tới khi phần mềm điều khiển vi điều khiển cho phép nó hoạt động. Vì XIRQ hoạt động theo mức biên độ xung, nên ta có thể nối XIRQ lên nguồn thông qua một con trở. Thông thường XIRQ chọn để phát hiện lỗi nguồn. VPPE là chân lối vào cung cấp nguồn 12V cần thiết cho trường hợp lập trình với EPROM/OTPROM. Nếu thiết bị không dùng EPROM/OTPROM thì nó chỉ có chức năng ngắt. 3.2.3.5. STRA/AS và STRB/R/W Chân STRA/AS phân làm hai chức năng phụ thuộc vào mode hoạt động của vi điều khiển. Trong chế độ đơn, STRA thực hiện chức năng bắt tín hiệu vào. Trong chế độ hợp kênh mở rộng, AS cung cấp chức năng đồng bộ địa chỉ. Chân đồng bộ B hay đọc/viết (STRB/R/W) hoạt động như chân tín hiệu đồng bộ lối ra hay chân chỉ thỉ hướng dữ liệu trên bus. Trong chế độ hoạt động đơn, STRB hoạt động như chân đồng bộ tín hiệu với các thiết bị ngoại vi song song. Trong chế độ hợp kênh mở rộng, R/W sử dụng để chỉ thị hướng dữ liệu được truyền ở bus ngoại vi. Chân R/W ở mức thấp báo rằng dữ liệu đang được viết ra thiết bị bên ngoài, mức cao có nghĩa là vi điều khiển đang đọc thông tin. 3.2.3.6. MODA, MODB chân điều khiển chọn mode Trong khi reset, với hai chân tín hiệu MODA và MODB ta có 4 chế độ làm việc cho vi điều khiển. Đó là các mode, single mode, expanded mode, bootstrap mode và test mode. Single mode và expanded mode là hai mode làm việc bình thường của vi điều khiển. Sự khác nhau giữa chúng là ở single mode ta chỉ truy cập dữ liệu từ bộ nhớ Đại học Công Nghệ - Đại học Quốc Gia Hà Nội Lâm Hữu Thực Khoá luận tốt nghiệp - 53 - trong như RAM, ROM còn ở expanded mode ta có thể truy cập dữ liệu từ bộ nhớ của các thiết bị ngoại vi (bộ nhớ ngoài). Tương ứng với mỗi phương thức làm việc bình thường ta có 1 mode làm việc đặc biệt: bootstrapmode – single mode; test mode – expanded mode. Sự khác nhau cơ bản là chúng có bản đồ ô nhớ khác nhau và phương thức truy cập bộ nhớ khác nhau. 3.2.3.7. VRL và VRH Đây là hai chân cung cấp thế chuẩn cho bộ chuyển đổi A/D. VRL chuẩn thế thấp ( thường là 0V). VRH chuẩn thế cao. Để bộ chuyển đổi hoạt động bình thường VRH phải lớn hơn 3V, và VRH, VRL trong dải VSS, VDD. 3.2.3.8. Các cổng tín hiệu Các chân cổng tín hiệu có chức năng khác nhau với các mode hoạt động khác nhau. Các chức năng của chân trong cổng A, D, E không phụ thuộc vào mode hoạt động. Cổng B, C ngược lại, chịu ảnh hưởng của chế độ làm việc của vi điều khiển. Chi tiết chức năng của các chân xem trong bảng và được mô tả sau. − Cổng A Trong mọi chế độ hoạt động, cổng A luôn được dùng để cấu hình cho ba bộ định thời bắt giữ tín hiệu lối vào (IC) và bốn bộ định thời so sánh tín hiệu lối ra (OC). Chân còn lại có thể cấu hình theo cả hai hướng như là bộ định thời bắt giữ tín hiệu lối vào thứ tư hoặc bộ định thời so sánh giữ liệu lối ra thứ năm. Nếu bất kỳ chân nào của cổng A không dùng để cấu hình cho các bộ định thời đều có thể sử dụng làm chân tín hiệu vào ra phổ thông. Chân PA7 và chân PA3 dùng để thiết lập hướng dữ liệu là vào hay ra. Riêng hướng của hai bít PA7 và PA3 được thiết lập bởi hai bít DDAR7 và DDAR3 của thanh ghi PACTL (pulse accumulator control – thanh ghi điều khiển tích luỹ xung). Các chân còn lại được cố định là chân dữ liệu vào hay chân dữ liệu ra. PA7 có chức năng là chân vào/ra phổ thông, đồng thời nó cũng là chân so sánh lối ra định thời OC1. PA7 được lấy là lối vào bộ tích luỹ xung, ngay cả khi chúng đang thực hiện các chức năng trên. Đại học Công Nghệ - Đại học Quốc Gia Hà Nội Lâm Hữu Thực Khoá luận tốt nghiệp - 54 - Bảng 2.Chức năng của các chân tín hiệu ở chế độ hoạt động khác nhau. PA[6:4] chức năng là chân lối ra dùng chung, và là chân bắt giữ lối vào các bộ định thời hoặc là chân so sánh lối ra của bộ định thời 2 - 4. PA[6:4] được điều khiển bởi OC1. PA3 là chân tín hiệu vào ra hai hướng, đồng thời cũng định dạng như là chân bắt giữ lối vào bộ định thời số 4 hay là chân so sánh lối ra bộ định thời số 5. PA[0:2] dành cho chân lối vào dùng chung và chân bắt giữ lối vào bộ định thời [1:3]. Đại học Công Nghệ - Đại học Quốc Gia Hà Nội Lâm Hữu Thực Khoá luận tốt nghiệp - 55 - − Cổng B Trong chế độ hoạt động đơn chíp, tất cả các chân cổng B là chân lối ra dùng chung. Trong chế độ hoạt động hợp kênh mở rộng, tất cả các chân của cổng B được xem như là bye địa chỉ cao của tín hiệu lối ra. Trong suốt chu kỳ xung đồng hồ, chân [7:0] được xem là bit [15:8] của địa chỉ bus lối ra.Thanh ghi PORTB được xem như là địa chỉ ngoại vi ở chế độ mở rộng. − Cổng C Trong chế độ đơn chíp, tất cả chân cổng C có chức năng như là chân vào/ra dữ liệu chung. Cổng C giữ như là chân vào dữ liệu nhờ thanh ghi PORTLC và chân STRA đặt ở chế độ vào dữ liệu. Trong chế độ hợp kênh mở rộng, toàn bộ chân của cổng C xem như là một phần của dữ liệu/địa chỉ hợp kênh. Trong chu kỳ xung đồng hồ, các chân [7:0] của cổng C xem như là địa chỉ [7:0] địa chỉ lối ra. Hoặc là chân vào/ra dữ liệu hai hướng. Hướng của dữ liệu chọn bởi chân tín hiệu R/W. − Cổng D Chân PD[5:0] có thể được sử dụng như là chân vào ra tín hiệu chung. Tuy nhiên nhưng chân này cũng được dùng truyền tín hiệu cho các thiết bị giao diện truyền thông nối tiếp (SCI), và các thiết bị giao diện ngoại vi nối tiếp (SPI). Chân PD0 là chân nhận dữ liệu vào (RxD) cho SCI. Chân PD1 là chân truyền dữ liệu ra (TxD) cho SCI. PD[5:2] dùng cho giao diện ngoai vi nối tiếp (SPI). PD2 là chân tín hiệu ra. PD3 là chân tín hiệu vào. PD4 là chân tín hiệu xung đồng hồ. PD5 là chân chọn chế độ (vào/ra). − Cổng E Cổng E là lối vào phổ thông hoặc là lối vào bộ A/D. Nếu cần chuyển đổi chính xác, tuyệt đối không truy cập vào cổng trong khi đang lấy mẫu, nhằm tránh những nhiễu loạn không cần thiết. 3.2.4. Bộ vi xử lý trung tâm Phần này chúng ta thảo luận về kiến trúc, kiểu dữ liệu, chỉ dẫn và các mode địa chỉ được định nghĩa trên CPU MC68HC11. Đại học Công Nghệ - Đại học Quốc Gia Hà Nội Lâm Hữu Thực Khoá luận tốt nghiệp - 56 - CPU được thiết kế giao tiếp với thiết bị ngoại vi, vào/ra dữ liệu, lượng bộ nhớ với 64kbytes bản đồ nhớ. Điều này có nghĩa là cổng vào ra cũng được xem như là ô nhớ trong bản đồ nhớ, và không có sự phân biệt nào với ô nhớ thực thụ. Kiến trúc này cho phép truy cập tới bộ nhớ ngoài mà không gây thêm lượng thời gian bất lợi nào. Sau đây chúng ta đi vào một số chi tiêt. 3.2.4.1. Các thanh ghi của CPU Thanh ghi của MC68HC11 CPU là một bộ phận cấu thành từ bên trong và nó không được đưa vào bản đồ nhớ. Nó có 7 thanh ghi phổ thông và một thanh ghi điều kiện (hinh). Hình 25.Sơ đồ các thanh ghi của MC68HC11 CPU. Như hình vẽ ta thấy, kiến trúc của nó gồm ba thanh ghi tích luỹ A, B và D. Thanh ghi tích luỹ A, B là thanh ghi tích luỹ 8 bit. Tuy nhiên nếu cần ta có thể sử dụng hai thanh ghi như một thanh ghi 16 bit tương tự thanh ghi D. Các thanh ghi IX, IY là thanh ghi chỉ số. Chúng đưa cho ta mọt giá trị 16 bit khi cộng với giá trị offset 8 bit sẽ được giá trị đầy đủ của địa chỉ các ô nhớ. SP là thanh ghi chỉ số stack, nó tự động đánh số bởi chương trình. PC thanh ghi số đếm chương trình 16 bit. Ngay sau khi reset PC se có giá trị tại khởi đầu tuỳ thuộc vào mode hoạt động của vi điều khiển. Đại học Công Nghệ - Đại học Quốc Gia Hà Nội Lâm Hữu Thực Khoá luận tốt nghiệp - 57 - Thanh ghi còn lại mà ta chưa nhắc là thanh ghi điều kiện (CCR), gồm có 8 bit điều kiên. Chi tiết về các thanh ghi xin xem tài liệu tham khảo. 3.2.4.2. Kiểu dữ liệu dùng trong CPU MC68HC11 CPU hỗ trợ những kiểu dữ liệu sau: − Dữ liệu dưới dạng bit − Số nguyên 8 bit hay 16 bit không dấu và có dấu − 16 bit số phân số không dấu Thông thường ta sử dụng kiểu byte 8 bit và với kiểu dữ liệu đó ta không cần yêu cầu đặc biệt nào khi sử dụng (vi HC11 là vi xử lý 8 bit). 3.2.4.3. Mã lệnh và toán tử Mã lệnh trong họ vi xử lý HC11 mã hoá 8 bit. Mỗi mã lệnh có cách dùng riêng với các mode hoạt động khác của vi điều khiển. HC11 CPU có khoảng 256 mã lệnh. Một dòng lệnh đầy đủ gồm có một tiền tố (prebyte), mã lệnh và có thể có không, một, hai, ba toán tử. Toán tư có chúa thông tin mà CPU cần thực hiện tính toán. Một dòng lênh đầy đủ có thể có từ một tới năm byte. 3.2.4.4. Các mode địa chỉ Có 6 mode địa chỉ dùng để truy cập vào bộ nhớ: tức thời (immediately), trực tiếp (direct), mở rộng (extended), chỉ dẫn (indexed), cảm ứng (inherent) và quan hệ (relative). Nói chung sáu mode địa chỉ này rất gần với sáu mode truy cập địa chỉ của 8086. 3.2.5. Kết luận Nói chung, kiến trúc của vi điều khiển MC68HC11 khá là phức tạp. Trong khuôn khổ một đề tài luân văn là không thể nói hết được kiến trúc của nó. Trên đây em chỉ nêu ra một số kiến thức cơ bản về họ vi điều khiển này để có cái nhìn tổng quan về nó. Nhìn chung hoạt động của nó có nhiều nét tương đồng với hệ vi xử lý 8086, điều này là một thuận lợi. 3.3. Lựa chọn vi điều khiển MC68HC11 cho bộ cảm biến Ta dùng vi điều khiển HC11 cho đề tài nhờ những ưu điểm sau: − HC11 hỗ trợ tới 8 cổng ADC 8 bit. − Hỗ trợ các giao diện truyền thông nối tiếp và giao diện ngoại vi nối tiếp. Đại học Công Nghệ - Đại học Quốc Gia Hà Nội Lâm Hữu Thực Khoá luận tốt nghiệp - 58 - − Các chế độ hoạt động tiết kiệm năng lượng. − Khả năng tự giám sát. − Thiết bị nhớ đa dạng, và có thể truy cập vào bộ nhớ ngoài ở mode mở rộng. − Dải tần làm việc tương ứng với dải tần của cảm biến tần số. − Phần mềm ứng dụng có sẵn, do Pháp tài trợ cho trường. Đại học Công Nghệ - Đại học Quốc Gia Hà Nội Lâm Hữu Thực Khoá luận tốt nghiệp - 59 - Chương 4 XÂY DỰNG THỰC TẾ HỆ THỐNG THU THẬP DỮ LIỆU NHIỀU KÊNH, THÔNG MINH DÙNG CẢM BIẾN ÁNH SÁNG/TẦN SỐ DỰA TRÊN HỌ VI ĐIỀU KHIỂN MC68HC11 Trong các chương trước, chúng ta đã cùng thảo luận về cách thức xây dựng một hệ thống thu thập dữ liệu thông minh. Chương này tôi xin trình bày những kêt quả thực tế của tôi trong quá trình xây dựng một hệ thống như vậy. Tuy nhiên do trình độ và thời gian hạn chế, trong quá trình xây dựng thực tế người làm gặp nhiều khó khăn mà chưa khắc phục được. Những khó khăn đó không được trình bày ở đây. 4.1. Mạch điện hỗ trợ chức năng tính toán của HC11 4.1.1. Thiết kế mạch điện (layout) Hình 26. Bảng mạch MC68HC11. Bảng mạch trên được các kỹ sư của công ty Motorola thiết kế. Tuy nhiên bảng mạch thực tế hiện có đang sử dụng cho các mục đích thí nghiệm là của đại học CNAM của Pháp tài trợ cho trường. Đại học Công Nghệ - Đại học Quốc Gia Hà Nội Lâm Hữu Thực Khoá luận tốt nghiệp - 60 - 4.1.2. Sơ đồ khối bảng mạch Hình 27. Sơ đồ khối của EVB. − LATCH: Bộ chốt. Đại học Công Nghệ - Đại học Quốc Gia Hà Nội Lâm Hữu Thực Khoá luận tốt nghiệp - 61 - − MCU: Vi điều khiển. − User or monitor EPROM: Người dùng hoặc EPROM giám sát. − PRU: Đơn vị thay thế cổng. − RS232C drives and receiver: Bộ điều khiển và bộ nhậnRS232C. − TxD, RxD: Chân phát tín hiệu và chân nhận tín hiệu nối tiếp. 4.1.3. Miêu tả chung Vi điều khiển MC68HC11 là loại vi điều khiển đơn tiên tiến có tích hợp bộ nhớ trong và các thiết bị ngoại vi. Để phát huy khả năng của vi điều khiển, EVB (Evualation Board - bảng mạch hỗ trợ cho chức năng tính toán của MC68HC11 -> vì chưa tìm được thuật ngữ tiếng Việt ngắn gọn tương đương nên ta sẽ dùng thuật ngữ tiêng Anh dưới dạng viết tắt) được thiết kế theo một chương trình giám sát và gỡ rối có tên gọi BUFFALO (Bit User Fast Friendly Aid to Logical Operations). Chương trình giám sát này chứa trong EPROM (bộ nhớ ngoài). EVB cung cấp các công cụ, thiết bị giá rẻ đủ cho chức năng tính toán và gỡ rối của vi điều khiển MC68HC11. EVB không hỗ trợ cho loại vi điều khiển có tốc độ tính toán linh hoạt và mạnh hơn. Nó có thể hoạt động đồng thời cả hai mode: gỡ rối và tính toán. Mode hoạt động đầu tiên cho phép người dùng gỡ rối dưới sự điều khiển của chương trình giám sát BUFFALO. Mã sử dụng là assembler chứa trên EVB hoặc có trong máy tính host và đựơc nạp vào bộ nhớ RAM của EVB. Mode hoạt động thứ hai cho phép người dùng thi hành nhiệm vụ tính toán của mình với chương trình được nạp bộ nhớ của vi điều khiển. EVB có thể thi hành ở mode đơn chíp hay mode mở rộng trong toàn bộ thời gian làm việc của nó (xem chương 3). Toàn bộ hoạt động điều khiển EVB, được lưu vào trong EPROM với sự trợ giúp của các thiết bị tương tác đầu cuối. Giao diện của hệ thống thi hành cung cấp bởi vi điều khiển và PRU (port replacement unit- đơn vị thay thế cổng ‘->MC68HC24‘). Chuẩn RS232C dùng cho truyền dữ liệu và giao tiếp giữa máy tính và EVB. Vi điều khiển cung cấp giao diện truyền thông nối tiếp có tốc độ 9600 baud . EVB cần sử dụng nguồn cung cấp +5, +12, -12 Vdc và một đầu cuối tương thích với chuẩn RS232C. Bộ RS232C tương thích với máy tính host sử dụng chuẩn ghi nối tiếp của Motorola (Motorola S-records) với sự trợ giúp của chương trình giám sát BUFFALO. Để có thêm thông tin xin xem tài liệu tham khảo. Đại học Công Nghệ - Đại học Quốc Gia Hà Nội Lâm Hữu Thực Khoá luận tốt nghiệp - 62 - 4.1.4. Thiết bị trong EVB, và các thông số Bảng 3. Một vài thông số và thiết bị trong MC68HC11EVB. Thiết bị, thông số Đặc tính MCU MC68HC11AFN PRU MC68HC24FN ACIA MC68B50 Cổng vào ra: Đầu cuối Máy tính host MCU mở rộng Tương thích RS232C Tương thích RS232C Tương thích HCMOS –TTL Dải nhiệt độ Hoạt động Lưu trữ 0 tới 50 0C - 40 tới +85 0C Độ ẩm 0 tới 900 Công suất yêu cầu 0.5A với nguồn +5Vdc (max) 0.1A với nguồn +12Vdc (max) 0.1A với nguồn -12Vdc (max) Kích thước Chiều rộng Chiều dài 17.8 cm 11.75 cm Bảng 4. Bảng liệt kê một vài thiết bị ngoại vi. Thiết bị ngoài Kiểu/ loại thông thường Nguồn một chiều 5, 12, -12 Vdc Mẫu TAA 16W Đầu cuối ( tương thích RS232C) EXORterm Máy tính host (tương thích RS232C) EXORciser ( bất kỳ máy tính host nào có hỗ trợ phần mềm MC68HC11 assembler) Cable RS232 Cable cho cổng vào ra mở rộng Đại học Công Nghệ - Đại học Quốc Gia Hà Nội Lâm Hữu Thực Khoá luận tốt nghiệp - 63 - 4.2. Giới thiệu về C-spy 4.2.1. Tổng quan Với trình gỡ rối BUFFALO dựa trên ngôn ngữ assembler chưa phải là ngôn ngữ bậc cao. Muốn viết một chương trình điều khiển hoạt động của HC11 trên ngôn ngữ assem quả thực là rất khó khăn và có qua nhiều việc càn làm. Ví dụ như cần viết chương trình giao tiếp giữa máy tính host và EVB khi nạp chương trình vào EPROM,… Trong khi đó C-spy của IAR cung cấp cho ta ngôn ngữ lập trình bậc cao, chạy trên nền Windows với rất nhiều hàm sẵn có trong thư viện. Các thao tác nhận phần cứng, thiết bị và điều khiển tương tác giữa các thiết bị được thực hiện tự động hay đơn giản qua một thao tác nhấp chuột. Ngoài ra C-spy còn cung cấp hệ soạn thảo chương trình nguồn với chức năng tự gỡ rối. C-spy được thiết kế làm việc với cả hai ngôn ngữ C và assembler. Người dùng có thể chuyển đổi qua lại giữa hai mức chương trình nguồn khi cần thiết. Điều không cần bàn cãi là với chương trình C người dùng không tốn nhiều công sức xây dựng chương trình điều khiển thực hiện một mục đích nào đó. Đặc biệt với các bài toán có cấu trúc cơ sổ dữ liệu phức tạp thì dung chương trình soạn thảo C có ưu thế tuyệt đối. Tuy nhiên chương trình assembler cũng có ưu điểm khi cần điều khiển phần cứng một cách chính xác. Do đó ta cần viết bằng ngôn ngữ assembler với các chương trình điều khiển quan trọng. Chu trình xây dựng và phát triển một ứng dụng dựa trên hệ C-spy của IAR như trong hình vẽ. 4.2.2. Tiến hành cài đặt và sử dụng 4.2.2.1. Cài đặt Cài đặt hệ thống C-spy trên nền Windows không có gì đặc biệt. Tất cả các bước đều thực hiện trên giao diện đồ hoạ và được thực hiện một cách đơn giản. C-spy có ba phiên bản cơ bản : simulator, emulator và rom-monitor. Mỗi phiên bản có một đặc trưng riêng biệt. 1) Phiên bản simulator Đây là phiên bản mô phỏng chức năng của bộ vi xử lý bằng phần mềm chương trình này có thể kiểm tra trước khi bất kì phần cứng nào được thực hiện vì vậy không yêu cầu phần cứng vì thế giá thành thấp nhất và là giải pháp cho nhiều ứng dụng mô phỏng. 2) Phiên bản emulator Đại học Công Nghệ - Đại học Quốc Gia Hà Nội Lâm Hữu Thực Khoá luận tốt nghiệp - 64 - Phiên bản emulator của C-spy cung cấp toàn bộ công cụ điều khiển trong mạch chính qua cổng nối tiếp hoặc song song, C-spy emulator sử dụng những tính chất phần cứng, như breakpoint logic và memory inspection cho phép ứng dụng để thực hiện trong thời gian thực và trong môi trường thực. 3) Phiên bản Rom-monitor Bộ Rom-monitor của C-spy là công cụ gỡ rối đầy hiệu lực để thực hiện những ứng dụng, chương trình này diễn giải C-spy làm việc như thế nào và đưa ra cái nhìn toàn diện về C-spy và đặc tính của nó. Hình 28. Lưu đồ quá trình xây dựng một ứng dụng. 4.2.2.2. Sử dụng Phiên bản được cài đặt là phiên bản emulator. Sau khi cài đặt lên ổ đĩa cứng và tạo shortcut trên màn hình, nói chung chương trình sẽ sử dụng được ngay sau khi reset lại máy tính. Cách đơn giản nhất để khởi động chương trình ứng dụng là: Soạn thảo file nguồn. Dịch Liên kết flie object Biên dịch file Liên kết file object với dự đoán hoàn chỉnh Start Gỡ rối với C- spy Đưa vào PROM Có lỗi Ok Đại học Công Nghệ - Đại học Quốc Gia Hà Nội Lâm Hữu Thực Khoá luận tốt nghiệp - 65 - − Kích đúp chuột lên biểu tượng shortcut trên màn hình. − Kích phải chuột và chọn open lên biểu tượng shortcut trên màn hình. Ngay sau đó của sổ làm việc sẽ hiên ra (hình vẽ). Hình 29. Cửa sổ giao diện chương trình. − Để vào soạn thảo chương trình nguồn ta chọn Startup -> Testes Carter (hình vẽ). Hình 30. Lựa chọn soạn thảo chương trình nguồn. Đại học Công Nghệ - Đại học Quốc Gia Hà Nội Lâm Hữu Thực Khoá luận tốt nghiệp - 66 - Nhập mật khẩu để vào chương trình (hình vẽ 31) Hình31. Hỏi mật khẩu khi vào chương trình soạn thảo. Khi mật khẩu đã được xác nhận, cửa sổ giao diện sẽ hiện lên (hình vẽ 32). Hình 32. Cửa sổ giao diện của chương trình. Kích đúp chuột lên một chương trình nguồn, ví dụ chương trình đo tần số, cửa sổ giao diện soạn thảo hiện ra. Kích đúp vào file frequencemetre để chỉnh sửa (nếu cần). Đại học Công Nghệ - Đại học Quốc Gia Hà Nội Lâm Hữu Thực Khoá luận tốt nghiệp - 67 - Hình 33. Giao diện chương trình soạn thảo. Hình 34. Cửa sổ soạn thảo. Để chạy thử một chương trình, nhấn vào debug (hình 34). Cửa sổ giao diện mới hiện ra. Vào control chon realtime, sau đo chọn run (hình 35). Kêt quả của phép đo sẽ hiện lên màn hình tinh thể lỏng. Debug Đại học Công Nghệ - Đại học Quốc Gia Hà Nội Lâm Hữu Thực Khoá luận tốt nghiệp - 68 - Hình 35. Chạy chương trình ở chế độ debug. 4.3. Chương trình điều khiển và kết quả thực nghiệm Thư mục cài đặt trên ổ cứng: c:\user\hc11\hc11_tool\wbench\6811\inc chứa hàm vào ra cơ sở của chương trình, chương trình đo tần số với một số hàm thư viên được viết như sau: − Chương trình đo tần số #include #include "afficheur.h" #include "afficheur_sup.h" #include "registres_hc11.h" extern char freq(unsigned int,long *freq_q1632,char *unite); extern char freq_periode(long *freq_q1632, char *unite); extern void valid_it(void); extern void affich_q1632(long,char *); extern void valid_xirq(void); char tab_ini_aff[] = {0x38,0x0D,0x01,0x06,0x02,0x80,00}; Run Đại học Công Nghệ - Đại học Quốc Gia Hà Nội Lâm Hữu Thực Khoá luận tốt nghiệp - 69 - void main(void) { long freq1632; char unite[20];char flag; unsigned int tetams = 1000; char flag_methode = 0; config_aff(tab_ini_aff); /* PACTL = PACTL | 0x50; valid_it(); while(1) { if(flag_methode == 0)flag = freq(tetams,&freq1632,unite); else flag = freq_periode(&freq1632,unite); efface_ligne(); affich_q1632(freq1632,unite); if ( (flag_methode == 0)&& (flag ==-1) ){efface_ligne(); outchaine("Debordement +"); } if ( (flag_methode == 1)&& (flag !=1) ){ efface_ligne(); outchaine("Debordement -");} if( (flag_methode ==0) && (freq1632 < 65536.0*0.373 ) ) flag_methode = 1; if( (flag_methode ==1) && (freq1632 > 353*65536 ) )flag_methode = 0; /* change_ligne(); efface_ligne(); outinteger(flag); change_ligne(); */ if(flag_methode ==1)tempo(1000); } } Đại học Công Nghệ - Đại học Quốc Gia Hà Nội Lâm Hữu Thực Khoá luận tốt nghiệp - 70 - char freq(unsigned int porte, long *f, char *unite) { unsigned long N;float ff; unsigned int k; unsigned int PACNTH; char flag=1; static char flagini = 0; if (flagini ==0) { PACTL = PACTL | 0x50; flagini = 1; } TOC1 = TCNT + 125; TFLG1 = 0x80; TFLG2 = 0x20; PACNT = 0; PACNTH = 0; for(k=0;k<porte;k++) { while( (TFLG1&0x80)==0)if( (TFLG2 & 0x20) !=0 ) { PACNTH++; TFLG2=0x20;} TFLG1 = 0x80; TOC1 = TOC1+125; } N = (long)256*PACNTH+PACNT; ff = (float)N/porte; *f = (long)(65536.0*ff); strcpy(unite," KHz"); change_ligne(); efface_ligne(); outinteger(PACNTH); Đại học Công Nghệ - Đại học Quốc Gia Hà Nội Lâm Hữu Thực Khoá luận tốt nghiệp - 71 - change_ligne(); if(ff>750.1)flag = -1; return(flag); } char freq_periode(long * f, char *unite) { unsigned int N1,N2; float ff;long N;char flag = 1; static char flagini = 0; ; if(flagini==0){ TCTL2 = TCTL2 | 0x01; flagini = 1;} TFLG1 = 0x01; while( (TFLG1 & 0x01) == 0); TFLG1 = 0x81; TFLG2 = 0x80; TOC1 = TCNT + 65535; N1 = TIC3; while( (TFLG1 & 0x01) == 0); N2 = TIC3; N = N2 - N1; if (N < 0)N = N+65536; ff = 65536.0*125000.0/N; *f=(long)ff; strcpy(unite," Hz" ); if( (TFLG1 & 0x80)!=0) flag = -1; return(flag); } Đại học Công Nghệ - Đại học Quốc Gia Hà Nội Lâm Hữu Thực Khoá luận tốt nghiệp - 72 - − Thư viên vào ra chuẩn stdio /* - STDIO.H - */ #ifndef _STDIO_INCLUDED #define _STDIO_INCLUDED #ifndef NULL #define NULL (void *) 0 #endif #ifndef EOF #define EOF (-1) #endif #ifndef size_t #if sizeof((char*)0 - (char*)0) <= sizeof(int) #define size_t unsigned int #else #define size_t unsigned long #endif #endif /* === #if __TID__ & 0x8000 #pragma function=intrinsic(0) #endif === */ #ifndef MEMORY_ATTRIBUTE #define MEMORY_ATTRIBUTE #endif MEMORY_ATTRIBUTE int puts(const char *__s); MEMORY_ATTRIBUTE int putchar(int __value); Đại học Công Nghệ - Đại học Quốc Gia Hà Nội Lâm Hữu Thực Khoá luận tốt nghiệp - 73 - MEMORY_ATTRIBUTE int getchar(void); MEMORY_ATTRIBUTE int sprintf(char *__s,const char *__format,...); MEMORY_ATTRIBUTE int printf(const char *__format,...); MEMORY_ATTRIBUTE int scanf(const char *__format,...); MEMORY_ATTRIBUTE int sscanf(const char *__s, const char *__format,...); MEMORY_ATTRIBUTE char *gets(char *__s); #if __TID__ & 0x8000 #pragma function=default #endif #endif − Định nghĩa thanh ghi (registres_hc11.h) #include #define OPTION *(char*)0x1039 #define ADCTL *(char*)0x1030 #define ADR2 *(char*)0x1032 #define ADR3 *(char*)0x1033 #define PORTC *(char*)0x1003 #define DDRC *(char*)0x1007 #define PIOC *(char*)0x1002 #define TMSK1 *(char*)0x1022 #define TMSK2 *(char*)0x1024 #define TFLG1 *(char*)0x1023 #define TFLG2 *(char*)0x1025 #define TCNT *(unsigned int*) 0x100E #define TOC1 *(unsigned int*) 0x1016 Đại học Công Nghệ - Đại học Quốc Gia Hà Nội Lâm Hữu Thực Khoá luận tốt nghiệp - 74 - #define TOC2 *(unsigned int*) 0x1018 #define TOC3 *(unsigned int*) 0x101A #define TOC4 *(unsigned int*) 0x101C #define TIC1 *(unsigned int*)0x1010 #define TIC2 *(unsigned int*)0x1012 #define TIC3 *(unsigned int*)0x1014 #define SCDR *(char*)0x102F #define SCCR1 *(char*)0x102C #define SCCR2 *(char*)0x102D #define SCSR *(char*)0x102E #define BAUD *(char*)0x102B #define TCTL2 *(char*)0x1021 #define PACTL *(char*)0x1026 #define PACNT *(unsigned char*)0x1027 − Afficheur.h extern void valid_it(void); extern void config_aff(char *); extern void outchaine(char *); extern void outinteger(int); extern void outhex16(int); extern void change_ligne(void); extern void efface_ligne(void); extern void curseur(char); extern void virgule(void); extern void espace(void); extern void tempo(unsigned int ms); extern void putch(char); Đại học Công Nghệ - Đại học Quốc Gia Hà Nội Lâm Hữu Thực Khoá luận tốt nghiệp - 75 - − afficheur_sup.h extern void ecrire_ligne(char ligne, char *texte); extern void ecrire_entier(char ligne, int n); extern void ecrire_q1632(char ligne, long q1632, char *texte); extern void efface(char ligne); Đại học Công Nghệ - Đại học Quốc Gia Hà Nội Lâm Hữu Thực Khoá luận tốt nghiệp - 76 - Kết luận Trên cơ sở tìm hiểu lý thuyết, các kết quả thực nghiệm khoá luận trình bày cách thức xây dựng một hệ thống thu thập dữ liệu với sự trợ giúp của máy tính.Trong thời gian nghiên cứu hạn hẹp, em đã thu được một số kết quả sau: Về mặt lý thuyết: − Tìm hiểu nguyên lý cảm biến ánh sáng, ưu điểm của cảm biến ánh sáng tần số. − Cấu trúc hệ thống thu thập dữ liệu nhờ cảm biến với sự trợ giúp của máy tính. − Cấu trúc một hệ cảm biến thông minh, xử lý tín hiệu trong cảm biến thông minh. − Cấu trúc họ vi điều khiển MC68HC11. Lập trình với họ vi điều khiển MC68HC11. Về mặt thực nghiệm: − Tự thiết kế được một mạch cảm biến ánh sáng có lối ra tần số trong khoảng 5Khz tới 30Khz. − Tìm hiểu cấu trúc của mạch hỗ trợ tính toán dành cho MC68HC11. − Tìm hiểu, xây dựng chương trình điểu khiển hiện thị kết quả đo tần số sang màn hình tinh thể lỏng trên hệ chương trình C-spy dành cho họ vi điều khiển HC11. Mặc dù đã hết sức cố gắng, song do thời gian thực hiện khoá luận không nhiều, kiến thức còn hạn chế nên bản khoá luận không tránh khỏi những sai sót. Em kính mong nhận được sự thông cảm cùng sự chỉ bảo và đóng góp ý kiến của thầy cô và bạn bè. Đại học Công Nghệ - Đại học Quốc Gia Hà Nội Lâm Hữu Thực Khoá luận tốt nghiệp - 77 - Tài liệu tham khảo 1) Kỹ thuật mạch điện tử - Phạm Minh Hà. 2) Giáo trình thực tập kỹ thuật số - Nguyễn Khang Cường. 3) Giáo trình cảm biến - Phan Quốc Phô - Nguyễn Đức Chiến 4) 68HC11 C Complier Programming Guide for Motorola’s 68HC11 Microcontroller Family - IAR systems 5) Data acquisition and signal processing for smart sensor - Nikolay V.Kirianaki - Sergey Y.Yurish - Nestor O.Shpak - Vadim P.Deynega. 6) HC11 E Series Technical Data - Motorola 7) MC68HC11EVB Evaluation Board User’s Manual - Motorola

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

  • pdfNghiên cứu và thiết kế hệ thốngthu thập và xử lý dữ liệu nhiều kênh, thông minh trên cảm biến ánh sáng - tần số dùng mc68hc11.pdf