Tải bản đầy đủ (.pptx) (25 trang)

thiết kế vi điều khiển và cảm biến đo chất lượng nước trong thời gian thực

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 (1.26 MB, 25 trang )

<span class="text_page_counter">Trang 1</span><div class="page_container" data-page="1">

<b>PBL 3: THIẾT KẾ VI ĐIỀU KHIỂN VÀ CẢM BIẾN</b>

<b>ĐO CHẤT LƯỢNG NƯỚC TRONG THỜI GIAN THỰC</b>

<b>TRƯỜNG ĐẠI HỌC BÁCH KHOA ĐẠI HỌC ĐÀ NẴNG</b>

<b>KHOA CƠ KHÍ</b>

<b>Giảng viên hướng dẫn: T.S Đồn Lê AnhSinh viên thực hiện: Võ Đức Thành</b>

<b> Trần Tuấn AnhLớp: 21CDT2 </b>

<b> 21CDT1</b>

<small>1</small>

</div><span class="text_page_counter">Trang 2</span><div class="page_container" data-page="2">

<b>1. GIỚI THIỆU ĐỀ TÀI VÀ NGUN LÝ MƠ HÌNH</b>

Các thơng số đo: độ dẫn điện, tổng chất rắn hòa tan, độ ẩm và nhiệt độ. Hệ thống đo chất lượng nước sử dụng nhiều cảm biến, mô-đun thu thập thông tin và mô-đun truyền dữ liệu. Mô-đun thu thập thông tin bao gồm vi điều khiển PIC16F877A. Mô-đun truyền dữ liệu bao gồm mơ-đun GSM. Có rất nhiều cảm biến đo nhiệt độ, độ pH, độ dẫn điện và tổng chất rắn hịa tan có trong nước. Các giá trị đo được sau đó được truyền đến trung tâm giám sát qua GSM; nó cũng được hiển thị trên màn hình LCD bởi vi điều khiển. Hệ thống này có ưu điểm là độ chính xác cao và giá thành thấp.

<small>Hình 1. Hệ thống mơ hình khảo sát chất lượng nước trong thời gian thực</small>

</div><span class="text_page_counter">Trang 3</span><div class="page_container" data-page="3">

<b>CHỌN LINH KIỆN</b>

1. DTH-22 Sensor2. TDS Sensor3. PIC16F877A

4. ESP8266 Module5. LCD

<small>Hình 2. Sơ đồ khối hệ thống</small>

</div><span class="text_page_counter">Trang 4</span><div class="page_container" data-page="4">

<b>CHI PHÍ</b>

</div><span class="text_page_counter">Trang 5</span><div class="page_container" data-page="5">

<b>2. MODULE ESP8266-ESP01</b>

Module WiFi ESP8266 là một SOC (System on a chip) độc lập với chồng giao thức TCP/IP tích hợp có thể cho bộ vi điều khiển quyền truy cập vào mạng WiFi. ESP8266 có khả năng lưu trữ một ứng dụng hoặc giảm tải tất cả các chức năng kết nối mạng Wi-Fi từ bộ xử lý ứng dụng khác. Mơ-đun ESP8266 có giá rẻ với cộng đồng khổng lồ và ngày càng phát triển. Mô-đun này có khả năng lưu trữ và xử lý tích hợp đủ mạnh cho phép nó được tích hợp với các cảm biến và các thiết bị ứng dụng cụ thể khác. Mức độ tích hợp trên chip cao của nó cho phép sử dụng tối thiểu mạch điện bên ngoài, bao gồm cả mô-đun mặt trước, được thiết kế để chiếm diện tích PCB tối thiểu.

<small>Hình 3. Module ESP8266-ESP01</small>

</div><span class="text_page_counter">Trang 6</span><div class="page_container" data-page="6">

<b>MODULE ESP8266-ESP01</b>

</div><span class="text_page_counter">Trang 7</span><div class="page_container" data-page="7">

<b>SƠ ĐỒ CHÂN CỦA ESP8266-01</b>

<small>Hình 4. Sơ đồ chân của ESP8266</small>

</div><span class="text_page_counter">Trang 8</span><div class="page_container" data-page="8">

<b>KẾT NỐI ESP8266 VỚI PIC16F877A</b>

</div><span class="text_page_counter">Trang 9</span><div class="page_container" data-page="9">

<b>CHUẨN GIAO TIẾP</b>

USART (truyền nhận đồng bộ/bất đồng bộ đa dụng), chức năng chính của nó là truyền nhận dữ liệu nối tiếp. Giao tiếp USART cịn được gọi là giao tiếp truyền thơng nối tiếp

</div><span class="text_page_counter">Trang 10</span><div class="page_container" data-page="10">

<b>CHUẨN GIAO TIẾP</b>

Hai chân dùng cho giao diện USART là RC6/TX/CK và RC7/RX/DT, trong đó RC6/TX/CK dùng để truyền xung clock và RC7/RX/DT dùng để truyền dữ liệu.

PIC16F877A được tích hợp sẵn bộ Baud Rate Generator 8 bit cho chế độ USART.

Tốc độ Baud là số gói dữ liệu truyền đi trong 1 giây.

<small>Hình 5. Sơ đồ kết nối ESP8266 với PIC16F877A</small>

</div><span class="text_page_counter">Trang 11</span><div class="page_container" data-page="11">

<b>CHUẨN GIAO TIẾP Ở CHẾ ĐỘ BẤT ĐỒNG BỘ</b>

<b>CSRC: Clock Source Select bit</b>

Chế độ bất đồng bộ: không quan tâm.

<b>TX9: 9-bit Transmit Enable Bit. Bit cho phép truyền dữ liệu 9 bit. </b>

1 = Chọn truyền 9 bit 0= Chọn truyền 8 bitTXEN: Transmit Enable bit. Bit cho phép truyền dữ liệu.1 = Đã cho phép truyền 0 = Đã vơ hiệu hóa truyền

<b>SYNC: USART Mode Select bit. Lựa chọn chế độ USART. </b>

1 = Synchronous mode 0 = Asynchronous mode

<b>BRGH: High Baud Rate Select bit. Lựa chọn tốc độ baud (chỉ </b>

dùng ở chế độ bất đồng bộ).

1 = High speed 0 = Low speed

<b>TRMT: Transmit Shift Register Status bit. Trạng thái thanh ghi </b>

dịch khi truyền dữ liệu.

1 = TSR empty 0 = TSR full

<b>TX9D: 9th bit of Transmit Data. Bit chứa bit dữ liệu thứ 9 khi </b>

truyền nhận dữ liệu 9 bit.

</div><span class="text_page_counter">Trang 12</span><div class="page_container" data-page="12">

<b>CHUẨN GIAO TIẾP Ở CHẾ ĐỘ BẤT ĐỒNG BỘ</b>

<b>SPEN: Serial Port Enable bit. Bit cho phép cổng nối tiếp hoạt động.</b>

1 = cho phép cổng nối tiếp hoạt động 0 = không cho phép cổng nối tiếp hoạt động

<b>RX9: 9-bit Receive Enable bit. Bit cho phép nhận dữ liệu 9 bit. </b>

1 = nhận dữ liệu 9 bit 0= nhận dữ liệu 8 bit

<b>TXEN: Transmit Enable bit. Bit cho phép truyền dữ liệu.</b>

1 = Đã cho phép truyền 0 = Đã vơ hiệu hóa truyền

<b>SREN: Single Receive Enable bit. Bit cho phép nhận 1 byte dữ liệu. Không quan tâm ở chế độ bất đồng bộCREN: Continuous Receive Enable bit. Cho phép nhận một choỗi dữ liệu liên tục. </b>

1 = Cho phép 0 = Không cho phép

<b>ADDEN: Address Detect Enable bit. Cho phép xác nhận địa chỉ trong quá trình nhận.</b>

1 = Cho phép 0 = Không cho phép

Bit báo xuất hiện lỗi framing” trong q trình nhận dữ liệu (khối nhận khơng nhận được bit STOP đúng thời điểm mong muốn.

1 = Phát hiện lỗi 0 = khơng có lỗi

<b>OERR: Overrun Error bit. Bit báo lỗi tràn dữ liệu.</b>

1 = Phát hiện lỗi 0 = khơng có lỗi

<b>RX9D: 9th bit of Received Data. Bit chứa bit dữ liệu thứ 9 khi truyền nhận dữ liệu 9 bit.</b>

</div><span class="text_page_counter">Trang 13</span><div class="page_container" data-page="13">

<b>TRUYỀN TRONG CHẾ ĐỘ BẤT ĐỒNG BỘ</b>

Thành phần quan trọng nhất của quá trình truyền dữ liệu trong chế độ bất đồng bộ là thanh ghi dịch TSR (Transmit Shift Register). Dữ liệu cần truyền sẽ đứa trước vào thanh ghi TXREG, sau đó thanh ghi TSR sẽ lấy dữ liệu từ thanh ghi đệm TXREG. Do đó TXREG bị rỗng và cờ ngắt TXIF set lên 1.

Trạng thái của thanh ghi TSR sẽ thể hiện thông qua cờ ngắt TRMT.

TSR khơng có trong bộ nhớ dữ liệu mà chỉ được điều khiển bởi CPU.

Khối truyền dữ liệu được cho phép hoạt động khi bit TXEN set lên 1. Q trình truyền khi có dữ liệu trong thanh ghi TXREG và xung truyền baud được

</div><span class="text_page_counter">Trang 14</span><div class="page_container" data-page="14">

<b>CÁC BƯỚC TRUYỀN</b>

Các bước thực hiện khi truyền:

1. Tạo xung truyền tốc độ baud (đưa giá trị vào thanh ghi SPBRG).

2. Cho phép cổng giao tiếp nối tiếp bất đồng bộ hoạt động bằng cách xóa bit SYNC và set bit SPEN.

3. Set bit TXIE nếu cần sử dụng ngắt.

4. Set bit TX9 nếu cần truyền 9 bit dữ liệu.5. Set bit TXEN để cho phép truyền dữ liệu.

6. Đưa bit thứ 9 vào TX9D nếu truyền dữ liệu 9 bit.7. Đưa 8 bit dữ liệu cần truyền vào thanh ghi TXREG.8. Kiểm tra bit GIE và PEIE nếu sử dụng ngắt truyền

</div><span class="text_page_counter">Trang 15</span><div class="page_container" data-page="15">

Dữ liệu nhận được trong thanh ghi RSR sẽ được đưa vào thanh ghi RCREG, sau đó cờ ngắt nhận RCIF sẽ set lên 1 (bằng 0 khi dữ liệu tại RCREG đã được đọc). RCREG là thanh ghi có bộ đệm kép hoạt động theo cơ chế FIFO.

Cần phải lấu hết dữ liệu của thanh RCREG trước khi nhận dữ liệu tiếp theo, vì khi thanh ghi này tràn thì cờ báo tràn OERR được set, dữ liệu trong RSR sẽ bị mất và quá trình đưa dữ liệu từ RSR đến RCREG

</div><span class="text_page_counter">Trang 16</span><div class="page_container" data-page="16">

<b>CÁC BƯỚC NHẬN</b>

Các bước thực hiện khi nhận:

1. Tạo xung truyền tốc độ baud (đưa giá trị vào thanh ghi SPBRG).

2. Cho phép cổng giao tiếp nối tiếp bất đồng bộ hoạt động bằng cách xóa bit SYNC và set bit SPEN.

3. Set bit RCIE nếu cần sử dụng ngắt.4. Set bit RX9 nếu cần nhận 9 bit dữ liệu.5. Set bit CREN để cho nhận dữ liệu.

6. Cờ RCIF được set sau khi nhận được dữ liệu.

7. Đọc thanh ghi RCSTA để đọc bit thứ 9 và kiểm tra xem q trình nhận dữ liệu có bị lỗi khơng.8. Đọc dữ liệu 8 bit từ thanh ghi RCREG.

9. Nếu q trình nhận dữ liệu bị lỗi thì xóa lỗi đó bằng cách xóa bit CREN.10. Kiểm tra bit GIE và PEIE nếu sử dụng ngắt nhận.

</div><span class="text_page_counter">Trang 17</span><div class="page_container" data-page="17">

<small> I2C_Init();</small>

<small> LCD_Init(0x4E); Initialize_ESP8266() ; LCD_Set_Cursor(1,1);</small>

<small> LCD_Write_String(“Chat luong nuoc"); LCD_Set_Cursor(2,1);</small>

<small> LCD_Write_String("ESP5266 with PIC"); delay_ms(1500);</small>

<small> LCD_Write_String("ESP not found");</small>

<small>} while (!esp8266_isStarted()); //đợi đến khi ESP truyền lại"OK" LCD_Set_Cursor(1,1);</small>

<small> LCD_Write_String("ESP is connected");</small>

<small> delay_ms(1500); LCD_Clear();</small>

<small> /*ESP đã kết nối*/ /*Soft AP mode*/ esp8266_mode(2); LCD_Set_Cursor(1,1);</small>

<small> LCD_Write_String("ESP set as AP"); delay_ms(1500);</small>

<small> LCD_Clear();</small>

<small> /*Module ở chế độ AP */</small>

<small> /*Thiết lập Access Point và Password*/</small>

<small> esp8266_config_softAP(“voducthanh","123456789"); LCD_Set_Cursor(1,1);</small>

<small> LCD_Write_String("AP configured"); delay_ms(1500);</small>

<small> /*AP thiết lập xong*/ while(1)</small>

<small> {</small>

<small> //do nothing }</small>

<small>}</small>

</div><span class="text_page_counter">Trang 18</span><div class="page_container" data-page="18">

<b>3. TDS SENSOR</b>

</div><span class="text_page_counter">Trang 19</span><div class="page_container" data-page="19">

<b>4. TDH22</b>

Cảm biến nhiệt độ và độ ẩm DHT22 là cảm biến rất thông dụng với sinh viên hiện nay vì chi phí rẻ, dễ sử dụng và kết nối với chip vi điều khiển khá đơn giản (chỉ thông qua

Giới thiệu chung:

</div><span class="text_page_counter">Trang 20</span><div class="page_container" data-page="20">

Thơng số kỹ thuật

• Điện áp hoạt động: 3.3 – 6 VDC• Đầu ra: Dữ liệu nối tiếp

• Phạm vi nhiệt độ: -40 ° C đến 80 ° C, sai số ± 0,5°C• Phạm vi độ ẩm: 0% đến 100%, sai số ± 5RH

• Tần số lấy mẫu tối đa 0.5Hz (2 giây 1 lần)• Nhiệt độ:

- Độ phân giải: 0,1°C- Độ chính xác: ± 0,2°C• Độ ẩm:

- Độ phân giải: 0,1 RH- Độ chính xác: ± 1RH

</div><span class="text_page_counter">Trang 21</span><div class="page_container" data-page="21">

Cảm biến DHT22 có bốn chân, nhưng trong đó có một chân khơng sử dụng. Do đó, khi kết nối với bo mạch thì nhà sản xuất đã loại bỏ chân không sử dụng này và chỉ đưa ra ba chân cho người sử dụng

Hình 11. Các chân của cảm biến DHT22

</div><span class="text_page_counter">Trang 22</span><div class="page_container" data-page="22">

Hình 12. Sơ đồ kết nối

Hình 13. Sơ đồ kết nối với PIC

</div><span class="text_page_counter">Trang 23</span><div class="page_container" data-page="23">

Quá trình giao tiếp:

Quá trình giao tiếp giữa DHT22 và PIC được thực hiện chỉ bằng một đường tín hiệu( chân Dout) và thường diễn ra trong khoảng 40 ms. Dữ liệu truyền từ DHT22 đến PIC có độ dài 40 bit với bit MSB được truyền đi trước

<b>8 bit8 bit8 bit8 bit8 bit</b>

<b>Độ ẩmPhần nguyên</b>

Độ ẩm

Phần thập phân

Nhiệt độPhần nguyên

Nhiệt độPhần thâp phân

Check - sum

</div><span class="text_page_counter">Trang 24</span><div class="page_container" data-page="24">

<b>Quá trình chuyển nhận dữ liệu của cảm biến DHT22</b>

• Đầu tiên PIC gửi tín hiệu “START” đến chân DOUT của DHT22: tín hiệu chuyển từ mức “1” xuống mức “0” và phải duy trì trong một khoảng thời gian 18 ms. Sau đó, vi điều khiển sẽ thiết lập chân này lên lại mức “1” trong khoảng 20 – 40 để đợi đáp ứng từ DHT22

Hình 14. Q trình chuyển nhận dữ liệu DHT22

</div>

×