MỤC LỤC
NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN 3
NHẬN XÉT CỦA GIÁO VIÊN PHẢN BIỆN 4
GIỚI THIỆU CHUNG 6
1.1. Đặt vấn đề. 6
1.2 Mục đích, yêu cầu của đề tài. 6
CHƯƠNG I: CƠ SỞ VỀ ĐO ĐIỆN TRỞ
1. Nguyên lý đo điện trở 7
2. Các phương pháp đo điện trở .7
3. Hướng nghiên cứu đề tài .18
CHƯƠNG II: XỬ LÝ THÔNG TIN ĐO
2.1. Giới Thiệu về VĐK PIC 16F877A 19
1.Sơ đồ chân PIC 16F877A. 19
2.Một vài thông số về PIC 16F877A. 20
3.Tổ chức bộ nhớ. 20
4. Các thanh ghi đặc biệt 22
5.Các cổng xuất nhập. 30
6. Hoạt động định thời 38
2.2. Bộ chuyển đổi tương - tự số ADC của PIC 16F877A 43
CHƯƠNG III: THIẾT KẾ HỆ THỐNG
3.1.Sơ đồ cấu trúc hệ thống. 45
3.2.Mô tả hoạt động của hệ thống. 45
3.3.Cấu trúc và hoạt động của từng khối. 45
3.4.Lưu đồ thật toán chương trình chính. 52
CHƯƠNG IV: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN CỦA ĐỀ TÀI
4.1.Kết luận. 53
4.2.Hướng phát triển của đề tài. 54
PHỤ LỤC 55
LỜI NÓI ĐẦU
Ngày nay sự phát triển mạnh mẽ và mang tính vượt bậc của khoa học kỹ thuật đã làm nền tảng vững chắc thúc đẩy các ngành kinh tế, xã hội của con người tiến lên một tầm cao mới. Gắn liền với sự phát triển của ngành khoa học kỹ thuật thì ngành kỹ thuật điện tử và điện tử công nghiệp cũng có bước phát triển. Kỹ thuật vi xử lí được phát triển mạnh dựa trên những tiến bộ của ngành vật liệu điện tử và máy tính điện tử. Từ những thời gian đầu phát triển kỹ thuật vi xử lí đã cho thấy sự ưu việt của nó và cho tới ngày nay tính ưu việt đó ngày càng được khẳng định thêm. Những thành tựu của nó đóng góp một phần không nhỏ đáp ứng nhu cầu ước muốn của con người .
Trong quá trình học tập tại trường ĐHSPKT Hưng Yên những kiến thức chung cơ bản về chuyên ngành đã được các Thầy trong khoa Điện - Điện tử nhiệt tình giảng dạy. Được sự hướng dẫn của thầy giáo PHẠM NGỌC THẮNG chúng em đã được thiết kế đề tài: “Thiết kế Ohmmeter hiện thị số ”Trong quá trình nghiên cứu và thực hiện đề tài với sự nhiệt tình giúp đỡ của thầy giáo PHẠM NGỌC THẮNG và các thầy, cô trong khoa, nhóm em đã hoàn thành đề tài của mình. Chúng em xin chân thành cảm ơn!
58 trang |
Chia sẻ: lvcdongnoi | Lượt xem: 3385 | Lượt tải: 1
Bạn đang xem trước 20 trang tài liệu Đề tài Thiết kế Ohmmeter hiện thị số, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
MỤC LỤC
LỜI NÓI ĐẦU
Ngày nay sự phát triển mạnh mẽ và mang tính vượt bậc của khoa học kỹ thuật đã làm nền tảng vững chắc thúc đẩy các ngành kinh tế, xã hội của con người tiến lên một tầm cao mới. Gắn liền với sự phát triển của ngành khoa học kỹ thuật thì ngành kỹ thuật điện tử và điện tử công nghiệp cũng có bước phát triển. Kỹ thuật vi xử lí được phát triển mạnh dựa trên những tiến bộ của ngành vật liệu điện tử và máy tính điện tử. Từ những thời gian đầu phát triển kỹ thuật vi xử lí đã cho thấy sự ưu việt của nó và cho tới ngày nay tính ưu việt đó ngày càng được khẳng định thêm. Những thành tựu của nó đóng góp một phần không nhỏ đáp ứng nhu cầu ước muốn của con người .
Trong quá trình học tập tại trường ĐHSPKT Hưng Yên những kiến thức chung cơ bản về chuyên ngành đã được các Thầy trong khoa Điện - Điện tử nhiệt tình giảng dạy. Được sự hướng dẫn của thầy giáo PHẠM NGỌC THẮNG chúng em đã được thiết kế đề tài: “Thiết kế Ohmmeter hiện thị số ”Trong quá trình nghiên cứu và thực hiện đề tài với sự nhiệt tình giúp đỡ của thầy giáo PHẠM NGỌC THẮNG và các thầy, cô trong khoa, nhóm em đã hoàn thành đề tài của mình. Chúng em xin chân thành cảm ơn!
Hưng yên ngày … tháng … năm 2011
Nhóm sv: Nguyễn Phúc Huy
Nguyễn Trọng Lượng
Đoàn Thị Minh Lượng
NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN
…………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………
Hưng Yên, Ngày…. tháng ... năm....
Giáo viên hướng dẫn:
Phạm Ngọc Thắng
NHẬN XÉT CỦA GIÁO VIÊN PHẢN BIỆN
……………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………................................................……………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………..............................................................................................................................................................................................................………………………..........................
Hưng Yên, Ngày…. tháng ...năm ...
Giáo viên phản biện:
ĐỒ ÁN MÔN HỌC
Tên đề tài : “Thiết kế Ohmmeter hiện thị số ”
Nội dung cần hoàn thành:
THUYẾT MINH
Giới Thiệu Chung
Chương I: Các phương pháp đo điện trở R
Chương II: Xử lý thông tin đo
Chương IV: Thiết kế mạch Ohmmet
Chương V: Kết luận
MÔ HÌNH MẠCH THIẾT KẾ.
GIỚI THIỆU CHUNG
Đặt vấn đề.
Với những yêu cầu trong sản xuất công nghiệp cũng như trong đời sống sinh hoạt hàng ngày việc tính toán cân đo, đếm các loại sản phẩm, mặt hàng hay đo lường các giá trị, thông số của các thiết bị hay đo giá trị của từng linh kiện rời lẻ với độ chính xác đòi hỏi cao, dải trị số đo phải lớn để đáp ứng được nhu cầu, tính chất của công việc cũng như trong cuộc sống sinh hoạt thường ngày.
Với những yêu cầu như trên, lĩnh vực Điện tử số ngày càng đóng vai trò quan trọng trong các ngành công nghiệp cũng như các lĩnh vực của đời sống xã hội. Qua thời gian làm việc thực tế tại các công ty cùng với những tìm hiểu thực tế chúng em nhận thấy rằng nhu cầu về Điện tử số, ứng dụng vi điều khiển,tự động hóa ngày càng đóng vai trò quan trọng và rất cần thiết. Theo cùng với nó là ứng dụng của kỹ thuật đo lường vào các thiết bị kỹ thuật cao ngày càng đòi hỏi song song với các thiết bị tự động đó. Kỹ thuật đo lường còn đóng vai trò quan trọng trong các ngành nghề kỹ thuật cao đòi hỏi độ chính xác như công nghệ vi điện tử, và một số các bộ phận của viễn thông.
Ở phạm vi chương trình môn học và khả năng nghiên cứu, với sự giúp đỡ của thầy giáo PHẠM NGỌC THẮNG chúng em đã tiến hành nghiên cứu và thực hiện đề tài: “Thiết kế Ohmmeter hiện thị số ” với mong muốn được hiểu sâu hơn về kỹ thuật đo lường sử dụng vi điều khiển, từ đó chúng em được trang bị thêm cơ sở nền tảng cho hướng phát triển nghiên cứu tiếp theo.
Mục đích, yêu cầu của đề tài.
Đề tài của chúng em thực hiện việc thiết kế, chế tạo mô hình Ohmmeter hiển thị số trên LCD. Dải đo từ 0 đến 10KΩ
Trong đồ án này chúng em lựa chọn mạch đo điên trở dựa trên phương pháp biến đổi thẳng nhờ một mạch phân áp, tín hiệu điện áp được đưa vào bộ chuyển đổi và được vi điều khiển xử lý thông tin đo.
Từ đây suy ra mục đích, yêu cầu của đề tài:
* Mục đích: - Nắm được phương pháp đo điện trở
- Biết ứng dụng Vi Điều Khiển để thiết kế được mạch thực tế
* Yêu cầu: - Giá trị đo phải chính xác, có độ sai số nhỏ
- Bộ phận hiển thị phải rõ ràng
- Mạch điện không quá phức tạp, hoạt động ổn định
CHƯƠNG I: CƠ SỞ VỀ ĐO ĐIỆN TRỞ
1. Nguyên lý đo điện trở
Trong các thiết bị điện tử dùng rất nhiều điện trở các loại, các cỡ với dải trị số rất rộng. Từ cuộn dây có trị số vài Ôm đến điện trở cách điện hay điện trở rò giữa các phiến của tụ điện lên tới hàng trăm Mêga Ôm. Còn các điện trở lẻ thì có trị số từ vài Ôm đến vài chục Mêga Ôm. Có nhiều phương pháp đo điện trở, mỗi phương pháp phù hợp với từng cỡ trị số điện trở và cho các sai số khác nhau
Các phương pháp chính là: - Phương pháp Vôn mét
Phương pháp Vôn – Ampe mét
Phương pháp Ôm mét
Phương pháp biến đổi thẳng
Phương pháp so sánh
Trước hết chúng ta xem xét tác động của cái thử liền mạch. Bất kỳ mạch nào cũng phải đảm bảo liên tục cho dòng điện chạy qua. Vì vậy có thể thử mạch điện xem có liên tục không, để biết nó có bình thường hay không. Người ta dùng nhiều kiểu thử liền mạch để thử mạch điện. Kiểu đơn giản nhất được mô tả bởi sơ đồ:
Nếu chấm hai que đo vào hai đầu mạch mà đèn sáng thì chứng tỏ vẫn liền mạch
Kiểu này cũng có thể kiểm tra cuộn cảm, điểm tiếp xúc ...v.v..
Nếu thay đèn báo bằng điện kế khung quay thì tốt hơn cả. Khi mạch đo nối tắt hoặc chập hai que đo với nhau thì kim lên hết thang đo. Tùy theo điện trở ở giữa hai que đo lớn hay nhỏ mà dòng điện chạy qua khung đồng hồ nhỏ hay lớn và kim chỉ thị lên ít hay nhiều. Đó là nguyên lý cơ bản của mạch đo điện trở trong các đồng hồ vạn năng.
2. Các phương pháp đo điện trở
Các phương pháp gián tiếp:
Đo điện trở bằng vônmét và ampemét
Đo điện trở bằng vônmét và điện trở mẫu R0
Đo điện trở Rx bằng một ampemét và điện trở mẫu (R0)
Các phương pháp trực tiếp: sử dụng Ôm kế (Ohmmeter).
Ôm kế nối tiếp
Ôm kế song song
Phương pháp so sánh
Dùng cầu Wheatstone cân bằng
Dùng cầu Wheatstone không cân bằng
2.1. Đo điện trở bằng vônmét và ampemét
Dựa vào số chỉ của ampemét và vônmét xác định được giá trị điện trở R'x
Giá trị thực Rx của điện trở cần đo và sai số
Hình (a) Hình (b)
Ở hình (a)
Ở hình (b)
2.2.Đo điện trở bằng vônmét và điện trở mẫu R0
Điện trở Rx cần đo mắc nối tiếp với điện trở mẫu R0 (có độ chính xác cao) và nối vào nguồn U.
Dùng vônmét đo điện áp rơi trên Rx là Ux và điện áp rơi trên điện trở mẫu là U0.
Dựa trên giá trị các điện áp đo được tính ra giá trị điện trở cần đo Rx
Sai số của phép đo điện trở này bằng tổng sai số của điện trở mẫu R0 và sai số của vônmét
Sơ đồ mạch đo
2.3. Đo điện trở bằng ampemét và điện trở mẫu R0
Điện trở Rx cần đo nối song song với điện trở mẫu R0 và mắc vào nguồn cung cấp U.
Dùng ampemét lần lượt đo dòng điện qua Rx là Ix và dòng qua R0 là I0.
Dựa trên giá trị các dòng điện đo được tính ra giá trị điện trở cần đo Rx.
Sai số của phép đo này bằng tổng sai số của điện trở mẫu R0 và sai số của ampemét
Sơ đồ mạch đo
2.4 Đo điện trở sử dụng Ôm kế (Ohmmeter).
Nguyên lý của ôm kế: xuất phát từ định luật Ôm (Ohm’s Law):
Nếu giữ cho điện áp U không thay đổi thì dựa vào sự thay đổi dòng điện qua mạch khi điện trở thay đổi có thể suy ra giá trị điện trở cần đo.
Cụ thể nếu dùng mạch đo dòng điện được khắc độ theo điện trở R thì có thể trực tiếp đo điện trở R.
Phân loại ôm kế: phụ thuộc vào cách sắp xếp sơ đồ mạch đo của ôm kế có thể chia ôm kế thành hai loại:
Ôm kế nối tiếp
Ôm kế song song
2.4.1.Đo điện trở Ôm kế nối tiếp
Là ôm kế có điện trở cần đo Rx được nối tiếp với cơ cấu chỉ thị từ điện
Dùng để đo các điện trở có giá trị Ω trở lên. Dòng điện qua cơ cấu chỉ thị
R1 điện trở chuẩn của tầm đo
Rm điện trở nội của cơ cấu
Phần tử điện trở đo RX không có năng lượng (đo nguội ) mạch đo sẽ sử dụng nguồn pin riêng (Eb)
2.4.2. Ôm kế sơ đồ song song
Bộ phận chỉ thị của ôm kế nối song song với điện trở cần đo
Dùng để đo điện trở tương đối nhỏ (Rx< kΩ)
Khi Rx = ∞ (chưa mắc Rx vào mạch đo) thì dòng qua chỉ thị sẽ lớn nhất
(Ict = Ictmax = Ictđ.m).
Nếu Rx ≈ 0 thì hầu như không có dòng qua cơ cấu chỉ thị: Ict ≈ 0.
Điều chỉnh thang đo của ôm kế khi nguồn cung cấp thay đổi bằng cách dùng chiết áp RM.
Điện trở vào của ôm kế RW
Đặc tính khắc độ của ôm kế song song được xác định bởi tỉ số: Ix/Ict
2.4.3. Ôm kế nối tiếp phương pháp cân chỉnh Ohmmet
Sai số của ôm kế do nguồn cung cấp: từ biểu thức tính Im thấy rằng độ chỉ của ôm kế rất phụ thuộc vào nguồn cung cấp Eb thường bằng pin hoặc ắcquy, nếu nguồn thay đổi giá trị sẽ gây sai số rất lớn.
Hạn chế sai số do nguồn bằng cách đưa vào sơ đồ cấu trúc của đồng hồ đo một chiết áp hoặc biến trở R2 để chỉnh zêrô khi Rx = 0. Có các cách mắc R2 sau:
biến trở R2 mắc nối tiếp với cơ cấu chỉ thị
biến trở R2 mắc song song với cơ cấu chỉ thị
Như vậy, trước khi đo ta phải ngắn mạch AB ( nối tắt điện trở RX - động tác chặp 2 que đo ) và điều chỉnh R2 ( nút Adj của đồng hồ VOM ) để cho kim chỉ thị của Ohm kế chỉ 0Ω
2.4.4. Phương pháp cân chỉnh Ohmmet biến trở R2 mắc song song với cơ cấu chỉ thị
Mỗi lần đo ta cho Rx à 0 bằng cách điều chỉnh R2 để cho:
Việc chỉnh giá trị điện trở R2 có tác dụng khi Eb có sự thay đổi thì sự chỉ thị giá trị điện trở Rx sẽ không thay đổi.
Ví dụ : Cho mạch điện đo điện trở như sơ đồ bên . Biết rằng Eb = 1.5V ; R1 = 15 kΩ ; Imax = 50 A và Rm = R2 = 1 kΩ
Xác định giá trị của điện trở RX khi dòng điện qua cơ cấu đo là Im = Imax
Xác định giá trị của điện trở RX khi dòng điện qua cơ cấu đo là 25 mA
Nguyên tắc: chuyển từ giới hạn đo này sang giới hạn đo khác bằng cách thay đổi điện trở vào của ôm kế một số lần xác định sao cho khi Rx = 0 kim chỉ thị vẫn bảo đảm lệch hết thang đo (nghĩa là dòng qua cơ cấu chỉ thị bằng giá trị định mức của cơ cấu từ điện đã chọn).
Thường mở rộng giới hạn đo của ôm kế bằng cách dùng nhiều nguồn cung cấp và các điện trở phân nhánh dòng (điện trở shunt) cho các thang đo khác nhau.
2.4.5. Phương pháp mở rộng thang đo Ohmmet
2.5. Đo điện trở Phương pháp so sánh
Dùng cầu đo Wheatstone để xác định giá trị điện trở được chính xác hơn và thường được dùng trong phòng thí nghiệm
Có hai loại cầu là
Cầu đơn (Wheatstone): thường dùng cầu đơn để đo các điện trở có giá trị trung bình hoặc giá trị lớn.
Cầu kép (Kelvin) được sử dụng cầu kép để đo điện trở nhỏ và rất nhỏ.
1. Đo điện trở dùng cầu đơn (Wheatstone)
Chỉnh các giá trị điện trở R1 , R2 , R3 cho đến khi điện kế G chỉ zero
Để cầu Wheatstone cân bằng , ta thay đổi tỷ số giữa R1/ R2 và thay đổi giá trị điện trở R3.
R1 , R2 , R3 là các điện trở mẫu
G là điện kế chỉ thị 0
RX là điện trở cần đo
Khi R3 = R2 thì Rx = R1à thường R1 có độ chính xác cao, nhiều mức điều chỉnh và được khắc độ trực tiếp
Ưu điểm: kết quả đo điện trở RX không phụ thuộc vào nguồn cung cấp cho mạch điện.
Nhược điểm: thao tác phức tạp, độ chính xác phụ thuộc vào điện kế G và các điện trở mẫu.
* Đo điện trở mở rộng thang đo cầu đơn (Wheatstone)
Có thể mở rộng giới hạn đo của cầu bằng cách tạo ra R3 có nhiều giá trị lớn nhỏ hơn nhau 10 lần
R5 là chiết áp điều chỉnh độ nhạy của chỉ thị.
Cho K ở vị trí 1 để chỉnh thô, bảo vệ quá dòng cho chỉ thị (những lúc không thể cân bằng cầu do dòng quá lớn)
Cho K ở vị trí 2 để chỉnh tinh sao cho cầu cân bằng hoàn toàn.
Tuỳ vào dải giá trị điện áp cần đo chọn giá trị của R3 phù hợp bằng cách xoay công tắc.
Phải chọn điện áp cung cấp sao cho ở bất kỳ vị trí điều khiển nào và với bất kỳ điện trở Rx thì dòng qua chỉ thị không vượt quá dòng cho phép của chỉ thị.
2.Đo điện trở dùngcầuđôi (Kelvin)
Cầu đôi để đo điện trở nhỏ (khoảng dưới 1Ω) thường không thuận tiện và sai số lớn vì bị ảnh hưởng của điện trở nối dây và điện trở tiếp xúc...à sử dụng cầu kép để đo điện trở nhỏ và rất nhỏ.
các điện trở R1; R2; R3; R4 và R là điện trở của các nhánh cầu ;
Rx là điện trở cần đo và
R0 là điện trở mẫu chính xác cao
Để tránh điện trở tiếp xúc khi nối các điện trở vào mạch bằng cách chế tạo R0 và Rx dưới dạng các điện trở 4 đầu.
Đo Rx chỉ cần thay đổi giá trị R0 và tỉ số R1 / R2 để cân bằng cầu.
2.6. Phương pháp đo biến đổi thẳng
Là phương pháp đo có sơ đồ cấu trúc theo kiểu biến đổi thẳng, nghĩa là không có khâu phản hồi.
Trước tiên đại lượng cần đo X được đưa qua một hay nhiều khâu biến đổi và cuối cùng được biến đổi thành số Nx. Còn đơn vị của đại lượng đo X0 cũng được biến đổi thành số N0 (ví dụ khắc độ trên mặt dụng cụ đo tương tự). Quá trình này được gọi là quá trình khắc độ theo mẫu N0 được ghi nhớ lại. Sau đó diễn ra quá trình so sánh giữa đại lượng cần đo với đơn vị của chúng. Quá trình này được thực hiện bằng một phép chia Nx/N0. Kết quả đo được thể hiện bằng biểu thức được cụ thể hóa như sau:
Quá trình đo như vậy được gọi là quá trình đo biến đổi thẳng. Thiết bị đo thực hiện quá trình này gọi là thiết bị đo biến đổi thẳng. Trong thiết bị này tín hiệu đo X và X0 sau khi qua khâu biến đổi BĐ (có thể là một hay nhiều khâu nối tiếp ) đưa đến bộ biến đổi tương tự số A/D ta có Nx và N0. Sau khi nhân với đơn vị X0 ta nhận được kết quả đo như ở biểu thức như trên.Dụng cụ đo biến đổi thẳng thường có sai số tương đối lớn vì tín hiệu qua các khâu biến đổi sẽ có sai số bằng tổng các sai số của các khâu. Vì thế thường sử dụng dụng cụ đo kiểu này ở các nhà máy, xí nghiệp công nghiệp để đo và kiểm tra các quá trình sản xuất với độ chính xác yêu cầu không cao lắm.
2.7. Phương pháp đo kiểu so sánh
Là phương pháp đo có sơ đồ cấu trúc theo kiểu mạch vòng nghĩa là có khâu phản hồi.
Trước tiên đại lượng đo X và đại lượng mẫu X0 được biến đổi thành một đại lượng vật lý nào đó (ví dụ dòng hay áp chẳng hạn) thuận tiện cho việc so sánh. Quá trình so sánh được diễn ra trong suốt quá trình đo. Khi hai đại lượng bằng nhau ta đọc kết quả ở mẫu sẽ suy ra giá trị đại lượng cần đo. Quá trình đo như vậy gọi là quá trình đo kiểu so sánh. Thiết bị đo thực hiện quá trình này gọi là thiết bị đo kiểu so sánh (hay thiết bị bù).Hình vẽ trên chỉ rõ sơ đồ khối của một thiết bị đo như vậy. Tín hiệu đo X được so sánh với một tín hiệu XK tỉ lệ với đại lượng mẫu X0. Qua bộ biến đổi số - tương tự D/A tạo ra tín hiệu XK. Qua bộ so sánh ta có:
Tùy thuộc vào cách so sánh mà ta có các phương pháp sau đây:
- So sánh cân bằng: Là phép so sánh mà đại lượng cần đo X và đại lượng mẫu
X0 sau khi biến đổi thành đại lượng XK được so sánh với nhau sao cho luôn có
∆X = 0 tức là:
Như vậy thì XK là một đại lượng thay đổi sao cho khi X thay đổi luôn đạt được kết quả ở (1.4). Nghĩa là phép so sánh luôn ở trạng thái cân bằng. Trong trường hợp này độ chính xác của phép đo phụ thuộc vào độ chính xác của XK và độ nhạy của thiết bị chỉ thị cân bằng. Ví dụ: Cầu đo, điện thế kế cân bằng…
- So sánh không cân bằng: Nếu đại lượng XK là một đại lượng không đổi, lúc đó ta có:
Nghĩa là kết quả của phép đo được đánh giá theo đại lượng ∆X .Tức là biết trước XK, đo ∆X có thể suy ra X = XK + ∆X.
Rõ ràng phép đo này có độ chính xác phụ thuộc vào phép đo ∆X, mà giá trị ∆X càng nhỏ (so với X) thì độ chính xác phép đo càng cao. Phương pháp này thường được sử dụng để đo các đại lượng không điện như đo nhiệt độ, đo ứng suất… So sánh không đồng thời: Việc so sánh được thực hiện như sau: Đầu tiên dưới tác động của đại lượng đo X gây ra một trạng thái nào đó trong thiết bị đo. Sau đó thay X bằng đại lượng mẫu XK sao cho trong thiết bị đo cũng gây ra đúng trạng thái như khi X tác động, trong điều kiện đó rõ ràng ta có X = XK. Khi đó độ chính xác của X hoàn toàn phụ thuộc vào độ chính xác của XK. Phương pháp này chính xác vì khi thay XK bằng X ta vẫn giữ nguyên mọi trạng thái của thiết bị đo và loại được mọi ảnh hưởng của điều kiện bên ngoài đến kết quả đo.
3. Hướng nghiên cứu đề tài
Cơ sở lý thuyết của các phương pháp đo điện trở ở trên được đưa ra làm nền tảng định hướng cho các nghiên cứu đo lường sử dụng công nghệ tương tự với cơ cấu chỉ thị cơ. Ngày nay, khoa học công nghệ phát triển, công nghệ số cũng phát triển mạnh và dần trở thành xu hướng của thời đại, nhất là sử dụng vi xử lý, vi điều khiển, các thiết bị khả trình để tạo ra các thiết bị đo lường số có độ chính xác, gọn nhẹ và dễ xử dụng.
Ở đề tài này chúng em được thầy Phạm Ngọc Thắng định hướng và chúng em phát triển ý tưởng thiết kế Ohmmeter dùng vi điều khiển PIC 16F877A.
Đo điện trở bằng mạch phân áp và dùng bộ chuyển đổi ADC để xử lý thông tin đo, dùng vi điều khiển PIC thông qua chương trình được lập sẽ đưa ra hiển thị giá trị cần đo trên LCD.
Dựa trên cơ sở của các phương pháp đo đã trình bày ở trên chúng em đã chọn phương pháp đo biến đổi thẳng vì:
- phương pháp này dễ thực hiện với điều kiện và khả năng của chúng em
- Mạch không quá phức tạp, dễ hiểu, dễ lắp ráp và lập trình phù hợp với thời gian, tiến độ học tập.
Tuy nhiên, phương pháp này có nhược điểm là độ chính xác chưa cao, xử lý sai số chưa tốt.
CHƯƠNG II: XỬ LÝ THÔNG TIN ĐO
Một số linh kiện sử dụng để xử lý thông tin đo.
2.1. Giới thiệu về vi điều khiển PIC 16F877A
1 . Sơ đồ chân của vi điều khiển PIC16F877A
2. Một vài thông số về vi điều khiển PIC 16F877A
Đây là vi điều khiển thuộc họ PIC16Fxxx với tập lệnh gồm 35 lệnh có độ dài 14 bit. Mỗi lệnh đều được thực thi trong một chu kỳ xung clock. Tốc độ hoạt động tối đa cho phép là 20MHz với một chu kỳ lệnh là 200ns. Bộ nhớ chương trình 8Kx14 bit, bộ nhớ dữ liệu 368x8 byte RAM và bộ nhớ dữ liệu EEPROM với dung lượng 256x8 byte. Số Port I/O là 5 với 33 chân I/O.
Các đặc tính ngoại vi bao gồm các khối chức năng sau:
Timer0: Bộ đếm 8 bit với bộ chia tần số 8 bit .
Timer1: Bộ đêm 16 bit với bộ chia tấn số, có thể thực hiện chức năng đếm dựa vào xung clock ngoại vi ngay khi vi điều khiển hoạt động ở chế độ sleep.
Timer2: : Bộ đếm 8 bit với bộ chia tần số, bộ postcaler. Hai bộ Capture/so sánh/ điều chế độ rộng xung.
Các chuẩn giao tiếp nối tiếp SSP(Synchronous Serial Port), SPI và I2C.
Chuẩn giao tiếp nối tiếp USART với 9 bit địa chỉ.
Cổng giao tiếp song song PSP(Parallel Slave Port) với các chân điều khiển RD,WR,CS ở bên ngoài.
Các đặc tính Analog: - 8 Kênh chuyển đổi ADC 10 bit.
- Hai bộ so sánh.
Bên cạnh đó là một vài đặc tính khác của vi điều khiển như:
Bộ nhớ flash với khả năng ghi xóa 100.000 lần.
Bộ nhớ EEPROM với khả năng ghi xóa được 1.000.000 lần.
Dữ liệu bộ nhớ EEPROM có thể lưu trũ trên 40 năm.
Khả năng tự nạp chương trình với sự điều khiển của phần mềm.
Nạp được chương trình ngay trên mạch điện ICSP (In Circuit Serial Programming) thông qua hai chân Watchdog Timer với bộ dao động trong.
Chức năng bảo mật mã chương trình.
- Chế độ Sleep.
- Có thể hoạt động với nhiều dạng Oscilator khác nhau
3. Tổ chức bộ nhớ
Cấu trúc bộ nhớ của vi điều khiển PIC16F877A bao gồm bộ nhớ chương trình (Program memory) và bộ nhớ dữ liệu ( Data Memory).
+ Bộ nhớ chương trình của vi điều khiển PIC 16F877A là bộ nhớ flash, dung lượng 8K word (1word = 14bit) và được phân thành nhiều trang ( từ page 0 đến page 3). Như vậy bộ nhớ chương trình có khả năng chứa được 8*1024 = 8192 lệnh ( vì một lệnh sau khi mã hóa sẽ có dung lượng 1Word (14 bit).
Để mã hóa được địa chỉ của 8K word bộ nhớ chương trình, bộ đếm chương trình có dung lượng 13 bit (PC ). Khi vi điều khiển được reset, bộ đếm chương trình sé chỉ đến địa chỉ 0000h (Reset vector). Khi có ngắt xảy ra, bộ đếm chương trình sẽ chỉ đến địa chỉ 0004h (Interrupt vector). Bộ nhớ chương trình không bao gồm bộ nhớ Stack và không được được địa chỉ hóa bởi bộ đếm chương trình.
+ Bộ nhớ dữ liệu của PIC là bộ nhớ EEPROM được chia làm nhiều Bank. Đối với PIC 16F877A bộ nhớ dữ liệu được chia ra làm 4 bank. Mỗi bank có dung lượng 128 byte, bao gồm các thanh ghi có chức năng đặc biệt SFR ( Special Function Register) nằm ở các vùng địa chỉ thấp và các thanh ghi mục đích chung GPR (General Purpose Register) nằm ở vùng địa chỉ còn lại trong bank. Các thanh ghi SFR thường xuyên được sử dụng ví dụ như thanh ghi STATUS sé được đặt ở tất các các bank của bộ nhớ dư liệu giúp thuận tiện tỏng quá trình truy xuất và làm giảm bớt lệnh của chương trình. Sơ đồ cụ thể của bộ nhớ dữ liệu PIC16F877A như sau:
4. Các thanh ghi chức năng đặc biệt
Các thanh ghi chức năng đặc biệt ( Special Funtion Resgister ) được sử dụng bởi
CPU và các bộ ngoại vi để điều khiển các hoạt động được yêu cầu của thiết bị. Những thanh ghi này có chức năng như RAM tĩnh . Danh sách những thanh ghi này được trình bày ở bảng dưới . Các thanh ghi chức năng đặc biệt có thể được chia thành hai loại : phần trung tâm (CPU ) và phần ngoại vi .
4.1.Thanh ghi trạng thái
Thanh ghi trạng thái chứa các trạng thái số học của bộ ALU , trạng thái RESET và những bit chọn dãy thanh ghi cho bộ nhớ dữ liệu . Thanh ghi trạng thái có thể là đích cho bất kì lệnh nào , giống như những thanh ghi khác . Nếu thanh ghi trạng thái là đích cho một lệnh mà ảnh hưởng đến các cờ Z, DC hoặc C , và sau đó những bit này sẽ được vô hiệu hoá . Những bit này có thể được set hoặc xoá tuỳ theo trạng thái logic của thiết bị . Hơn nữa hai bit TO và PD thì không cho phép ghi , vì vậy kết quả của một lệnh mà thanh ghi trạng thái là đích có thể khác hơn dự định .Ví dụ , CLRF STATUS sẽ xoá 3 bit cao nhất và đặt bit Z . Lúc này các bit của thanh ghi trạng thái là 000u u1uu ( u = unchanged ). Chỉ có các lệnh BCF, BSF, SWAPF và MOVWF được sử dụng để thay đổi thanh ghi
trạng thái , bởi vì những lệnh này không làm ảnh hưởng đến các bit Z, DC hoặc C từ thanh ghi trạng thái . Đối với những lệnh khác thì không ảnh hưởng đến những bit trạng thái này .
4.2. Thanh ghi OPTION_REG
Thanh ghi OPTION_REG là thanh ghi có thể đọc và ghi , mà chứa những bit điều khiển khác nhau để cấu hình cho bộ chia TMR0 / bô WDT , ngắt bên ngoài ( INT ) , TMR0
4.3 . Thanh ghi INTCON
Thanh ghi INTCON là thanh ghi có thể đọc hoặc ghi chứa các bit cho phép ngắt và các cờ ngắt .
4.4. Thanh ghi PIE1
Thanh ghi PIE1 chứa những bit cho phép ngắt riêng lẻ cho các thiết bị ngoại vi
4.5. Thanh ghi PIR1
Thanh ghi PIR1 chứa những bit cờ riêng lẻ cho các ngắt ngoại vi
4.6. Thanh ghi PIE2
Thanh ghi PIE2 chứa các bit cho phép ngắt riêng lẻ các thiết bị ngoại vi , ngắt xung đột bus SSP , và ngắt cho hoạt động ghi vào EEPROM .
4.7. Thanh ghi PCON
Thanh ghi PCON ( Power Control ) chứa các bit cờ cho phép sự lựa chọn khác nhau giữa Power-on Reset ( POR ) , Brown-out Reset ( BOR ) , Watchdog Reset và một reset ngoại MCLR
5.8. Ngăn xếp
Ngăn xếp của họ PIC16F87X có 8 mức và mỗi mức có độ rộng 13 bit . Chiều dài ngăn xếp khong phải là một phần không gian cuả chương trình hoặc dữ liệu và con trỏ ngăn xếp thì không chho phép đọc hoặc ghi . Bộ đếm chương trình ( PC ) được cất vào ngăn xếp khi lệnh thực hiện lệnh CALL , hoặc khi có một ngắt được yêu cầu . Ngăn xếp được lấy ra khi thực hiện các lệnh RETURN , RETLW hoặc RETFIE . PCLATH không bị ảnh hưởng bởi các lệnh PUSH hoặc POP. Hoạt động của ngăn xếp giống như vùng đệm vòng . Điều này có nghĩa là sau khi ngăn xếp đã cất vào 8 lần , lần cất vào thứ 9 sẽ được ghi chồng lên lần cất vào đầu tiên . Lần cất vào thứ mười sẽ được ghi chồng lên lần cất vào thứ hai ( và cứ như thế ) .
5. Các cổng xuất nhập của PIC 16F877A
5.1. PORTA và thanh ghi TRISA
PORTA có độ rộng 6 bit , là port vào ra hai chiều .Thanh ghi dữ liệu trực tiếp tương ứng là TRISA . Cho tất cả các bit của TRISA là 1 thì các chân tương ứng ở PORTA là ngõ vào. Cho tất cả các bit của TRISA là 0 thì các chân tương ứng ở PORTA là ngõ ra . Việc đọc các thanh ghi của PORTA sẽ đọc trạng thái của những chân , ngược lại việc ghi lên nó sẽ ghi qua port chốt . Tất cả những hoạt động ghi là các hoạt động đọc-điều chỉnh-ghi . Bởi vậy , dữ liệu được ghi đến port có nghĩa là những chân của port là đọc , giá trị được chỉnh sửa và được ghi vào port chốt dữ liệu . Chân RA4 được đa hợp với xung clock ngoài ở ngõ vào của Timer0 thành chân RA4/T0CKI. Chân RA4/T0CKI là ngõ vào có một Trigger Schmitt và một ngõ ra có dạng thoát mở . Tất cả những chân khác của PORTA có ngõ vào TTL và có ngõ ra điều khiển CMOS . Những chân khác của PORTA được đa hợp với ngõ vào tương tự và ngõ vào tương tự VREF . Hoạt động của mỗi chân được chọn bằng cách xoá hoặc đặt những bit điều khiển trong thanh ghi ADCON1 ( A/D Control Register1 ). Thanh ghi TRISA điều khiển hướng của những chân RA , ngay cả khi chúng được sử dụng như ngõ vào tương tự . Người sử dụng cần phải chắc rằng những bit trong thanh ghi TRISA luôn luôn được đặt khi sử dụng chúng như ngõ vào tương tự .
5.2. PORTB và thanh ghi TRISB
PORTB có độ rộng 8 bit , là port vào ra hai chiều . Ba chân của PORTB được đa hợp với chức năng lập trình mức điện thế thấp (Low Voltage Programming ) : RB3/PGM , RB6/PGC và RB7/PGD . Mỗi chân của PORTB có một điện trở kéo lên yếu ở bên trong. Một bit điều khiển đơn có thể mở tất cả những điện trở kéo lên này. Điều này được thực hiện bằng cách xóa bit RBPU(OPTION_REG) Những điện trở kéo lên này sẽ tự động tắt khi các chân của port được cấu hình như ngõ ra . Các điện trở này bị cấm khi có một Power-on Reset . Bốn chân của PORTB , RB7:RB4, có một ngắt để thay đổi đặc tính . Chỉ những chân được cấu hình như ngõ vào mới có thể gây ra ngắt này . Những chân vào ( RB7:RB4 ) được so sánh với giá trị được chốt trước đó trong lần đọc cuối cùng của PORTB. Các kết quả không phù hợp ở ngõ ra trên chân RB7: RB4 được OR với nhau để phát ra một ngắt Port Change RB với cờ ngắt là RBIF ( INTCON ). Ngắt này có thể đánh thức thiết bị từ trạng thái nghỉ( SLEEP ). Trong thủ tục phục vụ ngắt, người sử dụng có thể xóa ngắt theo cách sau:
a) Đọc hoặc ghi bất kì lên PORTB . Điều này sẽ kết thúc điều kiện không hòa hợp .
b) Xóa bit cờ RBIF .
5.3. PORTC và thanh ghi TRISC
PORTC có độ rộng là 8 bit , là port hai chiều . Thanh ghi dữ liệu trực tiếp tương ứng là TRISC . Cho tất cả các bit của TRISC là 1 thì các chân tương ứng ở PORTC là ngõ vào . Cho tất cả các bit của TRISC là 0 thì các chân tương ứng ở PORTC là ngõ ra. PORTC được đa hợp với vài chức năng ngoại vi , những chân của PORTC có đệm Trigger Schmitt ở ngõ vào . Khi bộ I2C được cho phép , chân 3 và 4 của PORTC có thể được cấu hình với mức I2C bình thường , hoặc với mức SMBus bằng cách sử dụng bit CKE (SSPSTAT) . Khi những chức năng ngoại vi được cho phép , chúng ta cần phải quan tâm đến việc định nghĩa các bit của TRIS cho mỗi chân của PORTC. Một vài thiết bị ngoại vi ghi đè lên bit TRIS để tạo nên một chân ở ngõ ra , trong khi những thiết bị ngoại vi khác ghi đè lên bit TRIS thì sẽ tạo nên một chân ở ngõ vào. Khi những bit TRIS ghi đè bị tác động trong khi thiết bị ngoại vi được cho phép, những lệnh đọc-thay thế-ghi ( BSF , BCF , XORWF ) với TRISC là nơi đến cần phải được tránh . Người sử dụng cần phải chỉ ra vùng ngoại vi tương ứng để đảm bảo cho việc đặt TRIS bit là đúng .
5.4 – PORTD và thanh ghi TRISD
PORTD và TRISD không có đối với PIC16F873 hoặc PIC16F876 . PORTD là port 8 bit với đệm Trigger Schmitt ở ngõ vào . Mỗi chân có thể được cấu hình riêng lẻ như một ngõ vào hoặc ngõ ra.PORTD có thể được cấu hình như port của bộ vi xử lý rộng 8 bit ( parallel slave port ) bằng cách đặt bit điều khiển PSPMIDE ( TRISE ).Trong chế độ này , đệm ở ngõ vào là TTL .
5.5 – PORTE và thanh ghi TRISE
PORTE và TRISE không có đối với PIC16F873 hoặc PIC16F876 . PORTE có ba chân (RE0/RD/AN5 , RE1/WR/AN6 , và RE2/CS/AN7 ) mỗi chân được cấu hình riêng lẻ như những ngõ vào hoặc những ngõ ra . Những chân này có đệm Trigger Schmitt ở ngõ vào . Những chân của PORTE đóng vai trò như những ngõ vào điều khiển vào ra cho port của vi xử lý khi bit PSPMODE ( TRISE ) được set . Trong chế độ này , người sử dụng cần phải chắc rằng những bit TRISE được set, và chắc rằng những chân này được cấu hình như những ngõ vào số . Cũng bảo đảm rằng ADCON1 được cấu hình cho vào ra số . Trong chế độ này , những đệm ở ngõ vào là TTL. Những chân của PORTE được đa hợp với những ngõ vào tương tự . Khi được chọn cho ngõ vào tương tự , những chân này sẽ đọc giá trị ‘0’ . TRISE điều khiển hướng của những chân RE chỉ khi những chân này được sử dụng như những ngõ vào tương tự . Người sử dụng cần phải giữ những chân được cấu hình như những ngõ vào khi sử dụng chúng như những ngõ vào tương tự .
5.6 . Parallel Slave Port
Parallel Slave Port ( PSP ) thì không có đối với PIC16F873 hoặc PIC16F876 . PORTD hoạt động như port phụ song song có độ rộng 8 bit hoặc port vi xử lý khi bit điều khiển PSPMODE (TRISE) được đặt . Trong chế độ phụ , nó được đọc và ghi
không đồng bộ thông qua tín hiệu điều khiển ở ngõ vào RD của chân RD RE / 0 và tín hiệu điều khiển ở ngõ vào WR của chân WR RE / 1 .PSP có thể ghép nối trực tiếp với bus dữ liệu của vi xử lý 8 bit . Bộ vi xử lý bên ngoài có thể đọc hoặc ghi vào chốt PORTD như bộ chốt 8 bit . Khi bit PSPMODE được đặt thì chân RD RE / 0 là ngõ vào RD, chân WR RE / 1 là ngõ vào WR và chân CS RE / 2 là ngõ vào CS (chọn chip ). Trong hoạt động này , những bit dữ liệu trực tiếp tương ứng của thanh ghi TRISE (TRISE ) phải được cấu hình như những ngõ vào . Những bit cấu hình của bộ A/D là PCFG3:PCFG0 ( ADCON1 ) phải được đặt để cấu hình cho những chân RE2:RE0 như I/O số . Thực tế có hai bộ chốt 8 bit : một cho dữ liệu ở ngõ ra và một cho dữ liệu ở ngõ vào . Người sử dụng có thể ghi dữ liệu 8 bit vào bộ chốt dữ liệu của PORTD và đọc dữ liệu từ bộ chốt ( chú ý rằng chúng có cùng địa chỉ ) . Trong chế độ này , thanh ghi TRISE được bỏ qua , khi những thiết bị ngoài đang điều khiển hướng của luồng dữ liệu . Hoạt động ghi vào PSP xuất hiện khi cả CS và WR được dò thấy ở mức thấp lần đầu tiên . Khi cả CS và WR trở về mức cao khi đó bit cờ trạng thái IBF ( Input Buffer Full ) ( TRISE ) được bật tại chu kỳ xung clock Q4 , chu kỳ kế tiếp là Q2 , báo hiệu việc ghi đã hoàn thành . Bit cờ ngắt PSPIF ( PIR1 ) cũng được bật tại chu kỳ xung clock Q4 . IBF chỉ có thể được xóa bằng cách đọc bộ chốt ngõ vào của PORTD. Bit cờ trạng thái IBOV ( Input Buffer Overflow ) (TRISE) được bật nếu lần ghi thứ hai vào PSP được thực hiện khi byte trước đó chưa được đọc ra khỏi vùng đệm . Hoạt động đọc từ PSP xuất hiện khi cả CS và RD được dò thấy ở mức thấp lần đầu tiên . bit cờ trạng thái OBF ( Output Buffer Full ) (TRISE ) bị xóa ngay lập tức báo hiệu rằng bộ chốt của PORTD đang chờ đọc dữ liệu bởi bus ngoại . Khi một trong hai chân CS và RD trở về mức cao, bit cờ ngắt PSPIF được bật tại chu kỳ xung clock Q4 , chu kỳ kế tiếp là Q2 , báo hiệu rằng việc đọc đã hòan thành . Bit OBF vẫn được giữ ở mức thấp cho đến khi dữ liệu được ghi vào PORTD bởi vi chương trình của người sử dụng .
Khi không hoạt động trong chế độ PSP , những bit IBF và OBF được giữ nguyên . Tuy nhiên nếu trước đó bit IBOV đã được bật nó phải được xóa bằng vi chương trình. Một ngắt được phát ra và được chốt vào bit cờ PSPIF khi hoạt động đọc hoặc ghi hoàn thành . Bit PSPIF phải được xóa bằng vi chương trình của người sử dụng và ngắt không được cho phép bằng cách xóa bit cho phép ngắt PSPIE ( PIE) .
6. Hoạt động định thời
I – Bộ định thời TIMER0
Bộ định thời/bộ đếm Timer0 có các đặc tính sau :
- Bộ định thời / bộ đếm 8 bit
- Cho phép đọc và ghi
- Bộ chia 8 bit lập trình được bằng phần mềm
- Chọn xung clock nội hoặc ngoại
- Ngắt khi có sự tràn từ FFh đến 00h
- Chọn cạnh cho xung clock ngoài
Bên dưới là sơ đồ khối của bộ định thời Timer0 và bộ chia dùng chung với WDT . Chế độ định thời (Timer) được chọn bằng cách xóa bit T0CS ( OPTION_REG ) . Trong chế độ định thời , bộ định thời Timer0 sẽ tăng dần sau mỗi chu kỳ lệnh ( không có bộ chia ) . Nếu thanh ghi TMR0 được ghi thì sự tăng sẽ bị ngăn lại sau hai chu kỳ lệnh.Chế độ đếm (Counter) được chọn bằng cách set bit T0SC ( OPTION_REG ) Trong chế độ đếm , Timer0 sẽ tăng dần ở mỗi cạnh lên hoặc cạnh xuống của chân RA4/T0CKI . Sự tăng cạnh được xác định bởi bit Timer0 Source Edge Select , T0SE (OPTION_REG ) . Bộ chia chỉ được dùng chung qua lại giữa bộ định thời Timer0 và bộ định thời Watchdog . Bộ chia không cho phép đọc hoặc ghi .
1 – Ngắt Timer0
Ngắt TMR0 được phát ra khi thanh ghi TMR0 tràn từ FFh đến 00h . Sự tràn này sẽ set bit T0IF (INTCON) . Ngắt này có thể được giấu đi bằng cách xóa đi bit T0IE (INTCON) . Bit T0IF cần phải được xóa trong chương trình bởi thủ tục phục vụ ngắt của bộ định thời Timer0 trước khi ngắt này được cho phép lại .
2 – Sử dụng Timer0 với xung clock ngoại
Khi bộ chia không được sử dụng , clock ngoài đặt vào thì giống như bộ chia ở ngõ ra. Sự đồng bộ của chân T0CKI với clock ngoài được thực hiện bằng cách lấy mẫu bộ chia ở ngõ ra trên chân Q2 và Q4. Vì vậy thưc sự cần thiết để chân T0CKI ở mức cao trong ít nhất 2 chu kỳ máy và ở mức thấp trong ít nhất 2 chu kỳ máy.
3 – Bộ chia
Thiết bị PIC16F87X chỉ có một bộ chia mà được dùng chung bởi bộ định thời 0 và bộ định thời Watchdog. Một khi bộ chia được ấn định cho bộ đinh thời 0 thì không có bộ chia cho bộ định thời Watchdog và ngược lại. Bộ chia không được đọc hoặc ghi. Các bit PSA và PS2:PS0 trong thanh ghi OPTION_REG xác đinh bộ chia được ấn định cho bộ định thời nào và tỉ số chia.
II - Bộ định thời TMR1 :
Bộ định thời 1 là một bộ định thời/bộ đếm 16 bit gồm hai thanh ghi TMR1H( byte cao) và TMR1L ( byte thấp ) mà có thể đọc hoặc ghi . Cặp thanh ghi này tăng số đếm từ 0000h đến FFFFh và một tràn sẽ xuất hiện khi có sự chuyển số đếm từ FFFFh xuống 0000h . Ngắt, nếu được phép có thể phát ra khi có số đếm tràn và được đặt ở bit cờ ngắt TMR1IF. Ngắt có thể được phép hoặc cấm bằng cách đặt hoặc xóa bit cho phép ngắt TMR1IE. Bộ định thời Timer1 có thể được cấu hình để hoạt động một trong hai chế độ sau:
- Định thời một khoảng thời gian ( Timer )
- Đếm sự kiện ( Counter )
Việc lựa chọn một trong hai chế độ được xác định bằng cách đặt hoặc xóa bit chọn clock TMR1CS. Trong chế độ định một khoảng thời gian, bộ định thời tăng số đếm lên sau mỗi chu kỳ lệnh. Trong chế độ đếm sự kiện, bộ định thời tăng sau mỗi cạnh lên của clock ngoài đặt vào. Bộ định thời 1 có thể được phép hoặc cấm bằng cách đặt hoặc xóa bit điều khiển TMR1ON
1 – Chế độ Timer
Chế độ Timer được chọn bằng cách xóa bit TMR1CS. Trong chế độ này, nguồn clock đặt vào Timer là mạch dao động FOSC/4. Bit điều khiển đồng bộ không bị tác động vì clock ngoài luôn luôn đồng bộ.
2 – Chế độ counter
Trong chế độ này, bộ định thời tăng số đếm qua nguồn clock ngoài. Việc tăng xảy ra sau mỗi cạnh lên của xung clock ngoài. Bộ định thời phải có một cạnh lên trước khi việc đếm bắt đầu.
III – Bộ định thời Timer2
Bộ định thời 2 là bộ định thời 8 bit với một bộ chia và một bộ Postscaler. Nó thường được dùng chung với bộ CCP trong chế độ PWM ( sẽ được đề cập ở phần sau ). Thanh ghi TMR2 có thể đọc hoặc ghi và được xóa khi có bất kỳ tín hiệu reset nào của thiết bị.Bộ định thời 2 có một thanh ghi chu kỳ 8 bit,PR2.Bộ định thời tăng số đếm lên từ 00h đến giá trị được ghi trong thanh ghi TR2 và sau đó reset lại giá trị 00h trong chu kỳ kế tiếp. PR2 là thanh ghi có thể đọc hoặc ghi. Giá trị trùng hợp trong thanh ghi TMR2 được đi qua bộ postscaler 4 bit để phát ra một ngắt TMR2(được đặt ở bit cờ ngắt TMR2IF). Bộ định thời 2 có thể được tắt ( không hoạt động ) bằng cách xóa bit điều khiển TMR2ON để giảm thiểu công suất tiêu tán nguồn.
IV.Hoạt động ngắt
Họ PIC16F87X có đến 14 nguồn ngắt. Thanh ghi điều khiển ngắt chứa các bit cho phép các ngắt riêng rẻ và các cờ ngắt. Bit cho phép ngắt toàn cục ( GIE ) phải được set để cho phép tất cả các ngắt.Các ngắt riêng rẽ có thể được phép hoặc cấm bằng đặt hoặc xóa các bit cho phép ngắt tương ứng. Các cờ ngắt ngoại vi được chứa trong hai thanh ghi chức năng đặc biệt : thanh ghi PIR1 và PIR2.Các bit cho phép ngắt tương ứng được chứa trong hai thanh ghi PIE 1 và PIE 2.
Khi một ngắt được đáp ứng, bit GIE được xóa và cấm tất cả các ngắt khác.Cờ ngắt phải được xóa bởi phần mềm trước khi cho phép lại ngắt.Thông thường, trước khi thực hiện các chương trình phục vụ ngắt, nội dung các thanh ghi w và status nên được lưu lại để bảo đảm an toàn và được phục hồi trước khi trở lại chương trình chính. Khuôn mẫu của một đoạn chương trình thực hiện các yêu cầu trên như sau :
Movwf _w ; đưa nội dung thanh ghi w vào biến tạm _w
Movf status , w
Movwf _status ; đưa nội dung thanh ghi status vào biến tạm
_status ( thông qua thanh ghi w )
....
ISR ( chương trình phục vụ ngắt )
. ....
Movf _status , w
Movwf status ; phục hồi các thanh ghi trước khi
Swapf _w quay trở lại chương trình chính
Swapf _w , w
2.2. Bộ chuyển đổi tương tự sang số A/D của 16F877A
Bộ chuyển đổi tương tự - số có năm ngõ vào đối với thiết bị 28 chân và tám đối với các thiết bị khác. Ngõ vào tương tự được lấy mẫu, ngõ ra của mẫu được đặt vào bộ biến đổi. Bộ biến đổi phát một giá trị nhị phân tương ứng với ngõ vào tương tự.Giá trị tương tự được bộ biến đổi cho một kết quả số tương ứng với 10 bit nhị phân.Bộ biến đổi có các thế ngưỡng cao và thấp đặt vào mà phần mềm có thể lựa chọn trên chân RA2 ,RA3. Bộ biến đổi A/D có đặt điểm duy nhất là hoạt động có thể hoạt động trong khi thiết bị đang ở chế độ nghỉ.
Bộ biến đổi A/D có 4 thanh ghi , chúng là :
- Thanh ghi kết quả cao ( ADRESH )
- Thanh ghi kết quả thấp ( ADRESL )
- Thanh ghi điều khiển 0 ( ADCON0)
- Thanh ghi điều khiển 1 ( ADCON1 )
Thanh ghi ADCON0 được chỉ ra ở hình 11-1 điều khiển hoạt động của bộ biến đổi.Thanh ghi ADCON1 cấu hình chức năng cho các chân port.Chân port có thể được cấu hình như là tín hiệu tương tự vào hoặc tín hiệu số vào ra.
Cặp thanh ghi ADRESH:ADRESL chứa kết quả nhị phân 10 bit của bộ biến đổi. Khi bộ biến đổi thực hiện việc biến đổi xong, kết quả được nạp lên cặp thanh ghi này, bit GO/DONE được xóa và cờ ngắt ADIF được bật.
Sau đây là các bước được yêu cầu trước khi làm việc với bộ biến đổi A/D:
1. Cấu hình cho bộ biến đổi:
• Cấu hình cho thanh ghi ADCON 1
• Chọn kênh tương tự đặt vào bộ biến đổi
• Chọn clock cho bộ biến đổi
• Khởi động bộ biến đổi
2. Cấu hình ngắt :
• Xóa cờ ngắt ADIF
• Đặt cờ cho phép ngắt bộ biến đổi
• Đặt cờ cho phép ngắt ngoại vi
• Đặt cờ cho phép ngắt toàn cục
CHƯƠNG III: THIẾT KẾ MẠCH
3.1. Sơ đồ cấu trúc thiết bị
Đại Lượng cần đo
Biến Đổi thành tín hiệu điện áp
Chuyển đổi A / D
Vi xử lý + chương trình xử lý
Hiển thị LCD 16x2
Hình 3.1.Sơ đồ cấu trúc
3.2.Mô tả hoạt động
Đại lượng cần đo được đưa vào mạch biến đổi là một cầu phân áp, biến đại lượng đo thành tín hiệu điện áp tương ứng, tín hiệu điện áp này được đưa đến bộ chuyển đổi tín hiệu tương tự sang tín hiệu số, sau đó được đưa vào bộ vi xử lý đã được lập trình để tính toán các mức lượng tử mà bộ xử lý tương tự - số đọc được. Kết quả tính toán được xuất ra màn hình LCD 16x2
3.3.Cấu trúc và hoạt động của từng khối.
- Mạch biến đổi đại lượng đo thành tín hiệu điện áp: là một cầu phân áp gồm một điện trở mẫu R0 có độ sai số nhỏ đóng vai trò là một phần tử so sánh mẫu ban đầu với đại lượng cần đo. Điện trở này tạo ra một điện áp mẫu khi chưa có điện trở cần đo RX được mắc vào mạch và đồng thời giá trị của điện trở mẫu R0 cũng là giới hạn của mạch có thể đo được.
Cấu tạo của khối biến đổi:
- Khối biến đổi tương tự - số A/D: là bộ biến đổi tín dòng điện hoặc điện áp tương tự ( với mạch này là tín hiệu điện áp) thành tín hiệu dạng số. Khối biến đổi A/D sử dụng là bộ chuyển đổi A/D 10 bit được tích hợp sẵn trong vi điều khiển PIC 16F877A với đặc điểm đã được trình bày phần trên.
Tín hiệu chuyển đổi sang tín hiệu số này được vi điều khiển xử lý thông qua chương trình được lập trình. Với bộ A/D 10 bit, điện áp lấy mẫu là 5V như vậy mỗi mức lượng tử sẽ là 5V/1024 = 4,883 mV. Ứng với điện áp 5V tại đầu vào ADC thì tương ứng với giá trị điện trở mà Vi Điều Khiển nhận biết là 10KΩ, với 1V thì giá trị điện trở tương ứng sẽ là RX = 10.000/ 5V = 2000Ω . Như vậy giá trị điện trở tương ứng với một mức lượng tử (hay một bước nhảy) sẽ là: 0,004883*2000 = 9,766. Nhưng do mỗi bước nhảy được chia ra làm hai mức và dược làm tròn nên ta sai số ảnh hưởng phải chịu của mỗi bước nhảy sẽ là 9,766/2 = 4,883 Ω
Cấu tạo khối A/D và khối xử lý:
- Khối hiển thị: là màn hình LCD 16x2 được kết nối với vi xử lý, khi kết quả được chương trình trong vi xử lý tính toán, vi xử lý sẽ xuất kết quả ra màn hình hiển thị.
* Đặc điểm của LCD 16x2:
Ta có thể định nghĩa các kí tự, các kí tự này được lưu trong CG RAM (CharacterGenerated RAM). CGRAM 64 bytes. Mỗi kí tự 8 bytes--> ta định nghĩa đượctối đa 8 kí tự.Việc đọc/viết kí tự lên LCD tốn khoảng 40 us đến 120us. Trong khoảng thời gian này LCD "bận" , Vi Điều Khiển không nhận biết được. Do vậy trong chương trình ta cần thực hiện delay để LCD thực hiện công việc của mình.Khởi tạo làm việc với LCD theo chế độ 4 bit.1. Đợi 15ms sau khi cấp nguồn.2. Viết 0x03 vào LCD và đợi 5ms để hoàn thành việc viết lệnh.3. Viết 0x03 vào LCD và đợi 160us4. Viết 0x03 vào LCD và đợi 160us.5. Viết 0x02 vào LCD để chọn chế độ 4 bit.Viết set interface lengthViết 0x010 để tắt hiển thị.Viết 0x001 để xóa màn hình.Đặt chế độ làm việc cho con trỏ(tùy bạn)Để viết kí tự lên LCD các bạn cần có driver cho LCD. Ghi file này lcd_lib.c
- Một số hàm dùng cơ bản thường dùng với LCD:
+ lcd_init(): Khởi tạo LCD, gọi 1 lần trong hàm main
+ lcd_gotoxy(int8 x, int8 y) : Hiển thị tại vị trí cột x , hàng y
+ lcd_send_byte(int8 address, int8 n): Gửi 1 byte n đến lcd, address=0: thao tác lệnh,
address=1: thao tác dữ liệu
+ int8 lcd_read_byte(void) : đọc về 1 byte
+ lcd_putc(char c) : Gửi các ký tự lên lcd
+ char lcd_getc(int8 x, int8 y) : Đọc ký tự tại cột x, hàng y
Bảng mô tả các chân của LCD
3.4.Mạch điện nguyên lý
3.5.Lưu đồ thuật toán điều khiển.
Begin
Hiển thị tên sản phẩm
Đọc điện áp từ cầu phân áp đưa vào ADC
Hiển thị LCD & gọi trễ
I = UR0 / 10K
RX = URX / I
URX = sụt áp RX* 5V/1023
UR0 = 10V - URX
Khởi tạo cấu hình cho PIC
Khởi tạo ADC, khởi tạo LCD
CHƯƠNG IV: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN CỦA ĐỀ TÀI
4.1.Kết luận.
Như vậy, ở đề tài này chúng em đã hoàn thành được ở một số mảng sau:
- Xây dựng được sơ đồ cấu trúc và sơ đồ nguyên lý của mạch đo
- Xây dựng được thuật toán và chương trình điều khiển
- Xử lý được thông tin cần đo
- Làm ra được sản phẩm trên thực tế hoạt động tương đối ổn định
Tuy nhiên, đề tài chúng em làm còn vướng mắc nhiều hạn chế:
- Sử dụng phương pháp đo chưa tối ưu do hạn chế về khả năng và điều kiện thực hiện đề tài.
- Dải đo còn chưa cao
- Độ sai số còn nhiều, tính chính xác chưa cao
4.2.Hướng phát triển của đề tài.
Để có dải đo lớn và độ chính xác cao hơn cần lựa chọn phương pháp đo tối ưu hơn ví dụ chọn phương pháp đo kiểu so sánh có sơ đồ cấu trúc sau:
Mở rộng thang đo bằng cách chia thang đo thành nhiều mức.
Như vậy mạch sẽ phức tạp hơn, độ khó cao hơn, cần nhiều thời gian hơn, chi phí tăng.
PHỤ LỤC
Sản phẩm thực tế
2.Code chương trình.
#include
#device *=16 adc=10
#FUSES NOWDT, HS, NOPUT, NOPROTECT, NOBROWNOUT, NOLVP,NOWRT
#use delay(clock=20000000)
#include
#include
float i,r,v1,v2;
//***************************************
void init();
//***************************************
void main(){
init();
lcd_gotoxy(1,1);
lcd_putc("\fdong ho do omh");
lcd_gotoxy(8,2);
lcd_putc("omh");
while(true)
{
v2=read_adc();
v2=v2*5000/1023;
v1=10000-v2;
i=v1/10000;
r=v2/i;
lcd_gotoxy(1,2);
printf(lcd_putc,"%6.0f",r);
delay_ms(500);
}
}
//____cac chuong trinh con_________________________
void init(){
trisa=1;
lcd_init();
setup_adc(adc_clock_internal);
setup_adc_ports(an0);
set_adc_channel(0);
delay_ms(10);
}
//____________________________________________
TÀI LIỆU THAM KHẢO
Kỹ thuật đo – Nguyễn Ngọc Tân, Ngô văn Ky – NXB ĐHQG TP.Hồ Chí Minh 2005
Giáo trình đo lường điện tử - Vũ Xuân Giáp – NXB Hà Nội.
Một số trang web hữu ích như:
Tailieu.vn
Dientuvietnam.net
Ebook.edu.com.vn
................................
Các file đính kèm theo tài liệu này:
- Thiết kế Ohmmeter hiện thị số.doc