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

Thiết kế bộ đo và hiển thị nhiệt độ trên LCD và máy tính

34 3,5K 5

Đ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 34
Dung lượng 2,83 MB

Nội dung

Chương trình ứng dụng hiển thị nhiệt độ trên máy tính .... Giao diện phần mềm viết chương trình ứng dụng hiển thị trên máy tính .... Qua quá trình học tập môn học phân tích và thiết kế h

Trang 1

MỤC LỤC

DANH SÁCH HÌNH ẢNH 3

BẢNG KÝ HIỆU 4

Mở đầu 5

CHƯƠNG I: GIỚI THIỆU BỘ ĐO VÀ HIỂN THỊ NHIỆT ĐỘ TRÊN LCD VÀ MÁY TÍNH 6

I Khối điều khiển ( Vi điều khiển AVR) 6

1 Giới thiệu chung 6

2 Cấu trúc Atmega16 7

II Cảm biến đo nhiệt độ LM35 8

III TEXT LCD 16x2 9

IV Ngôn ngữ lập trình và trình biên dịch 12

V Nạp chương trình 13

VI Chương trình ứng dụng hiển thị nhiệt độ trên máy tính 14

1 Cơ bản về giao tiếp RS232 14

2 Giao diện phần mềm viết chương trình ứng dụng hiển thị trên máy tính 15

CHƯƠNG II: THIẾT KẾ BỘ ĐO VÀ HIỂN THỊ NHIỆT ĐỘ TRÊN LCD VÀ MÁY TÍNH 16

I Đo nhiệt độ sử dụng cảm biến nhiệt độ LM35 16

1 Bộ ADC (Analog to digital Converter) 16

2 Sử dụng ADC cho cảm biến nhiệt độ LM35: 18

II Hiển thị nhiệt độ trên LCD 19

III Hiển thị nhiệt độ trên máy tính 20

1 Thiết kế giao diện phần mềm 20

2 Viết chương trình 22

IV Thiết kế mạch mô phỏng trên Proteus 23

V Thiết kế phần cứng bằng Altium design 24

1 Thiết kế mạch nguyên lý 24

Trang 2

2 Thiết kế mạch in: 25

VI Giải thuật và điều khiển 27

1 Giải thuật 27

2 Lập trình điều khiển 28

CHƯƠNG III: KẾT QUẢ, KIỂM THỬ VÀ ĐÁNH GIÁ HỆ THỐNG 29

I Kết quả 29

1 Cài đặt hệ thống 29

2 Kết quả 30

II Kiểm thử hệ thống 31

III Đánh giá hệ thống 31

1 Ưu điểm 31

2 Nhược điểm 32

CHƯƠNG IV: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 33

TÀI LIỆU THAM KHẢO 34

Trang 3

DANH SÁCH HÌNH ẢNH

Hình 1.1 Sơ đồ khối bộ đo và hiển thị nhiệt độ trên LCD và PC 6

Hình 1.2 Vi điều khiển Atmega16 7

Hình 1.3 Chân cảm biến nhiệt độ LM35 8

Hình 1.4 Sơ đồ nguyên lí LCD 16x2 9

Hình 1.5 Hình dạng thực 1 LCD 16x2 (16 cột, 2 hàng) 9

Hình 1.6 Kết nối LCD 11

Hình 1.7 Giao diện CodeVisionAVR V2.05.0 12

Hình 1.8 Mạch nạp AVRISP 13

Hình 1.9 Mạch nạp AVR910C 13

Hình 1.10 Phần mềm nạp chương trình Kazama Programmer 13

Hình 1.11 Khung truyền UART 14

Hình 1.12 Giao diện Visual Basic 2010 15

Hình 2.1 Kết nối nguồn ADC 17

Hình 2.2 Sử dụng ADC kênh 0 cho cảm biến LM35 18

Hình 2.3 Kết nối LCD với AVR 19

Hình 2.4 Tạo New Project 20

Hình 2.5 Toolbox 21

Hình 2.6 Phần mềm hiển thị nhiệt độ trên PC 21

Hình 2.7 Mô phỏng trên Proteus 23

Hình 2.8 Mạch nguyên lí phần cứng 24

Hình 2.9 Bản vẽ mạch in 25

Hình 2.10 Thiết lập thông số đường mạch in 25

Hình 2.11 Sắp xếp linh kiện 26

Hình 2.12 Mạch in 26

Hình 3.1 Nạp chương trình vào vi điều khiển 29

Hình 3.2 Cài đặt phần mềm Temperature measurement Ver1.00.1 29

Hình 3.3 Bộ đo và hiển thị nhiệt độ trên LCD 30

Hình 3.4 Hiển thị nhiệt độ trên máy tính 30

Hình 3.5 Kết quả mô phỏng hệ thống bằng Proteus 31

Hình 3.6 So sánh giá trị nhiệt độ với nhiệt kế 31

Trang 4

BẢNG KÝ HIỆU

Trang 5

Mở đầu

Ngày nay, đo lường là một yếu tố quan trọng trong nền công nghiệp Nếu thiếu đo lường, những người kĩ sư không thể có được cái nhìn chính xác đối với các hiện tượng, đồng thời gây ra sự sai lệch và những kết quả không như mong đợi trong nghiên cứu

Trong hệ đơn vị SI (International System Unit), có sáu đại lượng vật lý cơ bản và nhiệt

độ là một trong số đó Sự thay đổi của nhiệt độ chỉ ra một cách khá rõ ràng những gì thực

sự xảy ra bên trong hiện tượng, hoặc những chi tiết cơ học chúng ta quan sát được Việc

đo nhiệt độ cũng ngày càng trở nên dễ dàng và đa dạng, từ một chiếc nhiệt kế đơn giản đến những hệ thống điện tử thông minh

Qua quá trình học tập môn học phân tích và thiết kế hệ thống nhúng, chúng em đã tiếp thu những kiến thức cơ bản để đưa ra ý tưởng thiết kế một mạch đo nhiệt độ với những tính năng đặc biệt nhằm ứng dụng trong các môi trường mang tính tự động hóa

Tiểu luận “Thiết kế bộ đo và hiển thị nhiệt độ trên LCD và máy tính” dưới sự hướng dẫn của PGS.TS Huỳnh Quyết Thắng được thực hiện bởi nhóm học viên cao học:

- Dương Văn Đức

- Nguyễn Chí Thanh

- Hồ Văn Thái

Lớp CB13CĐT – Đại Học Bách Khoa Hà Nội

Chúng em xin trân thành cảm ơn sự chỉ bảo tận tình của thầy giáo trong quá trình hình thành và hoàn thiện tiểu luận!

Trang 6

CHƯƠNG I: GIỚI THIỆU BỘ ĐO VÀ HIỂN THỊ NHIỆT ĐỘ TRÊN LCD VÀ MÁY TÍNH

Yêu cầu cần thực hiện:

 Mạch điện tử được thiết kế trên máy tính bằng phần mềm chuyên dụng

 Nhiệt độ đo được hiển thị trên LCD và máy tính

 Sai số cho phép +/- 10C

 Thao tác khống chế được mô phỏng bằng Led và trên LCD

Sơ đồ khối của bộ đo và hiển thị nhiệt độ trên LCD và máy tính:

Hình 1.1 Sơ đồ khối bộ đo và hiển thị nhiệt độ trên LCD và PC

I Khối điều khiển ( Vi điều khiển AVR)

1 Giới thiệu chung

Vi điều khiển AVR là họ điều khiển do hãng Atmel phát triển, với cấu trúc tập lệnh đơn giản hóa – RISC (Reduced Instruction Set Computer), một kiểu cấu trúc đang thể hiện ưu thế trong các bộ xử lí So với các chip vi điều khiển 8 bits khác, AVR có nhiều tính năng vượt trội:

 Sử dụng đơn giản Gần như chúng ta không cần mắc thêm bất kỳ linh kiện phụ nào khi

sử dụng AVR, thậm chí không cần nguồn tạo xung clock cho chip (thường là các khối thạch anh)

 Thiết bị lập trình (mạch nạp) cho AVR rất đơn giản, có loại mạch nạp chỉ cần vài điện trở là có thể làm được Một số AVR còn hỗ trợ lập trình on – chip bằng bootloader không cần mạch nạp…

 Ngoài lập trình bằng asembly như thông thường, AVR còn hỗ trợ lập trình C với cấu trúc lệnh đơn giản

AVR (atmega16)

Trang 7

 AVR có thể sử dụng xung clock lên tới 16MHz (với xung ngoài) hoặc có thể sử dụng xung clock bên trong chip ( tối đa 8MHz)

 Tích hợp bộ nhớ Flash dung lượng lớn, có khả năng lập trình nhiều lần, có SRAM lớn, đồng thời tích hợp bộ nhớ lưu trữ lập trình được EEPROM

 Số cổng giao tiếp nhiều (I/O port) và 2 chiều (bi-directional)

 Tích hợp nhiều tính năng: chuyển đổi số - tương tự (Analog – Gigital), nhiều chuẩn giao tiếp (RS-232, I2C, SPI…), có bộ đếm timer/counter tích hợp tạo xung PWM…

Bản thân họ AVR có rất nhiều loại vi điều khiển khác nhau về dung lượng bộ nhớ, số cổng giao tiếp… (Atmega8, Atmega16, Attiny88…) Tuy nhiên về cấu trúc cơ bản và cách lập trình là hoàn toàn tương tự nhau Mặc dù các ứng dụng trong bài tiểu luận này được viết trên Atmega 16 nhưng đều có thể áp dụng trên các vi điều khiển AVR khác Chương trình được viết trên máy tính bằng phần mềm CodeVisionAVR, được mô phỏng thử nghiệm trên phầm mềm Proteus, đưa vào AVR bằng mạch nạp AVR 910 USB Programer, phần mạch in được thiết kế bằng phần mềm Altium design

2 Cấu trúc Atmega16

Hình 1.2 Vi điều khiển Atmega16

ATmega16 có 40 chân giao tiếp, trong đó có 4 PORT giao tiếp 8 bit (PORTA, PORTB, PORTC, và PORTD) Các PORT này có thể nhập - xuất dữ liệu hay điều khiển theo 2 chiều (bi-directional) Với 4 cổng này, ATmega16 có thể điều khiển các thiết bị đầu ra (đèn led, LCD, động cơ, v.v) cũng như nhận các tín hiệu đầu vào (sensor, keypad, camera, v.v)

Trang 8

ATmega16 tích hợp bộ nhớ Flash với dung lượng 16 Kb dùng để lập trình, 512 bytes EEPROM có khả năng lưu trữ và lập trình được, 1Kb SRAM Ngoài ra ATmega16

hỗ trợ khả năng sử dụng bộ nhớ ngoài, do đó có thể làm tăng khả năng lưu trữ và xử lý của nó

ATmega16 có 2 bộ timer/counter 8 bit và 1 bộ timer/counter 16 bit (chân T0,T1)

có khả năng xuất xung PWM (thường dùng trong điều khiển động cơ), đếm sự kiện xảy

ra, hay xác định thời gian cho vi điều khiển

ATmega16 còn tích hợp các bộ chuyển đổi tương tự - số (Analog Digital Convert - ADC), có tác dụng chuyển đổi tín hiệu tương tự sang tín hiệu số, áp dụng cho việc xử lý tín hiệu vào từ sensor (Từ chân 33 đến chân 40)

Để tích hợp với các vi điều khiển khác hay với hệ thống máy tính, ATmega16 hỗ trợ các chuẩn giao tiếp RS232, TWI-I2C, SPI

II Cảm biến đo nhiệt độ LM35

LM35 là loại cảm biến nhiệt độ được sử dụng rộng dãi trong công nghiệp bởi giá thành thấp và cách vận hành đơn giản LM35 có mức điện áp thay đổ trực tiếp theo độ C (10mV/ 0C)

Hình 1.3 Chân cảm biến nhiệt độ LM35

Chân +Vs là chân cung cấp điện áp cho LM35 hoạt động

Chân Vout là chân điện áp ngõ ra của LM35, được đưa vào chân Analog của bộ ADC

Chân GND là chân mass của LM35

 Có thể đảm bảo độ chính xác 0.50C ( tại +250C)

 Dải đo từ -550C đến +1500C

 Điện áp sử dụng từ 4V đến 30V

 Dòng điện nhỏ hơn 60µA

 Tự tỏa nhiệt thấp, 0.080C trong không khí

Trang 9

III TEXT LCD 16x2

Text LCD là loại màn hình tinh thể lỏng nhỏ dùng để hiển thị các dòng chữ hoặc

số trong bảng mã ASCII Text LCD được chia sẵn thành từng ô và ứng với mỗi ô chỉ có thể hiển thị một ký tự ASCII Mỗi ô của Text LCD bao gồm các “chấm” tinh thể lỏng, việc kết hợp “ẩn” và “hiện” các chấm này sẽ tạo thành một ký tự cần hiển thị Trong các Text LCD, các mẫu ký tự được định nghĩa sẵn Kích thước của Text LCD được định nghĩa bằng số ký tự có thể hiển thị trên 1 dòng và tổng số dòng mà LCD có Text LCD 16x2 là loại có 2 dòng và mỗi dòng có thể hiển thị tối đa 16 ký tự

Hình 1.4 Sơ đồ nguyên lí LCD 16x2

Text LCD có 2 cách giao tiếp cơ bản là nối tiếp (như I2C) và song song Loại được

sử dụng trong bài báo cáo này là loại giao tiếp song song

Hình 1.5 Hình dạng thực 1 LCD 16x2 (16 cột, 2 hàng)

Trang 11

Dùng để xác định hướng của dữ liệu được truyền giữa LCD và vi điều khiển Khi

nó ở mức thấp dữ liệu được ghi đến LCD và khi ở mức cao, dữ liệu được đọc từ LCD Nếu chúng ta chỉ cần ghi dữ liệu lên LCD thì chúng ta có thể nối chân này xuống GND để tiết kiệm chân

Các chân D0 - D7

Đây là 8 chân dữ liệu 8 bít, được dùng để gửi thông tin lên LCD hoặc đọc nội dung của các thanh ghi trong LCD Các kí tự được truyền theo mã tương ứng trong bảng mã ascii Cũng có các mã lệnh mà có thể được gửi đến LCD để xoá màn hình hoặc đưa con trỏ về đầu dòng hoặc nhấp nháy con trỏ LCD có 2 chế độ giao tiếp, chế độ 4 bit (chỉdùng

4 chân D4 đến D7 để truyền dữ liệu) và chế độ 8 bit (dùng cả 8 chân dữ liệu từ D0 đến D7), ở chế độ 4 bit, khi truyền 1 byte, chúng ta sẽ truyền nửa cao của byte trước, sau đó mới truyền nửa thấp của byte

Trang 12

IV Ngôn ngữ lập trình và trình biên dịch

AVR nói chung cũng như ATmega16 nói riêng hỗ trợ 2 ngôn ngữ lập trình thông dụng

là assembly và C Việc lập trình bằng assembly giúp cho chương trình nhỏ gọn nhưng khá rắc rối do gần với ngôn ngữ máy Lập trình bằng C tuy cho chương trình có dung lượng lớn hơn so với khi lập trình bằng assembly, nhưng lại dễ dàng hơn trong việc viết code và

dễ debug

Để lập trình cho AVR, có khá nhiều trình biên dịch, ví dụ như AVR studio, WinAVR, CodevisionAVR…

Trong bài tiểu luận, em dùng ngôn ngữ C được viết trên CodeVisionAVR V2.05.0

Hình 1.7 Giao diện CodeVisionAVR V2.05.0

Trang 13

V Nạp chương trình

Chương trình sau khi được biên dịch bởi trình biên dịch sẽ được nạp vào AVR bằng 2 cách: Nạp qua một thiết bị trung gian gọi là mạch nạp hoặc nạp trực tiếp thông qua giao tiếp RS232 với máy tính nhờ sử dụng chức năng bootloader của vi điều khiển

Có khá nhiều loại mạch nạp khác nhau cho AVR, từ đơn giản đến phức tạp, hỗ trợ các loại AVR khác nhau, với các chuẩn giao tiếp khác nhau Dưới đây là một số loại mạch nạp hay dùng:

Hình 1.8 Mạch nạp AVRISP

Hình 1.9 Mạch nạp AVR910C

Vi điều khiển AVR được đặt trên các mạch nạp Các mạch nạp, thông qua cáp nối với máy tính, sẽ nạp chương trình từ máy tính vào vi điều khiển Trong bài tiểu luận chúng

em sử dụng mạch nạp AVRISP với phần mềm nạp chương trình Kazama Programmer

Hình 1.10 Phần mềm nạp chương trình Kazama Programmer

Trang 14

VI Chương trình ứng dụng hiển thị nhiệt độ trên máy tính

Nhiệt độ đo được từ cảm biến được vi điều khiển truyền lên máy tính qua cổng giao tiếp RS232

1 Cơ bản về giao tiếp RS232

RS232 là một dạng giao thức, dùng để truyền dữ liệu giữa các thiết bị điện tử có hỗ trợ giao thức này RS232 là một trong những giao thức ra đời sớm nhất và có thể nói là đơn giản nhất Cho đến nay, RS232 vẫn còn được ứng dụng rất nhiều do giao thức đơn giản,

độ tin cậy cao, và khoảng cách truyền khá xa, tuy nhiên tốc độ truyền vẫn ở mức khá khiêm tốn so với các giao thức ra đời sau này như USB, SPI, I2C…

Để sử dụng được giao tiếp RS232, chúng ta sử dụng module UART có sẵn trong Atmega16

UART là viết tắt của Universal Asynchronous Receiver Transmitter, là giao tiếp truyền nhận dị bộ, dị bộ ở đây có nghĩa là thiết bị truyền và thiết bị nhận không cùng chung xung nhịp clock

Trong giao thức RS232, chúng ta quan tâm đến những thông số sau:

 Tốc độ baud: Là số bit truyền trên 1s, điển hình là 9600 bit/s

 Parity: có 2 loại parity là parity chẵn và parity lẻ, dùng để tăng tính kiểm soát lỗi trong 1 lần truyền, giả sử ta cấu hình parity là chẵn thì mỗi lần truyền, nếu số bit có mức logic 1 là lẻ thì module tự thêm 1 bit 1 vào cuối khung truyền, còn nếu số bit có mức logic 1 là chẵn thì không thêm bit 1 vào cuối khung truyền Parity lẻ cũng tương

tự như vậy

 Số bit trên mỗi lần truyền: Là số bit dữ liệu (data) trên mỗi khung truyền, thường là 8 bit

Một khung truyền UART có cấu trúc như sau:

Hình 1.11 Khung truyền UART

Trang 15

2 Giao diện phần mềm viết chương trình ứng dụng hiển thị trên máy tính

Chúng em đã viết một phần mềm ứng dụng nhỏ để hiển thị và điều khiển dải nhiệt độ đo bằng việc sử dụng ngôn ngữ VB.Net

Hình 1.12 Giao diện Visual Basic 2010

Trang 16

CHƯƠNG II: THIẾT KẾ BỘ ĐO VÀ HIỂN THỊ NHIỆT ĐỘ TRÊN LCD VÀ MÁY TÍNH

I Đo nhiệt độ sử dụng cảm biến nhiệt độ LM35

1 Bộ ADC (Analog to digital Converter)

Trong các ứng dụng đo lường và điều khiển bằng vi điều khiển bộ chuyển đổi tương tự-số (ADC) là một thành phần rất quan trọng Dữ liệu trong thế giới của chúng ta

là các dữ liệu tương tự (analog) Ví dụ nhiệt độ không khí buổi sáng là 250C và buổi trưa

là 320C, giữa hai mức giá trị này có vô số các giá trị liên tục mà nhiệt độ phải “đi qua” để

có thể đạt mức 320C từ 250C, đại lượng nhiệt độ như thế gọi là một đại lượng analog Trong khi đó, vi điều khiển là một thiết bị số (digital), các giá trị mà một vi điều khiển có thể thao tác là các con số rời rạc vì thực chất chúng được tạo thành từ sự kết hợp của hai mức 0 và 1 Ví dụ chúng ta muốn dùng một thanh ghi 8 bit trong vi điều khiển để lưu lại các giá trị nhiệt độ từ 0oC đến 255 0C, như chúng ta đã biết, một thanh ghi 8 bit có thể chứa tối đa 256 (28) giá trị nguyên từ 0 đến 255, như thế các mức nhiệt độ không nguyên như 28.123 0C sẽ không được ghi lại Nói cách khác, chúng ta đã “số hóa” (digitalize) một

dữ liệu analog, thành một dữ liệu digital Quá trình “số hóa” này thường được thực hiện bởi một thiết bị gọi là “bộ chuyển đổi tương tự - số hay đơn giản là ADC (Analog to Digital Converter)

Độ phân giải (resolution): Khái niệm độ phân giải được dùng để chỉ số bit cần thiết

để chứa hết các mức giá trị digital ngõ ra Nếu một mạch chuyển đổi ADC có độ phân giải

n bit thì sẽ có 2n mức giá trị có thể có ở ngõ ra digital Độ phân giải liên quan mật thiết đến chất lượng chuyển đổi ADC, việc lựa chọn độ phân giải phải phù hợp với độ chính xác yêu cầu và khả năng xử lý của bô điều khiển

Điện áp tham chiếu (reference voltage): Trong các bộ ADC, Vref thường là thông

số được đặt bởi người dùng, nó là điện áp lớn nhất mà thiết bị có thể chuyển đổi Ví dụ, một bộ ADC 10 bit (độ phân giải) có Vref = 3V, nếu điện áp ở ngõ vào là 1V thì giá trị số thu được sau khi chuyển đổi sẽ là: 1023 x (1/3) = 314 Trong đó 1023 là giá trị lớn nhất

mà một bộ ADC 10 bit có thể tạo ra Vì điện áp tham chiếu ảnh hưởng đến độ chính xác của quá trình chuyển đổi, chúng ta cần tính toán để chọn 1 điện áp tham chiếu phù hợp, không được nhỏ hơn giá trị lớn nhất của input nhưng cũng đừng quá lớn

Chuyển đổi ADC trên AVR:

Chip AVR ATmega16 của Atmel có tích hợp sẵn các bộ chuyển đổi ADC với độ phân giải 10 bit Có tất cả 8 kênh đơn (các chân ADC0 đến ADC7), 16 tổ hợp chuyển đổi dạng so sánh, trong đó có 2 kênh so sánh có thể khuyếch đại

Trang 17

ADC trên AVR cần đƣợc “nuôi” bằng nguồn điện áp riêng ở chân AVCC, giá trị điện áp cấp cho AVCC không đƣợc khác nguồn nuôi chip (VCC) quá +/-0.3V Nhiễu (noise) là vấn đề rất quan trọng khi sử dụng các bộ ADC, để giảm thiểu sai số chuyển đổi

do nhiễu, nguồn cấp cho ADC cần phải đƣợc “lọc” (filter) kỹ càng Một cách đơn giản để tạo nguồn AVCC là dùng một mạch LC kết nối từ nguồn VCC của chip nhƣ hình 2.1, đây

là cách đƣợc gợi ý bởi nhà sản xuất AVR

Hình 2.1 Kết nối nguồn ADC

Có 4 thanh ghi trong bộ ADC trên AVR trong đó có 2 thanh ghi data chứa dữ liệu sau khi chuyển đổi, 2 thanh ghi điều khiển và chứa trạng thái của ADC

ADMUX (ADC Multiplexer Selection Register): là 1 thanh ghi 8 bit điều khiển

việc chọn điện áp tham chiếu, kênh và chế độ hoạt động của ADC

ADCSRA (ADC Control and Status RegisterA): là thanh ghi chính điều khiển

hoạt động và chứa trạng thái của module ADC

ADCL và ADCH (ADC Data Register): 2 thanh ghi chứa giá trị của quá trình

chuyển đổi

Ngày đăng: 06/10/2015, 15:58

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w