Tải bản đầy đủ (.docx) (27 trang)

(TIỂU LUẬN) báo cáo đồ án THIẾT kế II đề tài THIẾT kế MẠCH đo NHIỆT độ và độ ẩm

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (738.59 KB, 27 trang )

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

VIỆN ĐIỆN TỬ - VIỄN THÔNG

BÁO CÁO
ĐỒ ÁN THIẾT KẾ II

ĐỀ TÀI:

THIẾT KẾ MẠCH ĐO NHIỆT ĐỘ VÀ ĐỘ ẨM

Giảng viên hướng dẫn

: Tào Văn Cường

Mã lớp

: 707994

Sinh viên thực hiện

: Dương Văn
Biên

MSSV: 20172426

: Lê Minh Hiếu

MSSV: 20172548



Hà Nội, 12-2021


LỜI NÓI ĐẦU

Ngày nay, với sự phát triển của nền công nghiệp vi mạch điện tử, các hệ thống đo
lường và điều khiển dần dần được số hóa và tự động hóa. Các kỹ thuật tiên tiến như vi
xử lý, vi mạch số,… được ứng dụng nhiều vào lĩnh vực đo lường và điều khiển thay
cho các hệ thống thô sơ trước, với tốc độ xử lý nhanh hơn và chính xác hơn do các
lệnh chương trình tự động được thiết lập trước.Trong quá trình sản xuất, việc đo và
thống kê nhiệt độ, độ ẩm một các tự động là yêu cầu hết sức cần thiết trong các nhà
máy xí nghiệp hiện nay. Nếu nắm bắt được nhiệt độ đô ẩm làm việc của các hệ thống,
dây chuyền sản xuất sẽ giúp biết được tình trạng hoạt động của máy móc và có những
phương pháp xử lý kịp thời, tránh những sự cố hay hư hỏng khơng đáng có.
Nhận biết được tầm quan trọng của việc đo và khống chế nhiệt độ, em quyết
định chọn đề tài “Thiết kế mạch đo nhiệt độ và độ ẩm” làm đồ án thiết kế 2. Đề tài
giúp em tích lũy được thêm nhiều kiến thức về mạch điện tử cũng như trau dồi thêm
nhiều kinh nghiệm để phục vụ cho những môn học sau này.
Em xin gửi lời cảm ơn đến thầy Tào Văn Cường đã chỉ bảo và góp ý giúp em
trong suốt quá trình thực hiện đồ án. Em đã cố gắng hết sức để đề tài đạt kết quả tốt
nhất nhưng do hạn chế về kiến thức chuyên môn cũng như thời gian nên đề tài sẽ
không tránh khỏi những thiết sót nhất định. Em rất mong nhận được những lời nhận
xét của thầy để em có thể rút kinh nghiệm và cải tiến, phát triển đề tài.



MỤC LỤC

DANH MỤC KÝ HIỆU VÀ CHỮ VIẾT TẮT..........................................................................i
DANH MỤC HÌNH VẼ...............................................................................................................ii

DANH MỤC BẢNG BIỂU.........................................................................................................iii
CHƯƠNG 1. MƠ TẢ ĐỀ TÀI....................................................................................................1
1.1 Giới thiệu chung.............................................................................................................1
1.2 Phân tích thiết kế............................................................................................................2
1.2.1 Yêu cầu chức năng...................................................................................................2
1.2.2 Yêu cầu phi chức năng.............................................................................................2
CHƯƠNG 2. THIẾT KẾ HỆ THỐNG......................................................................................1
2.1 Thiết kế sơ đồ khối......................................................................................................... 1
2.2 Chi tiết từng khối............................................................................................................1
2.2.1 Khối nguồn...............................................................................................................1
2.2.2 Khối cảm biến..........................................................................................................2
2.2.3 Khối xử lý................................................................................................................ 2
2.2.4 Khối hiển thị............................................................................................................ 3
2.3 Sơ đồ mạch nguyên lý.................................................................................................... 5
2.4 Mạch thực tế...................................................................................................................6
CHƯƠNG 3. ĐÁNH GIÁ VÀ HƯỚNG PHÁT TRIỂN..........................................................8
3.1 Đánh giá......................................................................................................................... 8
3.2 Hướng phát triển............................................................................................................8
KẾT LUẬN....................................................................................................................................9
TÀI LIỆU THAM KHẢO.........................................................................................................10
PHỤ LỤC.....................................................................................................................................11


DANH MỤC KÝ HIỆU VÀ CHỮ VIẾT TẮT

Chữ viết tắt

Ý nghĩa

DC


Direct current

UART

Universal asynchronous receivertransmitter

EEPROM

Electrically Erasable Programmable

Read-Only Memory
SRAM

Static random-access memory

i


DANH MỤC HÌNH VẼ

Hình 2-1 Sơ đồ khối hệ thống........................................................................................ 1
Hình 2-2 Sơ đồ nguyên lý khối nguồn........................................................................... 1
Hình 2-3 Hình ảnh module DHT11............................................................................... 2
Hình 2-4 Sơ đồ nguyên lý khối cảm biến...................................................................... 2
Hình 2-5 Sơ đồ chân của vi điều khiển ATmage16........................................................ 3
Hình 2-6 Màn hình LCD1602........................................................................................ 3
Hình 2-7 Sơ đồ nguyên lý khối hiển thị......................................................................... 5
Hình 2-8 Sơ đồ nguyên lý hệ thống............................................................................... 6
Hình 2-9 Hình ảnh mạch thực tế.................................................................................... 7


ii


DANH MỤC BẢNG BIỂU

Bảng 2-1 Ý nghĩa các chân của LCD1602..................................................................... 4

iii


CHƯƠNG 1. MÔ TẢ ĐỀ TÀI

1.1 Giới thiệu chung
Nhiệt độ là một đại lượng vật lý gắn liền với cuốc sống của chúng ta. Nó tác
động đến mọi người mọi mặt của cuốc sống. Và các lĩnh vực sản xuất cũng vậy, nhiết
độ ảnh hưởng trực tiếp tới quá trình vận hành, sản xuất.
Độ ẩm là đại lượng vật lý xác định khối lượng hơi nước tính theo gam có trong
đơn vị thể tích xác định hay cịn nói đó là lượng hơi nước có trong khơng khí. Độ ẩm
chính là thước đo cho thấy được khả năng mưa hoặc lượng mưa, sương mù của thời
tiết.
Đối với con người thì độ ẩm càng cao việc đổ mồ hôi làm mát cơ thể càng kém.
Vì thế mà trong những điều kiện thời tiết độ ẩm cao khiến cho chúng ta cảm thấy khó
chịu. Độ ẩm khơng khí q cao sẽ tạo điều kiện cho vi khuẩn, vi sinh vật phát triển
mạnh mẽ. Đây cũng là nguyên nhân gây ra nhiều bệnh lý hô hấp, ảnh hưởng trực tiếp
đến sức khỏe mọi người.
Trong lĩnh vực sản xuất cơng nghiệp, nhiệt độ có tác động trực tiếp đến chất
lượng sản phẩm đầu ra như trong q trình gia cơng hàn vật liệu, nhiệt độ ảnh hưởng
tới độ chính xác, tính giãn nở của vật liệu.
Trong y học, nhiệt độ ảnh hưởng tới kết quả nghiên cứu chữa bệnh.

Trong nơng nghiệp, nó ảnh hưởng trực tiếp đến thành quả và năng suất nông
nghiệp; trong chế biến và bảo quản thực phẩm.
Trong quá trình nung nóng, sấy như nung gạch men thì nhiệt độ ảnh hưởng tới
chất lượng về độ cứng, độ dẻo, màu sắc của sản phầm đầu ra.
Nhiệt độ là đại lượng chỉ có thể đo gián tiếp trên cơ sở tính chất của vật phụ
thuộc nhiệt độ. Hiện nay, chúng ta có nhiều nguyên lý cảm biến khác nhau để chế tạo
cảm biến nhiệt độ như: nhiệt điện trở, cặp nhiệt ngẫu, phương pháp quang dựa trên
phân bố bức xạ nhiệt, phương pháp dựa trên sự dãn nở của vật rắn, lỏng, khí,…
Như vậy, việc đo nhiệt độ, độ ẩm bằng cảm biến đang là phương pháp phổ biến
và tiết kiệm trong đời sống.
1


1.2 Phân tích thiết kế
1.2.1 u cầu chức năng
Mạch có yêu cầu chức năng như sau:
Đo được nhiệt độ và độ ẩm
Hiển thị nhiệt độ, độ ẩm lên màn hình LCD
Có thể tùy chỉnh ngưỡng cảnh báo
1.2.2 Yêu cầu phi chức năng
Mạch có các yêu cầu phi chức năng như sau:
Nhiệt độ và độ ẩm đo được với sai số
thấp Giá thành rẻ
Mạch chạy ổn định lâu dài
Sử dụng nguồn 5V DC

Kích thước mạch nhỏ gọn.

2



CHƯƠNG 2. THIẾT KẾ HỆ THỐNG

2.1 Thiết kế sơ đồ khối

Hình 2-1 Sơ đồ khối hệ thống

Hình 2-1 biểu diễn sơ đồ khối tổng quan của tồn bộ mạch
Trong đó:


Khối nguồn: Khối này sẽ cung cấp nguồn 5V DC cho các khối còn lại hoạt

động.


Khối cảm biến: Đo nhiệt độ và độ ẩm từ môi trường



Khối giao tiếp: Giao tiếp với máy tính để thay đổi ngưỡng cảnh báo



Khối xử lý: Xử lý tính tốn



Khối hiện thị: Hiện thị nhiệt độ, độ ẩm


2.2 Chi tiết từng khối
2.2.1 Khối nguồn

Hình 2-2 Sơ đồ nguyên lý khối nguồn

1


Khối nguồn có nhiệm vụ hạ áp đầu vào từ 9-12V DC xuống 5V DC để hệ thống có thể
sử dụng ổn định.
2.2.2 Khối cảm biến
Trong khối này em sẽ sử dụng cảm biến DHT11 để đo nhiệt độ và độ ẩm từ môi
trường.
Cảm biến nhiệt độ và độ ẩm DHT11 là loại linh kiện điện tử cảm biến nhiệt độ
độ ẩm. Đây là cảm biến cơ bản và giá rẻ so với các cảm biến khác, rất thích hợp cho
những ứng dụng thu thập dữ liệu cơ bản. Cảm biến DHT11 có 2 phần, 1 cảm biến độ
ẩm điện dung và một điện trở nhiệt.
Dữ liệu ngõ ra của cảm biến DHT là chuẩn 1 dây (One-Wire), có thể dùng bất
cứ vi điều khiển nào để lấy dữ liệu ra. Dữ liệu độ ẩm mà cảm biến đo được mức từ
20% ~ 90%. 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 phải qua bất kỳ tính tốn nào.
Nhiệt độ đo từ 0 ~ 50 Độ C, thời gian trả dữ liệu < 50ms.

Hình 2-3 Hình ảnh module DHT11

Hình 2-4 Sơ đồ nguyên lý khối cảm biến

2.2.3 Khối xử lý
Khối vi điều khiển sử dụng Atmega16 vì đã có sẵn Kit đáp ứng gần đủ chức năng của
mạch.

2


Hình 2-5 Sơ đồ chân của vi điều khiển ATmage16

ATmega16 là một bộ vi điều khiển 8 bit dựa trên kiến trúc RISC bộ nhớ chương
trình 16KB ISP flash có thể ghi xóa hàng nghìn lần, 512B EEPROM, một bộ nhớ
RAM vô cùng lớn trong thế giới vi xử lý 8 bit (1KB SRAM).
Với 32 chân có thể sử dụng cho các kết nối I/O, 3 bộ định thời, đầy đủ các giao
tiếp ngoại vi như I2C, UART, SPI, có hỗ trợ ngắt ngoài, bộ chuyển đổi tương tự sang
số ADC với độ phân giải 10 bit.
Trong khối này, vi điều khiển sẽ dùng giao tiếp UART để giao tiếp với máy
tính, kết nối với cảm biến nhiệt độ, hiển thị lên LCD và cảnh báo nếu vượt ngưỡng
2.2.4 Khối hiển thị
Ở khối này, em sử dụng LCD1602 để hiển thị nhiệt độ và độ ẩm

Hình 2-6 Màn hình LCD1602

Sau đây là ý của từng chân của LCD1602

3


Ký hiệu

1

VSS

2


VDD

3

VEE

4

RS

5

R/W

6

E

7-14

DB0 - DB7

4

Chân


15


A

16

K

Hình 2-7 Sơ đồ nguyên lý khối hiển thị

2.3 Sơ đồ mạch nguyên lý
Mạch nguyên lí được thiết kế dựa trên sự tham khảo và hướng dẫn của tài liệu
được cung cấp bởi giảng viên. Dưới đây là hình ảnh mạch nguyên lí được vẽ bằng
phần mềm Altium.

5


Hình 2-8 Sơ đồ nguyên lý hệ thống

2.4 Mạch thực tế
Sau khi sử dụng ngơn ngữ C để lập trình cho vi điều khiển, chúng ta sẽ tiến hành
biên dịch mã nguồn sang file mã máy dưới dạng .hex. Sau đó chúng ta sẽ sử dụng
mạch nạp AVR USB và phần mềm Progisp để nạp file này xuống vi điều khiển. Sau đó
tiến hành kiểm tra hoạt động của mạch theo như ý tưởng thiết kế đã nêu lên phần
trước. Hình ảnh bên dưới miêu tả quá trình hoạt động của mạch thực tế.

6


Hình 2-9 Hình ảnh mạch thực tế


7


CHƯƠNG 3. ĐÁNH GIÁ VÀ HƯỚNG PHÁT TRIỂN

3.1 Đánh giá
Sau 2 tháng nỗ lực làm việc cùng với sự hướng dẫn tận tình của thầy giáo Tào
Văn Cường với đề tài “Thiết kế mạch đo nhiệt độ và độ ẩm”, em đã hoàn thành
đúng với thời gian quy định.
Ưu điểm:
o

Mạch có dải đo nhiệt lớn từ 0 đến 50℃, sai số ±2℃.

o

Độ ẩm: 20-90% RH, sai số ± 5%RH.

o

Khả năng đáp ứng nhanh với độ thay đổi nhiệt độ của môi trường.

o

Mạch được thiết kế nhỏ gọn, dễ sử dụng, tiện lợi.

o

Có thể sử dụng ở những nơi cần theo dõi nhiệt độ như nhà kho,


công xưởng, nhà ở và trong một số thiết bị máy móc khác.
Nhược điểm:
o

Tính ổn định chưa cao

o

Cịn có sai số nhiệt độ đo được do sai số linh kiện và những sai số

trong khi tính tốn thiết kế mạch nhưng chấp nhận đươc.

3.2 Hướng phát triển
-

Để tăng độ chính xác thì có thể sử dụng 1 loại cảm biến khác.

-

Thiết lập các trạm đo nhiệt độ, độ ẩm sau đó gửi dữ liệu về server bằng

cách sử dụng Module SIM900A hoặc ESP8266.

8


KẾT LUẬN

Trong đồ án này bản thân em đã thiết kế được mạch đo nhiệt độ độ ẩm sử dụng
cảm biến cho tín hiệu số, hồn thành được mục tiêu đề ra của đồ án. Tuy mạch chạy

thử nghiệm còn đơn giản và tồn tại một số hạn chế nhất định nhưng có thể hồn thiện
và cải tiến mạch với những phương pháp em đề xuất ở trên. Em rất hi vọng nhận được
những lời nhận xét và đánh giá từ thầy hướng dẫn để em có thể phát triển đề tài, cũng
như thực hiện được những project lớn hơn.

9


TÀI LIỆU THAM KHẢO

[1]

, truy

nhập lần cuối 12/2020
[2]

/>
interfacing-with-atmega16-32, truy nhập lần cuối 12/2020
[3]

/>
Data-Sheet-Translated-Version-1143054.pdf , truy nhập lần cuối
12/2020

10


PHỤ LỤC


#define F_CPU 8000000UL
/* Define frequency here its 8MHz */
#include <avr/io.h>
#include <util/delay.h>
#include <stdlib.h>
#include <stdio.h>
#include <avr/interrupt.h>
//#define USART_BAUDRATE 9600
#define BAUD_PRESCALE (((F_CPU / (USART_BAUDRATE * 16UL))) - 1)
#define degree_sysmbol
0xdf #define LCD_Data_Dir

/* Define LCD data port direction

DDRC */
#define LCD_Command_Dir DDRD

/* Define LCD command port

direction register */ #define
LCD_Data_Port PORTC #define

/* Define LCD data port */

LCD_Command_Port PORTD #define

/* Define LCD data port */

RS PIND6 (data/command


/* Define Register Select

reg.)pin */ #define RW PIND5
#define EN PIND7

/* Define Read/Write signal pin
*/ /* Define Enable signal pin */

#define BUZZER_DDRx DDRD
#define BUZZER_PORTx PORTD
#define BUZZER_PIN PIND3
volatile char buff[10];
volatile uint8_t status_flag = 0;
volatile uint8_t buffer_pointer = 0;
int th_Temp =30, th_humi = 90;
void LCD_Command(unsigned char cmnd)
{
LCD_Data_Port= cmnd;
LCD_Command_Port &= ~(1<LCD_Command_Port &= ~(1<

LCD_Command_Port |= (1<*/ _delay_us(1);
LCD_Command_Port &= ~(1<_delay_ms(3);
}
void LCD_Char (unsigned char char_data)

/* LCD data write function


*/
{
LCD_Data_Port= char_data;
LCD_Command_Port |= (1<LCD_Command_Port &= ~(1<LCD_Command_Port |= (1<_delay_us(1);
LCD_Command_Port &= ~(1<_delay_ms(1);
}
void LCD_Init (void)

/* LCD Initialize function */

{
/* Make LCD command port

LCD_Command_Dir = 0xFF;
direction as o/p */
LCD_Data_Dir = 0xFF;

/* Make LCD data port direction as

_delay_ms(20);

/* LCD Power ON delay always >15ms

LCD_Command (0x38);


/* Initialization of 16X2 LCD in

o/p */
*/

8bit mode */
LCD_Command (0x0C);

/*

Display

ON

Cursor

OFF

LCD_Command (0x06);

*/ /* Auto Increment cursor

LCD_Command (0x01);

*/ /* Clear display */

LCD_Command (0x80);

/* Cursor at home position */


}
void LCD_String (char *str)

/* Send string to LCD function */

{
int i;
for(i=0;str[i]!=0;i++)

till the NULL */


{

/* Send each char of string

LCD_Char (str[i]);

}
}
void LCD_String_xy (char row, char pos, char *str)/* Send string to LCD

with xy position */
{
if (row == 0 && pos<16)
LCD_Command((pos & 0x0F)|0x80);

/* Command of first row and

required position<16 */

else if (row == 1 && pos<16)
LCD_Command((pos & 0x0F)|0xC0);

/* Command of first row and

required position<16 */
LCD_String(str);

/* Call LCD string function */

}
void LCD_Clear()
{
LCD_Command (0x01);

/* clear display */

LCD_Command (0x80);

/* cursor at home position */

}
#define DHT11_PIN PIND4
uint8_t temperature, humidity;

uint8_t DHT_Read(uint8_t * temp,uint8_t * humi)
{ uint8_t dht_data[5] = {0};
TCCR0 = (1<DDRD |=(1<PORTD &= ~(1<

_delay_ms(18); //low 18ms
PORTD |=(1<_delay_us(40);//high 40 us


DDRD &= ~(1</

wait data low in 80

us TCNT0 = 0x00;
while(!(PIND & (1<if (TCNT0 > 100)

{
return 255; //timeout
}
//wait data high in 80us
TCNT0 = 0x00;
while(PIND & (1<if (TCNT0 > 100)
{
return 255; //timeout
}
//doc 40 bit
for (uint8_t i =0;i<5;i++)
{
for (uint8_t j =0;j<8;j++)
{
/


low in 50 us

TCNT0 = 0x00;
while(!(PIND & (1<if (TCNT0>60U)
{
return 255; //timeout
}
/

HIGH for 26-28us = bit 0 / 70us = bit 1

TCNT0 = 0x00;
while(PIND & (1<if (TCNT0 > 100U)
{
return 255; //timeout
}
uint8_t counter_tmp = TCNT0;


if (counter_tmp > 40U)
{
dht_data[i] |= (uint8_t)1<<(7-j);
}
}
}
if((dht_data[0] + dht_data[1] + dht_data[2] + dht_data[3]) !
= dht_data[4])

return 0 ; //checksum error
*temp = dht_data[2];
*humi = dht_data[0];
return 1;
}
void UART_init(long USART_BAUDRATE)
{
UCSRB |= (1 << RXEN) | (1 << TXEN )| (1 <transmission and reception */
UCSRC |= (1 << URSEL) | (1 << UCSZ0) | (1 << UCSZ1);/* Use 8-bit
character sizes */
UBRRL = BAUD_PRESCALE;

/* Load lower 8-bits of the

baud rate value */
UBRRH = (BAUD_PRESCALE >> 8);/* Load upper 8-bits*/
}
unsigned char UART_RxChar()
{
while ((UCSRA & (1 << RXC)) == 0);/* Wait till data is received
*/
return(UDR);

/* Return the byte*/

}
void UART_TxChar(char ch)
{
while (! (UCSRA & (1<


buffer*/
UDR = ch ;
}

/* Wait for empty transmit


×