[PIC] Hệ Thống Tưới Cây Tự Động Sử Dụng PIC16F877A


Hệ Thống Tưới Cây Tự Động

Mở đầu

Lý do chọn đề tài

Trong một xã hội hiện đại, sự phát triển của ngành của ngành điện tử viễn thông là một yêu cầu không thể thiếu để thúc đẩy nền kinh tế phát triển và góp phần nâng cao đời sống xã hội.
Ngày nay, trên thế giới, điện tử viễn thông vẫn không ngừng phát triển với tốc độ rất cao và thâm nhập ngày càng sâu vào tất cả các lĩnh vực của đời sống xã hội. Cùng với sự phát triển như vũ bão đó, ngành điện tử viễn thông Việt Nam cũng đang nỗ lực hết sức trên con đường tìm chỗ đứng cho mình. Từ khi công nghệ chế tạo loại vi mạch lập trình phát triển đã đem đến các kĩ thuật điều khiển hiện đại có nhiều ưu điểm hơn so với việc lắp ráp bằng các linh kiện rời như: kích thước nhỏ, giá thành hạ, làm việc tin cậy, công suất tiêu thụ nhỏ. Ngày nay, lĩnh vực điều khiển đã được ứng dụng nhiều trong các thiết bị, sản phẩm phục vụ cho nhu cầu sinh hoạt hàng ngày làm cho đời sống của chúng ta ngày càng hiện đại và tiện nghi hơn.…
Với mục tiêu nêu trên và xuất phát từ những yêu cầu thực tế, trọng tâm của đề tài này sẽ đi sâu nghiên cứu “Thiết kế hệ thống tưới cây tự động”. Với mong muốn đưa hệ thống của mình vào úng dụng trong cuộc sống hàng ngày.

Mục tiêu của đề tài

Mục tiêu tổng quát

Các loại vi mạch này xử lý nhanh hơn rất nhiều so với các vi mạch trước và đặc biệt có thể ghi/xóa dữ liệu 1 cách dễ dàng. Vì thế, nó được sử dụng nhiều trong các thiết bị điện tử. Với sự ra đời của IC dòng mới làm thúc đẩy sự phát triển của những module cảm biến như: module cảm biến hồng ngoại…
Bên cạnh sự phát triển của khoa học kỹ thuật đã góp phần nâng cao đời sống con người, máy móc có thể hoạt động làm giảm đi sức người, sức của. Cũng chính vì thế mà con người muốn tìm kiếm những điều mới mẻ, tiện lợi, dễ dàng giám sát và kiểm tra. Sự lựa chọn cấp thiết hiện giờ chính là một hệ thống tưới cây tự động.

Mục tiêu cụ thể

Tưới cây tự động dựa theo mức cài đặt và thông số nhiệt độ, độ ẩm từ cảm biến.
Cài đặt mức nhiệt độ, độ ẩm để tưới cây.
Điều khiển hoạt động tưới thủ công.
Hiển thị thông số, trạng thái lên màn hình LCD.
Hệ thống làm việc ổn định.
Có khả năng đưa vào ứng dụng trong thực tế.

Giới hạn và phạm vi của đề tài

Đối tượng nghiên cứu

Đối tượng nghiên cứu: hệ thống tưới tiêu trong gia đình, bộ xử lý trung tâm Pic 16f877a; module cảm biến nhiệt độ LM35, module cảm biến độ ẩm đất; Relay DC điều khiển bật/tắt máy bơm, ...
Khách thể nghiên cứu: Các gia đình muốn sử dụng hệ thống tưới tiêu thông minh một cách dễ dàng và tiện lợi.

Phạm vi nghiên cứu

Phạm vi nghiên cứu: các hệ thống tưới tiêu trong các gia đình hiện có.
Ý nghĩa khoa học: ứng dụng khoa học kỹ thuật vào thực tiễn.

Nội dung thực hiện

Khảo sát hộ gia đình.
Thiết kế sơ đồ nguyên lý.
Lập trình, cài đặt các chức năng.

Phương pháp tiếp cận

Sử dụng các phương pháp nghiên cứu:
Phương pháp đọc tài liệu.    
Phương pháp phân tích mẫu.
Phương pháp thực nghiệm.
Tiếp thu các đóng góp, góp ý từ giáo viên hướng dẫn để hoàn thiện hơn hệ thống.

Cơ sở lý thuyết về hệ thống nhúng

Ngoại vi và giao diện

Vi điều khiển PIC 16F877A

Hình 2.1: Vi điều khiển PIC 16F877A

Tổng quan về 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à 20 MHz với một chu kì lệnh là 200ns. Bộ nhớ chương trình 8Kx14 bit, bộ nhớ dữ liệu 368-byte RAM và bộ nhớ dữ liệu EEPROM với dung lượng 256 byte. Số PORT I/O là 5 với 33 pin 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 được 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 2 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 Oscillator khác nhau.

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:
Bộ nhớ chương trình của vi điều khiển PIC16F877A là bộ nhớ flash, dung lượng bộ nhớ 8K word (1 word = 14 bit) và được phân thành nhiều trang (từ page0 đế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 1 word (14 bit). 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 địa chỉ hóa bởi bộ đếm chương trình.
+ Bộ nhớ dữ liệu:
Bộ nhớ dữ liệu của PIC là bộ nhớ EEPROM được chia ra làm nhiều bank. Đối với PIC16F877A 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 SFG (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 bank của bộ nhớ dữ liệu giúp thuận tiện trong quá trình truy xuất và làm giảm bớt lệnh của chương trình.

Sơ đồ chân/Sơ đồ khối

Sơ đồ khối của PIC 16F877A
Hình 2.2: Sơ đồ khối của PIC 16F877A
Cấu hình bên trong của PIC 16F877A:
Có thanh ghi trạng thái (status register) cho biết trạng thái sau khi tính toán của khối ALU.
Có thanh ghi FSR.
Có khối ALU cùng với thanh ghi working hay thanh ghi A để xử lý dữ liệu.
Có khối giải mã lệnh và điều khiển (Instruction Decode and Control).
Có khối dao động nội (Internal Oscillator Block).
Có khối dao động kết nối với 2 ngõ vào OSC1 và OSC2 để tạo dao động.
Có khối các bộ định thời khi cấp điện PUT, có bộ định thời chờ dao động ổn định, có mạch reset khi có điện, có bộ định thời giám sát watchdog, có mạch reset khi phát hiện sụt giảm nguồn.
Có khối bộ dao động cho timer1 có tần số 32kHz kết nối với 2 ngõ vào T1OSI và T1OSO.
Có khối CCP2 và ECCP.
Có khối mạch gỡ rối (In-Circuit Debugger IDC).
Có khối timer0 với ngõ vào xung đếm từ bên ngoài là T0CKI.
Có khối truyền dữ liệu đồng bộ/bất đồng bộ nâng cao.
Có khối truyền dữ liệu đồng bộ MSSP cho SPI và I2C.
Có khối bộ nhớ Eeprom 256-bytes và thanh ghi quản lý địa chỉ EEADDR và thanh ghi dữ liệu EEDATA.
Có khối chuyển đổi tín hiệu tương tự sang số ADC.
Có khối 2 bộ so sánh với nhiều ngõ vào ra và điện áp tham chiếu.
Có khối các port A, B, C, E và D
Sơ đồ chân của PIC16F877A
Hình 2.3: Sơ đồ chân của PIC 16F877A
Chức năng các chân 16F877A:
Chức năng các chân của portA
Chân RA0/AN0/ULPWU/C12IN0- (2): có 4 chức năng:
+ RA0: xuất/ nhập số – bit thứ 0 của port A.
+ AN0: ngõ vào tương tự của kênh thứ 0.
Chân RA1/AN1/C12IN1- (3): có 3 chức năng:
+ RA1: xuất/nhập số – bit thứ 1 của port A.
+ AN1: ngõ vào tương tự của kênh thứ 1
Chân RA2/AN2/VREF-/CVREF/C2IN+ (4): có 5 chức năng:
+ RA2: xuất/nhập số – bit thứ 2 của port A.
+ AN2: ngõ vào tương tự của kênh thứ 2.
+ VREF-: ngõ vào điện áp chuẩn (thấp) của bộ ADC.
+ CVREF: điện áp tham chiếu VREF ngõ vào bộ so sánh.

Chân RA3/AN3/VREF+/C1IN+ (5): có 4 chức năng:
+ RA3: xuất/nhập số – bit thứ 3 của port A.
+ AN3: ngõ vào tương tự kênh thứ 3.
+ VREF+: ngõ vào điện áp chuẩn (cao) của bộ A/D.
+ C1IN+: ngõ vào dương của bộ so sánh C1.
Chân RA4/TOCKI/C1OUT (6): có 3 chức năng:
+ RA4: xuất/nhập số – bit thứ 4 của port A.
+ TOCKI: ngõ vào xung clock từ bên ngoài cho Timer0.
+ C1OUT: ngõ ra bộ so sánh 1.
Chân RA5/AN4/ SS / C2OUT (7): có 4 chức năng:
+ RA5: xuất/nhập số – bit thứ 5 của port A.
+ AN4: ngõ vào tương tự kênh thứ 4.
+ SS: ngõ vào chọn lựa SPI tớ (Slave SPI device).
+ C2OUT: ngõ ra bộ so sánh 2.
Chân RA6/OSC2/CLKOUT (14): có 3 chức năng:
+ RA6: xuất/nhập số – bit thứ 6 của port A.
+ OSC2: ngõ ra dao động thạch anh. Kết nối đến thạch anh hoặc bộ cộng hưởng.
Chân RA7/OSC1/CLKIN (13): có 3 chức năng.
+ RA7: xuất/nhập số – bit thứ 7 của port A.
+ OSC1: ngõ vào dao động thạch anh hoặc ngõ vào nguồn xung ở bên ngoài.

Chức năng các chân của portB
Chân RB0/AN12/INT (33): có 3 chức năng:
+ RB0: xuất/nhập số – bit thứ 0 của port B.
+ AN12: ngõ vào tương tự kênh thứ 12.
+ INT: ngõ vào nhận tín hiệu ngắt ngoài.
Chân RB1/AN10/C12IN3- (34): có 3 chức năng:
+ RB1: xuất/nhập số – bit thứ 1 của port B.
+ AN10: ngõ vào tương tự kênh thứ 10.
+ C12IN3-: ngõ vào âm thứ 3 của bộ so sánh C1 hoặc C2.
Chân RB2/AN8 (35): có 2 chức năng:
+ RB2: xuất/nhập số – bit thứ 2 của port B.
+ AN8: ngõ vào tương tự kênh thứ 8.
Chân RB3/AN9/PGM/C12IN2 (36): có 4 chức năng:
+ RB3: xuất/nhập số – bit thứ 3 của port B.
+ AN9: ngõ vào tương tự kênh thứ 9.
+ PGM: Chân cho phép lập trình điện áp thấp ICSP.
+ C12IN1-: ngõ vào âm thứ 2 của bộ so sánh C1 hoặc C2
Chân RB4/AN11 (37): có 2 chức năng:
+ RB4: xuất/nhập số – bit thứ 4 của port B.
+ AN11: ngõ vào tương tự kênh thứ 11.
Chân RB5/ AN13/T1G (38): có 3 chức năng:
+ RB5: xuất/nhập số – bit thứ 5 của port B.
+ AN13: ngõ vào tương tự kênh thứ 13.
+ T1G (Timer1 gate input): ngõ vào Gate cho phép time1 đếm dùng để đếm độ rộng xung.
Chân RB6/ICSPCLK (39): có 2 chức năng:
+ RB6: xuất/nhập số.
+ ICSPCLK: xung clock lập trình nối tiếp.
Chân RB7/ICSPDAT (40): có 2 chức năng:
+ RB7: xuất/nhập số.
+ ICSPDAT: ngõ xuất nhập dữ liệu lập trình nối tiếp.
Chức năng các chân của portC
Chân RC0/T1OSO/T1CKI (15): có 3 chức năng:
+ RC0: xuất/nhập số – bit thứ 0 của port C.

+ T1OSO: ngõ ra của bộ dao động Timer1.
+ T1CKI: ngõ vào xung clock từ bên ngoài Timer1.
Chân RC1/T1OSI/CCP2 (16): có 3 chức năng:
+ RC1: xuất/nhập số – bit thứ 1 của port C.
+ T1OSI: ngõ vào của bộ dao động Timer1.
+ CCP2: ngõ vào Capture2, ngõ ra compare2, ngõ ra PWM2.
Chân RC2 /P1A/CCP1 (17): có 3 chức năng:
+ RC2: xuất/nhập số – bit thứ 2 của port C.
+ P1A: ngõ ra PWM.
+ CCP1: ngõ vào Capture1, ngõ ra compare1, ngõ ra PWM1.
Chân RC3/SCK/SCL (18): có 3 chức năng:
+ RC3: xuất/nhập số – bit thứ 3 của port C.
+ SCK: ngõ vào xung clock nối tiếp đồng bộ/ngõ ra của chế độ SPI.
+ SCL: ngõ vào xung clock nối tiếp đồng bộ/ngõ ra của chế độ I2C.
Chân RC4/SDI/SDA (23): có 3 chức năng:
+ RC4: xuất/nhập số – bit thứ 4 của port C.
+ SDI: ngõ vào dữ liệu trong truyền dữ liệu kiểu SPI.
+ SDA: xuất/nhập dữ liệu I2C.
Chân RC5/SDO (24): có 2 chức năng:
+ RC5: xuất/nhập số – bit thứ 5 của port C.
+ SDO: ngõ xuất dữ liệu trong truyền dữ liệu kiểu SPI.
Chân RC6/TX/CK (25): có 3 chức năng:
+ RC6: xuất/nhập số – bit thứ 6 của port C.
+ TX: ngõ ra phát dữ liệu trong chế độ truyền bất đồng bộ USART.
+ CK: ngõ ra cấp xung clock trong chế độ truyền đồng bộ USART.
Chân RC7/RX/DT (26): có 3 chức năng:
+ RC7: xuất/nhập số – bit thứ 7 của port C.
+ RX: ngõ vào nhận dữ liệu trong chế độ truyền bất đồng bộ EUSART.
+ DT: ngõ phát và nhận dữ liệu ở chế độ truyền đồng bộ EUSART.

Chức năng các chân của portD
Chân RD0 (19): có 1 chức năng:
+ RD0: xuất/nhập số – bit thứ 0 của port D.
Chân RD1 (20): có 1 chức năng:
+ RD1: xuất/nhập số – bit thứ 1 của port D.
Chân RD2 (21): có 1 chức năng:
+ RD2: xuất/nhập số – bit thứ 2 của port D.
Chân RD3 (22): có 1 chức năng:
+ RD3: xuất/nhập số – bit thứ 3 của port D.
Chân RD4 (27): có 1 chức năng:
+ RD4: xuất/nhập số – bit thứ 4 của port D.
Chân RD5/ P1B (28): có 2 chức năng:
+ RD5: xuất/nhập số – bit thứ 5 của port D.
+ P1B: ngõ ra PWM.
Chân RD6/ P1C (29): có 2 chức năng:
+ RD6: xuất/nhập số – bit thứ 6 của port D.
+ P1C: ngõ ra PWM.
Chân RD7/P1D (30): có 2 chức năng:
+ RD7: xuất/nhập số – bit thứ 7 của port D.
+ P1D: ngõ ra tăng cường CPP1
Chức năng các chân của portE
Chân RE0/AN5 (8): có 2 chức năng:
+ RE0: xuất/nhập số.
+ AN5: ngõ vào tương tự 5.
Chân RE1/AN6 (9): có 2 chức năng:
+ RE1: xuất/nhập số.
+ AN6: ngõ vào tương tự kênh thứ 6.

Chân RE2/AN7 (10): có 2 chức năng:
+ RE2: xuất/nhập số.
+ AN7: ngõ vào tương tự kênh thứ 7.
Chân RE3/ MCLR /VPP (1): có 3 chức năng:
+ RE3: xuất/nhập số – bit thứ 3 của port E.
+ MCLR: là ngõ vào reset tích cực mức thấp.
+ VPP: ngõ vào nhận điện áp khi ghi dữ liệu vào bộ nhớ nội flash.
+ Chân VDD (11), (32):
+ Nguồn cung cấp dương từ 2V đến 5V.
+ Chân VSS (12), (31):
+ Nguồn cung cấp 0V.

Màn hình LCD 2004

a. Giới thiệu
Màn hình LCD16x2 xanh lá sử dụng driver HD44780, có khả năng hiển thị 4
dòng với mỗi dòng 20 ký tự, màn hình có độ bền cao, rất phổ biến và dễ sử dụng
thích.
b. Thông số kỹ thuật
Điện áp hoạt động là 5 V.
Kích thước: 98 x 60 x 13.5 mm
Chữ đen, nền xanh lá
Khoảng cách giữa hai chân kết nối là 0.1-inch tiện dụng khi kết nối với Breadboard.
Tên các chân được ghi ở mặt sau của màn hình LCD hổ trợ việc kết nối, đi dây điện.
Có đèn led nền, có thể dùng biến trở hoặc PWM điều chình độ sáng để sử dụng ít điện năng hơn.
Có thể được điều khiển với 6 dây tín hiệu.
Giao tiếp với Pic qua chuẩn I2C
Hình 2.4: Màn hình LCD 2004
Trong 16 chân của LCD được chia ra làm 3 dạng tín hiệu như sau:
Các chân cấp nguồn: Chân số 1 là chân Vss nối mass (0V), chân thứ 2 là Vdd nối với nguồn +5V. Chân thứ 3 dùng để chỉnh tương phản thường nối với biến trở.
Các chân điều khiển: Chân số 4 là chân RS dùng để điều khiển lựa chọn thanh ghi. Chân R/W dùng để điều khiển quá trình đọc và ghi. Chân E là chân cho phép dạng xung chốt.
Các chân dữ liệu D7÷D0: Chân số 7 đến chân số 14 là 8 chân dùng để trao đổi dữ liệu giữa thiết bị điều khiển và LCD.

Relay 5 VDC


Hình 2.5: Relay 5 VDC
Relay hay còn gọi là rơ – le là tên gọi theo tiếng Pháp, là một công tắc (khóa K) điện từ được vận hành bởi một dòng điện tương đối nhỏ có thể bật hoặc tắt một dòng điện lớn hơn nhiều. Bản chất của relay là một nam châm điện (một cuộn dây trở thành một nam châm tạm thời khi dòng điện chạy qua nó) và hệ thống các tiếp điểm đóng cắt có thiết kế module hóa dễ dàng lắp đặt. Bạn có thể nghĩ relay sẽ như một loại đòn bẩy điện vậy, khi chúng ta kích nó bằng một dòng điện nhỏ thì nó sẽ bật “đòn bẩy” một thiết bị nào đó đang sử dụng dòng điện lớn hơn nhiều.
Điện áp và dòng điện được relay chuyển mạch sẽ rất khác so với tín hiệu được sử dụng để kích hoạt hoặc cấp điện cho relay. Nói tóm lại rơ-le hay relay là một thiết bị thông dụng, gọn nhẹ, giá thành dễ tiếp cận và được sử dụng rộng rãi trong đời sống hằng ngày của chúng ta.

Hình 2.6: Sơ đồ chân của Relay 5 VDC
Thông số kỹ thuật:
Điện áp kích hoạt (điện áp trên cuộn dây): 5 VDC
Dòng kích hoạt (dòng điện danh định): 70mA
Dòng tải AC tối đa: 10A – 250/125 VAC
Dòng tải DC tối đa: 10A – 30/28 VDC
Thời gian hoạt động: 10ms
Chuyển mạch tối đa: 300 lần/phút

Cảm biến nhiệt độ LM35

Hình 2.7: Cảm biến nhiệt LM35
LM35 là một cảm biến nhiệt độ được sử dụng rộng rãi. Nó hiển thị các giá trị dưới dạng điện áp đầu ra thay vì độ C.
LM35 hiển thị giá trị điện áp cao hơn cặp nhiệt điện và có thể không cần khuếch đại điện áp đầu ra.
Điện áp đầu ra của LM35 tỷ lệ với nhiệt độ C. Hệ số thang đo là 0,01 V / ° C.
Một đặc điểm quan trọng nhất là nó chỉ lấy 60 micromps từ nguồn và có khả năng tự gia nhiệt thấp.
Cảm biến nhiệt độ LM35 có nhiều gói khác nhau như gói giống transistor kim loại T0-46, gói giống transistor nhựa TO-92, gói dán 8 chân SO-8.

Thông số kỹ thuật:
Điện áp đầu vào tối thiểu và tối đa lần lượt là 35V và -2V.
Có thể đo nhiệt độ từ -55 ° C đến 150 ° C
Điện áp đầu ra tỷ lệ thuận (tuyến tính) với nhiệt độ tức là sẽ có mức tăng 10mV (0,01V) cho mỗi lần tăng nhiệt độ 1 ° C.
Độ chính xác ± 0,5 ° C
Dòng cực máng nhỏ hơn 60uA

Cảm biến độ ẩm đất

Hình 2.8: Cảm biến độ ẩm đất
Cảm biến độ ẩm đất được làm từ vật liệu hữu cơ macromolecule, có thể được sử dụng trong các bệnh viện, nơi lưu trữ, phòng hội thảo, trong các ngành công nghiệp dệt may, thuốc lá, lĩnh vực dược phẩm, khí tượng học, ...
Thông số kỹ thuật:
Điện áp hoạt động: 3.3 – 5V.
Phạm vi hoạt động: độ ẩm 20 - 95%.
Độ chính xác ± 1%

Phần mềm cho hệ thống nhúng

a. Phần mềm CCS Complier
CCS là trình biên dịch lập trình ngôn ngữ C cho Vi điều khiển PIC của hãng Microchip. Chương trình là sự tích hợp của 3 trình biên dich riêng viết cho 3 dòng PIC khác nhau đó là:
‐ PCB cho dòng PIC 12‐bit opcodes
‐ PCM cho dòng PIC 14‐bit opcodes.
‐ PCH cho dòng PIC 16 và 18‐bit
Tất cả 3 trình biên dich này đuợc tích hợp lại vào trong một chương trình bao gồm cả trình soạn thảo và biên dịch là CCS. Giống như nhiều trình biên dịch C khác cho PIC, CCS giúp cho người sử dụng nắm bắt nhanh được vi điều khiển PIC và sử dụng PIC trong các dự án. Các chương trình diều khiển sẽ được thực hiện nhanh chóng và đạt hiệu quả cao thông qua việc sử dụng ngôn ngữ lập trình cấp cao – ngôn ngữ C.
Xem thêm: Cách cài đặt & Crack PIC CCS 5.025
b. Phầm mềm mô phỏng Proteus
Phần mềm Proteus cho phép mô phỏng hoạt động của mạch điện tử bao gồm phần thiết kế mạch và viết chương trình điều khiển cho các họ vi điều khiển như MCS-51, PIC, AVR, … Proteus là phần mềm mô phỏng mạch điện tử của Labcenter Electronics, mô phỏng cho hầu hết các linh kiện điện tử thông dụng, đặc biệt hỗ trợ cho cả các MCU như PIC, 8051, AVR, Motorola.
Phần mềm bao gồm 2 chương trình: ISIS (Intelligent Schematic Input System) cho phép mô phỏng mạch và ARES (Advanced Routing and Editing Software) dùng để vẽ mạch in.
Dễ dạng tạo ra một sơ đồ nguyên lý từ đơn giản đến phức tạp.

Dễ dàng chỉnh sữa các đặc tính của linh kiện trên sơ đồ nguyên lý.
Hỗ trợ kiểm tra lỗi thiết kế trên sơ đồ nguyên lý. Có thể xem và lưu lại phần báo lỗi
Phần mềm chạy mô phỏng và phân tích các tính chất của một mạch điện một cách chính xác.
Proteus cung cấp cho người sử dụng công cụ biên dịch cho các họ vi xử lý như MSC51, AVR, HC11, …qua đó tạo ra các tập tin .hex dùng để nạp cho vi xử lý và tạp tin .dsi dùng để xem và chạy kiểm tra từng bước trong quá trình mô phỏng.
Phần mềm cung cấp rất nhiều mô hình linh kiện có chức năng mô phỏng, từ các vi điều khiển thông dụng đến các linh kiện ngoại vi như LED, LCD, Keypad, cổng RS232… cho phép người sử dụng mô phỏng từ một hệ vi điều khiển hoàn chỉnh đến việc xây dựng phần mềm cho hệ thống đáp ứng các giao thức vật lý. Ngoài ra, Proteus còn cho phép bạn tự tạo linh kiện tương tác động do đó bạn có thể thực hiện các mô phỏng có tương tác giống như hoạt động của một mạch thật.

Xem thêm: Cách cài đặt & Crack Proteus 8.8

Phân tích và thiết kế hệ thống

Đặc tả yêu cầu hệ thống

Các yêu cầu chức năng

Bật/tắt máy bơm nước tự động.
Thiết lập ngưỡng nhiệt độ và độ ẩm tưới nước.
Hiển thị thôg tin, hoạt động lên màn hình LCD.

Các yêu cầu phi chức năng

Độ chính xác cao.
Hệ thống hoạt động ổn định.

Thiết kế hệ thống

Thiết kế phần mô phỏng cho hệ thống

Hệ thống gồm có 5 khối chính:
Khối xử lý trung tâm: Pic16f877a. Làm nhiệm vụ xử lý yêu cầu từ nút nhấn, gửi thông tin nhiệt độ, độ ẩm lên màn hình LCD và điều khiển khối Relay.
Khối nút nhấn: gửi yêu cầu điều khiển từ người dùng tới khối xử lý trung tâm.
Khối cảm biến nhiệt độ: cảm biến nhiệt độ LM35, thu thập dữ liệu nhiệt độ hiện tại và gửi về khối xử lý trung tâm.
Khối cảm biến độ ẩm: cảm biến độ ẩm đất, thu thập dữ liệu độ ẩm hiện tại và gửi về khối xử lý trung tâm.
Khối Relay: Relay nhận tín hiệu điều khiển từ khối xử lý trung tâm và điều khiển bật/tắt thiết bị.
Hình 3.1: Sơ đồ khối hệ thống
Sơ đồ nguyên lý:
Khối điều khiển: PIC16f877a.
Khối Cảm biến: cảm biến nhiệt độ LM35, cảm biến độ ẩm đất.
Relay: gồm Relay điều khiển thiết bị.
LCD: Màn hình LCD20x4 hiển thị chế độ hoạt động.
Nút nhấn: 4 nút nhấn điều khiển và thay đổi chế độ hoạt động của hệ thống.
Hình 3.2: Sơ đồ nguyên lý

Thiết kế phần mềm cho hệ thống

Lưu đồ thuật toán chương trình tổng
Sử dụng nút nhấn MODE để thay đổi giữa các chế độ (Tự động, thủ công, cài đặt nhiệt độ, cài đặt độ ẩm). Một biến đếm để nhận biết thay đổi trạng thái. Khi bắt đầu chương trình, tức Mode = 0, hệ thống sẽ hoạt động ở chế độ Auto. Nút nhấn
được sử dụng hàm ngắt, nối tới chân INT0, mỗi lần nhấn sẽ tăng lên một đơn vị.
- Khi mod = 0: chế độ: Auto.
- Khi mod = 1: chế độ: Thủ công.
- Khi mod = 2: chế độ cài đặt nhiệt độ.
- Khi mod = 3: chế độ cài đặt độ ẩm.

Hình 3.3: Lưu đồ thuật toán
Chế độ thủ công
Ở chế độ thủ công, hệ thống được điều khiển bật/tắt qua nút nhấn MAL.

Hình 3.4: Lưu đồ thuật toán chế độ thủ công
Chế độ cài đặt nhiệt độ
Chế độ cài đặt nhiệt độ, tăng/giảm ngưỡng nhiệt độ thông qua nút nhấn UP và DOWN.

Hình 3.5: Lưu đồ thuật toán chế độ cài đặt nhiệt độ
Chế độ cài đặt độ ẩm
Chế độ cài đặt độ ẩm, tăng/giảm ngưỡng độ ẩm thông qua nút nhấn UP và DOWN.

Hình 3.6: Lưu đồ thuật toán chế độ cài đặt độ ẩm

Kết luận

Kết quả đạt được của đề tài

Sau khi hoàn thành đề tài “Thiết kế hệ thống tưới cây tự đông”, em đã trở nên đam mê hơn với ngành học của mình. Qua đó, em cũng có được thêm một số kiến thức như:
Cách làm việc với vi điều khiển họ PIC.
Cách giao tiếp giữa vi điều khiển với các module chức năng.
Cách hoạt động của cảm biến nhiệt độ, độ ẩm.

Những hạn chế của đề tài

Chương trình chưa tối ưu hoàn toàn bài toán thực tế đề ra.

Hướng phát triển của đề tài

Khắc phục những trường hợp thiếu xót trong bài toán thực tế.

Download Project

Mô phỏng Proteus: Tại đây

Code CCS: Tại đây

Báo cáo PDF: Tại đây

Báo cáo PowerPoint: Tại đây


Xem thêm video vận hành hệ thống:



Chúc Các Bạn Thành Công!

Đinh Xuân Hậu

Đinh Xuân Hậu Trường: Đại học Sư phạm Kỹ thuật Hưng Yên Khoa: Công nghệ Thông tin Bộ môn: Hệ thống Thông tin

Đăng nhận xét

Mới hơn Cũ hơn