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

Đo độ ẩm không khí bằng Arduino và hiển thị lên máy tính bằng C có File code arduino

28 924 8

Đ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 28
Dung lượng 1,42 MB

Nội dung

Đo độ ẩm không khí dùng Arduino, cảm biến HS1101. Đồ án môn học.Đo độ ẩm không khí bằng Arduino và hiển thị lên máy tính bằng CĐộ ẩm tuyệt đối là hàm lượng hơi nước trong một đơn vị thể tích không khí .Độ ẩm tương đối là tỷ số giữa khối lượng nước trên một thể tích không khíhiện tại so với khối lượng nước trên cùng thể tích đó khi hơi nước bão hòa. Đâylà đại lượng được sử dụng trong thực tế để mô tả mức độ ẩm trong không khíđược biểu diễn theo dạng phần trăm (%), độ ẩm tương đối 100% thể hiện rằngkhông khí chứa đầy hơi nước, tới trạng thái bão hòa.Hướng đi của đề tài. Để đo được độ ẩm của không khí ta sử dụng cảm biến đo độ ẩm, tín hiệu ra củacảm biến sẽ được gửi về vi điều khiển, vi điều khiển sẽ xử lí tín hiệu đó và gửi lênmáy tính thông qua chuẩn truyền thông nối tiếp. Độ ẩm hiện tại được hiển thịtrên máy tính thông qua một phần mềm hiển thị.

Trang 1

TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI

VIỆN ĐIỆN

********************

Đồ án 1

Đề tài : Thiết kế mạch đo độ ẩm và hiển thị lên máy tính

Họ và tên: Phạm Văn Công MSSV: 20150451

Lớp: TĐH 4 Giảng viên hướng dẫn: TS Nguyễn Hoài Nam

Hà Nội, 6/2018

Trang 2

MỤC LỤC

2.1 Tổng quan về cách thức thực hiện đề tài 14

Trang 3

Độ ẩm là gì ?

Độ ẩm tuyệt đối là hàm lượng hơi nước trong một đơn vị thể tích không khí

Độ ẩm tương đối là tỷ số giữa khối lượng nước trên một thể tích không khí

hiện tại so với khối lượng nước trên cùng thể tích đó khi hơi nước bão hòa Đây

là đại lượng được sử dụng trong thực tế để mô tả mức độ ẩm trong không khí

được biểu diễn theo dạng phần trăm (%), độ ẩm tương đối 100% thể hiện rằng

không khí chứa đầy hơi nước, tới trạng thái bão hòa

Hướng đi của đề tài

Để đo được độ ẩm của không khí ta sử dụng cảm biến đo độ ẩm, tín hiệu ra của

cảm biến sẽ được gửi về vi điều khiển, vi điều khiển sẽ xử lí tín hiệu đó và gửi lên

máy tính thông qua chuẩn truyền thông nối tiếp Độ ẩm hiện tại được hiển thị

trên máy tính thông qua một phần mềm hiển thị

Các linh kiện được sử dụng trong đề tài:

Module đo độ ẩm : cảm biến độ ẩm HS1101, NE555, điện trở ( giá: 55 nghìn đồng)

Vi điều khiển: Arduino Nano ( giá: 75 nghìn)

Tổng chi phí thực hiện đề tài là 150 ngàn đồng

Trang 4

Chương 1: Lý thuyết tổng quan

1.1 Giới thiệu về vi điều khiển ATmega328p

Vi điều khiển là 1 hệ thống bao gồm vi xử lý, kết hợp với các khối ngoại vi như

bộ nhớ, các module vào/ra, các bộ chuyển đổi ADC, DAC,… tất cả được tích hợp trên 1 chip Vi điều khiển được sử dụng rộng rãi trong các hệ thống nhúng cũng như các thiết bị điện tử thông minh

Vi điều khiển AVR do hãng Atmel ( Hoa Kì ) 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, ,…) và mới nhất là Xmega, 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 được tích hợp trên chip Tốc độ của dòng Mega cũng cao hơn so với các dòng khác Sự khác nhau cơ bản giữa các dòng chình là cấu trúc ngoại vi, còn nhân thì vẫn như nhau

Hình 1.1: Các dòng AVR của Atmel

❖ Vi điều khiển ATmega328p là một vi điều khiển thuộc dòng Mega Cho nên nó có đầy đủ các đặc điểm của dòng Mega

Trang 5

Hình 1.2 : Vi điều khiển ATmega328p dạng chip cắm và chip dán

Những Tính Năng Chính Của ATmega328p:

• Bộ nhớ chương trình : 32 Kbytes

• SRAM: 2 Kbytes

• EEPROM : 1 Kbytes

• Số lần ghi 10,000 lần đối với Flash ROM, 100,000 lần đối với EEPROM

• Dữ liệu có thể được lưu trữ 20 năm ở 85°C và 100 năm ở 25 °C

• 64 thanh ghi I/O, 160 thanh ghi vào ra mở rộng, 32 thanh ghi đa mục đích

• 3 bộ định thời: 2 bộ 8 bit ( 0 & 2), 1 bô 16 bit ( 1 )

• Bộ định thời watchdog

• 6 kênh PWM 8 bit

• Bộ dao động nội RC tần số 1 MHz, 2 MHz, 4 MHz, 8 MHz

• ADC 8 kênh với độ phân giải 10 bit (Ở dòng Xmega lên tới 12 bit )

• Bộ so sánh tương tự có thể lựa chọn ngõ vào

• Một khối USART lập trình được

• Khối truyền nhận nối tiếp SPI Khối giao tiếp nối tiếp 2 dây TWI

Trang 6

Hình 1.3: Sơ đồ chân của ATmega328p

1.2 Giới thiệu về Arduino nano

Arduino là một board mạch vi xử lý, nhằm xây dựng các ứng dụng tương tác với nhau hoặc với môi trường được thuận lợi hơn Được giới thiệu vào năm 2005,

Arduino đã và đang được sử dụng rất rộng rãi trên thế giới, và ngày càng chứng

tỏ được sức mạnh của chúng thông qua vô số ứng dụng độc đáo của người dùng

Một mạch Arduino bao gồm một vi điều khiển AVR với nhiều linh kiện bổ sung giúp dễ dàng lập trình và có thể mở rộng với các mạch khác Một khía cạnh quan trọng của Arduino là các kết nối tiêu chuẩn của nó, cho phép người dùng kết nối với CPU của board với các module thêm vào có thể dễ dàng chuyển đổi

Arduino chính thức thường sử dụng các dòng chip megaAVR, đặc biệt là

ATmega8, ATmega168, ATmega328, ATmega1280, và ATmega2560

Arduino NANO với thiết kế tiêu chuẩn sử dụng vi điều khiển ATmega328p làm trung tâm của mọi xử lý tác vụ

Kích thước của Arduino Nano cực kì nhỏ (1.85cm x 4.3cm) vì thế nó thích hợp cho

dự án yêu cầu nhỏ gọn

Trang 7

Một vài thông số của Arduino NANO

Điện áp vào khuyên dùng 7-12V – DC

Điện áp vào giới hạn 6-20V – DC

Số chân Digital I/O 14 (6 chân PWM)

Số chân Analog 8 (độ phân giải 10bit)

Dòng tối đa trên mỗi

Trang 8

Các chân của Arduino NANO :

Chức năng của các chân được hiển thị chi tiết ở hình 1.5

GND (Ground): Chân cấp cực âm cho đầu ra

5V: cấp điện áp 5V đầu ra Dòng tối đa cho phép ở chân này là 500mA

3.3V: cấp điện áp 3.3V đầu ra Dòng tối đa cho phép ở chân này là 50mA

Vin (Voltage Input): để cấp nguồn ngoài cho Arduino UNO, bạn nối cực

dương của nguồn với chân này và cực âm của nguồn với chân GND

RESET: việc nhấn nút Reset trên board để reset vi điều khiển tương đương

với việc chân RESET được nối với GND qua 1 điện trở 10KΩ

Hình 1.5 Chức năng của các chân của Arduino NANO

Trang 9

Các chân từ D2-D12 : là các chân vào ra số và có chức năng riêng đối với từng

chân giống như vi điều khiển Atmega328p ngoài ra các chân D3, D5,D6, D9, D10, D12 được sử dụng cho PWM

Các chân từ A0-A7 : là các chân vào ra số đồng thời cũng là các chân tương tự Các chân truyền thông TXD, RXD

Arduino NANO được lập trình trên phần mềm Arduino IDE, bằng ngôn ngữ C

Độ chính xác nhiệt

độ (°C)

Chuẩn giao tiếp Sensor

Giá tham khảo (VND)

Để đạt tiêu chí kinh tế và độ chính xác tương đối thì HS1101 có thể tốt nhất,

với độ chính xác về độ ẩm 2%RH, HS1101 không thua kém gì SHT1x

Vì vậy trong đề tài này ta sử dụng cảm biến HS1101

HS1101 cơ bản là 1 tụ biến dung theo độ ẩm, giá trị của nó sẽ thay đổi khi độ

ẩm thay đổi Giá trị điện dung của cảm biến theo đổi theo độ ẩm được biểu diến theo công thức:

C=C(55%)*(1.25*10 -7 RH 3 -1.36*10 -5 RH 2 +2.19*10 -3 RH+9.0*10 -1 )

RH: là giá trị độ ẩm ( % )

C(55%): là giá của điện dung ở độ ẩm 55% C(55%) = 180pF

Trang 10

Hình 1.6 Giá trị điện dung của cảm biến thay đổi theo độ ẩm

Làm sao để đo được giá trị của điện dung của cảm biến ?

Để đo được giá trị điện dung, trong đề tài này ta sử dụng IC NE555. IC NE555 là

linh kiện dùng để tạo xung vuông và tần số xung ra có thay đổi tùy thích

Hình 1.7 Hình ảnh và sơ đồ chân của NE555

Chân 1 (GND): Chân cho nối masse để lấy dòng

Chân 2 (Trigger): Chân so áp với mức áp chuẩn là 1/3 mức nguồn nuôi

Chân 3 (Output): Chân xung ra

Chân 4 (Reset): Chân xác lập trạng thái nghỉ, khi hoạt động chân này phải kéo lên

dương nguồn

Chân 5 (Control Voltage): Chân làm thay đổi mức áp chuẩn trong IC 555

Chân 6 (Threshold): Chân so áp với mức áp chuẩn là 2/3 mức nguồn nuôi

Chân 7 (Discharge): Chân có khóa điện đóng masse, thường dùng cho tụ xả điện

Chân 8 (VCC): Chân nối vào đường nguồn V+ IC 555 làm việc với mức nguồn từ 3

đến 15V

pF

RH

Trang 11

❖ Cấu tạo và nguyên lý hoạt động của IC555

Cấu tạo của IC 555 gồm OP-amp so sánh điện áp, mạch lật và transistor để xả điện Cấu tạo của IC đơn giản nhưng hoạt động tốt Bên trong gồm 3 điện trở mắc nối tiếp chia điện áp VCC thành 3 phần Cấu tạo này tạo nên điện áp chuẩn Điện áp 1/3 VCC nối vào chân dương của Op-amp 1 và điện áp 2/3 VCC nối vào chân âm của Op-amp 2 Khi điện áp ở chân 2 nhỏ hơn 1/3 VCC, chân S = [1] và

FF được kích Khi điện áp ở chân 6 lớn hơn 2/3 VCC, chân R của FF = [1] và FF được reset

Hình 1.8 Sơ đồ nguyên lý của mạch tạo dao động bằng IC555

Nguyên lý hoạt động:

Khởi đầu tụ điện C được nạp điện từ nguồn Vcc, điện áp trên tụ Uc được so sánh với đầu vào đảo 2/3Vcc của Op-amp 1 và 1/3Vcc của Op-amp 2

o Khi Uc <1 /3Vcc đầu ra của Op-amp 1 ở mức thấp, đầu ra của Op-amp 2

ở mức cao ( R=0, S=1) nên đầu ra đảo của FF, 𝑄̅ = 0 Lúc này Transistor

bị khóa tụ tiếp tục được nạp

o Khi Uc = 1 /3Vcc Op-amp 2 lật trạng thái S=0, R = 0 đầu ra đảo 𝑄̅ = 0 Lúc này Transistor vẫn bị khóa tụ tiếp tục được nạp

o Khi Uc = 2 /3Vcc Op-amp 1 lật trạng thái S=0, R = 1 đầu ra đảo 𝑄̅ = 1 Lúc này Transistor mở ,lập tức tụ phóng điện qua điện trở R2 qua

transistor xuống đất

o Khi tụ phóng điện Uc giảm dần và Op-amp 1 R =0 nhưng đầu ra đảo của

FF vẫn giữa nguyên mức logic Nên tụ vẫn tiếp tục phóng

o Khi Uc giảm xuống bằng 1/3Vcc Op-amp 2 lật trạng thái nên khi đó 𝑄̅ = 0 Transistor khóa tụ lại được nạp Như vậy tụ được nạp và phóng giữa 2 mức

điện áp là 1 /3Vcc và 2 /3Vcc

Hằng số thời gian nạp : 𝜏n = ( R1+R2 )*C,

Hằng số thời gian phóng : 𝜏p = R2*C

Trang 12

Hình 1.9 Dạng điện áp của Uc và tín hiệu ra

❖ Tính toán tần số của tín hiệu ra

Quá trình nạp tụ:

2/3 Ucc= Ucc +( Ucc/3-Ucc)* 𝑒−𝑡𝑛/𝜏n

→tn = 𝜏n*ln2=ln2*( R1+R2 )*C, Quá trình phóng :

1/3 Ucc= 2Ucc/3* 𝑒−𝑡𝑝/𝜏p

→tp = 𝜏p*ln2=ln2*R2 *C, Chu kì của tín hiệu ra T= tn + tp =( R1+2*R2) *C*ln2 Tần số : f = 1/T = 1/(( R1+2*R2) *C*ln2)

Giá trị điện dung của tụ điện

Trang 13

Bảng giá trị độ ẩm tương ứng với tần số

Trang 14

Chương 2 Thiết kế và thực hiện đề tài

2.1 Tổng quan về cách thức thực hiện đề tài

Về cơ bản gồm có 3 khối cần phải thiết kế : khối cảm biến để đo độ ẩm, khối xử

lý tín hiệu và khối hiện thị

Như đã bàn ở trên để đo được độ ẩm không khí ta cần đo được giá trị của điện dung của cảm biến, và từ đó chuyển từ việc đo điện dung của tụ điện về đo tần

số của mạch tạo dao động với IC555 Việc đo tần số này được thực hiện khá dễ dàng đối với vi điều khiển Để có thể hiển thị kết quả đo được lên máy tính ta sử dụng chuẩn giao tiếp RS232 giữa vi điều khiển và máy tính

2.2 Khối cảm biến

Sơ đồ nguyên lý được hiển thị hình 2.1

Cảm biến

Khối xử

lý tín hiệu

Hiển thị

Trang 15

Hình 2.1 Mạch nguyên lý của bộ phận cảm biến

Giá trị điện trở R2=680 kΩ và R1 =29.9 kΩ, tụ C3 = 1nF

Nguồn cung cấp cho bộ phận này được lấy trực tiếp trên Arduino NANO

2.3 Khối xử lý tín hiệu

Khối xử lý tín hiệu ở đây chính là Arduino NANO

Arduino NANO mang trong mình đầy đủ các tính năng của Atmega328, không những thế trên Arduino NANO còn kết hợp với IC CH340 giúp chuyển đổi chuẩn RS232 trên vi điều khiển sang chuẩn USB ( bởi vì chuẩn RS232 không hỗ trợ trên máy tính ) nên Arduino dễ dàng giao tiếp với máy tính thống qua 1 cáp kết nối USB mini

Hình 2.2 Nguyên lý mạch của chíp CH340 được tích hợp trên Arduino

❖ Bộ truyền nhận dữ liệu nối tiếp trên Arduino

Truyền nhận dữ liệu nối tiếp trên Arduino hoàn toàn giống như trên vi điều khiển Atmega328 Thuật ngữ USART trong tiếng anh là viết tắt của cụm từ: Universal Synchronous & Asynchronous serial Reveiver and Transmitter, nghĩa là bộ truyền nhận nối tiếp đồng bộ và không đồng bộ Cần chú ý rằng khái niệm USART (hay UART nếu chỉ nói đến bộ truyền nhận không đồng bộ) thường để chỉ thiết bị phần cứng (device, hardware), không phải chỉ một chuẩn giao tiếp USART hay UART cần phải kết hợp với một thiết bị chuyển đổi mức điện áp để tạo ra một chuẩn giao tiếp nào đó Ví dụ, chuẩn RS232 (hay COM) trên các máy tính cá nhân

là sự kết hợp của chip UART và chip chuyển đổi mức điện áp Tín hiệu từ chip UART thường theo mức TTL: mức logic high là 5, mức low là 0V Trong khi đó, tín hiệu theo chuẩn RS232 trên máy tính cá nhân thường là -12V cho mức logic high

Trang 16

và +12 cho mức low (tham khảo hình 1) Chú ý là các giải thích trong tài liệu này

theo mức logic TTL của USART, không theo RS232

Hình 2.3 Mức điện áp của tín hiệu của chuẩn RS232 và UART

Vi điều khiển Atmega328 có 1 module truyền thông nối tiếp USART Có 3 chân

chính liên quan đến module này đó là chân xung nhịp - XCK (chân số 1), chân

truyền dữ liệu - TxD (Transmitted Data) và chân nhận dữ liệu - RxD (Reveived

Data) Trong đó chân XCK chỉ được sử dụng như là chân phát hoặc nhận xung

giữ nhịp trong chế độ truyền động bộ

Các thanh ghi có liên quan đến đến hoạt động và điều khiển USART

UDR0 : là 1 thanh ghi 8 bit chứa giá trị nhận được và phát đi của USAR

UCSR0A (USART Control and Status Register A): là 1 trong 3 thanh ghi điều

khiển hoạt động của module USART

Thanh ghi UCSRA chủ yếu chứa các bit trạng thái như bit báo quá trình nhận kết

thúc (RXC), truyền kết thúc (TXC), báo thanh ghi dữ liệu trống (UDRE), khung

truyền có lỗi (FE), dữ liệu tràn (DOR),…

UCSR0B(USART Control and Status Register B):

UDR0

UCSR0A

A

Trang 17

RXCIE0 là bit cho phép ngắt khi quá trình nhận kết thúc Việc nhận dữ liệu

truyền bằng phương pháp nối tiếp không đồng bộ thường được thực hiện thông qua ngắt, vì thế bit này thường được set bằng 1 khi USART được dung nhận dữ

liệu

UDRIE0 là bit cho phép ngắt khi thanh ghi dữ liệu UDR trống

RXEN0 là một bit quan trọng điều khiển bộ nhận của USART, đề kích hoạt

chức năng nhận dữ liệu bạn phải set bit này lên 1

TXEN0 là bit điều khiển bộ phát Set bit này lên 1 bạn sẽ khởi động bộ phát của

USART

UCSZ02 bit này kết hợp với 2 bit khác trong thanh ghi UCSRC0 quy định độ dài

của dữ liệu truyền/nhận Chúng ta sẽ khảo sát chi tiết khi tìm hiểu thanh ghi

UCSRC

RXB80 gọi là bit dữ liệu 8 USART trong AVR có hỗ trợ truyền dữ liệu có độ dài

tối đa 9 bit, trong khi thanh ghi dữ liệu là thanh ghi 8 bit Do đó, khi có gói dữ

liệu 9 bit được nhận, 8 bit đầu sẽ chứa trong thanh ghi UDR0, cần có 1 bit khác

đóng vai trò bit thứ chín, RXD8 là bit thứ chín này

TXB80 tương tự như bit RXD80, bit TXB80 cũng đóng vai trò bit thứ 9 truyền

thông, nhưng bit này được dung trong lúc truyền dữ liệu

UCSR0C ( USART Control and Status Register 0 C ): thanh ghi này chủ yếu quy

định khung truyền và chế độ truyền

UBRR0L và UBRR0H (USART Baud Rate Register): 2 thanh ghi thấp và cao quy

Trang 19

❖ Các bước để sử dụng modue USART

o Cài đặt tốc độ baud thông qua 2 thanh ghi UBRR0L và UBRR0H

o Định dạng khung truyền dữ liệu thông qua thanh ghi UCSR0B và

Trang 20

Hình 2.4 Giao hiện thị trên máy tính

Để kết nối Arduino với máy tính trước tiên cần phải cài đặt driver cho IC CH340 Sau đó lựa chọn cổng COM và tốc độ Baud, với tốc độ Baud mặc định cho

Arduino là 19200 bps Để lựa chọn chính xác cổng COM cần giao tiếp vào phần Device Manager của Computer Managerment trên máy tính để biết tên cổng COM đã kết nối

Trang 21

Giá trị độ ẩm, tần số đo được, và thời gian đo được lưu lại và hiển thị trên bảng

Ngoài ra còn có giao diện vẽ đồ thị độ ẩm

Trang 23

Hình 2.6 Mạch in dang 3D

❖ Kết nối module với Arduino.

Trang 24

Hình 2.8 Sản phẩm thu được

Trang 25

2.6 Chương trình viết cho Ardunio

Lưu đồ thuật toán:

Chương trình chi tiết xem tại phụ lục

Giải thích lưu đồ thuật toán:

➢ Thiết lập các giá trị cần thiết cho các thanh ghi:

o Thiết chân D2 là đầu vào và kéo chân D2 lên trạng thái điện trở treo

o Kích hoạt ngắt ngoài và chọn chế độ ngắt cạnh xuống

o Thiết lập khung truyền, tốc độ truyền cho bộ USART

o Kích hoạt thanh ghi cho phép ngắt toàn cục

Bắt đầu

Thiết lập các giá trị cần thiết cho các thanh ghi, chân của Arduino

Delay(1000);

Ngắt xuất hiện

Chương trình phục vụ ngắt: Tăng biến đếm

z

a=z;

gui(a);

z=0;

Trang 26

➢ Chờ trong 1s, trong 1s đó ngắt ngoài xảy ra và mỗi lần xảy ra ngắt thì tăng

giá trị của biến đếm z lên 1,

➢ Sau 1s thì tiến hành gửi giá trị z đó lên máy tính và xóa z về 0 rồi quay lại

Mở rộng đề tài: Có thể sử dụng thêm Module Wifi hoặc bluetooth để gửi dữ

liệu về máy tính từ 1 khoảng cách xa

Ngày đăng: 02/11/2018, 15:43

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w