2.2.2.1. Lựa chọn linh kiện
a. Lựa chọn bộ chuyển đổi ADC
Phần tử quan trọng nhất ảnh h−ởng đến độ sai số của các Module chính là bộ ADC. Trên thị tr−ờng hiện nay có rất nhiều loại ADC, tuy nhiên để chọn đ−ợc ADC phải dựa vào các tiêu chí sau:
- Độ phân dải của ADC.
- Tốc độ xử lý phải đảm bảo tốc độ thu thập số đo.
- Điện áp vào phải phù hợp với hệ thống. Tốt nhất là ADC đ−ợc tích hợp trong vi điều khiển .
Qua khảo sát thực tế và tìm hiểu kỹ trên thị tr−ờng ở Việt Nam hiện nay, tác giả đã thiết kế chế tạo Module dựa trên bộ biến đổi ADC 12 bit của hãng Analog Device AD574A đáp ứng đo đạc, điều khiển và xử lý tín hiệu cỡ ms. Bộ biến đổi ADC có độ chính xác cao, tốc độ biến đổi 10 ữ 25 às (microsec), nguồn cấp là ±12V, độ ổn định phù hợp với môi tr−ờng, có thể ứng dụng cho Module này và đặc biệt giá thành vừa phải để ta có thể sử dụng đ−ợc.
Chú ý rằng với mạch đo trong Module thì các tín hiệu biến đổi chậm nên ta không cần dùng mạch S&H mà đ−a thẳng vào ADC. Khi tín hiệu biến đổi nhanh theo thời gian (<25ns) thì phải đ−a tín hiệu qua mạch S&H thì tín hiệu số nhận đ−ợc sau ADC mới ổn định và chính xác.
b. Lựa chọn vi điều khiển.
ở Việt Nam trong thời gian qua, các bộ phận làm về lĩnh vực thiết kế hệ đo l−ờng điều khiển hoặc ứng dụng vi xử lý đều đi theo hai h−ớng: dùng các họ vi xử lý 8 bit cũ nh− 8085, Z80, CM6800, hoặc dùng các main-board của máy tính PC với các CPUx86. Đối với các hệ thống điều khiển làm việc trong môi tr−ờng nhiễu mạnh, việc sử dụng các họ x86 tốc độ cao không phù hợp vì khả
năng chống nhiễu kém, trong khi thực tế bài toán điều khiển lại không đòi hỏi tốc độ cao nh− vậy. Th−ờng Clock trong công nghiệp chỉ cần đến 30 MHz là đủ.
Từ những nhận định trên và thực tế ở Việt Nam hiện đang phổ biến nhất là 4 họ điều khiển 8 bit chính, đó là: Họ 68HC11 của Motorola, 8051 của Intel, Z8 của Zilog và PIC 16x của Microchip Technology. Mỗi loại trên đều có một tập lệnh và thanh ghi riêng nên chúng không t−ơng thích với nhau. Ngoài ra cũng còn có các bộ vi điều khiển 16 bit và 32 bit nh−ng không đ−ợc phổ biến.
Để có đ−ợc sự lựa chọn chính xác, ta phải dựa vào các tiêu chí sau:
- Tiêu chí đầu tiên khi lựa chọn một bộ vi điều khiển, đó là phải đáp ứng đ−ợc yêu cầu về tính toán một cách hiệu quả và kinh tế. Do vậy, tr−ớc hết cần xem xét bộ vi điều khiển 8 bit, 16 bit hay 32 bit là thích hợp. Một số tham số kỹ thuật cần đ−ợc cân nhắc khi lựa chọn 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 (vỏ dạng 2 hàng chân), kiểu QFP (vỏ vuông dẹt) hay là kiểu đóng vỏ khác ? Kiểu đóng vỏ quan trọng khi có 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êu thụ: Là tiêu chuẩn cần đặc biệt l−u ý nếu sản phẩm dùng pin hoặc ắc quy.
+ Dung l−ợng bộ nhớ RAM và ROM trên chip. + Số chân vào ra và bộ định thời trên chip.
+ Khả năng dễ dàng nâng cao hiệu suất cao hoặc giảm công suất tiêu thụ.
+ Giá thành trên một đơn vị khi mua số l−ợng lớn: Đây là một vấn đề có ảnh h−ởng đến giá thành cuối cùng của sản phẩm.
- Tiêu chí thứ hai khi lựa chọn bộ vi điều khiển là khả năng phát triển các sản phẩm nh− thế nào? Ví dụ, khả năng có sẵn các trình hợp dịch, gỡ rối, biên dịch ngôn ngữ C, mô phỏng, điều kiện hỗ trợ kỹ thuật cũng nh− khả năng sử dụng trong nhà và bên ngoài môi tr−ờng, trong môi tr−ờng khắc nghiệt hoặc ở trên biển. Trong nhiều tr−ờng hợp, sự hỗ trợ của nhà cung cấp thứ ba cũng hết sức quan trọng.
- Tiêu chí thứ ba là khả năng sẵn sàng đáp ứng về số l−ợng ở hiện tại cũng nh− ở t−ơng lai. Đối với một nhà thiết kế, vấn đề này còn quan trọng hơn cả hai tiêu chuẩn đầu tiên. Hiện nay, trong các họ vi điều khiển 8 bit hàng đầu thì 8051 có số l−ợng lớn nhất và có nhiều nhà cung cấp. Nhà cung cấp là nhà sản xuất bên cạnh nhà sáng chế bộ vi điều khiển. Đối với họ 8051 thì nhà sáng chế là Intel, nh−ng hiện nay có rất nhiều hãng khác nhau cùng sản xuất. Các hãng này bao gồm: Intel, Atmel, Philips/Signetics, AMD, Siemens, Matra và Dallas, Semiconductior. Cũng l−u ý rằng, Motorola, Zilog và Microchip Technology đã dành một l−ợng dự trữ lớn để đảm bảo về mặt thời gian cho các sản phẩm. Trong những năm gần đây, các hãng trên cũng đã bắt đầu bán th− viện vi điều khiển cho ASIC. Xét theo các tiêu chí đã đề cập ra ta thấy họ One-chip MCS-51 của Intel do hãng Atmel Corporation sản xuất loại AT89Cxx là phù hợp nhất và quyết định chọn để sử dụng cho Module
c. Hiển thị LCD.
Trong những năm gần đây, màn hình tinh thể lỏng LCD (Liquid Crystal Display) ngày càng đ−ợc sử dụng rộng rãi và đang dần thay thế các đèn LED (7 đoạn và nhiều đoạn). Đó là vì các nguyên nhân sau:
- Khả năng hiển thị số, ký tự và đồ hoạ tốt hơn nhiều so với đèn LED (LED chỉ hiển thị đ−ợc số và một số ký tự).
- Sử dụng thêm một bộ điều khiển làm t−ơi LCD và nh− vậy giải phóng CPU khỏi công việc này. Còn đối với đèn LED luôn cần CPU (hoặc bằng cách nào đó) để duy trì việc hiển thị dữ liệu.
- Dễ dàng lập trình các ký tự đồ hoạ.
Trong bản thiết kế này, với số l−ợng giá trị cần hiển thị không cần nhiều nên tác giả đã chọn LCD loại hiển thị 2 dòng, mỗi dòng có 40 ký tự trong đó 16 ký tự là hiển thị, còn 24 ký tự không hiển thị. LCD có 14 chân, 3 chân cung cấp nguồn, 3 chân điều khiển, 8 đ−ờng dữ liệu.
d. Các phần tử khác.
Các phần tử khác cho module nh− điện trở, tụ điện, diode, bộ khuyếch đại... cần có độ chính xác cao. Đặc biệt là bộ khuyếch đại phải đ−ợc chọn có thể điều khiển đ−ợc độ lệch offset điểm “0”.
2.2.2.2. Giải pháp tích hợp cho Module
a. Giải pháp tích hợp phần cứng
Sau khi đã lựa chọn một số phần tử cơ bản của module, việc tích hợp module đ−ợc thực hiện một cách dễ dàng. Tuy nhiên trong khâu thiết kế mạch việc sắp xếp các linh kiện phải khoa học tránh làm nhiễu nội bộ trên mạch. Hình d−ới là sơ đồ mạch nguyên lý phần cứng của Module.
Khối chuẩn hoá và lọc thông
Tín hiệu điện áp U và dòng I đ−ợc đ−a vào biến áp và biến dòng đo l−ờng trong Module đo vạn năng với điện áp vào 0-12V và 0-20mA. Các tín hiệu này là tín hiệu xoay chiều nh−ng có rất nhiều nhiễu do đó cần lọc thông thấp với tần số cắt là fcắt= 50Hz để đ−ợc tín hiệu hình sin. Chú ý rằng dòng điện I cần đ−ợc đ−a về dạng áp rồi mới đ−a vào bộ chuẩn hoá và lọc thông.
Khối chỉnh l−u
Nhằm khử tính phi tuyến của diode do đặc tính Vol-Ampe ta sử dụng mạch chỉnh l−u chính xác dùng khuyếch đại thuật toán (àA741). Tín hiệu đ−a vào ADC có dải đo là 0-10V.
Mạch tạo xung
Mạch tạo xung báo ngắt dựa trên mạch so sánh khi so sánh tín hiệu đo với mức 0.1V. Tín hiệu xung kim đ−ợc đ−a vào bộ Vi điều khiển để đo tần số, pha và công suất.
Bộ chuyển đổi ADC574A
Tín hiệu U, I sau khi lọc, khuyếch đại, chỉnh l−u đ−ợc đ−a vào ADC574A có 12 bit Data và 3 đ−ờng điều khiển Status, R/C, CE. Việc chọn kênh đo do vi điều khiển điều khiển tín hiệu chọn kênh ở phần tử Mux-4051.
Dùng vi mạch giải mã bàn phím 74LS148 với 8 đầu vào, 3 đầu ra và 2 đầu báo ngắt phím theo s−ờn lên và s−ờn xuống. Module sử dụng có 3 phím do đó cần 3 đầu vào, 2 đầu ra và một đầu báo ngắt.
Ghép nối với LCD
Dùng loại LCD 2 dòng, mỗi dòng có 40 ký tự trong đó 16 ký tự là hiển thị còn 24 ký tự là không hiển thị. LCD có 14 chân, 8 chân đ−ờng dữ liệu và 3 chân điều khiển: RS, R/W và E.
Vi điều khiển
Sử dụng vi điều khiển 89C52
P0: Đ−ợc ghép nối với Data của ADC và LCD P2.0-P2.3: ghép nối với ADC (D8-D11). P2.4-P2.7: dùng cho điều khiển LCD và ADC. P3: dùng để điều khiển ngắt và truyền tin. P1: Đ−ờng điều khiển và chọn kênh
T0: ở chế độ 16 bit để đo pha và tần số.
Truyền tin RS485
Để ghép nối với máy tính hoặc mạng thông tin công nghiệp. b. Giải pháp phần mềm
Phần mềm của các Module đ−ợc lập trình theo hệ thời gian thực (real time). Nghĩa là vi điều khiển sau khi thực hiện các ch−ơng trình init khởi động (init các port, các bộ nhớ, các thanh ghi, các biến, init cho LCD, init cho các thiết bị ngoại vi khác) thì nó chỉ làm việc theo ngắt. Đây là một ý t−ởng mới! Một bộ vi điều khiển có thể phục vụ một số thiết bị.
Có hai ph−ơng pháp phục vụ thiết bị, đó là sử dụng ngắt và thăm dò (polling). ở ph−ơng pháp ngắt, mỗi khi có một thiết bị cần đ−ợc phục vụ thì thiết bị sẽ báo cho vi điều khiển bằng cách gửi một tín hiệu ngắt. Khi nhận đ−ợc tín hiệu này, bộ vi điều khiển ngừng mọi công việc đang thực hiện để chuyển sang phục vụ thiết bị. Ch−ơng trình đi cùng với ngắt đ−ợc gọi là trình phục vụ ngắt
handler). Đối với ph−ơng pháp thăm dò, bộ vi điều khiển liên tục kiểm tra tình trạng của thiết bị và khi điều kiện đ−ợc đáp ứng thì tiến hành phục vụ thiết bị. Sau đó, bộ vi điều khiển chuyển sang kiểm tra trạng thái của thiết bị tiếp theo cho đến khi tất cả đều đ−ợc phục vụ. Điểm mạnh của ph−ơng pháp ngắt là bộ vi điều khiển có thể phục vụ đ−ợc nhiều thiết bị, nh−ng dĩ nhiên là không cùng một thời điểm. Mỗi thiết bị có thể đ−ợc bộ vi điều khiển phục vụ dựa theo mức độ −u tiên đ−ợc gán. Song, lý do chính mà ph−ơng pháp ngắt đ−ợc −u chuộng hơn là vì, ph−ơng pháp thăm dò lãng phí đáng kể thời gian của bộ vi điều khiển do phải dò hỏi từng thiết bị, kể cả khi chúng không cần phục vụ. Giải pháp ngắt của Module đ−ợc thực hiện bằng cách chia toàn bộ công việc của Module thành 2 ch−ơng trình ngắt cơ bản: Ngắt ngoài INT0 phục vụ để đo dòng điện, ngắt ngoài INT1 phục vụ để đo điện áp đồng thời cũng dùng để phục vụ ngắt từ bàn phím khi yêu cầu đo tần số, pha, công suất từ bàn phím.
Phần mềm của Module là một cấu trúc mở, bao gồm các ch−ơng trình con Subroutine, mỗi một subroutine sẽ thực hiện một công việc, cách đánh địa chỉ linh hoạt và chuyên dụng. Do đó việc nâng cấp hoặc sửa chữa cho Module sẽ đ−ợc tiến hành một cách dễ dàng và thích hợp cho mỗi nhiệm vụ đo cho Module khác nhau.
Ngôn ngữ để lập trình cho vi điều khiển chủ yếu vẫn là ngôn ngữ Assembly và ngôn ngữ C sau đó đ−ợc các phần ch−ơng trình biên dịch chuẩn chuyển sang ngôn ngữ máy và nạp cho vi điều khiển. Ngôn ngữ Assembly là ngôn ngữ bậc thấp nên ta có thể can thiệp rất sâu vào mã máy, cho phép ng−ời lập trình hiểu rõ cấu trúc phần cứng, chủ động sáng tạo trong thiết kế. Đối với Module này việc sử dụng phần mềm trong đo l−ờng tính toán, xử lý sai số, tự động chọn thang đo... t−ơng đối lớn và cần tốc độ nhanh nên tác giả đã chọn ngôn ngữ Assembly quen thuộc để lập trình cho vi điều khiển.