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 thaycho 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 d
Trang 1TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
VIỆN ĐIỆN TỬ - VIỄN THÔNG
Trang 2Giảng viên hướng dẫn : Tào Văn Cường
Hà Nội, 12-2021
Trang 3LỜ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 đolườ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 thaycho 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áclệ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ữngphươ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àigiú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êmnhiề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 emtrong 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ốtnhấ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ậnxét của thầy để em có thể rút kinh nghiệm và cải tiến, phát triển đề tài
Trang 5MỤ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
Trang 6DANH MỤC KÝ HIỆU VÀ CHỮ VIẾT TẮT
Ý nghĩa Direct current
Universal asynchronous transmitter
receiver-Electrically Erasable Programmable
Read-Only MemoryStatic random-access memory
Trang 7DANH 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
Trang 8DANH MỤC BẢNG BIỂU
Bảng 2-1 Ý nghĩa các chân của LCD1602 4
Trang 9CHƯƠ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í Độ ẩmchí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ờitiế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í quá cao sẽ tạo điều kiện cho vi khuẩn, vi sinh vật phát triểnmạ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ấtlượng sản phẩm đầu ra như trong quá trình gia công hàn vật liệu, nhiệt độ ảnh hưởngtớ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ôngnghiệ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ớichấ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ạocả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ênphâ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
Trang 101.2 Phân tích thiết kế
1.2.1 Yê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
Trang 11− 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 toá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
Trang 12Khố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ôitrườ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 chonhữ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ệuchính xác mà không phải qua bất kỳ tính toán nào
Nhiệt độ đo từ 0 ~ 50 Độ C, thời gian trả dữ liệu < 50ms
Trang 13Hì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 giaotiế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áytí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
Trang 14Bảng 2-1 Ý nghĩa các chân của LCD1602
1 VSS Chân nối đất cho LCD, khi thiết kế mạch ta nối chân này với
GND của mạch điều khiển
2 VDD Chân cấp nguồn cho LCD, khi thiết kế mạch ta nối chân này
với VCC=5V của mạch điều khiển
3 VEE Điều chỉnh độ tương phản của LCD
4 RS Chân chọn thanh ghi (Register select)
+ Logic “0”: Bus DB0-DB7 sẽ nối với thanh ghi lệnh IR củaLCD
+ Logic “1”: Bus DB0-DB7 sẽ nối với thanh ghi dữ liệu DRbên trong LCD
5 R/W Chân chọn chế độ đọc/ghi (Read/Write) Nối chân R/W với
logic “0” để LCD hoạt động ở chế độ ghi, hoặc nối với logic
“1” để LCD ở chế độ đọc
6 E Chân cho phép (Enable) Sau khi các tín hiệu được đặt lên
busDB0-DB7, các lệnh chỉ được chấp nhận khi có 1 xung chophép của chân E
+ Ở chế độ ghi: Dữ liệu ở bus sẽ được LCD chuyển vào(chấpnhận) thanh ghi bên trong nó khi phát hiện một xung (high-to-low transition) của tín hiệu chân E
+ Ở chế độ đọc: Dữ liệu sẽ được LCD xuất ra DB0-DB7 khiphát
7-14 DB0 - DB7 Tám đường của bus dữ liệu dùng để trao đổi thông tin với
MPU Có 2 chế độ sử dụng 8 đường bus này :
Trang 15+ Chế độ 8 bit : Dữ liệu được truyền trên cả 8 đường, với bitMSB là bit DB7.
+ Chế độ 4 bit : Dữ liệu được truyền trên 4 đường từ DB4 tớiDB7, bit MSB là DB7
Trang 16TIEU LUAN MOI download : skknchat123@gmail.com
Trang 17Hì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ànhbiên dịch mã nguồn sang file mã máy dưới dạng hex Sau đó chúng ta sẽ sử dụngmạ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ầntrước Hình ảnh bên dưới miêu tả quá trình hoạt động của mạch thực tế
Trang 18Hình 2-9 Hình ảnh mạch thực tế
Trang 19CHƯƠ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àoVă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
- Để 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
Trang 20KẾT LUẬN
Trong đồ án này bản thân em đã thiết kế được mạch đo nhiệt độ độ ẩm sử dụngcảm biến cho tín hiệu số, hoàn thành được mục tiêu đề ra của đồ án Tuy mạch chạythử 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ể hoà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 đượcnhữ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ũngnhư thực hiện được những project lớn hơn
Trang 21TÀI LIỆU THAM KHẢO
[1] https://www.electronicwings.com/avr-atmega/atmega1632-usart , truy nhập lần cuối 12/2020
[2] https://www.electronicwings.com/avr-atmega/lcd16x2-interfacing-with-
atmega16-32, truy nhập lần cuối 12/2020
[3] https://www.mouser.com/datasheet/2/758/DHT11-Technical-Data-Sheet-Version-1143054.pdf , truy nhập lần cuối 12/2020
Trang 22Translated-PHỤ LỤC
#define F_CPU 8000000UL
/* Define frequency here its 8MHz */
direction register */ #define
LCD_Data_Port PORTC #define
LCD_Command_Port PORTD #define
RS PIND6 (data/command
reg.)pin */ #define RW PIND5
#define EN PIND7
#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)
{
/* Define LCD data port direction /* Define LCD command port
/* Define LCD data port */
/* Define LCD data port */ /* Define Register Select /* Define Read/Write signal pin
*/ /* Define Enable signal pin */
LCD_Data_Port= cmnd;
LCD_Command_Port &= ~(1<<RS);/* RS=0 command reg */
LCD_Command_Port &= ~(1<<RW);/* RW=0 Write operation */
Trang 23LCD_Command_Port |= (1<<EN); /* Enable pulse
LCD_Command_Port |= (1<<RS); /* RS=1 Data reg */
LCD_Command_Port &= ~(1<<RW);/* RW=0 write operation */
LCD_Command_Port |= (1<<EN); /* Enable Pulse */
/* Initialization of 16X2 LCD in
/* Display ON Cursor OFF
*/ /* Auto Increment cursor
*/ /* Clear display */
/* Cursor at home position */
/* Send string to LCD function */
Trang 24for(i=0;str[i]!=0;i++) /* Send each char of string till the NULL */
{
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)
required position<16 */
else if (row == 1 && pos<16)
}
#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<<CS01);
DDRD |=(1<<DHT11_PIN);// set output
PORTD &= ~(1<<DHT11_PIN);
_delay_ms(18); //low 18ms PORTD |=(1<<DHT11_PIN);
_delay_us(40);//high 40 us
Trang 25DDRD &= ~(1<<DHT11_PIN); // Set input
while(!(PIND & (1<<DHT11_PIN)))
if (TCNT0 > 100)
{
return 255; //timeout }
//wait data high in 80us
//doc 40 bit
for (uint8_t i =0;i<5;i++)
{
for (uint8_t j =0;j<8;j++) {
while(!(PIND & (1<<DHT11_PIN)))
if (TCNT0>60U) {
return 255; //timeout }
0x00;
while(PIND & (1<<DHT11_PIN))
if (TCNT0 > 100U) {
return 255; //timeout }
uint8_t counter_tmp = TCNT0;
Trang 26if (counter_tmp > 40U) {
dht_data[i] |= (uint8_t)1<<(7-j);
} }
} if((dht_data[0] + dht_data[1] + dht_data[2] + dht_data[3]) !
baud rate value */
UBRRH = (BAUD_PRESCALE >> 8);/* Load upper 8-bits*/
Trang 28BUZZER_PORTx &= ~(1<< BUZZER_PIN);
DHT_Read(&temperature,&humidity);
sprintf(msg,"Temp=%d%cC,RH=%d%
%",temperature,degree_sysmbol,humidity);
LCD_String_xy(0,0,msg); if (status_flag == 1)