đồ án thiết kế cảm biến độ ẩm dht11
Trang 1Lời mở đầu
Trong thời buổi công nghệ phát triển mạnh mẽ, ngày càng có nhiều sản phẩn ra đời với những tính năng vượt bậc và vô cùng đa dạng, phong phú và đặc biệt hơn đó là sự thông mìnhchứa đựng trong mỗi sản phẩm Khoa học phát triển làm cho những ngành khác cũng phát triển theo, có thể kể đến như là điện tử, công nghệ thông tin, viễn thông, cơ khí, chế tạo máy,
… Các ngành khoa học luôn có sự kết hợp chặt chẽ với nhau
từ cơ khí, điện tử đến lập trình Ngành cơ điện tử ra đời mà đỉnh cao đó là các loại rô bốt thông minh, các máy móc thông minh, … Nhờ có các cảm biến, các robot ngày nay được phát triển để nhận biết được các hành động phức tạp, … Có rất nhiều loại cảm biến đã được chế tạo và sử dụng theo các mụcđích khác nhau trong đời sống như cảm biến cảm nhận về nhiệt độ, ánh sáng, âm thanh, lực, dòng chảy, … Tùy theo mỗiloại công việc mà mỗi loại cảm biến có cách chế tạo khác nhau
Trong đó nhiệt độ và độ ẩm cũng là yếu tố được đề cập tới rấtnhiều, vì thế mạch đo nhiệt độ và độ ẩm ra đời là sự tất yếu Với sự phát triển của công nghệ hiện nay việc sản xuất mạch
đo nhiệt độ và độ ẩm đơn giản mà độ chính xác cao là điều khá đơn giản Việc áp dụng trong thực tế càng phổ biến hơn khi nhiệt độ độ ẩm đóng vai trò lớn ảnh hưởng đến con người, hàng hoá, máy móc, độ bền … Vì vậy nhiệt độ được sử dụng hầu hết các nhà máy sản xuất, kho chứa hàng hoá, bảo quản máy móc cũng như điều kiện vận hành Trong y tế nó được sửdụng rộng rãi trong các phòng cách ly, phòng điều trị cho bệnh nhân cũng như áp dụng hầu hết trong các dây chuyền cũng như các công nghệ sản xuất tuỳ theo nhu cầu mà chúng
ta có thể tuỳ biến thêm ngoài chức năng của đề tài này để phù hợp với đúng nhu cầu trong quá trình hoạt động ngoài chức năng chính là hiển thị nhiệt độ độ ẩm của các khu vực cần khảo sát nhiệt độ và độ ẩm
Trang 2Có rất nhiều loại cảm biến trên thị trường hiện nay, một loại cảm biến cũng rất thông dụng đó là cảm biến đo độ ẩm Độ
ẩm là một trong những đặc trưng quan trọng nhất của khí hậu
và có ý nghĩa quan trọng đối với một số quá trình công nghệ Trong khí quyển, độ ẩm tồn tại trong phạm vi rất rộng (từ vài phần triệu ppm đến hơi nước bão hòa ở 1000C), trong khoảngnhiệt độ lớn (từ -600 C đến 10000C), có thể lẫn tạp chất và hóa chất khác nhau Vì những lý do vậy, nhóm em quyết định thực hiện đề tài về tìm hiểu cảm biến đo độ ẩm không khí và ứng dụng của nó
Trang 3
Khó khăn trong việc đo độ ẩm:
Việc đo độ ẩm khó khăn hơn việc đo các đại lượng khác như lưu lượng, nhiệt độ áp suất giới hạn độ ẩm rất rộng từ vài
phần ăn mòn và các hạt bẩn hoặc hóa chất
Trong ứng dụng hàng ngày, nhu cầu theo dõi nhiệt độ và độ
ẩm càng trở nên phổ biến và thiết thực, sử dụng trong:
Đối tượng nghiên cứu:
Trang 4CHƯƠNG II:
1 GIỚI THIỆU SƠ LƯỢC VỀ 8051
1.1: Tổng quan về PIC
a) PIC là gì?
PIC là một họ vi điều khiển RISC được sản xuất bởi công ty Microchip
Microelectronics Division thuộc General Instrument
PIC bắt nguồn là chữ viết tắt của "Programmable Intelligent Computer"
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 (4 chu kỳ của bộ dao động)
Năm 1985 General Instrument bán bộ phận vi điện tử của họ, và chủ sở hữu mới hủy bỏ hầu hết các dự án - lúc đó đã quá lỗi thời Tuy nhiên PIC được bổ sung EEPROM để tạo thành 1 bộ điều khiển vào ra khả trình Ngày nay rất nhiều dòng PIC được xuất xưởng với hàng loạt các module ngoại vi tích hợp sẵn (như USART, PWM, ADC ), với bộ nhớ chương trình từ 512 Word đến 32K Word
b) Tại sao phải dùng PIC?
Trang 5Họ vi điều khiển này có thể dễ tìm thấy tại thị trường việt nam, tại nha trang các tiệm điện tử bán khá nhiều và giá thành không quá đắt Có đầy đủtính năng của một vi điều khiển khi hoạt động độc lập, Nhiều người sử dụng họ vi điều khiển PIC tại Việt Nam, tạo nhiều thuận lợi như: số lượng tài liệu, số lượng các ứng dụng mở đã được phát triển thành công, dễ dàng trao đổi, học tập.
Bộ vi điều khiển viết tắt là Micro-controller, là mạch tích hợp trên một chip có thể lập trình được, dùng để điều khiển hoạt động của một hệ
thống.Theo các tập lệnh của người lập trình, bộ vi điều khiển tiến hành đọc,lưu trữ thông tin, đo thời gian và tiến hành đóng mở một cơ cấu nào đó Trong các thiết bị điện và điện và điện tử dân dụng, các bộ vi điều khiển, điều khiển hoạt đọng của TV, máy giặt, đầu đọc laser, điện thoại, lò
viba….Trong hệ thống sản xuất tự động, bộ vi điều khiển được sử dụng trong Robot, dây truyền tự động.Các hệ thống càng “thông minh” thì vai trò của hệ vi điều khiển càng quan trọng Hiện nay các bộ vi điều khiển 8 bit đứng đầu là họ 8051 có số lượng lớn nhất các nhà cung cấp đa dạng (nhiều nguồn).Nhà cung cấp có nghĩa là nhà sản xuất bên cạnh nhà sáng chế của bộ vi điều khiển Trong trường hợp 8051 thì nhà sản xuất là Intel, nhưng hiện nay có rất nhiều hãng sản xuất nó (cũng như trước kia đã sản xuất) 8051 là một bộ xử lý 8 bit có nghĩa là CPU chỉ có thể làm việc với 8 bit dữ liệu tại một thời điểm.Dữ liệu lớn hơn 8 bit được chia ra thành các
dữ liệu 8 bit để cho xử lý.8051 có tất cả 4 cổng vào – ra I/O mỗi cổng rộng
8 bit.Các nhà sản xuất đã cho xuất xưởng chỉ với 4K byte ROM trên chíp
2.2: Vi điều khiển AT89s52
a) Vi điều khiển AT89s52
Bộ vi điều khiển AT89S52 gồm các chức năng chính sau đây:
Trang 6• CPU (Centralprocessing unit) bao gồm : Thanh ghi tích lũy A Thanh ghi tích lũy B ,dùng cho phép nhân và phép chia Đơn vị logic học (ALU : Arithmetic Logical Unit) Thanh ghi từ trạng thái chương trình (PSw : Program Status Word) Bốn băng thanh ghi Con trỏ ngăn xếp • Bộ nhớ chương trình (bộ nhớ ROM)gồm 8kbyte Flash • Bộ nhớ dữ liệu (bộ nhớ RAM) gồm 256 byte
• Bộ UART (Universal Ansynchronous Receiver and Tranmistter) cóchức năng truyền nhận nối tiếp, AT89S52 có thể giao tiếp với cổng nối tiếpcủa máy tính thông qua bộ UART
• 3 bộ Timer/Counter 16 bit thực hiện các chức năng định thời và đếm sự kiện
• WDM (Watch Dog Timer): WDM được dùng để phục hồi lại hoạt động của của CPU khi nó bị treo bởi một nguyên nhân nào đó
• Khối điều khiển ngắt với 2 nguồn ngắt
ngoài và 4 nguồn ngắt trong
• Bộ lập trình (ghi chương trình lên
Flash ROM) cho phép người sử dụng có thể
nạp các chương trình cho chíp mà không cần
đến bộ nạp chuyên dụng
• Bộ chia tần số với hệ số chia là 12
• 4 cổng xuất nhập với 32 chân
Trang 7- Port 0(P0.0 – P0.7) : Port 0 gồm 8 chân, ngoài chức năngxuất nhập, port 0 còn là bus dữ liệu và địa chỉ (AD0 – AD7), chứcnăng này sẽ được sử dụng khi 8051 giao tiếp với các thiết bị ngoài cókiến trúc Bus như các vi mạch nhớ…
- Port 1 (P1.0 – P1.7): có chức năng xuất nhập theo bit và theobyte Bên cạnh đó 3 chân P1.5, P1.6, P1.7 được dùng để nạp ROMtheo chân ISP, 2 chân P1.0 và P1.1 được dùng cho bộ Timer 2
- Port 2: là cổng vào/ra còn là byte cao của bus địa chỉ khi sửdụng bộ nhớ ngoài
- Port 3: ngoài chức năng xuất nhập còn có chức năng riêng
Trang 8P3.5 T1 Ngõ vào của Timer/counter 1
- Chân /PSEN (Program Store Enable): là chân điều khiển đọc chương trình ở bộ nhớ ngoài, nó được phép đọc các byte mã lệnh trên ROM ngoài./PSEN sẽ ở mức thấp trong thời gian đọc mã lệnh.Mã lệnh được đọc từ bộ nhớ ngoài qua bus dữ liệu (port 0) thanh ghi lệnh để được giải mã.khi thực hiện chương trình ROM nội thì /PSEN ở mức cao
- Chân ALE (Address Latch Enable) : ALE là tín hiệu điều khiển chốt địa chỉ có tần số bằng 1/6 tần số dao động của vi điều khiển.Tín hiệu ALE được dùng để cho phép vimạch chốt bên ngoài như 74373,74573 chốtbyte địa chỉ thấp ra khỏi bus đa hợp địa chỉ/dữ liệu (Port 0)
- Chân /EA(External Access) : tín hiệu cho phép chọn bộ nhớ
chương trình là bộ nhớ trong hay ngoài vi điều khiển.Nếu /EA ở mức cao (nối với VCC),thì vi điềukhiển thi hành chương trình trong ROM nội.Nếu /
EA ở mức thấp(nối GND) thì vi điều khiển thi hành chương trình bộ nhớ ngoài
- XTAL1, XTAL2: AT89S52 có một bộ dao động trên chíp, nó thường được nối với bộ dao động thạch anh có tần số lớn nhất là 33MHz, thông thường là 12MHz
- VCC, GND: AT89S52 dùng nguồn một chiều có dải điện áp từ 4V đến 5,5V được cấp qua chân 40 và 20
b) Cấu trúc bên trong của AT89S52:
Trang 9c) Hoạt động định thời của AT89S52
Vi điều khiển AT89S52 có 3 bộ định thời 16 bit trong đó 2 bộ timer
0 và 1 có 4 chế độ hoạt động, timer 2 có 3 chế độ hoạt động.Các bộ định thời dùng để định khoảng thời gian (hẹn giờ), đếm sự kiện xảy ra bên ngoài
bộ vi điều khiển hoặc tạo tốc độ baud cho công nối tiếp của vi điều khiển
Các thanh ghi của bộ định thời:
• Các thanh ghi của Timer 0 và Timer 1
• Thanh ghi chế độ định thời (TMOD)
• Thanh ghi TMOD chứa 2 nhóm 4 bit dùng để đặt chế độ làm việc cho Timer 0 và Timer 1
Trang 10Thanh ghi TMOD:
định thời chỉ hoạt động trong khi INT1
ở mức cao
1=đếm sự kiện0=định thời trong khoảng thời gian
Trang 11Thanh ghi điều khiển Timer (TCON):
-Thanh ghi TCON chứa các bit trạng thái và các bit điều khiển cho Timer 0
và Timer 1
E0
được set bởi phần cứng khi có tràn, được xóa bởi phần mềm, hoặc bởi phần cứng khi bộ vi xử lý trỏ đến trình phục vụ ngắt
định thời 1 Bit này được set hay xóa bằng phần mềm để điều khiển bộ định thời hoạt động hay ngưng
Trang 12TCON.5 TF0 Cờ tràn của bộ định thời 0
thời
cạnh).Cờ này được set bởi phần cứngkhi có cạnh âm (cuống) xuất hiện trên chan INT1,được xóa bởi phần mềm,hoặc phần cứng khi CPU trỏ đến trình phục vụ ngắt
hoặc mức).Cờ này được set hay xóa bởi phần mềm khi xảy ra cạnh âm hoặc mức thấp ở chân ngắt ngoài
hoặc mức)
Các chế độ định thời của timer 0 và 1
- Chế độ 0 : là chế độ định thời 13 bit , chế độ này tương thích với các bộ viđiều khiển trước đó , trong các ứng dụng hiện nay chế độ này không còn thích hợp Trong chế độ này bộ định thời dùng 13 bit (8 bit cua TH và 5 bit cao của TL) để chứa giá trị đếm, 3 bit thấp của TL không được sử dụng
Trang 13- Chế độ 1 : Trong chế độ này , bộ timer dùng cả 2 thanh ghi TH và TL để chứa giá trị đếm , vì vậy chế độ này còn được gọi là chế độ định thời 16 bit Bit MSB sẽ là bit D7 của TH còn bit LSB là D0 của TL
- Chế độ 2: Trong chế độ 2, bộ định thời dùng TL để chứa giá trị đếm và
TH để chứa giá trị nạp lại vì vậy chế độ này còn gọi là chế độ tự nạp lại 8
Vect
or ngắt
tích cực theo kiểu đã chọn ở chân P3.2
003
timer0 tràn từ giá trị max về giá trị min
00B
tích cực theo kiểu đã chọn ở chân P3.3
013
timer1 tràn từ giá trị max về giá trị min
BH
Trang 14bit.Sau khi đếm 255 sẽ xảy ra tràn, khi đó TF được đặt bằng 1 đồng thời giá
trị của timer tự động được nạp lại bằng nội dung của TH
- Chế độ 3 : Trong chế độ 3 , Timer 0 được tách thành 2 bộ Timer hoạt
động độc lập , chế độ này sẽ cung cấp cho bộ vi điều khiển thêm một Timer
nữa
Tổ chức ngắt ở AT89S52
- Bảng tóm tắt các ngắt trong AT89S52 như sau:
Thanh ghi IE
(8052)
Trang 16Ngắt do các timer:
-AT89S52 có 3 Timer là Timer 0 và Timer 1 và Timer 2 Các Timer này đều là Timer 16 bit, giá trị đếm max do đó bằng 65535 (đếm từ 0 đến 65535).Ba timer có nguyên lý hoạt động hoàn toàn giống nhau và độc lập.-Các ngắt do các bộ Timer xảy ra do sự kiện tràn ở các Timer, khi đó các
cờ tràn TFx sẽ đươc đặt bằng 1.Khi ISR được đáp ứng, các cờ TFx sẽ tự động được xóa bởi phần mềm
Trang 172 Giới thiệu sơ lược cảm biến độ ẩm
2.1 Cảm biến độ ẩm DHT11:
Các chân của cảm biến được tích hợp sẵn điện trở 5,1k giúp người dùng dễ dàng kết nối và sử dụng hơn so với cảm biến DHT11 chưa ra chân,module lấy dữ liệu thông qua giao tiếp 1 wire (giao tiếp 1 dây) Bộ tiền xử
lý tín hiệu tích hợp trong cảm biến giúp bạn có được dữ liệu chính xác mà không cần phải qua bất kỳ tính toán nào Module được thiết kế hoạt động ở mức điện áp 5VDC
2.2 Thông số kỹ thuật:
Trang 18 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 không được kéo xuống thấp nghĩa là không giao tiếp được vớ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 không 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
DHT11 sẽ trả giá trị nhiệt độ và độ ẩm về dưới dạng 5 byte Trong đó:
Trang 19-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
Đọ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à độ ẩm
Bit 0:
Trang 20Bit 1:
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
Trang 213 Giới thiệu về LCD 16x2:
3.1Giới thiệu:
Màn hình Text LCD1602 có khả năng hiển thị 2 dòng với mỗi dòng 16
ký tự, màn hình có độ bền cao, rất phổ biến, dễ sử dụng, rất thích hợp cho những người mới học và làm đồ án
LCD là tên viết tắt của (Liquid Crystal Display) là một màn hình nhiều điểm ảnh, có thể coi là một Led ma trận dạng lớn, chúng ta sẽ điều khiểnLCD qua lệnh, con trỏ… để hiển thị thông tin một cách dễ dàng Có nhiều loại LCD, trong bài này chúng ta dùng loại đơn giản LCD 16x2 Trước tiên chúng ta tìm hiểu về cầu tạo của nó
Dưới đây là hình mô phỏng, các em tìm nó với từ khóa “lcd 16x2”
Trang 23 Kéo chân RS xuông mức thấp để LCD hiểu là chúng ta muốn ghi lệnh chứ không phải ghi dữ liệu.
hoặc ngược lại để cho phep lệnh được ghi vào LCD
Một số hàm khởi tạo, điều khiển LCD:
Nhìn chung việc điều khiển lập trình LCD là một công việc khá phức tạp Để lập trình được các hàm khởi tạo, điều khiển LCD cần có khả năng về lập trình nhất định
Có 2 cách gửi dữ liệu LCD là 8bit và 4bit, nhóm em chọn cách 4bit để tiết kiệm chân dữ liệu cho VDK
Một số hàm dùng để điều khiển LCD được viết bằng ngôn ngữ lập trình
Trang 26unsigned char vitri;
if (!cot) vitri = (0x80 + hang);
else vitri = (0xC0 + hang);
Trang 28Chức năng: Là nguồn tạo xung nhịp dao động clock ổn định (12 MHz)
cho dao động của 8051 Thạch anh sẽ được gắn vào chân XTAL1 và XTAL2 (Chân số 18 và 19 ) của 8051
Trang 29Hình:
Tụ hóa 10μF, 25VF, 25V:
Chức năng: Tụ hóa 10μF, 25VF được gắn đầu âm vào chân reset, đầu dương lên nguồn Khi cấp điện cho mạch, tụ sẽ phóng điện khiến chân reset bật lên mức cao, khi đó toàn bộ hệ thống sẽ được nạp lại từ đầu Khi đang vận hành thì tụ hóa ngăn dòng đi vào chân reset
Hình: