1. Trang chủ
  2. » Luận Văn - Báo Cáo

THIẾT kế mô HÌNH vườn THÔNG MINH, có CODE

62 124 3

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Thiết Kế Hệ Thống Điều Khiển Và Giám Sát Mô Hình Vườn Thông Minh Full Code
Định dạng
Số trang 62
Dung lượng 8,42 MB

Cấu trúc

  • CHƯƠNG 1. TỔNG QUAN ĐỀ TÀI (4)
    • 1.1. Giới thiệu đề tài (4)
    • 1.2. Mục đích nghiên cứu (4)
    • 1.3. Đối tượng nghiên cứu (4)
    • 1.4. Phạm vi nghiên cứu (5)
    • 1.5. Dự kiến kết quả (5)
  • CHƯƠNG 2. CƠ SỞ LÝ THUYẾT (6)
    • 2.1. TỔNG QUAN VỀ PIC16F877A (6)
      • 2.1.1. Cấu trúc tổng quát của PIC16F877A (6)
      • 2.1.2. Các cổng của PIC 16F877A (18)
      • 2.1.3. Hoạt động của định thời (24)
    • 2.2. HIỂN THỊ LCD (29)
      • 2.2.1. Hình dáng kích thước (29)
      • 2.2.2. Các chân chức năng (30)
      • 2.2.3. Sơ đồ khối của HD44780 (32)
      • 2.2.4. Tập lệnh của LCD (36)
      • 2.2.5. Đặc tính của các chân giao tiếp (44)
    • 2.3. CẢM BIẾN NHIỆT ĐỘ VÀ ĐỘ ẨM DHT11 (45)
      • 2.3.1. Giới thiệu cảm biến DHT11 (45)
      • 2.3.2. Nguyên lý hoạt động (45)
    • 2.4. Khối module L298 điều khiển động cơ (48)
      • 2.4.1. Giới thiệu module L298 (48)
      • 2.4.2. Sơ đồ chân module L298 (50)
  • CHƯƠNG 3. THIẾT KẾ VÀ THI CÔNG (51)
    • 3.1. Yêu cầu thực hiện đề tài (51)
    • 3.2. Phần code điều khiển chương trình (51)
    • 3.3. Mô phỏng bằng phần mềm PROTEUS (53)
  • CHƯƠNG 4. GIẢI THUẬT VÀ ĐIỀU KHIỂN (54)
    • 4.1. Hoạt động của hệ thống (54)
    • 4.2. Lưu đồ giải thuật (55)
  • CHƯƠNG 5. THỰC NGHIỆM (58)
    • 5.1. Các bước thực nghiệm (58)
    • 5.2. Kết quả thực nghiệm (58)
  • CHƯƠNG 6. KẾT LUẬN (60)
    • 6.1. Ưu điểm (60)
    • 6.2. Nhược điểm (60)
    • 6.3. Hướng phát triển (60)
  • TÀI LIỆU THAM KHẢO (61)

Nội dung

THIẾT KẾ HỆ THỐNG ĐIỀU KHIỂN VÀ GIÁM SÁT MÔ HÌNH VƯỜN THÔNG MINH FULL CODE MỤC LỤC PHẦN XÁC NHẬN VÀ ĐÁNH GIÁ CỦA GIẢNG VIÊN 5 CHƯƠNG 1 TỔNG QUAN ĐỀ TÀI 8 1 1 Giới thiệu đề tài 8 1 2 Mục đích nghiên cứu 8 1 3 Đối tượng nghiên cứu 8 1 4 Phạm vi nghiên cứu 9 1 5 Dự kiến kết quả 9 CHƯƠNG 2 CƠ SỞ LÝ THUYẾT 10 2 1 TỔNG QUAN VỀ PIC16F877A 10 2 1 1 Cấu trúc tổng quát của PIC16F877A 10 2 1 2 Các cổng của PIC 16F877A 22 2 1 3 Hoạt động của định thời 28 2 2 HIỂN THỊ LCD 33 2 2 1 Hình dáng kích thước 33 2 2.

CƠ SỞ LÝ THUYẾT

TỔNG QUAN VỀ PIC16F877A

2.1.1 Cấu trúc tổng quát của PIC16F877A

Hình 2.1 Sơ đồ tổng quan PIC16F877A

 5 Port xuất/nhập (A, B, C, D, E) tương ứng 33 chân ra.

 2 Bộ định thời 8 bit Timer 0 và Timer 2.

 1 Bộ định thời 16 bit Timer 1, có thể hoạt động ở chế độ tiết kiệm năng lượng (SLEEP MODE) với nguồn xung clock ngoài.

 2 Bộ Capture/ Compare/ PWM.(Bắt Giữ/ So Sánh/ Điều Biến Xung)

 1 Bộ biến đổi Analog to Digital 10 bit, 8 ngõ vào.

 2 Bộ so sánh tương tự (Compartor).

 1 Bộ định thời giám sát (Watch Dog Timer).

 1 Cổng giao tiếp song song 8 bit.

 Chế độ tiết kiệm năng lượng (Sleep Mode).

 Nạp trương trình bằng cổng nối tiếp ( ICSP™ )(In-Circuit Serial Programming™ -)

 Tập lệnh gồm 35 lệnh có độ dài 14 bit.

 Tần số hoạt động tối đa 20 MHz.

Hình 2.2 Sơ đồ chân PIC 16F877A

2.1.1.2 CHỨC NĂNG CỦA CÁC CHÂN

1 /MCLR/VPP – /MCLR: Hoạt động Reset ở mức thấp

– VPP : ngõ vào áp lập trình

2 RA0/AN0 – RA0 : xuất/nhập số

– AN0 : ngõ vào tương tự

3 RA1/AN1 – RA1 : xuất/nhập số

– AN1 : ngõ vào tương tự

– RA2 : xuất/nhập số – AN2 : ngõ vào tương tự – VREF -: ngõ vào điện áp chuẩn (thấp) của bộ A/D

– RA3 : xuất/nhập số – AN3 : ngõ vào tương tự – VREF+ : ngõ vào điện áp chuẩn (cao) của bộ A/D

– RA4 : xuất/nhập số – TOCKI : ngõ vào xung clock bên ngoài cho timer0 – C1 OUT : Ngõ ra bộ so sánh 1

– RA5 : xuất/nhập số – AN4 : ngõ vào tương tự 4 – SS : ngõ vào chọn lựa SPI phụ – C2 OUT : ngõ ra bộ so sánh 2

– RE0 : xuất nhập số – RD : điều khiển việc đọc ở port nhánh song song – AN5 : ngõ vào tương tự

– RE1 : xuất/nhập số – WR : điều khiển việc ghi ở port nhánh song song – AN6 : ngõ vào tương tự

10 RE2//CS/AN7 – RE2 : xuất/nhập số

– CS : Chip lựa chọn sự điều khiển ở port nhánh song song

– AN7 : ngõ vào tương tự

11 VDD Chân nguồn của PIC.

Ngõ vào dao động thạch anh hoặc xung clock bên ngoài.

Ngõ vào OSC1 là nơi nhận dao động thạch anh hoặc xung clock từ nguồn bên ngoài, hoạt động như một Schmitt trigger trong chế độ RC, tương tự như CMOS Trong khi đó, CLKI là ngõ vào nguồn xung bên ngoài, luôn kết hợp với chức năng OSC1 để đảm bảo hoạt động chính xác.

Ngõ vào dao động thạch anh hoặc xung clock – OSC2 : Ngõ ra dao động thạch anh Kết nối đến thạch anh hoặc bộ cộng hưởng.

– CLKO : ở chế độ RC, ngõ ra của OSC2, bằng tần số của OSC1 và chỉ ra tốc độ của chu kỳ lệnh.

– RC0 : xuất/nhập số – T1OCO : ngõ vào bộ dao động Timer 1 – T1CKI : ngõ vào xung clock bên ngoài Timer 1

– RC1 : xuất/nhập số – T1OSI : ngõ vào bộ dao động Timer 1 – CCP2 : ngõ vào Capture 2, ngõ ra compare 2, ngõ ra PWM2

17 RC2/CCP1 – RC2 : xuất/nhập số

– CCP1 : ngõ vào Capture 1, ngõ ra compare 1, ngõ ra PWM1

18 RC3/SCK/SCL – RC3 : xuất/nhập số

– 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

19 RD0/PSP0 – RD0 : xuất/nhập số

– PSP0 : dữ liệu port nhánh song song

20 RD1/PSP1 – RD1 : xuất/nhập số

– PSP1 : dữ liệu port nhánh song song

21 RD2/PSP2 – RD2 : xuất/nhập số

– PSP2 : dữ liệu port nhánh song song

22 RD3/PSP3 – RD3: xuất/nhập số

– PSP3 : dữ liệu port nhánh song song

23 RC4/SDI/SDA – RC4 : xuất/nhập số

– SDI : dữ liệu vào SPI – SDA : xuất/nhập dữ liệu vào I2C

24 RC5/SDO – RC5 : xuất/nhập số

– SDO : dữ liệu ra SPI

– RC6 : xuất/nhập số – TX : truyền bất đồng bộ USART – CK : xung đồng bộ USART

26 RC7/RX/DT – RC7 : xuất/nhập số

– RX : nhận bất đồng USART – DT : dữ liệu đồng bộ USART

27 RD4/PSP – RD4: xuất/nhập số

– PSP4 : dữ liệu port nhánh song song

28 RD5/PSP5 – RD5: xuất/nhập số

– PSP5 : dữ liệu port nhánh song song

29 RD6/PSP6 – RD6: xuất/nhập số

– PSP6 : dữ liệu port nhánh song song

30 RD7/PSP7 – RD7: xuất/nhập số

– PSP7 : dữ liệu port nhánh song song

32 VDD Chân nguồn của PIC.

33 RB0/INT – RB0 : xuất/nhập số

36 RB3 – RB3 : xuất/nhập số

– Chân cho phép lập trình điện áp thấp ICPS

– RB6 : xuất/nhập số – PGC : mạch vi sai và xung clock lập trình ICSP – Ngắt PortB

40 RB7/PGD – RB7 : xuất/nhập số

– PGD : mạch vi sai và dữ liệu lập trình ICSP– Ngắt PortB

Hình 2.3 Sơ đồ khối PIC16F877A

• 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ó 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.

Bài viết đề cập đến các loại bộ định thời trong hệ thống điện, bao gồm bộ định thời khi cấp điện PUT, bộ định thời chờ dao động ổn định, và mạch reset khi có điện Ngoài ra, còn có bộ định thời giám sát watchdog và 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

• 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 byte 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ó 2 khối bộ nhớ trong các vi điều khiển họ PIC16F87X, bộ nhớ chương trình và bộ nhớ dữ liệu, với những bus riêng biệt để có thể truy cập đồng thời.

Hình 2.4 Hình sơ minh họa cấu trúc bộ nhớ

2.1.1.5 Tổ chức bộ nhớ chương trình

Vi điều khiển PIC16F877A sở hữu bộ đếm chương trình 13 bits, cho phép định vị không gian bộ nhớ chương trình lên đến 8Kb Các IC PIC16F877A được trang bị 8Kb bộ nhớ FLASH, trong khi các IC PIC16F873/874 chỉ có 4Kb Vectơ RESET được đặt tại địa chỉ 0000h và vectơ ngắt tại địa chỉ 0004h.

2.1.1.6 TỔ CHỨC BỘ NHỚ DỮ LIỆU

Bộ nhớ dữ liệu được phân chia thành nhiều dãy, bao gồm các thanh ghi mục đích chung và các thanh ghi chức năng đặc biệt Các bit RP1 và RP0 trong thanh ghi STATUS được sử dụng để chọn các dãy thanh ghi.

Chiều dài mỗi dãy là 7Fh (128 bytes), với phần thấp chứa các thanh ghi chức năng đặc biệt Các thanh ghi này nằm trên các thanh ghi mục đích chung, hoạt động như RAM tĩnh Thông thường, các thanh ghi đặc biệt được sử dụng từ một dãy và có thể được ánh xạ vào các dãy khác, giúp giảm bớt đoạn mã và tăng khả năng truy cập nhanh hơn.

2.1.1.7 CÁC THANH GHI MỤC ĐÍCH CHUNG

Các thanh ghi này có thể truy cập trực tiếp hoặc gián tiếp thông qua thanh ghi FSG (File Select Register).

Hình 2.5 Các thanh ghi mục đích chung

2.1.1.8 CÁC THANH GHI CHỨC NĂNG ĐẶC BIỆT

Các thanh ghi chức năng đặc biệt (Special Function Register) đóng vai trò quan trọng trong việc điều khiển các hoạt động của CPU và các bộ nhớ ngoại vi Chúng hoạt động tương tự như RAM tĩnh và được phân loại thành hai nhóm chính: phần trung tâm (CPU) và phần ngoại vi Dưới đây là danh sách các thanh ghi chức năng đặc biệt này.

2.1.1.9 CÁC THANH GHI TRẠNG THÁI

Hình 2.6 Các thanh ghi trạng thái

Thanh ghi trạng thái lưu trữ các trạng thái số học của bộ ALU, trạng thái RESET và các bit chọn dãy thanh ghi cho bộ nhớ dữ liệu Nó có thể là đích cho bất kỳ lệnh nào, tương tự như các thanh ghi khác Khi thanh ghi trạng thái là đích cho lệnh ảnh hưởng đến các cờ Z, DC hoặc C, các bit này sẽ bị vô hiệu hóa Các bit này có thể được đặt hoặc xóa dựa trên trạng thái logic của thiết bị Ngoài ra, hai bit TO và PD không cho phép ghi, do đó, kết quả của lệnh với thanh ghi trạng thái là đích có thể khác với dự kiến Ví dụ, lệnh CLRF STATUS sẽ xóa 3 bit cao nhất và đặt bit Z.

Các bits của thanh ghi trạng thái hiện tại là 000u u1uu (u = không thay đổi) Chỉ có các lệnh BCF, BSF, SWAPF và MOVWF có khả năng thay đổi thanh ghi trạng thái mà không ảnh hưởng đến các bit Z, DC hoặc C Các lệnh khác sẽ không tác động đến các bits trạng thái này.

2.1.2.1 PORTA và thanh ghi TRISA

Hình 2.8 Sơ đồ khối PORT A

2.1.2.2 PORTB và thanh ghi TRISB

PORTB là một cổng vào ra hai chiều với độ rộng 8 bits, bao gồm ba chân đa hợp cho 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 trang bị một điện trở kéo bên trong, có thể được mở bằng cách xóa bit RBPU (OPTION_REG), nhưng sẽ bị vô hiệu hóa khi có Power-on Reset Bốn chân RB7 đến RB4 có khả năng tạo ra 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ể kích hoạt ngắt này Các chân vào (RB7:RB4) sẽ được so sánh với giá trị được lưu trữ từ lần đọc cuối cùng của PORTB, và nếu có sự không khớp, sẽ phát ra một ngắt Port thay đổi RB với cờ ngắt RBIF (INTCON), có khả năng đánh thức thiết bị từ trạng thái nghỉ (SLEEP) Trong thủ tục phục vụ ngắt, người dùng có thể xóa ngắt bằng cách đọc hoặc ghi lên PORTB, hoặc xóa bít cờ RBIF.

Hình 2.9 Sơ đồ khối PORT B

2.1.2.3 PORTC và thanh ghi TRISC

PORTC là một cổng hai chiều với độ rộng 8 bits, tương ứng với thanh ghi dữ liệu TRISC Khi tất cả các bit của TRISC được đặt là 1, các chân của PORTC sẽ hoạt động như ngõ vào Ngược lại, khi tất cả các bit của TRISC được đặt là 0, các chân của PORTC sẽ hoạt động như 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

Khi bộ I2C được kích hoạt, chân 3 và 4 của PORTC có thể được cấu hình ở mức I2C bình thường hoặc SMBus thông qua bit CKE (SSPSTAT) Việc định nghĩa các bits của TRIS cho từng chân của PORTC là rất quan trọng khi các chức năng ngoại vi được cho phép Một số thiết bị ngoại vi sẽ ghi đè lên bit TRIS để thiết lập chân ra, trong khi các thiết bị khác sẽ tạo chân vào Khi các bit TRIS bị ghi đè trong khi thiết bị ngoại vi hoạt động, cần tránh sử dụng các lệnh đọc thay thế ghi (BSF, BCF, XORWF) với TRISC Người dùng cần xác định vùng ngoại vi tương ứng để đảm bảo việc thiết lập bit TRIS chính xác.

Hình 2.10 Sơ đồ khối PORT C

2.1.2.4 PORTD và thanh ghi TRISD

PORTD là cổng 8 bit với đệm Trigger Schmitt ở đầu vào, cho phép mỗi chân được cấu hình riêng lẻ thành ngõ vào hoặc ngõ ra Nó có thể hoạt động như một cổng của bộ vi xử lý 8 bit (parallel slave port) khi thiết lập bit điều khiển PSPMIDE (TRISE) Trong chế độ này, đệm ở đầu vào sử dụng công nghệ TTL.

Hình 2.11 Sơ đồ khối PORT D

2.1.2.5 PORTE và thanh ghi TRISE

PORTE có ba chân (RE0/RD/AN5, RE1/WR/AN6, và RE2/CS/AN7) có thể được cấu hình riêng lẻ là ngõ vào hoặc ngõ ra, với đệm Trigger Schmitt tại ngõ vào Khi bit PSPMODE (TRISE) được đặt, các chân này hoạt động như ngõ vào điều khiển cho Port của vi xử lý Để đảm bảo hoạt động chính xác, người sử dụng cần đặt các bit TRISE và cấu hình các chân này như ngõ vào số, đồng thời đảm bảo ADCON1 cũng được thiết lập cho vào ra số Trong chế độ này, các đệm ở ngõ vào sử dụng công nghệ TTL.

Chân của PORTE được cấu hình để hoạt động như ngõ vào tương tự, và khi được chọn, chúng sẽ đọc giá trị "0" TRISE sẽ điều khiển hướng của các chân RE chỉ khi chúng được sử dụng như ngõ vào tương tự Người sử dụng cần lưu ý giữ các chân đã được cấu hình như ngõ vào khi sử dụng chúng trong chế độ này.

Hình 2.12 Sơ đồ khối PORT E

2.1.3 Hoạt động của định thời

 Bộ định thời/bộ đếm Timer0 có các đặc tính sau:

 Bộ định thời/bộ đếm 8 bits

 Cho phép đọc và ghi

 Bộ chia 8 bits 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 sườn cho xung clock ngoài

HIỂN THỊ LCD

Thiết bị hiển thị LCD (Liquid Crystal Display) hiện nay được ứng dụng rộng rãi trong nhiều lĩnh vực của vi điều khiển (VĐK) nhờ vào những ưu điểm nổi bật như khả năng hiển thị đa dạng các ký tự, trực quan với chữ, số và ký tự đồ họa Ngoài ra, LCD dễ dàng tích hợp vào mạch ứng dụng thông qua nhiều giao thức giao tiếp khác nhau, tiêu tốn ít tài nguyên hệ thống và có giá thành phải chăng Trong bài viết này, tôi sẽ tập trung vào việc sử dụng HD44780 của Hitachi, một loại LCD phổ biến tại Việt Nam.

Có rất nhiều loại LCD với nhiều hình dáng và kích thước khác nhau, một số loại LCD thông dụng

Khi sản xuất màn hình LCD 1602, nhà sản xuất đã tích hợp chip điều khiển HD44780 bên trong lớp vỏ, chỉ để lại các chân giao tiếp cần thiết cho người dùng.

Các chân chức năng của HD44780

2.2.3 Sơ đồ khối của HD44780 Để hiểu rõ hơn chức năng các chân và hoạt động của chúng, ta tìm hiểu sơ qua chíp HD44780 thông qua các khối cơ bản của nó

Chíp HD44780 có 2 thanh ghi 8 bits quan trọng là: Thanh ghi lệnh IR (Instructor Register) và thanh ghi dữ liệu DR (Data Register)

Để điều khiển LCD, người dùng cần sử dụng thanh ghi IR và gửi lệnh qua tám đường bus DB0-DB7 Mỗi lệnh đều có địa chỉ rõ ràng từ nhà sản xuất LCD Bằng cách nạp chuỗi 8 bit vào thanh ghi IR, chip HD44780 sẽ tra cứu bảng mã lệnh tại địa chỉ đã cung cấp và thực hiện lệnh tương ứng.

VD: Lệnh “hiển thị màn hình” có địa chỉ lệnh là 00001100 (DB7…DB0)

Hình 2.18 Sơ đồ khối của HD44780

Thanh ghi DR là thành phần quan trọng trong việc lưu trữ dữ liệu 8 bit, cho phép ghi vào DDRAM hoặc CGRAM khi ở chế độ ghi, và truyền dữ liệu từ các vùng RAM này đến MPU khi ở chế độ đọc Khi MPU ghi thông tin vào DR, chip tự động chuyển dữ liệu này vào DDRAM hoặc CGRAM Ngược lại, khi địa chỉ được ghi vào IR, dữ liệu tại địa chỉ đó trong RAM nội của HD44780 sẽ được chuyển đến DR để gửi cho MPU Việc điều khiển chân RS và R/W cho phép chuyển đổi linh hoạt giữa hai thanh ghi này trong quá trình giao tiếp với MPU.

Bảng chức năng chân RS và R/W theo mục đích sử dụng.

 Cờ báo bận BF (Busy Flag):

Trong quá trình thực hiện các hoạt động bên trong chip, mạch nội cần thời gian để hoàn tất Trong thời gian này, LCD sẽ tạm ngừng mọi giao tiếp với bên ngoài và bật cờ BF qua chân DB7 (khi có thiết lập RS=0, R/W=1) để thông báo cho MPU rằng nó đang "bận" Khi hoàn thành công việc, cờ BF sẽ được đặt lại về mức 0.

 Bộ đếm địa chỉ AC (Address Counter):

Như trong sơ đồ khối, thanh ghi IR không trực tiếp kết nối với vùng RAM

Bộ đếm địa chỉ AC kết nối với hai vùng RAM DDRAM và CGRAM theo kiểu rẽ nhánh Khi một địa chỉ lệnh được nạp vào thanh ghi IR, thông tin được truyền trực tiếp đến hai vùng RAM, với việc chọn lựa vùng RAM đã được xác định trong mã lệnh Sau khi thực hiện thao tác ghi hoặc đọc từ RAM, bộ đếm AC tự động tăng hoặc giảm 1 đơn vị, và nội dung của AC được xuất ra cho MPU thông qua DB0-DB6 khi RS=0 và R/W=1 Thời gian cập nhật AC không được tính vào thời gian thực thi lệnh và chỉ được cập nhật sau khi cờ BF đạt mức cao (not busy) Do đó, khi lập trình hiển thị, cần phải có độ trễ khoảng 4àS-5àS ngay sau khi BF=1 trước khi nạp dữ liệu mới.

Vùng RAM hiển thị DDRAM (Display Data RAM) là bộ nhớ RAM chuyên dụng cho việc hiển thị thông tin trên màn hình Mỗi địa chỉ trong vùng RAM này tương ứng với một ô ký tự trên màn hình Khi bạn ghi vào vùng DDRAM một mã 8 bits, màn hình LCD sẽ hiển thị ký tự tương ứng với mã đó tại vị trí đã chỉ định.

Hình 2.19 Mối liên hệ giữa địa chỉ của DDRAM và vị trí hiển thị của LCD.

Vùng RAM này có khả năng lưu trữ 80 ký tự mã 8 bits, tương đương với 80x8 bits nhớ Các vùng RAM khác không sử dụng cho hiển thị có thể được tận dụng như vùng RAM đa mục đích Để truy cập vào DDRAM, cần cung cấp địa chỉ cho AC theo mã HEX.

 Vùng ROM chứa kí tự CGROM (Character Generator ROM):

Vùng ROM chứa các mẫu ký tự 5x8 và 5x10 với định địa chỉ 8 bits, nhưng chỉ có 208 mẫu ký tự 5x8 và 32 mẫu ký tự 5x10, tổng cộng là 240 mẫu thay vì 256 mẫu Người dùng không thể thay đổi vùng ROM này.

Hình 2.20 Mối liên hệ giữa địa chỉ của ROM và dữ liệu tạo mẫu kí tự.

 Vùng RAM chứa kí tự đồ họa CGRAM (Character Generator RAM):

Nhà sản xuất đã dành vùng địa chỉ byte cao 0000h trong bảng mã ký tự để người dùng tạo mẫu ký tự đồ họa riêng Tuy nhiên, dung lượng của vùng này rất hạn chế, cho phép tạo tối đa 8 ký tự với kích thước 5x8 điểm ảnh hoặc 4 ký tự với kích thước 5x10 điểm ảnh để ghi vào CGRAM.

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:

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, chúng ta chỉ có thể tác động trực tiếp vào hai thanh ghi DR và IR thông qua các chân DBx Để chuyển đổi giữa hai thanh ghi này, cần thiết lập chân RS và R/W một cách phù hợp.

Hình 2.21 Mối liên hệ giữa địa chỉ của CGRAM, dữ liệu CGARM, và mã kí tự.

Mỗi lệnh gửi đến LCD yêu cầu một khoảng thời gian để hoàn tất, thời gian này có thể kéo dài do tốc độ của MPU Do đó, cần kiểm tra cờ BF hoặc sử dụng phương pháp đợi (delay) để đảm bảo LCD đã thực thi xong lệnh hiện tại trước khi gửi 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

• Chỉ định địa chỉ RAM nội

• Nhóm lệnh truyền dữ liệu trong RAM nội

2.2.5 Đặc tính của các chân giao tiếp

LCD có thể bị hỏng nghiêm trọng hoặc hoạt động không đúng nếu bạn không tuân thủ các đặc tính điện sau đây Đặc tính điện làm việc điển hình được đo trong điều kiện Vcc từ 4.5V đến 5.5V và nhiệt độ từ -30 đến +75 độ C.

Miền làm việc bình thường.

CẢM BIẾN NHIỆT ĐỘ VÀ ĐỘ ẨM DHT11

2.3.1 Giới thiệu cảm biến DHT11

DHT11 là một cảm biến nhiệt độ và độ ẩm được phát triển để thay thế dòng SHT1x, phù hợp cho các ứng dụng không yêu cầu độ chính xác cao về nhiệt độ và độ ẩm.

Hình 2.22 Hình ảnh thực tế cảm biến DHT11

- DHT11 có cấu tạo 4 chân như hình Nó sử dụng giao tiếp số theo chuẩn 1 dây

 Sai số nhiệt độ: ±2ºC

Sơ đồ kết nối vi xử lý:

Hình 2.23 Mô hình kết nối Nguyên lý hoạt động: Để có thể giao tiếp với DHT11 theo chuẩn 1 chân vi xử lý thực hiện theo 2 bước:

 Gửi tin hiệu muốn đo (Start) tới DHT11, sau đó DHT11 xác nhận lại

 Khi đã giao tiếp được với DHT11, Cảm biến sẽ gửi lại 5 byte dữ liệu và nhiệt độ đo được

- Bước 1: gửi tín hiệu Start

MCU thiết lập chân DATA làm Output và kéo chân DATA xuống 0 trong thời gian hơn 18ms, trong khi trong mã code, thời gian này được đặt là 25ms Khi thực hiện điều này, DHT11 sẽ nhận biết rằng MCU muốn đo giá trị nhiệt độ và độ ẩm.

 MCU đưa chân DATA lên 1, sau đó thiết lập lại là chân đầu vào

 Sau khoảng 20-40us, DHT11 sẽ kéo chân DATA xuống thấp Nếu >40us mà chân DATA ko được kéo xuống thấp nghĩa là ko giao tiếp được với DHT11

Chân DATA của cảm biến DHT11 sẽ duy trì ở mức thấp 80us, sau đó tăng lên cao trong 80us Qua việc giám sát chân DATA, MCU có thể xác định khả năng giao tiếp với DHT11 Khi tín hiệu từ DHT11 đạt mức cao, quá trình giao tiếp giữa MCU và DHT11 sẽ được hoàn tất.

- Bước 2: đọc giá trị trên DHT11

Cảm biến DHT11 cung cấp giá trị nhiệt độ và độ ẩm dưới dạng 5 byte Cụ thể, Byte 1 chứa giá trị phần nguyên của độ ẩm (RH%), Byte 2 là giá trị phần thập phân của độ ẩm, Byte 3 là giá trị phần nguyên của nhiệt độ (TC), Byte 4 là giá trị phần thập phân của nhiệt độ, và Byte 5 là kiểm tra tổng Để đảm bảo độ chính xác, nếu Byte 5 bằng tổng của 8 bit (Byte 1 + Byte 2 + Byte 3 + Byte 4), thì giá trị độ ẩm và nhiệt độ được coi là chính xác; ngược lại, kết quả đo sẽ không có ý nghĩa.

Sau khi thiết lập kết nối với cảm biến DHT11, thiết bị này sẽ truyền tải liên tiếp 40 bit dữ liệu, bao gồm các bit 0 và 1, đến MCU Dữ liệu này được chia thành 5 byte, tương ứng với kết quả đo nhiệt độ và độ ẩm.

Hình 2.25 Chế độ đọc tín hiệu o Bit 1:

Hình 2.25 Đọc dữ liệu Sau khi tín hiệu được đưa về 0, ta đợi chân DATA của MCU được DHT11 kéo lên

1 Nếu chân DATA là 1 trong khoảng 26-28 us thì là 0, còn nếu tồn tại 70us là 1 Do đó trong lập trình ta bắt sườn lên của chân DATA, sau đó delay 50us Nếu giá trị đo được là

0 thì ta đọc được bit 0, nếu giá trị đo được là 1 thì giá trị đo được là 1 Cứ như thế ta đọc các bit tiếp theo.

Khối module L298 điều khiển động cơ

IC L298 là một mạch tích hợp đơn chip với 15 chân, bao gồm kiểu vỏ multiwatt 15 và PowerSO20, phù hợp cho các ứng dụng công suất cao Là một IC mạch cầu đôi, L298 có khả năng hoạt động ở điện thế và dòng cao, tương thích với chuẩn TTL, và có thể điều khiển các tải cảm kháng như relay, cuộn solenoid, động cơ DC và động cơ bước Mạch này có 2 chân enable cho phép điều khiển độc lập hoạt động của IC, trong khi cực phát của transistor dưới mỗi mạch cầu được nối với nhau và kết nối ra ngoài để sử dụng với điện trở cảm ứng dòng khi cần thiết.

Hình 2.27 Ảnh thực tế module L298

Mạch cầu H sử dụng IC L298N để điều hướng dòng điện, hoạt động với điện áp 5V Khi kết nối nguồn 12V, mạch sẽ hoạt động với nguồn này, nhưng vẫn điều hướng dòng điện Dòng 12V được sử dụng để cấp năng lượng cho động cơ, trong khi dòng điện được hạ xuống 5V để cung cấp cho IC.

Khi cấp nguồn 9V, động cơ hoạt động ở mức 9V trong khi IC của mạch sử dụng dòng điện 5V Thiết kế này nhằm tạo ra hai dòng điện khác nhau, giúp IC hoạt động ổn định và tách biệt nguồn với động cơ.

 Power GND chân này là GND của nguồn cấp cho Động cơ.

Đối với việc điều khiển động cơ bước, bạn cần giữ nguyên các chân 2 Jump A và B enable Tuy nhiên, nếu bạn điều khiển động cơ thông thường, hãy kết nối với chân PWM để điều chỉnh tốc độ.

 Gồm có 4 chân Input IN1, IN2, IN3, IN4

 Output A: nối với động cơ giảm tốc V1 bạn chú ý chân +, - Nếu bạn nối ngược thì động cơ sẽ chạy ngược.

THIẾT KẾ VÀ THI CÔNG

Yêu cầu thực hiện đề tài

Hệ thống giám sát vườn được thiết kế để đo nhiệt độ và độ ẩm bằng cảm biến DHT11, hiển thị các thông số này trên màn hình LCD 16x2 Ngoài ra, hệ thống còn tích hợp lập trình điều khiển động cơ tưới vườn thông qua module L298 và thiết kế cơ chế đóng mở cửa vườn bằng nút nhấn.

Phần code điều khiển chương trình

#define DHT11_pin PIN_C0 // khai báo chân đầu vào cảm biến int8 value[5]; int8 get_byte() // lấy 1 byte dữ liệu từ cảm biến { int8 i; int8 value_byte = 0; for(i=0;i

Ngày đăng: 24/04/2022, 23:45

HÌNH ẢNH LIÊN QUAN

Hình 2.1 Sơ đồ tổng quan PIC16F877A - THIẾT kế mô HÌNH vườn THÔNG MINH, có CODE
Hình 2.1 Sơ đồ tổng quan PIC16F877A (Trang 5)
Hình 2.2 Sơ đồ chân PIC16F877A - THIẾT kế mô HÌNH vườn THÔNG MINH, có CODE
Hình 2.2 Sơ đồ chân PIC16F877A (Trang 7)
2.1.1.2. CHỨC NĂNG CỦA CÁC CHÂN - THIẾT kế mô HÌNH vườn THÔNG MINH, có CODE
2.1.1.2. CHỨC NĂNG CỦA CÁC CHÂN (Trang 7)
Hình 2.3 Sơ đồ khối PIC16F877A - THIẾT kế mô HÌNH vườn THÔNG MINH, có CODE
Hình 2.3 Sơ đồ khối PIC16F877A (Trang 12)
Hình 2.4 Hình sơ minh họa cấu trúc bộ nhớ - THIẾT kế mô HÌNH vườn THÔNG MINH, có CODE
Hình 2.4 Hình sơ minh họa cấu trúc bộ nhớ (Trang 14)
Hình 2.5 Các thanh ghi mục đích chung - THIẾT kế mô HÌNH vườn THÔNG MINH, có CODE
Hình 2.5 Các thanh ghi mục đích chung (Trang 16)
Hình 2.7 PORTA - THIẾT kế mô HÌNH vườn THÔNG MINH, có CODE
Hình 2.7 PORTA (Trang 18)
Hình 2.8 Sơ đồ khối PORTA - THIẾT kế mô HÌNH vườn THÔNG MINH, có CODE
Hình 2.8 Sơ đồ khối PORTA (Trang 19)
Hình 2.9 Sơ đồ khối PORTB - THIẾT kế mô HÌNH vườn THÔNG MINH, có CODE
Hình 2.9 Sơ đồ khối PORTB (Trang 20)
Hình 2.10 Sơ đồ khối PORTC - THIẾT kế mô HÌNH vườn THÔNG MINH, có CODE
Hình 2.10 Sơ đồ khối PORTC (Trang 21)
Hình 2.11 Sơ đồ khối PORTD - THIẾT kế mô HÌNH vườn THÔNG MINH, có CODE
Hình 2.11 Sơ đồ khối PORTD (Trang 22)
Hình 2.13 Sơ đồ khối TIMER0 - THIẾT kế mô HÌNH vườn THÔNG MINH, có CODE
Hình 2.13 Sơ đồ khối TIMER0 (Trang 24)
Hình 2.14 Chế độ TIMER - THIẾT kế mô HÌNH vườn THÔNG MINH, có CODE
Hình 2.14 Chế độ TIMER (Trang 26)
Hình 2.15 Chế độ COUNTER - THIẾT kế mô HÌNH vườn THÔNG MINH, có CODE
Hình 2.15 Chế độ COUNTER (Trang 27)
Hình 2.16 Sơ đồ khối của TIMER2 - THIẾT kế mô HÌNH vườn THÔNG MINH, có CODE
Hình 2.16 Sơ đồ khối của TIMER2 (Trang 28)

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w