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

BÀI TẬP LỚN CẢM BIẾN ÁP SUẤT BMP180 và MPS20N004D

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.52 MB, 24 trang )

BÀI TẬP LỚN
CẢM BIẾN VÀ HỆ THỐNG ĐO
ĐỀ TÀI: CẢM BIẾN ÁP SUẤT ÁP TRỞ
Họ tên:
Mã SV:
MỤC LỤC
1. Giới thiệu chung.................................................................................................................3
1.1. Khái niệm và nguyên lý đo áp suất..........................................................................3
1.1.1. Đo theo kiểu chất lưu không chuyển động....................................................3
1.1.2. Đo theo kiểu chất lưu chuyển động...............................................................3
1.2. Các loại cảm biến đo áp suất chất lưu......................................................................3
1.2.1. Dụng cụ đo áp suất chất lưu dựa trên nguyên tắc cân bằng thuỷ tĩnh............3
1.2.2. Cảm biến áp suất dựa trên phép đo biến dạng...............................................3
1.2.3. Cảm biến áp suất dựa trên chuyển đổi điện...................................................4
1.3. Ứng dụng của cảm biến đo áp suất trong thực tế.....................................................4
2. Cảm biến áp suất áp trở......................................................................................................4
2.1. Cấu tạo chung và nguyên lý hoạt động....................................................................4
2.1.1. Cấu tạo chung...............................................................................................4
2.1.2. Nguyên lý hoạt động.....................................................................................5
2.1.3. Quy trình chế tạo cảm biến áp suất áp trở.....................................................6
2.1.4. Một vài đặc tính kỹ thuật..............................................................................7
2.1.5. Ưu điểm và nhược điểm của cảm biến áp suất áp trở:...................................7
2.1.6. Ứng dụng của cảm biến áp suất áp trở..........................................................7
2.2. Lựa chọn các thiết bị cho hệ thống đo.....................................................................7
2.2.1. Lựa chọn cảm biến dạng bán dẫn..................................................................7
2.2.2. Lựa chọn cảm biến áp suất MPS20N004D.................................................11
2.2.3. Lựa chọn vi điều khiển................................................................................12
2.2.4. Lựa chọn phần hiển thị kết quả đo..............................................................14
2.2.5. Mô phỏng mạch đo bằng phần mềm Proteus..............................................16
3. Phần code......................................................................................................................... 17
3.1. BMP180................................................................................................................. 17


CẢM BIẾN ÁP SUẤT ÁP TRỞ

1


3.2. MPS20N004D.......................................................................................................20
4. Tài liệu tham khảo............................................................................................................24

CẢM BIẾN ÁP SUẤT ÁP TRỞ

2


1. Giới thiệu chung
Trong thực tế, việc đo áp suất trong các thiết bị cung cấp năng lượng thuỷ lực, nhiệt, hạt
nhân…có ý nghĩa rất lớn để đảm bảo an toàn cũng như kiểm tra và điều khiển hoạt động của
thiết bị. Nhu cầu đo áp suất rất đa dạng đòi hỏi các cảm biến phải đáp ứng một cách tốt nhất
từng trường hợp cụ thể, độ lớn của áp suất cần đo cũng nằm trong dải giá trị rất rộng từ chân
khơng tới áp suất siêu cao, do đó cảm biến đo áp suất chất lưu rất đa dạng.
1.1. Khái niệm và nguyên lý đo áp suất
Áp suất được định nghĩa là lực tác động lên chất lỏng hay chất khí trong một đơn vị
diện tích, với cơng thức P = F/A, trong đó P( N/m2 hay Pascal ) , F(N), A(m2). Trên thực tế
các đơn vị đo áp suất thường dùng là Bars (kg/cm2), PSI (P/inch2), mmHg,…
Trong các điều kiện đo khác nhau thì phạm vi đo, vật liệu sử dụng trong cấu trúc cảm
biến sẽ có nhiều kiểu thiết kế cảm biến khác nhau, thường thì có thể chuyển đổi tín hiệu áp
suất sang các dạng trung gian, ví dụ như sự dịch chuyển của màng áp sẽ được chuyển đổi
thành tín hiệu dạng điện áp hoặc dịng điện.
Có hai ngun lý đo áp suất là đo theo chất lưu không chuyển động và đo theo chất lưu
chuyển động.
1.1.1. Đo theo kiểu chất lưu không chuyển động

Đối với chất lưu không chuyển động, áp suất chất lưu là áp suất tĩnh pt, để đo được áp
suất này có thể tiến hành theo hai phương pháp:
Đo áp suất được lấy qua một lỗ có tiết diện hình trịn được khoanh trên thành bình nhờ
cảm biến được đặt sát thành bình.
Đo trực tiếp sự biến dạng của thành bình do áp suất gây nên.
1.1.2. Đo theo kiểu chất lưu chuyển động
Áp suất động pd = p - pt , trong đó p là áp suất tổng, pt là áp suất tĩnh, có thể đo áp suất
động bằng ống Pitot hoặc bằng màng.
1.2. Các loại cảm biến đo áp suất chất lưu
1.2.1. Dụng cụ đo áp suất chất lưu dựa trên nguyên tắc cân bằng thuỷ tĩnh
Áp kế vi sai kiểu phao làm việc dựa trên cơ sở cân bằng áp suất chất lỏng cần đo với áp
suất thuỷ tĩnh của chất lỏng mẫu chứa trong áp kế.
Áp kế vi sai kiểu chuông.
1.2.2. Cảm biến áp suất dựa trên phép đo biến dạng
Nguyên lý chung của cảm biến áp suất dựa trên phép đo biến dạng đó là dựa trên cơ sở
biến dạng đàn hồi của phần tử nhạy cảm với tác dụng của áp suất, các phần tử biến dạng
thường là ống trụ, ống bourdon, xi phông và màng mỏng có gắn điện trở. Các cảm biến có
CẢM BIẾN ÁP SUẤT ÁP TRỞ

3


sử dụng thêm phần tử trung gian thường được trang bị thêm bộ phận chuyển đổi điện để
chuyển những thay đổi của phần tử trung gian thành tín hiện điện.
1.2.3. Cảm biến áp suất dựa trên chuyển đổi điện
Cảm biến áp suất kiểu điện dung: nguyên lý hoạt động dựa trên độ dịch chuyển của bản
cực động làm thay đổi khoảng cách giữa bản cực tĩnh và bản cực động, từ đó gây nên biến
thiên giá trị điện dung.
Cảm biến áp suất kiểu điện cảm.
Cảm biến áp suất kiểu áp trở: cảm biến hoạt động dựa trên sự thay đổi điện trở khi

chúng bị biến dạng do chịu một áp lực đặt lên nó.
Cảm biến áp suất kiểu áp điện: cảm biến hoạt động dựa trên nguyên lý của hiệu ứng áp
điện, khi một áp lực được đặt lên cảm biến, bên trong cảm biến sẽ trực tiếp sinh ra một dịng
điện tỷ lệ với áp lực đặt lên nó, đo giá trị của dịng điện này sẽ tính được giá trị của áp suất
tác động.
1.3. Ứng dụng của cảm biến đo áp suất trong thực tế
Cảm biến áp suất dùng để đo trong hệ thống lò hơi, thường được đo trực tiếp trên lò hơi,
khu vực này cần được đo chính xác và phải chịu nhiệt độ cao.
Các máy nên khí cũng cần phải đo áp suất để giới hạn áp suất đầu ra, tránh trường hợp
quá áp dẫn đến hư hỏng và cháy nổ.
Trên các trạm bơm nước cũng cần cảm biến áp suất để giám sát áp suất đưa về PLC
hoặc biến tần để điều khiển bơm nước.
Để điều khiển áp suất sau van điều khiển thì cảm biến áp suất đóng vai trị rất quan
trọng vì sẽ ảnh hưởng trực tiếp áp suất đầu ra sau van điều khiển.
Cảm biến đo áp suất được sử dụng trong việc đo và điều khiển áp suất trong các đường
ống, lị hơi thơng qua van điều khiển tuyến tính hay đo mức nước, báo mức dầu thông qua
sự thay đổi áp suất.

2. Cảm biến áp suất áp trở
2.1. Cấu tạo chung và nguyên lý hoạt động
2.1.1. Cấu tạo chung
Cảm biến áp suất áp trở là một trong những loại cảm biến phổ biến nhất, hoạt động dựa
trên hiệu ứng áp trở, là tạo ra sự thay đổi điện trở khi chúng bị biến dạng. Các bộ cảm biến
áp suất áp trở là các phần tử nhạy cảm với biến dạng, thường là các màng mỏng được dán
điện trở ten-xơ.

CẢM BIẾN ÁP SUẤT ÁP TRỞ

4



Các lá điện trở ten-xơ được chế tạo từ mangan, nicrom, constantan (có điện trở 30-500
V) hay vật liệu bán dẫn loại P và N (có điện trở từ 100V - 10kV), với công nghệ hiện đại
ngày nay, người ta có thể chế tạo điện trở ten-xơ trực tiếp trên các tinh thể silic hay đá quý.
Các điện trở cảm biến có thể kết nối thành một mạch cầu tồn phần kiểu wheatston:

Mạch cầu Wheatston
Điện áp vi sai đầu ra:

2.1.2. Nguyên lý hoạt động
Nguyên lý hoạt động cơ bản của cảm biến áp suất áp trở là sử dụng một phần tử chịu
biến dạng được làm từ vật liệu dẫn điện (kim loại hoặc chất bán dẫn silicon) mà có thể thay
đổi điện trở khi chúng bị biến dạng dài do chịu tác động của áp lực, phần tử này lại được đặt
trên một màng kim loại mỏng, khi chịu một áp lực thì chúng sẽ giúp cho các điện trở biến
dạng chiều dài tốt hơn.
Sự thay đổi giá trị các điện trở sẽ được chuyển đổi thành tín hiệu điện áp đầu ra. Các
đặc điểm cơ bản trong sự thay đổi giá trị của điện trở đó là:
CẢM BIẾN ÁP SUẤT ÁP TRỞ

5


Giá trị của điện trở tỷ lệ thuận với chiều dài và tỷ lệ nghịch với tiết diện mặt cắt ngang
theo cơng thức R = ρl/S (trong đó R là giá trị điện trở (V), ρ là điện trở suất (V.m), l là chiều
dài của điện trở, S là tiết diện mặt cắt ngang của điện trở ).
Điện trở suất của một số vật liệu sẽ tăng khi nó chịu tác động của áp lực.
Thành phần cấu tạo nên phần tử chịu biến dạng thường là một trong hai loại kim loại
hoặc chất bán dẫn.
Nếu phần tử chịu biến dạng được làm từ kim loại thì cấu trúc của nó là các dây kim loại
mỏng được ghép với nhau tạo thành một mạch cầu Wheatston, mạch cầu này lại được đặt

trên một màng ngăn kim loại mỏng khác.
Nếu phần tử chịu biến dạng được làm từ chất bán dẫn, thường là silicon pha tạp thêm
một số loại tạp chất nhằm tăng độ nhạy của cảm biến. Silicon được pha tạp thêm các tạp
chất với nồng độ thấp sẽ cho ra cảm biến với độ nhạy cao hơn nhưng đồng thời độ nhạy
nhiệt của cảm biến và hệ số đo sẽ tăng.
2.1.3. Quy trình chế tạo cảm biến áp suất áp trở
Các cảm biến áp suất áp trở được chế tạo theo công nghệ MEMS
(microelectromechanical system), các phần tử của cảm biến được tích hợp các thành phần
cơ học và điện tử siêu nhỏ trên một chip bán dẫn.
Các cảm biến áp suất áp trở dạng bán dẫn được chế tạo theo cách tương tự như các cảm
biến dây kim loại, bằng cách đặt một phần tử silicon đo biến dạng lên một màng ngăn
mỏng.
Các cảm biến áp suất áp trở cũng có thể được chế tạo trực tiếp trên một bề mặt silicon
theo cách giống như cách chế tạo các thiết bị dạng bán dẫn điện tử, công nghệ này cho phép
chế tạo ra các cảm biến với kích thước rất nhỏ với giá thành thấp và độ chính xác, độ nhạy
cao, cùng với đó độ tuyến tính và phản hồi nhiệt độ tốt.
Thiết kế cảm biến cùng một số lưu ý khi thực hiện phép đo:
Để đảm bảo độ chính xác cao nhất, cần xem xét đến một vài yếu tố có thể ảnh hưởng tới
tín hiệu ở đầu ra, bởi vì bất kỳ tín hiệu gây nhiễu nào cũng có thể gây nên sự thay đổi tương
ứng ở đầu ra, do đó cần đảm bảo rằng các tín hiệu gây nhiễu đó ở mức thấp nhất có thể.
Cần đặt một điện trở hiệu chuẩn có thể thay đổi giá trị trong mạch cầu để đặt giá trị điện
áp đầu ra về 0 khi khơng có áp suất tác động.
Cần giữ cho điện trở của dây dẫn nối với cảm biến ở giá trị nhỏ nhằm mục đích tránh
gây ra sai số trong phép đo từ đó giảm độ nhạy của cảm biến. Nếu dùng dây dẫn bằng đồng,
hệ số nhiệt độ của nó có thể lớn hơn cảm biến, từ đó gây ra độ nhạy nhiệt khơng mong
muốn.
Việc sử dụng điện áp kích thích cao hơn sẽ làm tăng giá trị điện áp đầu ra và cải thiện tỷ
lệ tín hiệu so với nhiễu, tuy nhiên giá trị điện trở tăng cao sẽ sinh nhiệt nhiều hơn trong cảm
biến, từ đó ảnh hưởng tới điện trở suất và độ nhạy của cảm biến.
Nhiệt lượng sinh ra trong quá trình hoạt động có thể gây ảnh hưởng đến mối kết dính

giữa phần tử chịu biến dạng và màng ngăn, dẫn đến sai số và giảm độ chính xác đo lường

CẢM BIẾN ÁP SUẤT ÁP TRỞ

6


theo thời gian, để khắc phục hiện tượng sinh nhiệt này, có thể dùng phần tử đo biến dạng có
giá trị điện trở cao hơn.
Để cung cấp điện áp kích thích tối ưu cho mạch đo, cần cân bằng giữa hiện tượng tự
sinh nhiệt và việc cần thu được một tín hiệu tốt, có thể thực hiện điều này như sau: khi
khơng có áp suất tác động, đầu ra của cảm biến bằng 0, tăng điện áp kích thích lên tới khi
đầu ra có sự thay đổi giá trị (do hiện tượng tự sinh nhiệt trong quá trình hoạt động), sau đó
từ từ giảm dần giá trị điện áp kích thích cho tới khi đầu ra bằng 0.
Nên sử dụng một mạch khuếch đại gần cảm biến để giảm chiều dài dây kết nối, từ đó tín
hiệu sẽ tốt hơn và giảm thiểu được nhiễu, cũng có thể thêm bộ lọc đầu ra để loại bỏ nhiễu từ
bên ngoài.
2.1.4. Một vài đặc tính kỹ thuật
Các cảm biến áp suất có phần tử biến dạng làm từ vật liệu kim loại có hệ số đo trong
khoảng từ 2-4, sự thay đổi đầu ra tối đa tăng khoảng 1 mV cho mỗi 1V điện áp kích thích.
Các cảm biến có phần tử biến dạng làm từ vật liệu bán dẫn có hệ số đo 100-200, đầu ra
của các cảm biến loại này khoảng 10mV/V.
Trong mơi trường khắc nghiệt có nhiệt độ cao trên 500°C cần đo áp suất, người ta chế
tạo cảm biến từ vật liệu bán dẫn SiC (silicon carbide).
2.1.5. Ưu điểm và nhược điểm của cảm biến áp suất áp trở:
Ưu điểm: hiệu suất và độ tuyến tính cao và bền bỉ theo thời gian. Các cảm biến có phần
tử chịu biến dạng bằng kim loại có độ bền nhiệt cao, nhiệt độ tối đa chúng có thể chịu được
lên đến 200°C, trong khi các cảm biến có phần tử biến dạng làm bằng vật liệu bán dẫn chỉ
có thể chịu được nhiệt độ dưới 100°C.
Nhược điểm: cảm biến có phần tử chịu biến dạng bằng kim loại tiêu tốn nhiều năng

lượng hơn các loại cảm biến khác, do đó chúng khơng thích hợp với các hệ thống di động.
Điện áp đầu ra Vout = 4-20 mV.
2.1.6. Ứng dụng của cảm biến áp suất áp trở
Các cảm biến áp suất áp trở thích hợp cho nhiều trường hợp đo áp suất do tính chất đơn
giản và bền bỉ của nó, chúng có thể được dùng để đo áp suất tuyệt đối, áp suất tương đối và
áp suất vi sai, trong các ứng dụng đo cả áp suất thấp và cao.
2.2. Lựa chọn các thiết bị cho hệ thống đo
2.2.1. Lựa chọn cảm biến dạng bán dẫn
Cảm biến áp suất dạng bán dẫn được lựa chọn: BMP180.
Cảm biến này có chức năng đo nhiệt độ, độ cao, áp suất môi trường, kết hợp với vi điều
khiển để đọc tín hiệu đo được và chuyển thành đại lượng cần đo tương ứng.
Cảm biến áp suất BMP180 là một loại cảm biến áp suất kỹ thuật số sử dụng năng lượng
ở mức cực thấp được tối ưu cho việc ứng dụng cho các thiết bị dạng tay cầm, điều hướng
CẢM BIẾN ÁP SUẤT ÁP TRỞ

7


GPS hay các ứng dụng ngoài trời khác, cảm biến này được chế tạo theo công nghệ điện trở
piezo, cho độ chính xác đo lường và độ tuyến tính cao cùng thời gian sử dụng lâu dài.
Cảm biến BMP180 gồm một cảm biến điện trở piezo, một bộ chuyển đổi tín hiệu tương
tự sang số ADC, một đơn vị điều khiển với E2PROM và một giao diện nối tiếp I2C.

Cảm biến áp suất BMP180 và sơ đồ mạch cấu tạo

Một số thông số kỹ thuật của cảm biến BMP-180:
CẢM BIẾN ÁP SUẤT ÁP TRỞ

8



Kích thước

21x18 mm

Trọng lượng

1.18g

Điện áp cung cấp

1.8-3.6V

Cơng suất tiêu thụ

0.5μW tại 1Hz

Giao tiếp

I2C

Tốc độ I2C max

3.5MHz

Độ nhiễu thấp

0.02 hPa (17cm)

Dòng điện tiêu thụ


5μA

Tích hợp bộ hiệu chỉnh
Vcc

Chân nối nguồn vào

GND

Chân nối đất

SCL

Chân kết nối với vi
điều khiển

SDA

Chân kết nối với vi
điều khiển

Khoảng đo áp suất

300-1100 hPa

Sai số khi đo áp suất tuyệt đối

±0,1 hPa


Sai số khi đo nhiệt độ

0.5 °C

Nguyên lý làm việc của cảm biến BMP180: cảm biến áp suất BMP180 được thiết kế để
kết nối trực tiếp với vi điều khiển thông qua kết nối I2C.
CẢM BIẾN ÁP SUẤT ÁP TRỞ

9


Start

Bắt đầu đo nhiệt độ
Đợi 4.5ms

Đọc UT

Bắt đầu đo áp suất
Đợi(thời gian tuỳ thuộc chế độ)

Đọc UP
Tính tốn áp suất và nhiệt độ theo đơn vị
vật lý

Trình tự đo của cảm biến áp suất BMP180
Trong đó: UP là dữ liệu áp suất (pressure data), UT là dữ liệu nhiệt độ (temperature
data)
Vi điều khiển sẽ gửi một tín hiệu điều khiển để bắt đầu việc đo áp suất và nhiệt độ, tín
hiệu analog từ phần tử cảm biến (sensor element) sẽ được đưa đến bộ chuyển đổi tương tự

sang số (ADC), sau khi chuyển đổi dữ liệu sẽ được đưa đến đơn vị điều khiển (control unit)
và được lưu trong bộ nhớ E2PROM , kết quả (dữ liệu áp suất hoặc dữ liệu nhiệt độ) có thể
được đọc khi dữ liệu đo được đưa tới vi điều khiển thông qua giao tiếp I 2C, việc chuyển đổi
giá trị nhiệt độ sang đơn vị °C và áp suất sang đơn vị hPa thì dữ liệu hiệu chuẩn sẽ được sử
dụng.
I2C bus có thể được sử dụng để điều khiển cảm biến, đọc dữ liệu hiệu chuẩn từ bộ nhớ
E2PROM và đọc dữ liệu đo được khi bộ chuyển đổi dữ liệu A/D được hồn thành. Các chân
SCL(serial clock) và SDA(serial data) có dạng mở ở cực D (open-drain).
Tốc độ lấy mẫu có thể lên đến 128 mẫu mỗi giây ở chế độ tiêu chuẩn (standard mode)
cho việc đo lường động.
2.2.2. Lựa chọn cảm biến áp suất MPS20N004D.

CẢM BIẾN ÁP SUẤT ÁP TRỞ

10


Cảm biến áp suất MPS20N004D
Một số thông số kỹ thuật:
Khoảng đo áp suất vi sai (áp suấttương đối)

1- 40 kPa

Điện áp đầu ra

50- 100 mV

Điện áp cung cấp
Giá trị điện trở của mạch cầu
Nhiệt độ hoạt động


5V
4- 6 kV
-40 - 80 °C

Cảm biến này có một số ứng dụng như đo áp suất lốp ô-tô, giám sát áp suất đường ống
dẫn khí,…
Để đo tín hiệu từ cảm biến áp suất này em dùng module ADC chuyển đổi tín hiệu tương
tự sang số HX711.
Một số đặc tính kỹ thuật của HX711
HX711 là một bộ chuyển đổi ADC 24-bit độ chính xác cao được thiết kế cho việc cân
khối lượng và dùng trong các ứng dụng điều khiển trong công nghiệp để giao diện trực tiếp
với các cảm biến dạng mạch cầu.
Có hai kênh đầu vào vi sai có thể lựa chọn là kênh A và kênh B, tín hiệu từ cảm biến
được đưa vào một trong hai kênh này để xử lý và khuếch đại lên. Với kênh A, hệ số khuếch
đại có thể lập trình là 128 hoặc 64, tương ứng đầu vào điện áp vi sai ±20mV và ±40mV khi
nguồn 5V được cấp tới chân AVDD.Với kênh B, hệ số khuếch đại là 32.
Điều khiển số đơn giản và giao diện nối tiếp: điều khiển qua chân mà không cần lập
trình. Có thể lựa chọn tốc độ truyền dữ liệu đầu ra 10SPS hoặc 80SPS.
Ở chế độ hoạt động bình thường, giá trị dịng điện ở mức <1.5mA, ở chế độ năng lượng
thấp dòng điện tiêu thụ <1uA. Điện áp cung cấp 2.6- 5.5 V, nhiệt độ hoạt động -40-80 °C.

CẢM BIẾN ÁP SUẤT ÁP TRỞ

11


Module HX711
2.2.3. Lựa chọn vi điều khiển
Chọn bo mạch Arduino Uno R3 dùng chip ATMega 328P để đo và xử lý tín hiệu từ cảm

biến áp suất BMP-180.

Arduino UNO R3
Chân nguồn 3.3V sẽ cung cấp điện áp cho cảm biến, hai chân A4 và A5 lần lượt kết nối
với hai chân SDA (send data) và SCL (send clock) trên cảm biến.
Một vài đặc tính cơ bản của Arduino Uno R3
Vi điều khiển

ATmega328 họ 8bit

Điện áp hoạt động

5V DC (chỉ được cấp qua cổng
USB)

Tần số hoạt động

16MHz

Dòng tiêu thụ

Khoảng 30 mA

Điện áp vào khuyên dùng

7-12 V DC

CẢM BIẾN ÁP SUẤT ÁP TRỞ

12



Điện áp vào giới hạn

6-20V DC

Số chân Digital I/O

14 (6 chân tạo xung PWM)

Số chân Analog

6 (độ phân giải 10 bit)

Dòng tối đa trên mỗi chân I/O 30 mA
Dòng ra tối đa (5V)

500 mA

Dòng ra tối đa (3.3V)

50 mA

Bộ nhớ flash

32 KB (ATmega328) với 0.5KB
dùng bởi bootloader

SRAM


2 KB (ATmega328)

EEPROM

1 KB (ATmega328)

Arduino UNO có thể sử dụng 3 vi điều khiển họ 8bit AVR là ATmega8, ATmega168,
ATmega328. Vi xử lý này có thể xử lí những tác vụ đơn giản như điều khiển đèn LED nhấp
nháy, xử lí tín hiệu cho xe điều khiển từ xa, làm một trạm đo nhiệt độ - độ ẩm và hiển thị lên
màn hình LCD,… Ngồi ra nó cịn có thể được dùng trong các ứng dụng khác như điều
khiển động cơ bước, động cơ servo, điều khiển thiết bị qua mạng internet,…
Arduino UNO có thể được cấp nguồn 5V thông qua cổng USB hoặc cấp nguồn ngoài
với điện áp khuyên dùng là 7-12V DC và giới hạn là 6-20V. Thường thì cấp nguồn bằng pin
vng 9V là hợp lí nhất nếu khơng có sẵn nguồn từ cổng USB.
Các chân năng lượng của Arduino Uno R3:
GND (Ground): cực âm của nguồn điện cấp cho Arduino UNO. Khi dùng các thiết bị sử
dụng những nguồn điện riêng biệt thì những chân này phải được nối với nhau.
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, 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.
IOREF: điện áp hoạt động của vi điều khiển trên Arduino UNO có thể được đo ở chân
này, nó ln là 5V. Mặc dù vậy không thể lấy nguồn 5V từ chân này để sử dụng bởi chức
năng của nó khơng phải là cấp nguồn.
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Ω.
Bộ nhớ của Arduino Uno R3 (vi điều khiển ATmega 328):

CẢM BIẾN ÁP SUẤT ÁP TRỞ


13


32KB bộ nhớ Flash: những đoạn lệnh được lập trình sẽ được lưu trữ trong bộ nhớ Flash
của vi điều khiển. Thường thì sẽ có khoảng vài KB trong số này sẽ được dùng cho
bootloader.
2KB cho SRAM (Static Random Access Memory): giá trị các biến bạn khai báo khi lập
trình sẽ lưu ở đây. Khai báo càng nhiều biến thì càng cần nhiều bộ nhớ RAM. Khi mất điện,
dữ liệu trên SRAM sẽ bị mất.
1KB cho EEPROM (Electrically Eraseble Programmable Read Only Memory): đây
giống như một chiếc ổ cứng mini – nơi có thể đọc và ghi dữ liệu vào đây mà không phải lo
bị mất khi cúp điện giống như dữ liệu trên SRAM.
Các cổng vào/ra:
Arduino UNO có 14 chân digital dùng để đọc hoặc xuất tín hiệu. Chúng chỉ có 2 mức
điện áp là 0V và 5V với dòng vào/ra tối đa trên mỗi chân là 40mA. Ở mỗi chân đều có các
điện trở pull-up từ được cài đặt ngay trong vi điều khiển ATmega328 (mặc định thì các điện
trở này không được kết nối).
Một số chân digital có các chức năng đặc biệt:
2 chân Serial: 0 (RX) và 1 (TX): dùng để gửi (transmit – TX) và nhận (receive – RX) dữ
liệu TTL Serial. Arduino Uno có thể giao tiếp với thiết bị khác thông qua 2 chân này. Kết
nối bluetooth thường thấy chính là kết nối Serial không dây. Nếu không cần giao tiếp Serial,
không nên sử dụng 2 chân này nếu không cần thiết.
Chân PWM (~): 3, 5, 6, 9, 10, và 11: cho phép xuất ra xung PWM với độ phân giải 8 bit
(giá trị từ 0 → 28-1 tương ứng với 0V → 5V) bằng hàm analogWrite(). Có thể điều chỉnh
được điện áp ra ở các chân này từ mức 0V đến 5V thay vì chỉ cố định ở mức 0V và 5V như
những chân khác.
Chân giao tiếp SPI: 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK). Ngồi các chức năng
thơng thường, 4 chân này còn dùng để truyền phát dữ liệu bằng giao thức SPI với các thiết
bị khác.
LED 13: trên Arduino UNO có 1 đèn led màu cam (kí hiệu chữ L). Khi bấm nút Reset,

sẽ thấy đèn này nhấp nháy để báo hiệu. Nó được nối với chân số 13. Khi chân này được
người dùng sử dụng, LED sẽ sáng.
Arduino UNO có 6 chân analog (A0 → A5) cung cấp độ phân giải tín hiệu 10 bit (0 →
2 -1) để đọc giá trị điện áp trong khoảng 0V → 5V. Với chân AREF trên board, có thể để
đưa vào điện áp tham chiếu khi sử dụng các chân analog. Tức là nếu cấp điện áp 2.5V vào
chân này thì vẫn có thể dùng các chân analog để đo điện áp trong khoảng từ 0V → 2.5V với
độ phân giải vẫn là 10 bit.
10

Đặc biệt, Arduino UNO có 2 chân A4 (SDA) và A5 (SCL) hỗ trợ giao tiếp I2C/TWI với
các thiết bị khác.
Để lập trình cho các board mạch Arduino ta dùng IDE Arduino.
2.2.4. Lựa chọn phần hiển thị kết quả đo
Chọn LCD 16x2 làm nhiệm vụ hiển thị kết quả đo.
Chân VSS nối đất (ground).
CẢM BIẾN ÁP SUẤT ÁP TRỞ

14


Chân VDD nối với nguồn 5V.
Chân VEE (hay V0) có tác dụng điều chỉnh độ sáng của màn hình LCD được nối với
biến trở.
Chân RS là chân thanh ghi lựa chọn tín hiệu, chân này nối với chân 12 của Arduino.
Chân R/W là chân lựa chọn tín hiệu đọc/ghi, được nối với Ground.
Chân E (enable) là chân cho phép tín hiệu đọc/ghi được thực thi hay không, chân này
được nối với chân 11 của Arduino.
Chân DB0-DB3 là các chân tín hiệu của LCD, được dùng để truyền tải tín hiệu giữa vi
điều khiển và LCD, bốn chân này cùng với bốn chân DB4-DB7 được sử dụng trong chế độ
truyền tín hiệu 8-bit, ở chế độ 4-bit chúng không được sử dụng.

Chân DB4-DB7 là các chân tín hiệu của LCD, ngồi việc được sử dụng ở chế độ 8-bit
chúng còn được sử dụng để truyền tải tín hiệu ở chế độ 4-bit, và do đó trong trường hợp
dùng Arduino UNO R3 để xử lý tín hiệu em sẽ dùng bốn chân này để kết nối với các chân
digital 5-digital 2 trên Arduino.
Chân A (anot) và chân K (katot) là các chân cấp nguồn cho đèn nền của LCD. Chân A
nối với nguồn 5V, chân K nối Ground.

LCD 16x2
2.2.5. Mô phỏng mạch đo bằng phần mềm Proteus

CẢM BIẾN ÁP SUẤT ÁP TRỞ

15


Mô phỏng cảm biến BMP180

Mô phỏng cảm biến MPS20N004D

3. Phần code
3.1. BMP180
#include <SFE_BMP180.h>
CẢM BIẾN ÁP SUẤT ÁP TRỞ

16


#include <Wire.h>
#include<LiquidCrystal.h>
SFE_BMP180 pressure;

#define ALTITUDE 943.7
// khởi tạo các chân kết nối giữa Arduino và LCD
const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
byte degree[8] = {
0B01110,
0B01010,
0B01110,
0B00000,
0B00000,
0B00000,
0B00000,
0B00000
};

//ký tự độ C

void setup() {
lcd.begin(16,2);

//khởi tạo LCD

lcd.createChar(1, degree); //hàm khởi tạo ký tự độ C
lcd.setCursor(2,0); //đặt con trỏ ở vị trí cột 2 dịng 0
lcd.print("BAI TAP LON");
lcd.setCursor(0,1);
lcd.print("CAM BIEN VA HE THONG DO");
for (int positionCounter = 0; positionCounter < 7; positionCounter++) {
//cuộn sang trái 7 vị trí
lcd.scrollDisplayLeft();

delay(800);
CẢM BIẾN ÁP SUẤT ÁP TRỞ

17


}
for (int positionCounter = 0; positionCounter < 7; positionCounter++) {
// cuộn sang phải 7 vị trí
lcd.scrollDisplayRight();
delay(800);
}
delay(2000);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("CAM BIEN AP SUAT");
lcd.setCursor(5,1);
lcd.print("BMP180");
delay(2000);
lcd.clear();
Serial.begin(9600);
if(pressure.begin())
lcd.print("BMP180 is OK");
else
{
lcd.print("BMP180 init fail");
lcd.setCursor(0,1);
lcd.print("Check connection");
while (1);
}

delay(2000);
lcd.clear();
}
void loop() {
char status;
CẢM BIẾN ÁP SUẤT ÁP TRỞ

18


double T, P, p0, a;
status = pressure.startTemperature(); //lấy tín hiệu nhiệt độ từ cảm biến
if (status != 0)
{
delay(status);

//giữ tín hiệu nhiệt độ

status = pressure.getTemperature(T); //lưu giá trị nhiệt độ đo được vào biến T
if (status != 0)
{
lcd.print("Nhiet Do: ");
lcd.print(T,1);

//in giá trị nhiệt độ lên LCD

lcd.write(1);

//in ký tự độ C


lcd.print("C");
status = pressure.startPressure(3);

//đọc giá trị áp suất từ cảm biến

if (status != 0)
{
delay(status);

//giữ tín hiệu áp suất

status = pressure.getPressure(P, T); //lưu giá trị áp suất đo được vào biến P
if (status != 0)
{
lcd.setCursor(0,1);
lcd.print("Pabs: ");
lcd.print(P,0);

//in giá trị áp suất tuyệt đối lên LCD
//giá trị áp suất đo được làm tròn đến hàng đơn vị

lcd.print(" hPa");

//đơn vị áp suất

delay(4000);
lcd.clear();
p0 = pressure.sealevel(P, ALTITUDE); // áp suất tại mực nước biển
lcd.print("Prel: ");


//in giá trị áp suất tương đối lên màn hình LCD

lcd.print(p0, 0);
lcd.print(" hPa");;
a = pressure.altitude(P, p0); //đo độ cao của thiết bị so với mực nước biển
lcd.setCursor(0,1);
CẢM BIẾN ÁP SUẤT ÁP TRỞ

19


lcd.print("Do cao: "); //in giá trị độ cao
lcd.print(a, 0);
lcd.print(" m");
delay(4000);
lcd.clear();
}
else lcd.print("viec do bi loi");
}
else lcd.print("viec do bi loi");
}
else lcd.print("viec do bi loi");
}
else lcd.print("viec do bi loi");
}
3.2. MPS20N004D
#include <HX711.h>
#include <LiquidCrystal.h>

//khai báo thư viện cho module HX711

//khai báo thư viện cho LCD

// nối dây cho chân đầu ra và chân clock của HX711 tới Arduino
const int LOADCELL_DOUT_PIN = 2;
của Arduino để truyền dữ liệu digital */

/*chân DOUT của HX711 được nối tới chân 2

const int LOADCELL_SCK_PIN = 3; /*chân SCK của HX711 được nối tới chân 3 của
Arduino để truyền dữ liệu clock */
//cấu hình chân cho LCD
const int rs = 12, en = 11, d4 = 10, d5 = 9, d6 = 8, d7 = 7;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);

HX711 scale;

//khai báo phần tử scale của HX711

void setup() {
CẢM BIẾN ÁP SUẤT ÁP TRỞ

20


Serial.begin(38400);

//cài đặt tốc độ truyền dữ liệu giữa Arduino và HX711

lcd.print("HX711 Demo");//hiển thị lên màn hình LCD
delay(500);


//delay 500ms

lcd.clear();

//xố tồn bộ màn hình

lcd.print("Initializing the scale");
delay(500);
lcd.clear();
// Khởi tạo dữ liệu cho chân đầu ra tín hiệu, đầu ra clock và chọn hệ số khuếch đại
// mặc định kênh A được chọn
scale.begin(LOADCELL_DOUT_PIN, LOADCELL_SCK_PIN);
lcd.print("Before setting up the scale:");
delay(500);
lcd.clear();
lcd.print("read: \t\t");
delay(500);
lcd.clear();
lcd.print(scale.read());

// in dữ liệu thô từ ADC

delay(500);
lcd.clear();
lcd.print("read average: \t\t");

//in giá trị trung bình đã đo được

delay(200);

lcd.clear();
lcd.print(scale.read_average(20)); // in giá trị trung bình của 20 lần đọc dữ liệu từ ADC
delay(500);
lcd.clear();
lcd.print("get value: \t\t");
delay(500);
lcd.clear();
CẢM BIẾN ÁP SUẤT ÁP TRỞ

21


lcd.print(scale.get_value(5));
// in giá trị trung bình của 5 lần đọc từ ADC trừ đi áp
suất tác động ban đầu (áp suất khí quyển).
delay(500);
lcd.clear();
lcd.print("get units: \t\t");
delay(500);
lcd.clear();
lcd.print(scale.get_units(5), 1);//in giá trị trung bình đọc được 5 lần từ ADC trừ đi áp suất
tác động ban đầu được chia bởi tham số SCALE.
delay(500);
lcd.clear();
scale.set_scale(105.f);

/*giá trị này được hiểu chuẩn từ áp suất khí quyển đã biết */

scale.tare();


// reset scale về 0

lcd.print("After setting up the scale:");
delay(200);
lcd.clear();
lcd.print("read: \t\t");
delay(200);
lcd.clear();
lcd.print(scale.read());

//in dữ liệu thô từ ADC

delay(200);
lcd.clear();
lcd.print("read average: \t\t");
delay(200);
lcd.clear();
lcd.print(scale.read_average(20));

//in giá trị trung bình của 20 lần đọc từ ADC

delay(500);
lcd.clear();
lcd.print("get value: \t\t");
CẢM BIẾN ÁP SUẤT ÁP TRỞ

22


delay(200);

lcd.clear();
lcd.print(scale.get_value(5));
/* in giá trị trung bình của 5 lần đọc của ADC trừ đi giá
trị áp suất khí quyển đã thiết lập với hàm tare().*/
delay(200);
lcd.clear();
lcd.print("get units: \t\t");
delay(200);
lcd.clear();
lcd.print(scale.get_units(5), 1);
/*in giá trị trung bình của 5 lần đọc từ ADC trừ đi áp
suất ban đầu, được phân chia bởi tham số SCALE được thiết lập bởi set_scale*/
delay(200);
lcd.clear();
lcd.print("Readings:");
delay(200);
lcd.clear();
}
void loop() {
lcd.print("one reading:\t");
delay(500);
lcd.clear();
lcd.print("P= ");
lcd.print(scale.get_units(), 1);

//in giá trị áp suất

lcd.print(" Pa");
delay(500);
lcd.clear();

lcd.print("\t average:\t");
delay(500);
CẢM BIẾN ÁP SUẤT ÁP TRỞ

23


lcd.clear();
lcd.print("P= ");
lcd.print(scale.get_units(10), 1);

//in giá trị áp suất trung bình trong 10 lần đọc

lcd.print(" Pa");
delay(1000);
lcd.clear();
scale.power_down();

// đặt ADC trong chế độ ngủ

delay(2000);
scale.power_up(); //đặt ADC trở về chế độ hoạt động
}

4. Tài liệu tham khảo
MEMS Pressure Sensors | The Design Engineer's Guide | Avnet Abacus
Piezoresistive Pressure Sensors | The Design Engineer's Guide | Avnet Abacus
BMP180 data sheet.
Giáo trình cảm biến và hệ thống đo - Trường Đại học Công Nghiệp Hà Nội.
Arduino Uno R3 datasheet.

HX711 datasheet.
MPS20N004D sensor datasheet.
LCD16x2 datasheet.

CẢM BIẾN ÁP SUẤT ÁP TRỞ

24



×