viên thực hiện đề tài “ Ứng dụng vi xử lý thiết kế và chế tạo thiết bị đo lưu lượng dòng chảy” với các nội dung sau: • Tìm hiểu tính năng và cách sử dụng vi điều khiển Atmega32.. Kết q
Trang 1BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC NÔNG LÂM THÀNH PHỐ HỒ CHÍ MINH
KHÓA LUẬN TỐT NGHIỆP
ỨNG DỤNG VI XỬ LÍ THIẾT KẾ VÀ CHẾ TẠO THIẾT BỊ ĐO LƯU LƯỢNG DÒNG CHẢY
Họ và tên sinh viên: TRẦN QUỐC DÂN Ngành: ĐIỀU KHIỂN TỰ ĐỘNG
Niên khóa: 2005- 2009
Tháng 8/2009
Trang 2ỨNG DỤNG VI XỬ LÍ THIẾT KẾ VÀ CHẾ TẠO THIẾT BỊ ĐO LƯU
Trang 3LỜI CẢM ƠN
Trong suốt thời gian học tại Trường Đại Học Nông Lâm Thành Phố Hồ Chí Minh, nhờ sự giúp đỡ của quý thầy cô về mọi mặt nên đề tài tốt nghiệp mới được hoàn thành
Em xin gởi lời biết ơn chân thành đến bộ môn Điều Khiển Tự Động cùng thầy
cô trong Khoa Cơ Khí đã giảng dạy những kiến thức chuyên môn làm cơ sở để em thực hiện tốt đề tài này Đặc biệt, trong quá trình thực hiện đề tài này, em nhận được
sự giúp đỡ, hướng dẫn tận tình của giáo viên hướng dẫn đề tài T.S Bùi Ngọc Hùng
Em xin gửi đến thầy lời cảm ơn chân thành
Em xin chân thành cảm ơn các thầy cô trong khoa, cùng các bạn đã đóng góp ý kiến và kinh nghiệm quý báu trong quá trình thực hiện đề tài này
TP.Hồ Chí Minh, tháng 8 năm 2009 Sinh viên thực hiện
Trần Quốc Dân
Trang 4viên thực hiện đề tài “ Ứng dụng vi xử lý thiết kế và chế tạo thiết bị đo lưu lượng dòng
chảy” với các nội dung sau:
• Tìm hiểu tính năng và cách sử dụng vi điều khiển Atmega32
• Tìm hiểu cấu tạo và nguyên lý hoạt động các loại cảm biến đo lưu lượng
• Tìm hiểu các phương pháp đo lưu lượng dòng chảy chất lỏng
• Thiết kế và chế tạo mạch đo lưu lượng chất lỏng
• Chế tạo một mô hình đo lưu lượng dòng chất lỏng
• Thiết kế một giao diện điều khiển đo lưu lượng trên máy tính bằng ngôn ngữ VisualBasic 6.0
• Viết các chương trình vi điều khiển bằng ngôn ngữ BasCom
Kết quả đã đạt được trong quá trình thực hiện đề tài:
• Đã chế tạo được một thiết bị đo lưu lượng kiểu turbine so sánh với kiểu phao với giá trị thang đo 0÷40 lít/phút
• Thiết kế một giao diện điều khiển trên máy tính
• Viết chương trình cho vi xử lí
Trang 5MỤC LỤC
Trang tựa ……….i
Lời cảm ơn ……….ii
Tóm tắt ………iii
Mục lục ……….iv
Danh sách hình ……… viii
Danh sách bảng ……… x
CHƯƠNG 1 MỞ ĐẦU ……….……… 1
CHƯƠNG 2 TỔNG QUAN ………3
2.1 Tìm hiểu chung về lưu lượng và các phương pháp đo lưu lượng ……….3
2.1.1 Giới thiệu chung về lưu lượng ……… 3
2.1.1.1 Lưu lượng thể tích ……….3
2.1.1.2 Lưu lượng khối lượng ……… 3
2.1.2 Các phương pháp đo lưu lượng ………4
2.2 Lưu lượng phao………4
2.2.1 Cấu tạo ……….4
2.2.2 Nguyên tắc hoạt động ……… 5
2.3 Cảm biến đo lưu lượng ………5
2.3.1 Lựa chọn cảm biến ……… 5
2.3.2 Cấu tạo ……… 6
2.3.3 Nguyên tắc hoạt động ……….6
2.4 Vi xử lý Atmega32 ……….7
2.4.1 Giới thiệu chung ……… 7
2.4.2 Đặc tính ………7
2.4.3 Mô tả các chân ……….8
2.4.4 Sơ đồ khối ……….9
2.4.5 Cấu trúc nhân AVR ………10
2.4.5.1 Giới thiệu ……….10
2.4.5.2 Cấu trúc tổng quát ………11
2.4.5.3 Thanh ghi trạng thái ……… 11
Trang 62.4.5.4 Các thanh ghi chức năng chung ………11
2.4.5.5 Con trỏ ngăn xếp ……… 11
2.4.6 Điều khiển ngắt và Reset ……….11
2.4.7 Bộ nhớ Atmega32………12
2.4.8 Cổng vào ra ………12
2.4.9 Bộ định thời ……… 12
2.4.10 USART……….13
2.5 Hiển thị LCD ………13
2.5.1 Cấu tạo ………13
2.5.2 Nguyên tắc hiển thị kí tự lên LCD ………14
2.5.3 Sơ đồ chân ………14
2.6 Giao tiếp máy tính qua cổng COM ……….15
2.6.1 Cấu tạo ……….15
2.6.2 Sơ đồ chân ……… 16
2.7 Cổng nối tiếp Max232 ………17
2.7.1 Cấu tạo ………17
2.7.2 Sơ đồ chân ……… 17
2.8 Mạch nạp cho vi xử lí ……… 19
CHƯƠNG 3 NỘI DUNG VÀ PHƯƠNG PHÁP NGHIÊN CỨU ………21
3.1 Thời gian và địa điểm nghiên cứu đề tài………21
3.1.1 Địa điểm tiến hành đề tài……….21
3.1.2 Phân bố thời gian tiến hành đề tài ……….21
3.2 Đối tượng và thiết bị nghiên cứu ……….21
3.2.1 Đối tượng nghiên cứu ……….21
3.2.2 Thiết bị nghiên cứu ……….21
3.3 Phương pháp thực hiện đề tài ……… 22
3.3.1 Lựa chọn phương pháp thiết kế hệ thống đo lường ……… 22
3.3.2 Phương pháp thực hiện phần cơ khí ………22
3.3.3 Phương pháp thực hiện phần điện-điện tử ……….22
3.3.4 Phương pháp thực hiện phần mềm ……….22
3.4 Phương tiện thực hiện đề tài ………23
Trang 7CHƯƠNG 4 KẾT QUẢ VÀ THẢO LUẬN………24
4.1 Thiết kế máy ……… 24
4.1.1 Chọn mô hình chung ………25
4.1.2 Nguyên lý hoạt động……….25
4.2 Thực hiện phần cơ khí ………25
4.2.1 Chế tạo hộp điều khiển ……….25
4.2.2 Chế tạo mô hình để đo lưu lượng ……….26
4.3 Thực hiện phần điện – điện tử………26
4.3.1 Mạch nguồn ………27
4.3.1.1 Yêu cầu mạch nguồn ……… 27
4.3.1.2 Thiết kế mạch nguồn ………27
4.3.2 Mạch cảm biến ……….28
4.3.3 Mạch vi điều khiển ……… 28
4.3.4 Mạch giao tiếp ……….29
4.3.4.1 Cổng LPT ………29
4.3.4.2 Cổng COM … ………29
4.3.5 Mạch nút nhấn ……….30
4.3.6 Mạch hiển thị ……….30
4.4 Phần mềm ……… 30
4.4.1 Chương trình trên vi xử lí ……….30
4.4.1.1 Lưu đồ giải thuật ……….30
4.4.1.2 Chương trình Bascom ……….32
4.4.2 Chương trình trên máy tính ……….35
4.4.2.1 Giao diện điều khiển ………35
4.4.2.2 Chương trình Visual Basic ……… 36
4.5 Thi công, hiệu chỉnh và chạy thử nghiệm ………37
4.5.1 Thi công……….37
4.5.2 Hiệu chỉnh máy ………38
4.5.3 Chạy thử nghiệm máy ……….38
4.5.3.1 Mục đích khảo nghiệm ……….38
4.5.3.2 Dụng cụ khảo nghiệm ……….38
Trang 84.5.3.3 Bố trí khảo nghiệm ……… 38
4.6 Kết quả khảo nghiệm và thảo luận ……….39
4.6.1 Kết quả thảo luận ……….39
4.6.1.1 Kết quả khảo nghiệm đối với cảm biến lưu lượng ……….39
4.6.1.2 Kết quả khảo nghiệm đối với lưu lượng kế ……… 41
4.6.1.3 Kết quả của phép đo dùng cảm biến lưu lượng và lưu lượng kế … 43
4.6.2 Thảo luận ……… 44
CHƯƠNG 5 KẾT LUẬN VÀ ĐỀ NGHỊ ……….45
TÀI KIỆU THAM KHẢO PHỤ LỤC
Trang 9DANH SÁCH HÌNH
Hình 2.1: Cấu tạo bên trong của lưu lượng phao ………5
Hình 2.2: Lưu lượng phao thực tế ……… 5
Hình 2.3: Cảm biến lưu lượng kiểu turbine ……….6
Hình 2.4: Sơ đồ nối dây cảm biến ……… 6
Hình 2.5: Sơ đồ mô tả nguyên lý hoạt động của cảm biến lưu lượng ……….7
Hình 2.6: Sơ đồ chân Atmega32 ……….8
Hình 2.7 : Cấu trúc tổng quát của AVR ………10
Hình 2.8: Thanh ghi trạng thái ………11
Hình 2.9: Kích thước bên trong LCD ………14
Hình 2.10: Sơ đồ khối LCD ………14
Hình 2.11: LCD thực tế ……….14
Hình 2.12: LCD nguyên lý ……… 14
Hình 2.13: Sơ đồ bố trí chân của phích cắm RS232 của máy tính PC ………16
Hình 2.14: Sơ đồ chân Max232 ………17
Hình 2.15: Mạch nạp vi xử lí ……… 19
Hình 2.16: Mạch vi xử lí nạp chương trình ……….19
Hình 2.17: Giao diện chương trình nạp cho vi xử lí ………20
Hình 3.1: Sơ đồ hệ thống đo lường ……….22
Hình 4.1: Mô hình của máy đo lưu lượng ……… 24
Hình 4.2: Hộp điều khiển ………25
Hình 4.3: Sơ đồ bố trí linh kiện ………26
Hình 4.4: Sơ đồ nguyên lý mạch tổng thể ………27
Hình 4.5: Sơ đồ nguyên lý mạch nguồn ……….27
Hình 4.6: Sơ đồ nguyên lý mạch cảm biến ……….28
Hình 4.7: Sơ đồ nguyên lý mạch vi điều khiển ……… 28
Hình 4.8: Sơ đồ nguyên lý cổng LPT ……… 29
Hình 4.9: Sơ đồ nguyên lý cổng COM ………29
Hình 4.10: Sơ đồ nguyên lý mạch nút nhấn ………30
Hình 4.11: Sơ đồ nguyên lý mạch hiển thị ………30
Trang 10Hình 4.12: Giao điều khiển trên Visual Basic ………35
Hình 4.13: Mô hình thi công ………37
Hình 4.14: Sơ đồ bố trí thí nghiệm ……….38
Hình 4.15: Biểu đồ biểu diễn lưu lượng cảm biến và lưu lượng phao ………44
Hình 2.18: Cấu trúc của Vi điều khiển ……….47
Hình 2.19: Cấu trúc bên trong của vi điều khiển Atmega32 ……….48
Trang 11
DANH SÁCH BẢNG
Bảng 2.1: Chức năng các chân của Module LCD16x2 ………15
Bảng 2.2: Sơ đồ chân cổng COM và cổng LPT ………16
Bảng 2.3: Các thông sô kỹ thuật của Max232 ……… 18
Bảng 4.1: Bảng kết quả khảo nghiệm của cảm biến lưu lượng ……….39
Bảng 4.2: Bảng kết quả khảo nghiệm của lưu lượng phao ……… 41
Bảng 4.3: Bảng kết quả trung bình của cảm biến lưu lượng và lưu lượng kế …….43
Bảng 2.4: Reset và bảng vector ngắt ……… 49
Trang 12Chương 1
MỞ ĐẦU
1.1 Tổng quan về đề tài
Hiện nay, trên thế giới có rất nhiều phương pháp đo lưu lượng dòng chảy Trong
đó, có phương pháp đo lưu lượng cổ điển như đo lưu lượng bằng cảm biến lưu lượng phao Bên cạnh còn có mốt số phương pháp mới như đo lượng lượng bằng cảm biến turbine, quạt Đa số các thiết bị đo lưu lượng đều phải nhập ngoại Đặc biệt là các thiết
bị đo lường số phải nhập ngoại, giá thành cao Do đó, qua thời gian nghiên cứu và học tập, sinh viên thực hiện đã ứng dụng vi xử lí vào đề tài đo lưu lượng dòng chảy chất lỏng dựa trên nguyên tắc turbine
1.2 Giới hạn đề tài
Do bước đầu thiết kế đề tài nên còn nhiều hạn chế nhất định.Vì thế, sinh viên thực hiện đề tài chỉ chú trọng nghiên cứu những vấn đề chính sau :
• Thiết bị chỉ đo lưu lượng chất lỏng
• Dãi thang đo nhỏ, chỉ vài m3/h
• Nghiên cứu về tính năng của vi điều khiển Atmega32
• Hệ thống được điều khiển bằng phần mềm trên máy tính phần mềm này có giao diện trực quan, dàng sử dụng thiết kế thiết kế bằng ngôn ngữ Bascom với sự trợ giúp của chương trình Visual Basic
• Viết chương trình xử lý tín hiệu từ cảm biến để hiển thị kết quả lên màn hình bằng ngôn ngữ Bascom
• Thiết kế phần cứng
1.3 Mục đích nghiên cứu
• Đồ án này giúp sinh viên thực hiện tìm hiểu ứng dụng của vi điều khiển AVR
Atmega32, thiết kế giao diện bằng ngôn ngữ Visual Basic 6.0, ngôn ngữ lập trình Bascom cho AVR
Trang 13• Đồ án còn giúp sinh viên thực hiện tìm hiểu cách đo lượng chất lỏng và các
phương pháp đo lưu lượng chất lỏng
• Tạo ra một sản phẩm cụ thể làm mô hình nghiên cứu, có tính ứng dụng: một giao
diện điều khiển trên máy tính, một mô hình cơ khí có khả năng đo lưu lượng của nước
Trang 14Chương 2
TỔNG QUAN
2.1 Tìm hiểu chung về lưu lượng và phương pháp đo lưu lượng
2.1.1 Giới thiệu chung về lưu lượng
Như chúng ta đã biết, trong công nghệ lưu lượng dòng vật chất là một đại lượng rất cần thiết công nghệ, đặc biệt là công nghệ hoá chất và thực phẩm Nó là một đại lượng cần được biết, được đo và được điều khiển phù hợp Chính vì thế trong một thiết
bị, một dây chuyền sản xuất đều có những thiết bị đo lưu lượng
Lưu lượng được chia ra làm hai loại:
T: là thời gian mà thể vật chất chuyển động qua
o Đơn vị thường dùng là m3/s, m3/phút, m3/h, cubic foot/hour (CFH hay S*CFH), cubic foot/minute (CFM hay SCFM), cubic foot/second (CFS hay SCFS), gallon per hour (GPH hay SGPH), gallon per minute (GPM hay SGPM), gallon per second (GPS hay SGPS),
2.1.1.2 Lưu lượng khối lượng
o là lượng vật chất tính bằng khối lượng chuyển qua trong một đơn vị thời gian
Qm = m/T
Trong đó:
Qm : là lưu lượng khối lượng vật chất (kg/h)
m: là khối lượng vật chất chuyển động qua (kg )
Trang 15T: là thời gian mà lưu lượng khối lượng vật chất chuyển động qua
o Đơn vị tính bằng kg/s, kg/phút, kg/h, ppm,
2.1.2 Các phương pháp đo lưu lượng
Các hãng sản xuất luôn luôn đi tìm phương án thiết kế và sản xuất các loại thiết
bị với dải đo lớn, độ chính xác cao và hạ giá thành sản phẩm Vì thế đã ra đời rất nhiều loại lưu lượng kế, tuy nhiên, các thiết bị đó thường được dựa trên các nguyên lý cơ bản sau:
• Đối với kênh kín (ống dẫn):
o Đo dòng theo phương pháp chênh lệch áp (dựa vào phương trình Bernoulli)
o Đo dòng theo phương pháp tiết diện dòng thay đổi
o Đo dòng theo nguyên tắc điện từ
• Đối với dòng kênh hở (mương, máng, rãnh, ống dẫn nhưng dòng vật chất không choán đầy):
o Đo dòng nhờ đập chảy tràn
o Đo dòng chiều sâu cuối cùng
o Đo dòng dựa vào phương trình Bernoulli
2.2 Lưu lượng phao
Ngày nay có rất nhiều phương pháp đo lượng dòng chảy chất lỏng Một trong những số đó là phương pháp lưu lượng cổ điển dùng cảm biến lưu lượng phao Dưới đây là cấu tạo và nguyên lý hoạt động của cảm biến lưu lượng phao:
2.2.1 Cấu tạo
Cảm biến lưu lượng phao có cấu tạo khá đơn giản: làm bằng vật liệu nhựa tổng hợp, bên trong có một cái phao có thể dịch chuyển lên xuống, bên ngoài có khắc các vạch tương ứng với giá trị thang đo
Trang 16
Hình 2.1: cấu tạo bên trong Hình 2.2: Lưu lượng phao thực tế
của lưu lượng phao
2.2.2 Nguyên tắc hoạt động
Lưu lượng phao hoạt động dựa trên nguyên lý chênh lệch áp suất Khi lưu lượng dòng chảy của chất lỏng qua ống thì dòng chảy sẽ đẩy phao trong lưu lượng kế dâng lên Trên lưu lượng kế có khắc các vạch, mỗi vạch tương ứng với một giá trị đoPhao
dâng lên tới mức nào đó thì tương ứng với lưu lượng đo được
2.3 Cảm biến lưu lượng
2.3.1 Lựa chọn cảm biến
Để đo lưu lượng tức thời (l/ph) và lưu lượng nước tích lũy (lít) của dòng nước chảy trong ống, có thể dùng nhiều loại cảm biến lưu lượng như: lưu lượng kế turbine, lưu lượng kế khối lượng, lưu lượng kế điện từ, lưu lượng kế siêu âm…Thực tế hoạt động của hệ SCADA tại một số doanh nghiệp ngành nước, nhận thấy sử dụng thiết bị
đo lưu lượng kiểu turbine là thích hợp và tin cậy hơn cả Dưới đây, sẽ giới thiệu loại cảm biến này:
Trang 17
Hình 2.3: Cảm biến lưu lượng kiểu turbine
2.3.2 Cấu tạo
Cảm biến lưu lượng turbine được mắc nối theo kiểu NPN
Dây đỏ (red) nối với nguồn 5V
Dây trắng (white ) nối Port PB.1 của vi điều khiển
Dây đen (black) nối mass
lý để xử lí và tính toán sẽ hiển thị lên màn hình lưu lượng tức thời Bộ truyền tín hiệu
và hiển thị có màn hình và các phím để hiển thị và cài đặt, kiểm tra, vận hành
Trang 18
Hình 2.5: Sơ đồ mô tả nguyên lý hoạt động của cảm biến lưu lượng
2.4 Giới thiệu về vi điều khiển Atmega32
Ngày này vi xử lí được ứng dụng rất rộng rãi Đặc biệt là trong các thiết bị đo
lường số Ở đây sinh viên thực hiện đã ứng dụng Atmega32 vào đề tài này nhằm mục
đích đo lưu lượng dòng chảy chất lỏng
2.4.1 Giới thiệu chung
Atmega32 là vi điều khiển 8 bit thuộc họ CMOS tiêu thụ năng lượng thấp dựa trên nền tảng của AVR có cấu trúc RISC được cải tiến Với tập lệnh bao gồm các lệnh mạnh, Atmega có thể hoàn thành một triệu lệnh trong một giây ở tần số 1MHz cho phép người thiết kế hệ thống tối ưu hóa việc sử dụng năng lượng mà vẫn đảm bảo được tốc độ xử lý
Đi kèm với AVR là một tập lệnh phong phú cùng với 32 thanh ghi làm việc đa năng Tất cả 32 thanh ghi được kết nối trực tiếp đến bộ xử lý số học và logic (ALU), cho phép truy cập hai thanh ghi độc lập chỉ bằng một lệnh trong một chu trình máy Cấu trúc này giúp cho AVR có tốc độ xử lý nhanh gấp 10 lần so với các vi điều khiển
có cấu trúc CISC thông thường (chẳng hạn như 8051) ở cùng tần số
2.4.2 Đặc tính
• Hiệu xuất và tốc độ xử lý cao, tiêu thụ năng lượng thấp
• Có cấu trúc RISC cải tiến
• Bộ nhớ được phân chia thành nhiều phần, có khả năng lưu giữ tốt trong thời gian dài Bộ nhớ Flash có thể ghi xóa 10.000 lần
Trang 19• Cấu trúc ngoại vi:
o Hai bộ Timer/ Counter 8 bit có bộ chia trước (Prescaler) và có chế độ hoạt động so sánh
o Một bộ Timer/Counter 16 bit có bộ chia trước (Prescaler) và có chế độ hoạt động : so sánh (compare), thu nhận (Capture)
o Có bốn kênh điều xung tự động (OCR0, OCR1A, OCR1B, OCR2_ tương ứng với các Timer: Timer0, Timer1, Timer2)
o Có 1 bộ ADC 10 bit gồm 8 kênh ngõ vào có thể lựa chọn các ngõ vào tùy ý với độ lợi có thể lập trình được
o USART nối tiếp lập trình được
o Giao tiếp nối tiếp SPI Master/Slave
o Có bộ so sánh tương tự (analog) On-chip
• I/O và Packages
o 32 đường vào ra lập trình được (Port A, B, C, D)
o Packeges dạng 40 chân DIP
• Điện áp làm việc
o 2.7 ÷ 5.5 V đối với ATMEGA 32L
o 4.5 ÷ 5.5 V đối với ATMEGA 32
Trang 20• VCC : Cung cấp nguồn
• GND : Nối mass
• Port A (PA.0…PA.7) : Là các ngõ vào tương tự đến bộ ADC Khi không sử dụng là chức năng ngõ vào tương tự của bộ ADC thì PORT A còn là một ngõ xuất nhập (I/O) 8 bit 2 chiều
• Port B (PB.0…PB.7) :Là một ngõ xuất nhập (I/O) 8 bit 2 chiều với các điện
trở kéo lên ở bên trong
• Port C (PC.0…PC.7): à một ngõ xuất nhập (I/O) 8 bit 2 chiều với các điện trở kéo lên ở bên trong
• Port D (PD.0…PD.7):Port D là một ngõ xuất nhập (I/O) 8 bit 2 chiều với các điện trở kéo lên ở bên trong
• RESET : Ngõ vào Reset Chân Reset của ATMEGA 32 tích cực mức thấp.Xung Reset dài hơn 50nS sẽ Reset AVR ngay cả khi mạch dao động không hoạt động
• XTAL1 : Ngõ vào đến bộ khuếch đại đảo và là ngõ vào mạch tạo dao động bên trong
• XTAL2 : Ngõ ra từ mạch khuếch đại đảo
• AVCC : là chân cung cấp nguồn áp cho PortA và bộ chuyển đổi A/D Nên nối chân này với VCC bên ngoài, cả khi bộ ADC không được sử dụng.Nếu như bộ ADC được sử dụng, nên nối nó lên VCC thông qua một mạch lọc thông thấp
• ARFF : là chân ngõ vào cung cấp điện áp tham chiếu cho bộ chuyển đổi A/D Đối với hoạt động của ADC thì phải cung cấp 1 điện áp nằm trong khoảng từ AGND đến AVCC đến ngõ vào chân AREF
2.4.4 Sơ đồ khối
Các khối bên trong bao gồm :
• Khối khuếch đại thúc cho các Port A, B, C, D, khối thanh ghi dữ liệu Port và khối điều khiển hướng cho các Port
• Khối chuyển đổi tín hiệu tương tự sang số ADC
• Khối thời gian và điều khiển (Timing and control )
• Khối điều khiển lập trình (programming control )
Trang 21• Khối thanh ghi con trỏ ngăn xếp Stack Pointer (SP): có chức năng quản lý bộ nhớ ngăn xếp để lưu trữ các dữ liệu tạm thời trong quá trình sử lý dữ liệu
• Bộ nhớ SRAM dùng để lưu trữ các dữ liệu phục vụ cho chương trình và dùng làm bộ ngăn xếp để lưu trữ các dữ liệu tạm thời và lưu trữ địa chỉ khi thực hiện các chương trình con hay các chương trình con phục vụ ngắt
• Khối thanh ghi bộ đếm chương trình Program Counter (PC): có chức năng quản lý bộ nhớ chương trình.Khi thanh ghi PC trỏ đến lệnh nào thì lệnh đó được thực hiện
• Khối bộ nhớ chương trình Program Flash
• Khối thanh ghi đa năng và các thanh ghi X, Y, Z
• Khối ALU có chức năng thực hiện các lệnh xử lý toán học và logic
• Thanh ghi trạng thái Status Register
• Khối điều khiển ngắt Interrupt
• Khối bộ nhớ EEPROM cho phép lưu trữ các dữ liệu mà khi mất thì dữ liệu vẫn còn, số lần cho phép ghi xóa lên đến 100.000 lần
2.4.5 Cấu trúc nhân AVR
2.4.5.1 Giới thiệu
CPU của AVR có chức năng bảo đảm sự hoạt động chính xác của các chương trình Do đó nó phải có khả năng truy cập bộ nhớ, thực hiện các quá trình tính toán, điều khiển các thiết bị ngoại vi và quản lý ngắt
Hình 2.7 : Cấu trúc tổng quát của AVR
Trang 222.4.5.2 Cấu trúc tổng quát
AVR sử dụng cấu trúc Harvard, tách riêng bộ nhớ và các bus cho chương trình
và dữ liệu Các lệnh được thực hiện chỉ trong một chu kỳ xung clock Bộ nhớ chương trình được lưu trong bộ nhớ Flash
2.4.5.3 Thanh ghi trạng thái (Status Register – SREG)
Đây là thanh ghi trạng thái có 8 bit lưu trữ trạng thái của khối ALU sau các phép tính số học và logic Thanh ghi trạng thái không tự động lưu giữ khi đang có ngắt sảy ra và lưu trở lại khi quay trở lại chương trình ngắt Điều này phải được thực hiện bằng phần mềm
2.4.5.4 Các thanh ghi chức năng chung
Hình 2.8: Thanh ghi trạng thái
Đa số các lệnh trong tập lệnh đều có thể truy xuất trực tiếp các thanh ghi này,
và đa số các lệnh được thực hiện trong 1 chu trình máy
2.4.5.5 Con trỏ ngăn xếp Stack Pointer (SP)
Con trỏ ngăn xếp là một thanh ghi 16 bit nhưng cũng có thể được xem như hai thanh ghi chức năng đặc biệt 8 bit Có địa chỉ trong các thanh ghi chức năng đặc biệt là
$3E Có nhiệm vụ trỏ tới vùng nhớ trong RAM chứa ngăn xếp
2.4.6 Điều khiển ngắt và Reset
AVR cung cấp một số nguồn ngắt khác nhau Những ngắt này và Reset đều có một vector chương trình riêng trong vùng bộ nhớ chương trình Tất cả các ngắt được gán với 1 bit cho phép ngắt độc lập và bit này phải được ghi mức 1 cùng với bit cho phép ngắt toàn cục (bit I) trong thanh ghi trạng thái SREG để cho phép ngắt sảy ra
Trang 232.4.8 Cổng vào ra (I/O)
Vi điều khiển ATMEGA 32 có 4 cổng (Port) vào ra 8 bit là: Port A, Port B, Port C, Port D tương ứng với 32 đường vào ra.Các cổng vào ra của AVR là cổng vào ra 2 chiều có thể định hướng Tất cả các cổng vào ra của AVR đều có tính đọc – chỉnh sữa – ghi (Read - Modify – Write ) khi sử dụng chúng như các cổng vào ra thông thường Tất cả các chân của cổng ( Port ) đều có điện trở kéo lên (pull-up) riêng ta có thể cho phép hay không cho phép điện trở kéo lên này hoạt động
2.4.9 Bộ định thời (Timer /Counter)
Atmega32 có 2 Timer /Counter 8 bit (Timer/Counter0 vàTimer/Counter2) và 1 Timer /Counter 16 bit (Timer /Counter1)
2.4.9.1 Timer/Counter0
Timer /Counter0 là bộ định thời /bộ đếm 8 bit có nhiều công dụng đa năng Các tính năng chính bao gồm :
• Là 1 kênh đếm riêng biệt
• Tự động xóa bộ định thời khi đạt đến giá trị so sánh
• Điều xung Glitch-free ,Phase Correct
• Bộ phát tần số
• Bộ đếm sự kiện bên ngoài
Trang 24• Bộ tạo xung clock có thể đặt trước 10 bit
• Các thanh ghi đôi so sánh ngõ ra (được đệm )
• Một bộ thu nhận tín hiệu ngõ vào
• Bộ triệt nhiễu tự kích ngõ vào
• Tự động xóa bộ định khi thỏa giá trị so sánh (tự động nạp lại)
• Điều xung Glitch-free ,Phase Correct
• Điều chỉnh chu kỳ PWM
• Máy phát tần số
• Đếm sự kiện bên ngoài
• 4 nguồn ngắt độc lập (TOV1,OCF1A,OCF1B và ICF1)
2.4.9.3 Timer/Counter2
Timer/Counter2 là 1 Timer/Counter 8 bit, có chế độ hoạt động và cá thanh ghi tương tự như Timer/Counter0
2.4.10 USART (Universal Synchronous Serial Receiver and Transmitter)
Bộ truyền và nhận nối tiếp đồng bộ và bất đồng bộ USART là một thiết bị giao tiếp nối tiếp có tính linh hoạt cao
2.5 Hiển thị LCD
Để hiển thị các giá trị đo, hiển thị các thao tác trên máy, ta dùng màn hình LCD Có rất nhiều LCD sử dụng như LCD graphic, LCD16x2, LCD20x4,…Trong đó màn hình LCD16x2 có giá rẻ và được sử dụng phổ biến nhất
2.5.1 Cấu tạo
LCD 16x2 có tất cả 16 chân gồm có 16 cột , 2 hàng Dùng để hiên thị các giá trị
đo hay các thao tác
Trang 25
Hình 2.9: Kích thước bên trong LCD
Hình 2.10: Sơ đồ khối LCD
2.5.2 Nguyên tắc hiển thị kí tự lên LCD
Một chương trình hiển thị kí tự lên LCD sẽ gồm 4 bước sau:
Trang 26Bảng 2.1: Chức năng các chân của Module LCD16x2
Chân số Ký hiệu Mức logic I/O Chức năng
1 = thanh ghi dữ liệu
5 R/W 0/1 I 0 = ghi vào LCD module
1 = đọc từ LCD module
6 E 1.1=>0 I Tín hiệu cho phép
7 DB1 0/1 I/O Data bus line 0 (LSB)
8 DB2 0/1 I/O Data bus line 1
9 DB3 0/1 I/O Data bus line 2
10 DB4 0/1 I/O Data bus line 3
11 DB5 0/1 I/O Data bus line 4
12 DB6 0/1 I/O Data bus line 5
13 DB7 0/1 I/O Data bus line 6
14 DB8 0/1 I/O Data bus line 7 (MSB)
2.6 Giao tiếp máy tính qua cổng COM RS232
Để thực hiện giao tiếp giữa người và máy thì cần có cổng giao tiếp để kết nối giữa người và máy.Ở đây ta dùng COM để thực hiện việc giao tiếp
đường dẫn
Trang 27Trước hết loại truyền này có khả năng dùng cho những khoảng cách lớn hơn, bởi
vì khả năng gây nhiễu là nhỏ hơn khi dùng một cổng song song.Việc dùng cổng song song có một nhược điểm đáng kể là cáp truyền nhiều sợi.Vì vậy rất đắt tiền, hơn nữa mức tín hiệu nằm trong khoảng 0.5V đã tỏ ra không thích ứng với khoảng cách lớn
Hình 2.13: Sơ đồ bố trí chân của phích cắm RS232 của máy tính PC
1 8 DCD Data carrier detect
4 20 DTR Dữ liệu đầu cuối sẵn sàng
6 6 DSR Thiết bị thông tin sẵn sàng
8 5 CTS Thiết bị thông tin sẵn sàng truyền
9 22 RI Ring in dicator
Việc truyền dữ xảy ra trên 2 đường dẫn qua chân cắm ra TxD, máy tính gởi dữ liệu cảu nó đến thiết bị khác Trong khi đó dữ liệu mà máy tính nhận được dẫn đến chân RxD Các tín hiệu khác đóng vai trò như tín hiệu hổ trợ khi trao đổi thông tin Vì thế không phải trong mọi ứng dụng đều dùng đến
Mức tín hiệu trên các chân ra RxD tùy thuộc vào đường dẫn TxD và thông tin thường nằm trong khoảng từ -12V đến +12V, các bít dữ liệu được đảo ngược lại Mức điện áp ở mức cao nằm trong khoảng -3V và -12V và mức thấp nằm trong khoảng +3V và +12V Trạng thái tĩnh trên đường dẫn có mức điện áp -12V
Trang 28Bằng tốc độ baud ta thiết lập tốc độ truyền dữ liệu các gía trị thông thường là
300, 600, 1200, 2400, 4800, 9600 và 19200 baud Kí hiệu baud là số lượng bit truyền trong 1s
Còn một vấn đề nữa là khuôn mẫu truyền dữ liệu cần phải được thiết lập như nhau cả bên gửi cũng như bên nhận các thông số truyền có thể được thiết lập trên máy tính PC bằng các câu lệnh trên DOS Ngày nay Windows cũng có các chương trình riêng để sử dụng, khi đó các thông số truyền dữ liệu như :Tốc độ baud ,số bit dữ liệu,
số bit dừng, bit chẵn lẻ có thể được thiết lập một cách rất đơn giản
2.7 Cổng nối tiếp Max232
Để giao tiếp giữa người và máy tính ta dùng cổng COM RS232 Trong cổng COM
có Max232
2.7.1 Cấu tạo
Max 232 gồm 2 bộ đệm (driver)/ 2 bộ thu (Receiver), bao gồm 1 nguồn điện áp kiểu điện dung để cung cấp các mức điện áp theo mức EIA/TIA-232-E từ một nguồn đơn 5V Mỗi bộ thu chuyển đổi các ngõ vào EIA/TIA-232-E thành mức TTL/CMOS 5V
Max 232 hoạt động bình thường trong khoảng nhiệt độ từ -40oC đến 85oC
2.7.2 Sơ đồ chân MAX232
Max232 có 16 chân, dùng để giao tiếp máy tính, sơ đồ chân như hìn bên dưới
Hình 2.14: Sơ đồ chân Max232
Trang 29Các thông số kỹ thuật của MAX232
Bảng 2.3: Các thông sô kỹ thuật của Max232
Thông số
Điều kiện kiểm tra
Min Typ Max Đơn
vị T1OUT,T2OUT RL=3kΩ 5 7
Điện áp ngõ vào mức
cao VOH R1OUT,R2OUT IOH=-1mA 3.5 V
T1OUT,T2OUT RL=3kΩ -7 -5 Điện áp ngõ ra mức
thấp R1OUT,R2OUT IOL=-1mA 0.4 V Điện áp ngưỡng ngõ
vào theo chiều dương
bộ thu VIT+
R1IN,R2IN
VCC=5V
TA=25oC 1.7 2.4 V Điện áp ngưỡng ngõ
vào theo chiều âm bộ
thu V
IT-R1IN,R2IN
VCC=5V
TA=25oC 0.8 1.2 V Điện áp trễ ngõ vào
Vhvs
R1IN,R2IN VCC=5V 0.2 0.5 1.0 V Trở kháng ngõ vào bộ
T1OUT,T2OUT VS+=VS-=0
VO= ±2V
300
Ω Dòng điện ngắn mạch
8 10
mA
Trang 302.8 Mạch nạp cho vi xử lí
Tất cả các vi xử lí đều có chương trình, vi xử lí hoạt động được phải có chương trình, chương trình được viết bởi phần mềm, mỗi chương trình được viết bằng một loại ngôn ngữ lập trình riêng Chương trình sau khi viết xong phải được dịch băng ngôn ngữ máy Để nạp chương trình ta cần có mạch nạp.Mạch nạp STK200/300 rẻ và được