1. Trang chủ
  2. » Kỹ Thuật - Công Nghệ

MSP430G2553 Giao tiếp DHT11 điều khiển mô hình giám sát nhiệt độ và độ ẩm hệ thống thông gió (CÓ CODE MẪU VÀ SƠ ĐỒ CHI TIẾT)

39 901 39

Đ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

Định dạng
Số trang 39
Dung lượng 2,52 MB
File đính kèm DHT11(end).rar (2 MB)

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

MSP430G2553 Giao tiếp cảm biến nhiệt độ và độ ẩm DHT11 (Upload dữ liệu lên Thingspeak bằng module ESP8266 nếu cần) điều khiển mô hình giám sát nhiệt độ và độ ẩm hệ thống thông gió (CÓ CODE MẪU VÀ SƠ ĐỒ CHI TIẾT)

Trang 2

PHỤ LỤC

1 MỤC TIÊU VÀ GIỚI HẠN ĐỀ TÀI CẦN ĐẠT ĐƯỢC

2 MÔ HÌNH HỆ THỐNG THÔNG QUA SƠ ĐỒ KHỐI

3 PHÂN TÍCH VÀ LỰA CHỌN LINH KIỆN

4 LƯU ĐỒ CHƯƠNG TRÌNH DIỀU KHIỂN

5 SƠ ĐỒ NGUYÊN LÝ

6 MẠCH IN

7 TỔNG KẾT ĐỀ TÀI

Trang 3

£ NỘI DUNG BÁO CÁO

1 MỤC TIÊU VÀ GIỚI HẠN ĐỀ TÀI CẦN ĐẠT ĐƯỢC

_Mục tiêu:Thiết kế và điều khiển được mô hình đo nhiệt độ và đô ẩm của hệ thống thông gió trong nhà kho và hiển thị kết quả đo được trên LCD

_Giới hạn :

_Chọn và sử dụng linh kiện hợp lý nhất, tránh lãng phí tài nguyên

_Thiết kế phải sử dụng được chức năng phần cứng tích hợp trong MSP430

hiện có để có thể tối ưu nhất định trong thiết kế phần cứng của hệ thống

_ Nhiệt độ và độ ẩm đọc được có thể có sai số không quá 5%

Trang 4

2 MÔ HÌNH HỆ THỐNG THÔNG QUA SƠ ĐỒ KHỐI

3 PHÂN TÍCH VÀ LỰA CHỌN LINH KIỆN

Phím điều khiễn tự đông

Trang 5

Ngõ vào:

 Chân SCK kết nối với chân P1.1 của MSP430G2553

 Chân DT kết nối với chân P1.2 của MSP430G2553

 Ngõ ra: Dữ liệu

 Chân P1.4 kết nối với D4 của LCD

 Chân P1.5 kết nối với D5 của LCD

 Chân P1.6 kết nối với D6 của LCD

 Chân P1.7 kết nối với D7 của LCD

 Vi điều khiển MSP430G2553 thực hiện điều khiển toàn bộ quá trình chuyển đổi từ tín hiệu lực đo được thành dữ liệu số thể hiện trung thực nhất và giao tiếp với các thiết bị khác để trao đổi thông tin

Trang 6

Thông số kỹ thuật và ưu điểm của msp430g2553

 -Low Supply-Voltage Range: 1.8 V to 3.6 V

 - Cấu trúc sử dụng nguồn thấp giúp kéo dài tuổi thọ của Pin (siêu tiết kiệm điện):

 +Duy trì 0.1µA dòng nuôi RAM

 +Chỉ 0.8µA real-time clock

 +230 µA/ MIPS

 -Bộ tương tự hiệu suất cao cho các phép đo chính xác

 -Bộ giám sát điện áp nguồn

 -16 bit RISC CPU cho phép được nhiều ứng dụng, thể hiện một phần ở kích thước Code lập trình

 +Thanh ghi lớn nên loại trừ được trường hợp tắt nghẽn tập tin khi đang làm việc

 +Thiết kế nhỏ gọn làm giảm lượng tiêu thụ điện và giảm giá thành

 +Tối ưu hóa cho những chương trình ngôn ngữ bậc cao như C, C++Tối ưu hóa cho những chương trình ngôn ngữ bậc cao như C, C++

 -Có 7 chế độ định địa chỉ

 -Khả năng ngắt theo véc tơ lớn

+ Trong lập trình cho bộ nhớ Flash cho phép thay đổi Code một cách linh hoạt, phạm vi rộng, bộ nhớ Flash còn có thể lưu lại như nhật ký của dữ liệu

 -Tần số bên trong lên đến 16 MHz với bốn chế độ tần số được hiệu chỉnh

 -Crystal 32 kHz

 -Năm chế độ tiết kiệm năng lượng

Trang 7

DHT11

 Hình ảnh

Thông tin cơ bản

 Điện áp hoạt động: 3V - 5V (DC)

 Dãi độ ẩm hoạt động: 20% - 90% RH, sai số ±5%RH

 Dãi nhiệt độ hoạt động: 0°C ~ 50°C, sai số ±2°C

 Khoảng cách truyển tối đa: 20m

DHT11 Là cảm biến rất thông dụng hiện nay vì chi phí rẻ và rất dễ lấy dữ liệu thông qua giao tiếp 1-wire (giao tiếp digital 1-wire truyền dữ liệu duy nhất) Cảm biến được tích hợp bộ tiền xử lý tín hiệu giúp dữ liệu nhận về được chính xác mà không cần phải qua bất kỳ tính toán nào.

Trang 8

 Sơ đồ kết nối của DHT11:

Trang 9

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:

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

o 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à Output, kéo chân DATA xuống 0 trong khoảng thời gian >18ms Trong Code mình để 25ms Khi đó DHT11 sẽ hiểu 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 đượcvới DHT11

+ Chân DATA sẽ ở mức thấp 80us sau đó nó được DHT11 kéo nên cao trong 80us Bằng việc giám sát chân DATA, MCU có thể biết được có giaotiếp được với DHT11 ko Nếu tín hiệu đo được DHT11 lên cao, khi đó hoàn thiện quá trình giao tiếp của MCU với DHT

Trang 10

Đọc giá trị trên DHT11

 DHT11 sẽ trả giá trị nhiệt độ và độ ẩm về dưới dạng 5 byte Trong đó:

+ Byte 1: giá trị phần nguyên của độ ẩm (RH%)

+ Byte 2: giá trị phần thập phân của độ ẩm (RH%)

+ Byte 3: giá trị phần nguyên của nhiệt độ (TC)

+ Byte 4 : giá trị phần thập phân của nhiệt độ (TC)

+ Byte 5 : kiểm tra tổng

+ Nếu Byte 5 = (8 bit) (Byte1 +Byte2 +Byte3 + Byte4) thì giá trị độ

ẩm và nhiệt độ là chính xác, nếu sai thì kết quả đo không có nghĩa.+ Đọc dữ liệu:

Sau khi giao tiếp được với DHT11, DHT11 sẽ gửi liên tiếp 40 bit 0 hoặc 1 về MCU, tương ứng chia thành 5 byte kết quả của Nhiệt độ và

Trang 11

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.

Trang 14

4.LƯU ĐỒ CHƯƠNG TRÌNH DIỀU KHIỂN

BẮT ĐẦU

ĐẶT VÀ ĐIỀU CHỈNH NGƯỠNG NHIỆT ĐỘ VÀ

ĐỘ ẨM CHO PHÉP

KHỞI TẠO LCDHIỂN THỊ THÔNG TIN ĐỀ TÀI

HIỂN THỊ NHIỆT ĐỘ VÀ ĐỘ ẦM MÀ CẢM BIẾN

DO ĐƯỢC

So sánh nhiệt đô

và độ ẩm đođươc> nhiệt độ và

độ ẩm set

Độ ẩm > độ ẩm setNhiệt độ> nhiệt độ set

Nhiệt độ độ ẩm<nhiệt độ độ ẩm set

Nhiệt độ,độ ẩm> nhiệt

độ ,độ ẩm set

Không báoLed chớp tắt

Trang 15

Kết nối (SỬ DỤNG ARDUINO VÀ ESP8266)

//#define DHTTYPE DHT22 // DHT 22 (AM2302), AM2321

//#define DHTTYPE DHT21 // DHT 21 (AM2301)

float temp = dht.readTemperature();

float humi = dht.readHumidity();

Trang 16

//#define DHTTYPE DHT22 // DHT 22 (AM2302), AM2321

//#define DHTTYPE DHT21 // DHT 21 (AM2301)

float temp = dht.readTemperature();

float humi = dht.readHumidity();

Trang 17

Kết nối cảm biến DHT11 với mạch Arduino

18 Serial.print("Nhiet do: ");

19 Serial.println(t); //Xuất nhiệt độ

20 Serial.print("Do am: ");

21 Serial.println(h); //Xuất độ ẩm

22

23 Serial.println(); //Xuống hàng

24 delay(1000); //Đợi 1 giây

32 const int DHTPIN = 2;

33 const int DHTTYPE = DHT11;

Trang 19

union reg* P2_dir=(union reg*)0x2a;

union reg* P2_out=(union reg*)0x29;

union reg* P2_sel=(union reg*)0x2e;

union reg* P2_in=(union reg*)0x28;

union reg* P2_ren=(union reg*)0x2f;

Trang 20

union reg* P1_sel=(union reg*)0x26;

union reg* P1_dir=(union reg*)0x22;

union reg* P1_out=(union reg*)0x21;

union reg* P1_in=(union reg*)0x20;

union reg* P1_ren=(union reg*)0x27;

#define MCLK_F 1 // frequency of Master Clock in MHz

/* Function Set definitions */

#define FOUR_BIT 0x2C /* 4-bit Interface */

#define LINES_5X7 0x38 /* 5x7 characters, multiple line */

/*note:

EIGHT_BIT 0x3C == 8-bit Interface

LINE_5X7 0x30 == 5x7 characters, single line

LINE_5X10 0x34 == 5x10 characters */

/* Display ON/OFF Control definitions */

#define DON 0x0F /* Display on */

#define DOFF 0x0B /* Display off */

#define CURSOR_ON 0x0F /* Cursor on */

#define CURSOR_OFF 0x0D /* Cursor off */

#define BLINK_ON 0x0F /* Cursor Blink */

#define BLINK_OFF 0x0E /* Cursor No Blink */

/* Cursor or Display Shift definitions */

#define SHIFT_CUR_LEFT 0x04 /* Cursor shifts to the left */

/*note:

Trang 21

SHIFT_CUR_RIGHT 0x05 == Cursor shifts to the right

SHIFT_DISP_LEFT 0x06 == Display shifts to the left

SHIFT_DISP_RIGHT 0x07 == Display shifts to the right */

#define LCD_RS P1_out -> _bit.b0

#define LCD_RS_DIR P1_dir -> _bit.b0

#define LCD_EN P1_out -> _bit.b1

#define LCD_EN_DIR P1_dir -> _bit.b1

// This driver just help you to "write" LCD, not to read LCD "status".// So that, you must pull your pin LCD_RW to GND (0V)

#define LCD_DATA_4 P1_out -> _bit.b2

#define LCD_DATA_4_DIR P1_dir -> _bit.b2

#define LCD_DATA_5 P1_out -> _bit.b3

#define LCD_DATA_5_DIR P1_dir -> _bit.b3

#define LCD_DATA_6 P1_out -> _bit.b4

#define LCD_DATA_6_DIR P1_dir -> _bit.b4

#define LCD_DATA_7 P1_out -> _bit.b5

#define LCD_DATA_7_DIR P1_dir -> _bit.b5

void lcd_delay_us (unsigned long t)

Trang 24

lcd_delay_ms(2); // wait for LCD

lcd_put_byte(0,FOUR_BIT & LINES_5X7); // Set LCD type

lcd_delay_ms(2); // wait for LCD

lcd_put_byte(0,DOFF&CURSOR_OFF&BLINK_OFF); // display off lcd_delay_ms(2); // wait for LCD

lcd_put_byte(0,DON&CURSOR_OFF&BLINK_OFF); // display on lcd_delay_ms(2); // wait for LCD

lcd_put_byte(0,0x01); // clear display and move cursor to home lcd_delay_ms(2); // wait for LCD

lcd_put_byte(0,SHIFT_CUR_LEFT); // cursor shift mode

lcd_delay_ms(2); // wait for LCD

lcd_put_byte(0,0x01); // clear display and move cursor to home lcd_delay_ms(2); // wait for LCD

}

void lcd_clear(void)

{

lcd_put_byte(0,0x01); // display off

lcd_delay_ms(2); // wait for LCD

Trang 26

lcd_putc(*data); // Write character to LCD

data++; // Increment buffer

Trang 28

#define DHT_IN P2_in -> _bit.b0

#define DHT_OUT P2_out -> _bit.b0

#define DHT_DIR P2_dir -> _bit.b0

unsigned char nhietdo, doam;

unsigned char dht_get(unsigned char *tem, unsigned char *humi)

{

Trang 31

unsigned long doamset=90;void gioi_thieu()

{

lcd_gotoxy(0,0);

lcd_puts(" DO AN VI XU LY"); lcd_gotoxy(0,1);

lcd_puts("nong nghiep smart"); delay_cycles(3000000); lcd_clear();

lcd_gotoxy(0,0);

lcd_puts("Nguyen Duy Ngoc"); lcd_gotoxy(0,1);

lcd_puts("MSSV: B1509816"); delay_cycles(3000000); lcd_clear();

}

void main( void )

{

Trang 32

// Stop watchdog timer to prevent time out reset WDTCTL = WDTPW + WDTHOLD;

P2IE |=(BIT4 + BIT5 +BIT6 +BIT7);

P2IES |=(BIT4 + BIT5 +BIT6 +BIT7);

P2IFG &= ~(BIT4 + BIT5 +BIT6 +BIT7);

interrupt void Port_2(void)

{if(P2IFG & BIT4)

Trang 33

if(P2IFG & BIT5)

if(P2IFG & BIT6)

Trang 35

{

P2OUT=BIT3;

delay_cycles(50000);}// Coi else

{ P2OUT&=~(BIT1+BIT2+BIT3);}}

5.

Trang 36

4 6 D D 5

IN

IN

N1 N2 N3 N4

N1

N2 N3

N4

TEST/SBWTCK 17

XOUT/P2.7

18 XIN/P2.6/TA0.119

RST/NMI/SBWTDIO 16

P1.7/CAOUT/UCB0SIMO/UCB0SDA/A7/CA7/TDO/TDI

15 P1.6/TA0.1/UCB0SOMI/UCB0SCL/A6/CA6/TDI/TCLK14

P2.5/TA1.2

13 P2.4/TA1.212

P1.2/TA0.1/UCA0TXD/UCA0SIMO/A2/CA2

4 P1.1/TA0.0/UCA0RXD/UCA0SOMI/A1/CA1

3 P1.0/TA0CLK/ACLK/A0/CA02

P1.3/ADC10CLK/CAOUT/VREF-/VEREF-/A3/CA3 5

P1.4/SMCLK/UCB0STE/UCA0CLK/VREF+/VEREF+/A4/CA4/TCK 6

P2.1/TA1.1

9 P2.0/TA1.08

P1.5/TA0.0/UCB0CLK/UCA0STE/A5/CA5/TMS 7

P2.2/TA1.1 10 P2.3/TA1.0 11U1

IN

GND 1

U2LM1117MP-2,5

C21nF

R1220

D1LED-YELLOW

1 2J4

CONN-SIL2

C31nF

D2LED-YELLOW

1 2J7

DONG CO

1 2 3J8

CONN-SIL3

R310k

1 2J9

CONN-SIL2

1 2J10

CONN-SIL2

1 2J11

2J12

CONN-SIL2

R410k

R510kR6

10k

R710k

R8

vol

LOA10k

Trang 38

6.MẠCH IN

Trang 39

7.TỔNG KẾT ĐỀ TÀI

Ưu điểm

Thiết kế và điều khiển được mạch đo nhiệt độ độ ẩm hiển thi ra lcd

Mạch chay chính xác không xãy ra lổi

Nhược điểm

thiết kế còn đơn giản chưa có tính ứng dụng cao

Thiết kế chưa ngắn ngọn vẫn còn rườm rà

ứng dụng

-có thể ứng dụng vào mạch giám sát và điều chỉnh nhiệt độ từ xa trong hệ thống nông nghiệp thông minh ( bao gồm trong các khâu trồng và bảo quản nông sản)-do thiết kế nhỏ gọn sẽ tiết kiệm chi phí vật liệu chế tạo và lắp đăt

-có thể tự động ngắt khi tkhông cần hoạt động giúp tiết kiệm năng lương và có thời hạn hoạt động lâu dài hơn

Ngày đăng: 03/09/2019, 00:57

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w