đồ án vi điều khiển hiển thị lưu lượng khí nạp trong động cơ đốt trong lên màn hình LCD, sơ lược về PIC16f877A, nguyên lý hoạt động của cảm biến lưu lượng khí nạp, bộ chuyển đổi tương tự sang số ADC, chương trình
LỜI MỞ ĐẦU Kĩ thuật vi điều khiển hiện nay rất phát triển, nó được ứng dụng vào rất nhiều lĩnh vực sản xuất công nghiệp, tự động hóa, trong đời sống, và còn nhiều lĩnh vực khác nữa. So với kĩ thuật số thì kĩ thuật vi điều khiển nhỏ gọn hơn rất nhiều do nó được tích hợp lại và có khả năng lập trình để điều khiển.Nên rất tiện dụng và cơ động. Sau học xong học phần kĩ tuật vi điều khiển chúng em dùng vi điều khiển PIC để hiển thị lưu lượng khí nạp trong động cơ lên màn hình LCD. Mục đích của đề tài tạo ra bước đầu cho sinh viên thử nghiệm những ứng dụng của vi điều khiển trong thực tiễn để tìm tòi, phát triển. Trong quá rình làm đồ án do kiến thức còn hạn hẹp, và hạn chế về thời gian nên không thể tránh khỏi thiếu xót, mong thầy và các bạn góp ý để chúng em hoàn thiện hơn. 1 - I. Tổng Quan: 1/ Giới thiệu chung về vi điều khiển: a) Định nghĩa: Vi điều khiển là một hệ thống xử lí được tổ chức trong cùng một chip, bao gồm một xử lí, bộ nhớ chương trình ROM, bộ nhớ dữ liệu RAM, ngoài ra trên chip còn có bộ xử lí số học-logic ALU cùng với các thanh ghi chức năng, các cổng vào/ra, cơ chế điều khiển ngắt, truyền tin nối tiếp các bộ định thời… b) Lịch sử: Năm 1971, hãng Intel đã cho ra đời bộ vi xử lý đầu tiên trên thế giới với tên gọi là Intel-4004. Sau đó các bộ vi xử lí được tiếp tục đưa ra thị trường, ngày càng được phát triển và hoàn thiện hơn. Năm 1972, hãng intel đưa ra bộ vi xử lí 8 bit với tên gọi intel-8008 nhưng chưa được ứng dụng nhiều. Năm 1974, hãng intel công bố bộ vi xử lí 8 bit 8080. - Năm 1975, hãng intel công bố bộ vi xử lí 8085. Năm 1978, chip 8086. Năm 1979, chip 8088. Năm 1983, intel đưa ra bộ vi xử lí 16 bit 80286. Năm 1985, intel đưa ra bộ vi xử lí 32 bit 80386. Năm 1989, xuất hiện bộ vi xử lí intel 80486 là cải tiến của intel 80386. 2 - Năm 1993, xuất hiện intel 80486 còn gọi là Pentium 64 bit chứa 4 triệu tranzitor. - Từ năm 1979 đến năm 2000 lần lượt các dòng Pentium II, Pentium III, Pentium IV. - Năm 2006 xuất hiện intel Core 2 Due. c) Một số đặc điểm của vi điều khiển: - CPU, RAM, ROM, I/O & Timer nằm trên cùng 1 chip. - Cố định lượng ROM, RAM, I/O Ports trên chip. - Giá cả thấp. - Chiếm ít không gian, ít tiêu thụ năng lượng. - Kích thước bộ nhớ, số lượng cổng ít thay đổi. - Chỉ chạy một phần mềm ứng dụng nhất định. - Sử dụng cho mục đích ứng dụng nhất định. - Tốc độ tần số nhỏ (MHz). 2/ Cấu trúc chung của 1 Cấu VĐK: Hầu hết các vi điều khiển ngày nay được xây dựng dựa trên kiến trúc Harvard, kiến trúc này định nghĩa bốn thành phần cần thiết của một hệ thống nhúng. Những thành phần này là lõi CPU, bộ nhớ chương trình (thông thường là ROM hoặc bộ nhớ Flash), bộ nhớ dữ liệu (RAM), một hoặc vài bộ định thời và các cổng vào/ra để giao tiếp với các thiết bị ngoại vi và các môi trường bên ngoài - tất cả các khối này được thiết kế trong một vi mạch tích hợp. Vi điều khiển khác với các bộ vi xử lý đa năng ở chỗ là nó có thể hoạt động chỉ với vài vi mạch hỗ trợ bên ngoài. . a) CPU: Là trái tim của hệ thống. Là nơi quản lí tất cả các hoạt động của VĐK. Bên trong CPU gồm: - ALU là bộ phận thao tác trên các dữ liệu 3 - Bộ giải mã lệnh và điều khiển, xác định các thao tác mà CPU cần thực hiện - Thanh ghi lệnh IR, lưu giữ opcode của lệnh được thực thi - Thanh ghi PC, lưu giũ địa chỉ của lệnh kế tiếp cần thực thi - Một tập các thanh ghi dùng để lưu thông tin tạm thời b) Rom: ROM là bộ nhớ dùng để lưu giữ chương trình. ROM còn dùng để chứa số liệu, các bảng, các tham số hệ thống, các số liệu cố định của hệ thống. Trong quá trình hoạt động nội dung ROM là cố định, không thể thay đổi, nội dung ROM chỉ thay đổi khi ROM ở chế độ xóa hoặc nạp chương trình. c) Ram: - RAM là bộ nhớ dữ liệu. Bộ nhớ RAM dùng làm môi trường xử lý thông tin, lưu trữ các kết quả trung gian và kết quả cuối cùng của các phép toán, xử lí thông tin. Nó cũng dùng để tổ chức các vùng đệm dữ liệu, trong các thaotác. - Thu phát, chuyển đổi dữ liệu. d) Bus: - BUS là các đường dẫn dùng để di chuyển dữ liệu. Bao gồm: bus địa chỉ, bus. - Các đường vào/ra. - Khối giao tiếp nối tiếp. e) Khối Timer: f) Watchdog: g) Bộ chuyển đổi tương tự - số (ADC): 3/ Ứng dụng của Vđk: Sưởi ấm thông gió và điều hòa nhiệt độ (HVAC): 4 Sưởi ấm, thông gió và điều hòa không khí (HVAC) hệ thống dựa trên đầu vào từ một loạt các cảm biến, kiểm soát các loại động cơ như động cơ bước cho cánh tà và DC / BLDC động cơ quạt. 4/ Các dòng vi điều khiển hiện nay: 4.1/ 8051: a) Intel 8051: là vi điều khiển đơn tinh thể (không nhầm với CPU) kiến trúc Harvard, lần đầu tiên được sản xuất bởi Intel năm 1980, để dùng trong cáchệ thống nhúng. Trong những năm 1980 và đầu những năm 1990 đã rất nổi tiếng. Tuy nhiên hiện tại đã cũ và được thay thế bằng các thiết bị hiện đại hơn, với các lõi phối hợp 8051. Tên gọi chính thức của họ vi điều khiển Intel 8051 -MCS 51. b) Những đặc tính: - Một ALU 8-bit, một thanh tích lũy và một thanh ghi 8-bit, do đó nó là một vi điều khiển 8-bit. - Bus dữ liệu 8-bit - có thể truy cập 8 bits dữ liệu trong một hoạt động. - Bus địa chỉ 16-bit - có thể truy cập 216 vị trí nhớ 64kB (65536 vị trí) cho mỗi bộ nhớ RAM và ROM. - RAM trên chip - 128 bytes (bộ nhớ dữ liệu). 5 - ROM trên chip - 4 kbytes (bộ nhớ chương trình). - 32 chân I/O riêng biệt (4 nhóm mỗi nhóm 8 chân I/O) có thể được truy cập riêng rẽ. Hai bộ định thời/đếm 16-bit. c) Các thành viên khác của họ 8051: - Có hai bộ vi điều khiển thành viên khác của họ 8051 là 8052 và 8031. 4.2/ PIC: a) PIC: PIC là một họ vi điều khiển RISC được sản xuất bởi công ty Microchip Technology. Dòng PIC đầu tiên là PIC1650 được phát triển bởi Microelectronics Division thuộc General Instrument. b) Họ vi điều khiển PIC: - Vi điều khiển 8-bit: - PIC10 - PIC12 - PIC14 - PIC16 - PIC17 - PIC18 Vi điều khiển 16-bit: PIC24 4.3) AVR: a) Vi điều khiển AVR: do hãng Atmel sản xuất được gới thiệu lần đầu năm 1996. AVR có rất nhiều dòng khác nhau bao gồm dòng Tiny AVR (như AT tiny 13, AT tiny 22…) có kích thước bộ nhớ nhỏ, ít bộ phận ngoại vi, rồi đến dòng AVR (chẳn hạn AT90S8535, AT90S8515,…) có kích thước bộ nhớ vào loại trung bình và mạnh hơn là dòng Mega ( như ATmega32, ATmega128,…) với bộ nhớ có kích thước vài Kbyte đến vài trăm Kb cùng với các bộ ngoại vi đa dạng - 6 được tích hợp trên chip, cũng có dòng tích hợp cả bộ LCD trên chip (dòng LCD AVR). b) Những đặc tính: - 8K byte Flash trên chíp có thể lập trình với các khả năng đọc trong khi ghi. - 512 byte EEPROM. - 1K byte SRAM. - 23 đường vào ra đa mục đích. - 32 thanh ghi đa mục đích. - 3 Timer/Counter rất linh hoạt với các compare mode, các ngắt trong và ngắt ngoài, một bộ USART nối tiếp có thể lập trình được, ghép nối nối tiếp 2 dây định hướng byte. - 6 kênh ADC trong đó 4 kênh có độ chính xác 10-bit và 2 kênh có độ chính xác 8-bit. d) Các loại AVR: Cơ bản họ VAR có thể chia làm 4 nhóm sau: - TinyAVR - the ATtiny series. - MegaAVR - the ATmega series. - XMEGA -the ATxmega series. - Atmel At94k FPSLIC. II. Giới thiệu về vi điều khiển được chọn làm đồ án: (PIC) 1/ Khái niệm: - PIC bắt nguồn là chữ viết tắt của "Programmable Intelligent Computer" (Máy tính khả trình thông minh) là một sản phẩm của hãng General Instrument đặt cho dòng sản phẩm đầu tiên của họ là PIC1650. Lúc này, PIC1650 được dùng để giao tiếp với các thiết bị ngoại vi cho máy chủ 16bit CP1600, vì vậy, người ta cũng gọi PIC với cái tên "Peripheral Interface Controller" (Bộ điều khiển giao tiếp ngoại vi). CP1600 là một CPU tốt, nhưng lại kém về các hoạt động xuất nhập, và vì vậy PIC 8-bit được phát triển vào khoảng năm 1975 để hỗ trợ hoạt động xuất nhập cho CP1600. PIC sử dụng microcode đơn giản đặt trong ROM, và mặc dù, cụm từ RISC chưa được sử dụng thời bây giờ, nhưng PIC thực sự là một vi điều khiển với kiến trúc RISC, chạy một lệnh một chu kỳ máy. 2/ Một vài đặc tính: Hiện nay có khá nhiều dòng PIC và có rất nhiều khác biệt về phần cứng, nhưng chúng ta có thể điểm qua một vài nét như sau: 7 - 8/16 bit CPU, xây dựng theo kiến trúc Harvard có sửa đổi. - FLASH và ROM có thể tuỳ chọn từ 256 byte đến 256 Kbyte. - Các cổng Xuất/Nhập (I/O ports) (mức logic thường từ 0V đến 5,5V, ứng với logic 0 và logic 1). - 8/16 Bit Timer. - Công nghệ Nanowatt. - Các chuẩn Giao Tiếp Ngoại Vi Nối Tiếp Đồng bộ/Không đồng bộ USART, AUSART, EUSARTs. - Bộ chuyển đổi ADC Analog-to-digital converters, 10/12 bit. - Bộ so sánh điện áp (Voltage Comparators). - Các module Capture/Compare/PWM. - LCD. - MSSP Peripheral dùng cho các giao tiếp I²C, SPI, và I²S. - Bộ nhớ nội EEPROM - có thể ghi/xoá lên tới 1 triệu lần. - FLASH (dùng cho bộ nhớ chương trình) có thể ghi/xóa 10.000 lần. - Module Điều khiển động cơ, đọc encoder. - Hỗ trợ giao tiếp USB. - Hỗ trợ điều khiển Ethernet. - Hỗ trợ giao tiếp CAN. - Hỗ trợ giao tiếp LIN. - Hỗ trợ giao tiếp IrDA. - Một số dòng có tích hợp bộ RF (PIC16F639, và rfPIC). 8 - KEELOQ Mã hoá và giải mã. - DSP những tính năng xử lý tín hiệu số (dsPIC). 3/ Bộ nhớ dữ liệu của PIC: Các thanh ghi đa mục đích cho người dùng của PIC là các ô nhớ RAM.Mỗi thanh ghi này cos độ dài 8 bit cho tất cả các bit. 4/ Các chân của PIC: a) Các chân nguồn: - Chân 11,32 là các chân VDD(+5v) - Chân 12,31 là các chân VSS(0v) b) Cổng nhập xuất: - PORT A và thanh ghi TRIS A. - PORT B và thanh ghi TRIS B. - PORT C và thanh ghi TRIS C. 9 - PORT D và thanh ghi TRIS D. - PORT E và thanh ghi TRIS E. c) Bộ đếm hoặc bộ định thời: - Timer 0 - Timer 1 - Timer 2 III. Giới thiệu về cảm biến và cảm biến nhiệt độ: 1/ Cảm biến: a) Bộ cảm biến: là thiết bị điện tử cảm nhận những thay đổi từ môi trường bên ngoài và biến đổi thành các tín hiệu điện để điều khiển các thiết bị khác. Cảm biến là một trong ba thành phần cơ bản của hệ thống điều khiển. b) Ứng dụng của cảm biến nhiệt độ: - Cảm biến nhiệt độ được ứng dụng trong nhiều lĩnh vực và các ngành quan trọng. Trong ngành cảng biển, các cảm biến nhiệt độ dùng trong các cần cẩu, báo nhiệt độ nhiên liệu, nhiệt độ motor…. - Cảm biến được sử dụng ở hầu hết các lĩnh vực đời sống: cơ-điện tử, cơ khí và công trình,toán và tin,xây dựng,điện tử viễn thông,điện lạnh,… - Trong ngành bia, nước ngọt, cảm biến nhiệt độ dùng đo nhiệt độ tại các tank, bồn chứa, đường ống…. để giám sát hệ thống. - Cảm biến có vai trò quan trọng trong các bài toán điều khiển quá trình nói riêng và trong các hệ thống điều khiển tự động nói chung. - Là thiết bị có khả năng cảm nhận các tín hiệu điều khiển vào, ra. - Có vai trò đo đạc các giá trị. - Giới hạn cảm nhận với đại lượng vật lý cần đo. 2/ Cảm biến lưu lượng: a) Giới thiệu chung về cảm biến lưu lượng, phân loại và ứng dụng: Giới thiệu chung: - Đo lưu lượng đóng một vai trò quan trọng, không chỉ vì nó phục vụ cho mục đích kiểm kê, đo đếm mà còn bởi vì ứng dụng của nó trong hệ thống tự động hóa các quá trình sản xuất. Chính vì vậy việc hiểu rõ về phương pháp đo, cũng như nắm vững các đặc tính của thiết bị đo lưu lượng là điều hết sức cần thiết. 10 - Lưu lượng kế là cảm biến đo không thể thiếu để đo lưu lượng của chất khí, chất lỏng, hay hỗn hợp khí-lỏng trong các ứng dụng công nghiệp như thực phẩm-nước giải khát, dầu mỏ- khí đốt, hóa chất-dược phẩm, sản xuất giấy, điện, xi măng … Trên thị trường, các loại lưu lượng kế rất đa dạng và luôn sẵn có cho bất kỳ ứng dụng công nghiệp hay dân dụng nào. Việc chọn lựa cảm biến đo lưu lương loại nào cho ứng dụng cụ thể thường dựa vào đặc tính chất lỏng (dòng chảy một hay hai pha, độ nhớt, độ đậm đặc…), dạng dòng chảy (chảy tầng, chuyển tiếp, chảy hỗn loạn…), dải lưu lượng và yêu cầu về độ chính xác phép đo. Các yếu tố khác như các hạn chế về cơ khí và kết nối đầu ra mở rộng cũng sẽ ảnh hưởng đến quyết định chọn lựa này. Nói chung, độ chính xác của lưu lượng kế còn phụ thuộc vào cả môi trường đo xung quanh. Các ảnh hưởng của áp suất, nhiệt độ, chất lỏng/khí hay bất kỳ tác động bên ngoài nào đều có thể ảnh hưởng đến kết quả đo. - Cảm biến đo lưu lượng trong công nghiệp được lắp đặt ở môi trường nhiễu cao và thường bị xung áp. Điều này đòi hỏi các cảm biến đo lưu lượng phải hoạt động bình thường cả với xung điện áp và bù được nhiễu để đảm bảo đưa ra tín hiệu đo với độ chính xác cao. Cảm biến được dùng trong đồ án là cảm biến lưu lượng khí nạp kiểu dây sấy: Cảm biến lượng khí được dung trong động cơL-EFI để cảm nhận lượng khí nạp.Đây là một cảm biến quan trọng nhất của động cơL-EFI.Tín hiệu lượng khí nạp được dung để tính toán khoảng thời gian phun cơ bản và góc đánh lửa sớm cơ bản. 11 Hình: cảm biến lưu lượng khí nạp kiểu dây sấy Phân loại: Có các loại cảm biến lưu lượng khí nạp như sau: - Loại chính. - Loại xoáy quang học Karman. - Cảm biến khối lượng khí nạp: - Loại dây sấy. Ứng dụng: Trên hầu hết các loại xe hiên nay đề sử dụng cảm biến lưu lượng khí nạp kiểu dây sấy vì ưu điểm của loại cảm biến này là cấu tạo đơn giản, trọng lượng nhẹ, độ bền cao, đặc biệt là cho kết quả đo khá chính xác. b) Cấu tạo của bộ cảm biến lưu lượng khí nạp loại dây sấy: - Như trình bày ở hình minh họa, cấu tạo của cảm biến lưu lượng khí nạp kiểu dây nóng rất đơn giản. 12 - Cảm biến lưu lượng khí nạp gọn và nhẹ như được thể hiện trong hình minh họa ở bên trái là loại cắm phích được đặt vào đường không khí, và làm cho phần không khí nạp chạy qua khu vực phát hiện. Như trình bày trong hình minh họa, một dây nóng và nhiệt điện trở, được sử dụng như một cảm biến, được lắp vào khu vực phát hiện. Bằng cách trực tiếp đo khối lượng không khí nạp, độ chính xác phát hiện được tăng lên và hầu như không có sức cản của không khí nạp. Ngoài ra, vì không có các cơ cấu đặc biệt, dụng cụ này có độ bền tuyệt hảo.Cảm biến lưu lượng khí nạp được thể hiện trong hình minh hoạ cũng có một cảm biến nhiệt độ không khí nạp gắn vào. 13 c) Hoạt động và chức năng: Như thể hiện trong hình minh họa, dòng điện chạy vào dây sấy (bộ sấy) làm cho nó nóng lên. Khi không khí chạy quanh dây này, dây sấy được làm nguội tương ứng với khối không khí nạp. Bằng cách điều chỉnh dòng điện chạy vào dây sấy này để giữ cho nhiệt độ của dây sấy không đổi, dòng điện đó sẽ tỷ lệ thuận với khối không khí nạp. Sau đó có thể đo khối lượng không khí nạp bằng cách phát hiện dòng điện đó. Trong trường hợp của cảm biến lưu lượng khí nạp kiểu dây sấy, dòng điện này được biến đổi thành một điện áp, sau đó được truyền đến ECU động cơ từ cực VG. d) Mạch điện bên trong: - Trong cảm biến lưu lượng khí nạp thực tế, như trình bày ở hình minh họa, một dây sấy được ghép vào mạch cầu. Mạch cầu này có đặc tính là các điện thế tại điểm A và B bằng nhau khi tích của điện trở theo đường chéo bằng nhau ([Ra+R3]*R1=Rh*R2). 14 - Khi dây sấy này (Rh) được làm mát bằng không khí nạp, điện trở tăng lên dẫn đến sự hình thành độ chênh giữa các điện thế của các điểm A và B. Một bộ khuyếch đại xử lý phát hiện chênh lệch này và làm tăng điện áp đặt vào mạch này (làm tăng dòng điện chạy qua dây sấy (R h)). Khi thực hiện việc này, nhiệt độ của dây sấy (Rh) lại tăng lên dẫn đến việc tăng tương ứng trong điện trở cho đến khi điện thế của các điểm A và B trở nên bằng nhau (các điện áp của các điểm A và B trở nên cao hơn). - Bằng cách sử dụng các đặc tính của loại mạch cầu này, cảm bíên lưu lượng khí nạp có thể đo được khối lượng không khí nạp bằng cách phát hiện điện áp ở điểm B. 15 - Trong hệ thống này, nhiệt độ của dây sấy (R h) được duy trì liên tục ở nhiệt độ không đổi cao hơn nhiệt độ của không khí nạp, bằng cách sử dụng nhiệt điện trở (Ra). Do đó, vì có thể đo được khối lượng khí nạp một cách chính xác mặc dù nhiệt độ khí nạp thay đổi, ECU của động cơ không cần phải hiệu chỉnh thời gian phun nhiên liệu đối với nhiệt độ không khí nạp. - Ngoài ra, khi mật độ không khí giảm đi ở các độ cao lớn, khả năng làm nguội của không khí giảm xuống so với cùng thể tích khí nạp ở mức nước biển. Do đó mức làm nguội cho dây sấy này giảm xuống. Vì khối khí nạp được phát hiện cũng sẽ giảm xuống, nên không cần phải hiệu chỉnh mức bù cho độ cao lớn. IV. Tìm hiểu về ADC: 1/ ADC nói chung: a) ADC: (Analog to Digital Converter) là bộ chuyển đổi tương tự sang số, lấy mức điện thế vào tương tự sau đó một thời gian sẽ sinh ra mã đầu ra 16 dạng số biểu diễn đầu vào tương tự. Hoạt động cơ bản của lớp ADC: -Xung lệnh START khởi động sự hoạt động của hệ thống. - Xung Clock quyết định bộ điều khiển liên tục chỉnh sửa số nhịp hân lưu trong thanh ghi. - Số nhịp hân trong thanh ghi được ADC chuyển đổi thành mức điện thế tương tự VAx. - Bộ so sánh so sánh VAX với đầu vào trương tự VA. Nếu VAX < VA đầu ra của bộ so sánh lên mức cao. Nếu VAX > VA ít nhất bằng một khoảng VT (điện thế ngưỡng), đầu ra của bộ so sánh sẽ xuống mức thấp và ngừng tiến trình biến đổi số nhịp hân ở thanh ghi.Tại thời điểm này VAX xấpxỉ VA.giá trị nhịp hân ở thanh ghi là đại lượng số tương đương VAX và cũng là đại lượng số tương đương VA, trong giới hạn độ phân giải và độ chính xác của hệ thống. - Logic điều khiển kích hoạt tín hiệu ECO khi chu kỳ chuyển đổi kết thúc.Tiến trình này có thể có nhiều thay đổi đối với một số loại ADC khác, chủ yếu là sự khác nhau ở cách thức bộ điều khiển sửa đổi số nhịp hân trong thanh ghi. 17 b) Các chỉ tiêu kỹ thuật chủ yếu của ADC: - Độ phân giải Độ phân giải của một ADC biểu thị bằng số bit của tín hiệu số đầu ra.Số lượng bit nhiều sai số lượng tử càng nhỏ, độ chính xác càng cao. - Dải động, điện trở đầu vào: Mức logic của tín hiệu số đầu ra và khả năng chịu tải (nối vào đầu vào). - Độ chính xác tương đối: Nếu lý tưởng hóa thì tất cả các điểm chuyển đổi phải nằm trên một đường thẳng.Độc chính xác tương đối là sai số của các điểm chuyển đổi thực tế so với đặc tuyến chuyển đổi lý tưởng.Ngoài ra còn yêu cầu ADC không bị mất bit trong toàn bộ phạm vi công tác. - Tốc độ chuyển đổi Tốc độ chuyển đổi được xác định thời gian bởi thời gian cần thiết hoàn thành một lần chuyển đổi A/D. Thời gian này tính từ khi xuất hiện tín hiệu điều khiển chuyển đổi đến khi tín hiệusố đầu ra đã ổn định. - Hệ số nhiệt độ Hệ số nhiệt độ là biến thiên tương đối tín hiệu số đầu ra khi nhiệt độ biến đổi 10C trong phạm vi nhiệt độ công tác cho phép với điều kiện mức tương tự đầu vào không đổi. - Tỉ số phụ thuộc công suất Giả sử điện áp tương tự đầu vào không đổi, nếu nguồn cung cấp cho ADC biến thiên mà ảnh hưởng đến tín hiệu số đầu ra càng lớn thì tỉ số phụ thuộc nguồn càng lớn. - Công suất tiêu hao. 2/ ADC trên vi điều khiển PIC: a) Giới thiệu về ADC của PIC: - ADC là bộ chuyển đổi tín hiệu tương tự thành tín hiệu số. - PIC 16F877A có 8 ngõ vào Analog (RA0:RA4 and RE0:RE2) và mỗi kênh ADC là 10 bit với chip 40 chân. Hiệu điện thế chuẩn V REF có thể được lựa chọn là VDD, VSS hay hiệu điện thế chuẩn được xác lập trên 2 chân RA2, RA3. -Bộ chuyển đổi ADC có cấu trúc độc lập để có thể hoạt động trong khi vi điều khiển đang ở chế độ Sleep, xung cung cấp cho ADC lấy từ dao động RC bên trong của khối ADC. 18 -Kết quả chuyển đổi từ tín hiệu tương tự sang số là 10 Bit số tương ứng và được lưu trong 2 thanh ghi: ADRESH, ADRESL. -Khi không sử dụng bộ chuyển đổi ADC, các thanh ghi này có thể được sử dụng như các thanh ghi thông thường khác. Khi quá trình chuyển đổi hoàn tất, kết quả sẽ được lưu vào 2 thanh ghi ADRESH, ADRESL. Bit được xóa về 0 và cờ ngắt ADIF được SET. b) Khối ADC trong PIC: Các thanh ghi liên quan đến bộ chuyển đổi ADC Thanh ghi ADCON0 (ADDRESS 1FH): có chức năng điều khiển hoạt động của thanh ghi ADC. - Bit 6-7: các bit lựa chọn xung chuyển đổi AD. - Bit 3-5: các bit lựa chọn kênh tương tự. - Bit 2: bit báo trạng thái chuyển đổi ADC. - Bit 1: Chưa dùng nếu đọc là ‘0’. - Bit 0: bit mở nguồn cho ADC hoạt động. - Bit 7, 6: Dùng lựa chọn tần số chuyển đổi. - Bit 5-3: CHS2:CHS0: Các bit lựa chọn kênh tương tự. - Bit 2: GO/DONE. Bit này bằng 1 khi chuyển đổi ADC đang diễn ra. Bit này bằng 0 khi quá trình chuyển đổi kết thúc. - Bit 0: ADON. Bit này bằng 1 thì khối ADC được mở nguồn. Bit này bằng 0 thì khối ADC bị tắt nguồn để giảm bớt công suất tiêu thụ. Thanh ghi ADCON1 (ADDRESS 9FH): - Thiết lập chức năng cho các chân của Port là ngõ vào nhận tương tự hoặc chân xuất nhập I/O. - Bit 7: bit lựa chọn định dạng kết quả ADC. Bit =1 canh lề phải, ngược lại canh lề trái - Bit 6 (ADCS2): bit lựa chọn xung clock cho chuyển đổi ADC. - Bit 5-4: chưa dùng nếu đọc sẻ có giá trị là ‘0’. - Bit 3-0: bit điều khiển ADC. c) Quy trình chuyển đổi từ tương tự sang số gồm những bước sau: Thiết lập các thông số cho bộ chuyển đổi ADC: - Chọn ngõ vào analog, chọn điện áp mẫu (dựa trên các thông số của thanh ghi ADCON1). - Chọn kênh chuyển đổi AD (thanh ghi ADCON0). - Chọn xung clock cho kênh chuyển đổi AD (thanh ghi ADCON0). - Cho phép bộ chuyển đổi AD hoạt động (thanh ghi ADCON0). Thiết lập các cờ ngắt cho bộ ADC: - Clear bit ADIF (ADC Interrupt Flag bit =0 chưa hoàn thành chuyển đổi). 19 - Set bit ADIE (ADC Interrupt Enable bit=1 cho phép ngắt ADC). - Set bit PEIE (Peripheral Interrupt Enable bit = 1 cho phép tất cả các ngắt ngoại vi). - Set bit GIE (Global Interrupt Enable bit= 1 cho phép tất cả các ngắt). 3/ Lệnh điều khiển ADC trong CCS: a) Setup_ADC (mode): ADC_OFF: tắt hoạt động ADC (tiết kiệm điện, dành chân cho hoạt động khác). ADC_CLOCK_INTERNAL: thời gian lấy mẫu bằng xung clock IC (mất 2-6 s) thường là chung cho các chip. ADC_CLOCK_DIV_2: thời gian lấy mẫu bằng xung clock / 2 (mất 0.4 s trên thạch anh 20 MHz) ADC_CLOCK_DIV_8: thời gian lấy mẫu bằng xung clock / 8 (1.6 s) ADC_CLOCK_DIV_32: thời gian lấy mẫu bằng xung clock / 32 (6.4 s) b) Setup_ADC_ports (value): Sau đây là các giá trị value dùng trong 16F877A Vref: áp chuẩn, Vdd: áp nguồn. ALL_ANALOGS : dùng tất cả chân sau làm analog : A0 A1 A2 A3 A5 E0 E1 E2 (Vref=Vdd) NO_ANALOG : không dùng analog , các chân đó sẽ là chân I /O . AN0_AN1_AN2_AN4_AN5_AN6_AN7_VSS_VREF : A0 A1 A2 A5 E0 E1 E2 VRefh=A3 AN0_AN1_AN2_AN3_AN4 : A0 A1 A2 A3 A5 (tên thì giống nhau cho tất cả thiết bị nhưng 16F877 chỉ có portA có 5 chân nên A0 , A1 , A2 , A5 được dùng , A6 , A7 không có) AN0_AN1_AN3 : A0 A1 A3 , Vref = Vdd AN0_AN1_VSS_VREF A0 A1 VRefh = A3 AN0_AN1_AN4_AN5_AN6_AN7_VREF_VREF : A0 A1 A5 E0 E1 E2 VRefh=A3,VRefl=A2. AN0_AN1_AN2_AN3_AN4_AN5:A0 A1 A2 A3 A5 E0 AN0_AN1_AN2_AN4_AN5_VSS_VREF : A0 A1 A2 A5 E0 VRefh=A3 AN0_AN1_AN4_AN5_VREF_VREF: A0 A1 A5 E0 VRefh=A3 VRefl=A2 AN0_AN1_AN4_VREF_VREF: A0 A1 A5 VRefh=A3 VRefl=A2 AN0_AN1_VREF_VREF A0 A1 VRefh=A3 VRefl=A2 20 AN0: A0 AN0_VREF_VREF: A0 VRefh=A3 VRefl=A2 VD: setup_adc_ports (AN0_AN1_AN3); // A0, A1, A3 nhận analog, áp nguồn +5V cấp cho IC sẽ là điện áp chuẩn. c) Set_ADC_channel (channel): + Chọn chân để đọc vào giá trị analog bằng lệnh Read_ADC ( ). Giá trị channel tuỳ số chân chức năng ADC mỗi chip .Với 16F877, channel có giá trị từ 0 -7 : 0-chân A0, 1-chân A1, 2-chân A2, 3-chân A3, 4-chân A5, 5chân E0, 6-chân E1, 7-chân E2 +Hàm không trả về trị. Nên delay 10 s sau hàm này rồi mới dùng hàm read_ADC ( ) để bảo đảm kết quả đúng. Hàm chỉ hoạt động với A /D phần cứng trên chip. d) Read_ADC (mode): + Dùng đọc giá trị ADC từ thanh ghi (cặp thanh ghi) chứa kết quả biến đổi ADC. Hàm này sẽ hỏi vòng cờ cho tới khi cờ này báo đã hoàn thành biến đổi ADC (sẽ mất vài s) thì xong hàm. + Nếu giá trị ADC là 8 bit như khai báo trong chỉ thị #DEVICE , giá trị trả về của hàm là 8 bit, ngược lại là 16 bit nếu khai báo #DEVICE sử dụng ADC 10 bit trở lên . + Khi dùng hàm này, nó sẽ lấy ADC từ chân chọn trong hàm Set_ADC_channel () trước đó. Nghĩa là mỗi lần chỉ đọc 1 kênh. Muốn đổi sang đọc chân nào, dùng hàm Set_ADC_channel () lấy chân đó. Nếu không có đổi chân, dung read_ADC ( ) bao nhiêu lần cũng được. + Mode có thể có hoặc không, gồm có: ADC_START_AND_READ: giá trị mặc định. ADC_START_ONLY: bắt đầu chuyển đổi và trả về. ADC_READ_ONLY: đọc kết quả chuyển đổi lần cuối. V. Tìm hiểu về LCD: 1/ Giới thiệu chung về LCD: a)Màn hình tinh thể lỏng (Liquid Crystal Display, LCD):là loại thiết bị hiển thị cấu tạo bởi các tế bào (các điểm ảnh) chứa tinh thể lỏng có khả năng thay đổi tính phân cực của ánh sáng và do đó thay đổi cường độ ánh sáng truyền qua khi kết hợp với các kính lọc phân cực. Chúng có ưu điểm là phẳng, cho hình ảnh sáng, chân thật và tiết kiệm điện. -Ngày nay, thiết bị hiển thị LCD được sử dụng trong rất nhiều các ứng dụng của VĐK. LCD có rất nhiều ưu điểm so với các dạng hiển thị khác: Nó có khả năng 21 hiển thị kí tự đa dạng, trực quan (chữ, số và kí tự đồ họa), dễ dàng đưa vào mạch ứng dụng theo nhiều giao thức giao tiếp khác nhau, tốn rất ít tài nguyên hệ thống và giá thành rẻ . . . -LCD là loại chỉ thị thụ động, tiêu thị năng lượng rất nhỏ và có tỉ số tương phản tốt. Ngoài ra có những tính chất thông dụng sau đây: +Không tự phát ra ánh sáng và phụ thuộc vào ánh sáng xung quanh và ánh sáng nền. +Có ánh sáng khuếch tán. +Hoạt động ở dạng trong suốt hoặc phản chiếu. +Thông dụng nhất là loại Neumatic (NLC), loại chất lỏng này trong suốt. Khi nó được áp điện trường lớn sẽ xuất hiện những ion di chuyển xuyên qua phá vỡ cấu trúc thông thường dạng tinh thể. Vì vậy chất lỏng được phân cực trở nên chắn sáng, có màu đen sậm hơn so với xung quanh. Khi điện trường mất đi, chất lỏng trở về dạng tinh thể cũ và trở nên trong suốt trở lại. +Cấu tạo cụ thể của LCD gồm có một vật liệu tinh thể lỏng NLC có bề dày khoảng 10 mm được kẹp giữa hai miếng thủy tinh. Mặt thủy tinh được phủ một lớp mỏng kim loại (oxide thiếc) cho ánh sáng xuyên qua, được dùng làm bản cực mặt trước, bản cực mặt sau cũng thực hiện như vậy. Còn loại LCD phản chiếu thì bản cực mặt sau cho phản chiếu sáng. +Lớp vỏ bọc LCD được cách điện và hàn kín lại. b) LCD có những đặc điểm sau: -Điện trường cần thiết cho LCD hoạt động thông thường 104 V/cm. Do đó điện áp 10v cho LCD có bề dày 10 mm. -Vật liệu NLC có điện trở rất lớn (1010 ohm) cho nên dòng để cho LCD hoạt động rất nhỏ khoảng 10 mA/cm2 và công suất hoạt động 10 mW/cm2. -LCD là thiết bị họat động ở tốc độ chậm, thời gian để dẫn vài mili giây và tắt vài chục mili giây. Hiện nay LCD (loại thông dụng có thể giao tiếp được với PIC) được chia thành 2 loại: -LCD graphic: đặc điểm loại này là toàn bộ màn hình được chia thành các điểm ảnh, giá thành tùy thuộc vào độ phân giải và hãng sản xuất. Các độ phân giải thông thường là: 240x64, 240x128, 160x64, 128x128, 128x64, ... -LCD alphanumeric: Chỉ dùng để hiển thị chữ cái và chữ số. Với loại này 1 ký tự hiển thị trên một ma trận 5x7 hoặc 5x10, như vậy với loại LCD 16x2 (có hai hàng và mỗi hàng có 16 ký tự) sẽ có 32 ma trận xếp trên hai hàng. Hiện nay có các loại LCD thông alphanumeric thông dụng là: 14x2, 16x1, 20x2, 20x4. c) Các chân của LCD: -Các chân từ D0 - D7 các chân data truyền dữ liệu để hiển thị, và điều khiển. -RW: Read/Write (1/0). -Vdd: chân cấp nguồn. 22 -E: Enabled (cho phép không cho phép). -RS: Reset. d) Các chế độ làm việc của LCD: -Chế độ 8bit, dùng cả 8 chân data (d0-d7) để truyền dữ liệu. -Chế độ 4 bit, chỉ dùng 4 chân để truyền dữ liệu. Ở chế độ này, để truyền 8 bit dữ liệu phải truyền 2 lần. 2/ LCD 16x2: -Đây là loại gồm 16 ký tự x2 dòng ,mỗi ký tự được tạo ra từ một ma trận điểm sáng kích cỡ 5×7 hoặc 5×10. 3/ Bảng mã lệnh trong LCD 16×2: a) Một số chú ý: Trước khi tìm hiểu tập lệnh của LCD, sau đây là một vài chú ý khi giao tiếp với LCD: -Tuy trong sơ đồ khối của LCD có nhiều khối khác nhau, nhưng khi lập trình điều khiển LCD ta chỉ có thể tác động trực tiếp được vào 2 thanh ghi DR và IR thông qua các chân DBx, và ta phải thiết lập chân RS, R/W phù hợp để chuyển qua lại giữ 2 thanh ghi này. -Với mỗi lệnh, LCD cần một khoảng thời gian để hoàn tất, thời gian này có thể khá lâu đối với tốc độ của MPU, nên ta cần kiểm tra cờ BF hoặc đợi (delay) cho LCD thực thi xong lệnh hiện hành mới có thể ra lệnh tiếp theo. -Địa chỉ của RAM (AC) sẽ tự động tăng (giảm) 1 đơn vị, mỗi khi có lệnh ghi vào RAM. (Điều này giúp chương trình gọn hơn). - Các lệnh của LCD có thể chia thành 4 nhóm như sau: -Các lệnh về kiểu hiển thị. VD: Kiểu hiển thị (1 hàng / 2 hàng), chiều dài dữ liệu (8 bit / 4 bit) … -Chỉ định địa chỉ RAM nội. -Nhóm lệnh truyền dữ liệu trong RAM nội. b) Tập lệnh: -Tập lệnh của LCD tương đối đơn giản. Nhưng khi lập trình cho mạch có LCD ta chỉ cần gọi các hàm có sẵn trong trình biên dịch mà không cần phải đánh các lệnh phức tạp. 23 4/ Sơ đồ chân: a) Các chân này được đánh số thứ tự và đặt tên như hình : 24 -Ý nghĩa của các chân: b) Nguyên lý hoạt động: -Các chân 1,2,3 là các chân VSS , VDD, VEE trong đó VSS chân nối đất , VEE chân chọn độ tương phản chân này dc chọn qua 1 biến trở 5K một đầu nối VCC , một đầu nối mát. Chân VDD nối dương nguồn. - Chân chọn thanh ghi RS (Register Select): Có hai thanh ghi trong LCD, chân RS (Register Select) được dùng để chọn thanh ghi, như sau: Nếu RS = 0 ở chế độ ghi lệnh như xóa màn hình , bật tắt con trỏ… Nếu RS =1 ở chế độ ghi dữ liệu như hiển thị ký tự, chữ số lên màn hình. 25 -Chân đọc/ ghi (R/W): Đầu vào đọc/ ghi cho phép người dùng ghi thông tin lên LCD khi R/W = 0 hoặc đọc thông tin LCD khi R/W = 1. -Chân cho phép E (Enable): Chân cho phép E được sử dụng bởi LCD để chốt dữ liệu của nó. Khi dữ liệu được đến chân dữ liệu thì cần có 1 xung từ mức cao xuống mức thấp ở chân này để LCD chốt dữ liệu, xung này phải có độ rộng tối thiểu 450ns. -Chân D0 – D7: Đây là 8 chân dữ liệu 8 bít, được dùng để gửi thông tin lên LCD hoặc đọc nội dung của các thanh ghi trong LCD. Để hiển thị các chữ cái và các con số chúng ta gửi các mã ASCII của các chữ cái và các con số tương ứng đến các chân này khi bật RS =1. c) Cách kết nối VĐK PIC với LCD 16x2 ở chế độ 4 bit: 5/ Lập trình cho LCD sử dụng trình biên dịch CCS 4.114 : -Khi lập trình trong MpLab IDE đã tích hợp CCS 4.114 ta chỉ cần gọi thư viện bằng lệnh : #include 26 -Để sử dụng các hàm trong thư viện, ta cần phải đọc và tìm hiểu ý nghĩa của từng hàm trong thư viện và sử dụng cho phù hợp. -Như vậy khi giao tiếp với LCD ta không cần tìm hiểu tập lệnh của LCD mà cần phải hiểu được các hàm có sẵn trong trình biên dịch (ở đây ta dùng CCS) để lập trình cho VĐK gửi tín hiệu nhiệt độ. -Một số hàm thông dụng trong CCS cần dùng: 1. Hàm khởi tạo LCD: Void LCD_Init (void) Đây là hàm quan trọng nhất. Trước khi làm việc với LCD ta phải khởi tạo cho nó hoạt động. 2. Hàm dữ liệu ra LCD (8bit): Void LCD_send_byte (Byte address, byte n). Đây là hàm cần dùng để gửi dữ liệu ra các chân từ D0 – D7 của LCD. 3. Hàm thiết lập vị trí con trỏ của LCD: Void LCD_gotoxy(byte x, byte y). 4. Hàm xóa LCD: Void LCD_clear() 5. Hàm gửi một kí tự ra LCD: Void LCD_putc(char c). 6. Hàm gửi một chuỗi kí tự ra LCD: Void LCD_puts(char s). VI. Chương trình mạch điều khiển: #include #fuses xt #device adc=8 #use delay (clock=4000000) #define LCD_ENABLE_PIN PIN_C3 #define LCD_RS_PIN PIN_C1 #define LCD_RW_PIN PIN_C2 #define LCD_DATA4 PIN_C4 #define LCD_DATA5 PIN_C5 27 #define LCD_DATA6 PIN_C6 #define LCD_DATA7 PIN_C7 #include float value=0; void main() { set_tris_a(0b111111); set_tris_c(0b00000000); setup_adc(ADC_CLOCk_INTERNAL); setup_adc_ports (AN0); lcd_init(); float luuluong; while (true) { set_adc_channel(0); Delay_us(10); value=read_adc(); delay_us(10); luuluong=value*1/255; lcd_init(); lcd_gotoxy(1,1); printf(LCD_putc, "Luu luong khi"); lcd_gotoxy(1,2); 28 printf(LCD_putc, "%f (l/s)", luuluong); } } VII. Mạch mô phỏng trên Proteus: 29 30 [...]... hoạt động bình thường cả với xung điện áp và bù được nhiễu để đảm bảo đưa ra tín hiệu đo với độ chính xác cao Cảm biến được dùng trong đồ án là cảm biến lưu lượng khí nạp kiểu dây sấy: Cảm biến lượng khí được dung trong động cơL-EFI để cảm nhận lượng khí nạp.Đây là một cảm biến quan trọng nhất của động cơL-EFI.Tín hiệu lượng khí nạp được dung để tính toán khoảng thời gian phun cơ bản và góc đánh lửa... số biểu diễn đầu vào tương tự Hoạt động cơ bản của lớp ADC: -Xung lệnh START khởi động sự hoạt động của hệ thống - Xung Clock quyết định bộ điều khiển liên tục chỉnh sửa số nhịp hân lưu trong thanh ghi - Số nhịp hân trong thanh ghi được ADC chuyển đổi thành mức điện thế tương tự VAx - Bộ so sánh so sánh VAX với đầu vào trương tự VA Nếu VAX < VA đầu ra của bộ so sánh lên mức cao Nếu VAX > VA ít nhất... tiếp khác nhau, tốn rất ít tài nguyên hệ thống và giá thành rẻ -LCD là loại chỉ thị thụ động, tiêu thị năng lượng rất nhỏ và có tỉ số tương phản tốt Ngoài ra có những tính chất thông dụng sau đây: +Không tự phát ra ánh sáng và phụ thuộc vào ánh sáng xung quanh và ánh sáng nền +Có ánh sáng khuếch tán +Hoạt động ở dạng trong suốt hoặc phản chiếu +Thông dụng nhất là loại Neumatic (NLC), loại chất lỏng... cảm bíên lưu lượng khí nạp có thể đo được khối lượng không khí nạp bằng cách phát hiện điện áp ở điểm B 15 - Trong hệ thống này, nhiệt độ của dây sấy (R h) được duy trì liên tục ở nhiệt độ không đổi cao hơn nhiệt độ của không khí nạp, bằng cách sử dụng nhiệt điện trở (Ra) Do đó, vì có thể đo được khối lượng khí nạp một cách chính xác mặc dù nhiệt độ khí nạp thay đổi, ECU của động cơ không cần phải hiệu... tính phân cực của ánh sáng và do đó thay đổi cường độ ánh sáng truyền qua khi kết hợp với các kính lọc phân cực Chúng có ưu điểm là phẳng, cho hình ảnh sáng, chân thật và tiết kiệm điện -Ngày nay, thiết bị hiển thị LCD được sử dụng trong rất nhiều các ứng dụng của VĐK LCD có rất nhiều ưu điểm so với các dạng hiển thị khác: Nó có khả năng 21 hiển thị kí tự đa dạng, trực quan (chữ, số và kí tự đồ họa), dễ... làm cho nó nóng lên Khi không khí chạy quanh dây này, dây sấy được làm nguội tương ứng với khối không khí nạp Bằng cách điều chỉnh dòng điện chạy vào dây sấy này để giữ cho nhiệt độ của dây sấy không đổi, dòng điện đó sẽ tỷ lệ thuận với khối không khí nạp Sau đó có thể đo khối lượng không khí nạp bằng cách phát hiện dòng điện đó Trong trường hợp của cảm biến lưu lượng khí nạp kiểu dây sấy, dòng điện... biệt là cho kết quả đo khá chính xác b) Cấu tạo của bộ cảm biến lưu lượng khí nạp loại dây sấy: - Như trình bày ở hình minh họa, cấu tạo của cảm biến lưu lượng khí nạp kiểu dây nóng rất đơn giản 12 - Cảm biến lưu lượng khí nạp gọn và nhẹ như được thể hiện trong hình minh họa ở bên trái là loại cắm phích được đặt vào đường không khí, và làm cho phần không khí nạp chạy qua khu vực phát hiện Như trình bày... khu vực phát hiện Bằng cách trực tiếp đo khối lượng không khí nạp, độ chính xác phát hiện được tăng lên và hầu như không có sức cản của không khí nạp Ngoài ra, vì không có các cơ cấu đặc biệt, dụng cụ này có độ bền tuyệt hảo.Cảm biến lưu lượng khí nạp được thể hiện trong hình minh hoạ cũng có một cảm biến nhiệt độ không khí nạp gắn vào 13 c) Hoạt động và chức năng: Như thể hiện trong hình minh họa, dòng... một số loại ADC khác, chủ yếu là sự khác nhau ở cách thức bộ điều khiển sửa đổi số nhịp hân trong thanh ghi 17 b) Các chỉ tiêu kỹ thuật chủ yếu của ADC: - Độ phân giải Độ phân giải của một ADC biểu thị bằng số bit của tín hiệu số đầu ra.Số lượng bit nhiều sai số lượng tử càng nhỏ, độ chính xác càng cao - Dải động, điện trở đầu vào: Mức logic của tín hiệu số đầu ra và khả năng chịu tải (nối vào đầu vào)... chế về cơ khí và kết nối đầu ra mở rộng cũng sẽ ảnh hưởng đến quyết định chọn lựa này Nói chung, độ chính xác của lưu lượng kế còn phụ thuộc vào cả môi trường đo xung quanh Các ảnh hưởng của áp suất, nhiệt độ, chất lỏng /khí hay bất kỳ tác động bên ngoài nào đều có thể ảnh hưởng đến kết quả đo - Cảm biến đo lưu lượng trong công nghiệp được lắp đặt ở môi trường nhiễu cao và thường bị xung áp Điều này