Đo áp suất bằng vi xử lý 8051 và cảm biến MPX4115 hiển thị LCD có cảnh báo áp suất và điều chỉnh giá trị cảnh báo qua bàn phím. Có hai ngưỡng cảnh báo là cảnh báo áp suất cao và cảnh báo áp suất thấp. Tín hiệu cảnh báo qua loa và đèn
Trang 11
Lê Bảo Long
Mục lục
Chương 1: Cơ sở lý thuyết 3
1.1 Mục đích và yêu cầu 3
1.2 Các phương pháp đo 3
1.2.1 Áp kế dùng dịch thể 3
1.2.2 Áp kế kiểu đàn hồi 3
1.3 Các linh kiện dùng trong bài toán 4
1.3.1 Vi điều khiển AT89C51 4
1.3.2 Màn hình LCD16x2 5
1.3.3 Cảm biến áp suất MPX4115 7
1.3.4 ADC0804 11
1.3.5 Vi mạch giải mã bàn phím 74148 12
1.3.6 Bộ nhân logic SN74LS08 13
1.3.7 Tụ điện 14
1.3.8 Thạch anh 14
1.3.9 Điện trở 14
1.3.10 Biến trở 14
1.3.11 Nút ấn 14
1.3.12 Transistor 2N3906 TO92 14
1.3.13 Đèn led 14
1.3.14 Buzzer (Còi chíp) 14
1.4 Khái quát về họ vi điều khiển 8051 15
1.4.1 Lich sử của 8051 15
1.4.2 Kiến trúc phần cứng của 8051 15
1.4.3 Ý nghĩa các chân của 8051 16
1.4.4 Các thanh ghi đặc biệt 17
Chương 2: Thiết kế hệ thống 19
2.1 Sơ đồ khối và mạch nguyên lý 19
2.1.1 Sơ đồ khối 19
2.1.2 Mạch nguyên lý 20
2.2 Xây dựng thuật toán 21
2.2.1 Khai báo đầu chương trình 21
Trang 22
Lê Bảo Long
2.2.2 Lưu đồ thuật toán hàm đọc giá trị từ ADC0804 22
2.2.3 Lưu đồ thuật toán hàm delay_us 23
2.2.4 Lưu đồ thuật toán hàm delay_ms 23
2.2.5 Lưu đồ thuật toán hàm bật LCD 23
2.2.6 Lưu đồ thuật toán hàm gửi một lệnh cho LCD 24
2.2.7 Lưu đồ thuật toán hàm xóa màn hình LCD 24
2.2.8 Lưu đồ thuật toán hàm khởi tạo chế độ 8 bit LCD 24
2.2.9 Lưu đồ thuật toán hàm khởi tạo LCD 25
2.2.10 Lưu đồ thuật toán hàm dịch chuyển con trỏ LCD 26
2.2.11 Lưu đồ thuật toán hàm viết một ký tự ra LCD 26
2.2.12 Lưu đồ thuật toán hàm gửi một chuỗi ra LCD 27
2.2.13 Lưu đồ thuật toán hàm gửi một số ra LCD 27
2.2.14 Lưu đồ thuật toán hàm khởi tạo 27
2.2.15 Lưu đồ thuật toán hàm điều chỉnh giá trị cảnh báo 28
2.2.16 Lưu đồ thuật toán chương trình con phục vụ ngắt 29
2.2.17 Lưu đồ thuật toán chương trình chính 30
2.3 Xây dựng phần mềm 31
2.4 Mạch in 40
2.5 Hình ảnh thiết bị qua phần mềm Altium 40
2.5.1 Mặt trên khi có linh kiện 41
2.5.2 Mặt trên khi chưa hàn linh kiện 41
2.5.3 Mặt dưới 42
Chương 3: Hướng dẫn sử dụng sản phẩm 43
Trang 33
Lê Bảo Long
Chương 1: Cơ sở lý thuyết
1.1 Mục đích và yêu cầu
Trong công nghiệp luyện kim sử dụng nhiều các thiết bị thủy lực và khí nén, để
hệ thống làm việc bình thường phải đo và kiểm tra áp suất một cách liên tục, nếu áp suất chất lỏng, khí hoặc hơi vượt quá một giới hạn nhất định có thể ảnh hưởng xấu đến hoạt động của thiết bị, thậm chí có thể làm hỏng hoặc nổ bình chứa, đường ống dẫn gây thiệt hại nghiêm trọng Bởi vậy, việc đo áp suất chất lưu có ý nghĩa rất lớn trong việc đảm bảo an toàn cho thiết bị cũng như giúp cho việc kiểm tra và điều khiển hoạt động của máy móc thiết bị có sử dụng chất lưu
1.2 Các phương pháp đo
Ở đây do sử dụng sensor MPX4115 là sensor dùng nguyên lý đàn hồi nên ta chỉ xét tập trung vào phương pháp sử dụng nguyên lý này Các phương pháp khác chỉ nêu mang tính chất tham khảo
Màng phẳng Màng uốn nếp
Độ võng của màng phẳng dưới tác dụng của áp suất lên màng theo công thức:
2 3
3116
pR v Yh
Trang 44
Lê Bảo Long
Màng uốn nếp có đặc tính phi tuyến nhỏ hơn màng phẳng nên có thể được sử dụng độ võng lớn hơn màng phẳng
Độ võng của tâm màng uốn nếp được xác định theo công thức:
Khi đo áp suất nhỏ người ta dùng màng dẻo hình tròn phẳng hoặc uốn nếp, chế tạo từ vải tấm cao su Trong một số trường hợp người ta dùng màng dẻo tâm cứng, khi
đó ở tấm màng được kẹp cứng bởi hai tấm kim loại
1.3 Các linh kiện dùng trong bài toán
1.3.1 Vi điều khiển AT89C51
- AT89C51 là một hệ vi tính 8 bit đơn chíp CMOS có hiệu suất cao, công suất nguồn tiêu thụ thấp và có 4Kbyte bộ nhớ ROM Flash xoá được lập trình được Chip này được sản xuất dựa vào công nghệ bộ nhớ không mất nội dung có độ tích hợp cao của Atmel
- Chip AT89C51 cũng tương thích với tập lệnh và các chân ra của chuẩn công nghiệp MCS-51 Flash trên chip này cho phép bộ nhớ chương trình được lập trình lại trên hệ thống hoặc bằng bộ lập trình bộ nhớ không mất nội dung qui ước Bằng cách kết hợp một CPU linh hoạt 8 bit với Flash trên một chip đơn thể,
Trang 55
Lê Bảo Long
Atmel 89C51 là một hệ vi tính 8 bit đơn chip mạnh cho ta một giải pháp có hiệu quả về chi phí và rất linh hoạt đối với các ứng dụng điều khiển
- AT89C51 có các đặc trưng sau: 4Kbyte Flash, 128byte Ram, 32 đường xuất nhập, hai bộ định thời 16 bit, một cấu trúc ngắt 2 mức ưu tiên và 5 nguyên nhân ngắt, một port nối tiếp song công, mạch dao động và tạo xung clock trên chip
- 128 Byte RAM nội
- 4 Port xuất /nhập I/O 8 bit
- Giao tiếp nối tiếp
- 64 KB vùng nhớ mã ngoài
- 64 KB vùng nhớ dữ liệu ngoại
- Xử lý Boolean (hoạt động trên bit đơn)
- 210 vị trí nhớ có thể định vị bit
- 4 us cho hoạt động nhân hoặc chia
Chi tiết xem thêm tại:
Trang 66
Lê Bảo Long
- Có đèn led nền, có thể dùng biến trở hoặc PWM điều chình độ sáng để sử
dụng ít điện năng hơn
- Có thể được điều khiển với 6 dây tín hiệu
- Có bộ ký tự được xây dựng hổ trợ tiếng Anh và tiếng Nhật
4 RS Lựa chọn thanh ghi RS=0 (mức thấp) chọn thanh ghi lệnh
RS=1 (mức cao) chọn thanh ghi dữ liệu
Trang 7Cảm biến áp suất MPX4115 được thiết kế để cảm nhận áp suất không khí tuyệt
đối trong một máy đo độ cao hoặc một ướng dung thước đo Người sử dụng có thể
ghép nối MPX4115 với một vi điều khiển hoặc đầu vào của một bộ ADC
Sơ đồ các khối của cảm biến
Trang 88
Lê Bảo Long
Đặc điểm hoạt động
Characteristic Symbol Min Typ Max Unit
Minimum Pressure Offset (0 to 85°C)
Đầu ra so với áp suất tuyệt đối
Giá trị chuyển đổi:
Vout = VS (P x 0,009 – 0,095) ± (Pressure Error x Temp Factor x 0,009 x VS)
VS = 5,1 V ± 0.25 Vdc
Trang 99
Lê Bảo Long
Sai số do nhiệt độ:
Mức sai số cho phép:
Trang 11+ Chân CS- chọn chíp: Là một đầu vào tích cực mức thấp được sử dụng để kích
hoạt chíp ADC0804 Để truy cập ADC 0804 thì chân này phải ở mức thấp
+ Chân RD (đọc): Đây là một tín hiệu đầu vào được tích cực mức thấp Các bộ
ADC chuyển đổi đầu vào tương tự thành số nhị phân tương đương với nó và giữ nó trong một thanh ghi trong được sử dụng để nhận dữ liệu được chuyển đổi ở đầu ra của ADC 0804 Khi CS = 0 nếu một xung cao - xuống - thấp được áp đến chân thì đầu ra
số 8 bít được hiển diện ở các chân dữ liệu D0 - D7 Chân cũng được coi như cho phép đầu ra
+ Chân WR ghi (thực ra tên chính xác là “Bắt đầu chuyển đổi”): Đây là chân
đầu vào tích cực mức thấp được dùng để báo cho ADC 0804 bắt đầu quá trình chuyển đổi Nếu CS = 0 khi tạo ra xung 0 lên 1 thì bộ ADC 0804 bắt đầu chuyển đổi giá trị đầu vào tương tự Vin về số nhị phân 8 bit Lượng thời gian cần thiết để chuyển đổi thay đổi phụ thuộc vào tần số đưa đến chân CLK IN và CLK R Khi việc chuyển đổi dữ liệu được hoàn tất thì chân INTR được ép xuống thấp bởi ADC 0804
+ Chân CLK IN và CLK R: Chân CLK IN là một chân đầu vào được nối tới
một nguồn đồng hồ ngoài khi đồng hồ ngoài được sử dụng để tạo ra thời gian Tuy nhiên 0804 cũng có một bộ tạo xung đồng hồ Để sử dụng bộ tạo xung đồng hồ trong (cũng còn được gọi là bộ tạo đồng hồ riêng) của 0804 thì các chân CLK IN và CLK R được nối tới một tụ điện và một điện trở như chỉ ra trên hình Trong trường hợp này tần số đồng hồ được xác định bằng biểu thức: f = 1/(1.1xRC)
Giá trị tiêu biểu của các đại lượng trên là R = 10kW và C= 150pF và tần số nhận được
là f = 606kHz và thời gian chuyển đổi sẽ mất là 110ms
Trang 1212
Lê Bảo Long
+ Chân ngắt INTR (ngắt hay gọi chính xác hơn là “kết thúc chuyển đổi”): Đây
là chân đầu ra tích cực mức thấp Bình thường nó ở trạng thái cao và khi việc chuyển đổi hoàn tất thì nó xuống thấp để báo cho CPU biết là dữ liệu được chuyển đổi sẵn sàng
để lấy đi Sau khi xuống thấp, ta đặt CS = 0 và gửi một xung cao 0 xuống - thấp tới
chân lấy dữ liệu ra của 0804
+ Chân V in (+) và V in (-): Đây là các đầu vào tương tự vi sai mà Vin = Vin (+) -
Vin (-) Thông thường Vin (-) được nối xuống đất và Vin (+) được dùng như đầu vào
tương tự được chuyển đổi về dạng số
+ Chân V CC : Đây là chân nguồn nuôi +5v, nó cũng được dùng như điện áp tham
chiếu khi đầu vào Vref/2 (chân 9) để hở
+ Chân V ref/2 : Chân 9 là một điện áp đầu vào được dùng cho điện áp tham chiếu
Nếu chân này hở (không được nối) thì điện áp đầu vào tương tự cho ADC 0804 nằm trong dải 0 đến +5v (giống như chân VCC) Tuy nhiên, có nhiều ứng dụng mà đầu vào tương tự áp đến Vin cần phải khác ngoài dải 0 đến 5v Chân Vref/2 đượcdùng để thực thi các điện áp đầu vào khác ngoài dải 0 - 5v Ví dụ, nếu dải đầu vào tương tự cần phải là
0 đến 4v thì Vref/2 được nối với +2v
+ Các chân D0-D7: các chân data
Sơ đồ đấu nối:
Chi tiết hơn về ADC 0804 xem thêm tại:
Trang 1313
Lê Bảo Long
GS: Khi một trong các đầu vào tích cực thì chân này chuyển từ mức 1 xuống
mức 0
EO: Khi một trong các đầu vào tích cực thì chân này chuyển từ mức 0 lên mức 1
Bảng nguyên lý mô tả hoạt động 74148
Chức năng: IC SN74LS08 là mạch tích hợp dùng để nhân logic hai tín hiệu đầu
vào và trả về kết quả nhân ở chân đầu ra
Sơ đồ chân:
1A-1B÷4A-4B: đầu vào tín hiệu logic cần nhân
Y1÷Y4: kết quả của phép nhân logic tương ưng
Vcc: chân cấp nguồn cho IC hoạt động, hỗ trợ nguồn 5V
GND: chân nối đất
Sơ đồ chân SN74LS08 Thông số kỹ thuật:
- Điện áp nguồn cấp hỗ trợ: 5V
- Điện áp vào mức cao: >2V
Trang 14- Số lượng tụ điện được sử dụng như sau:
- Tụ điện 2,2uF: 6 cái
Trang 1515
Lê Bảo Long
- Phát tiếng bip liên tục khi được cấp nguồn
1.4 Khái quát về họ vi điều khiển 8051
1.4.2 Kiến trúc phần cứng của 8051
ROM: là loại bộ nhớ không mất dữ liệu khi mất nguồn cung cấp, được gọi là bộ
nhớ chương trình bên trong có dung lượng 4 Kb dùng để lưu giữ các mã lệnh của chương trình
RAM: bộ nhớ dữ liêu bên trong có dung lượng 128 byte đối với 8051, 256 byte
đối với 8052 dùng để lưu trữ dữ liệu như biến số, hằng số, bộ đệm truyền thông, …
Timer 0, Timer 1: là hai bộ đếm thời gian hoặc là bộ đếm xung, với 8052 có
thêm Timer 2
Serial port: là cổng truyền thông nối tiếp với 2 chân TXD và RXD
Trang 1616
Lê Bảo Long
OSC: bộ phát xung nhịp nhằm tạo sự làm việc một cách đồng bộ cho cả hệ thống
vi điều khiển
BUS: khối điều khiển các bus địa chỉ (Address Bus), bus dữ liệu (Data Bus) và
bus điều khiển (Control Bus)
1.4.3 Ý nghĩa các chân của 8051
- Port 0 (P0.0 ÷ P0.7): bao gồm 8 chân, ngoài chức năng xuất nhập, Port 0 còn
là bus đa hợp dữ liệu và địa chỉ (AD0-AD7), chức năng này sẽ được sử dụng khi
8051 giao tiếp với các thiết bị ngoài có kiến trúc Bus như các vi mạch nhớ, mạch
PIO, …
- Port 1 (P1.0 ÷ P1.7): chức năng duy nhất của Port là nhập xuất
- Port 2 (P2.0 ÷ P2.7): ngoài chức năng là cổng vào ra như Port 0 và Port 1 còn
là byte cao của bus địa chỉ khi sử dụng bộ nhớ ngoài
- Port 3 (P3.0 ÷ P3.7): mỗi chân trên Port 3 ngoài chức năng xuất nhập còn có
một chức năng riêng, cụ thể như sau:
P3.0 RXD Nhận dữ liệu cho Port nối tiếp P3.1 TXD Truyền dữ liệu cho Port nối tiêp
P3.6 /WR Xung ghi bộ nhớ dữ liệu ngoài P3.7 /RD Xung đọc bộ nhớ dữ liệu ngoài
- Chân /PSEN (Program Store Enable): là chân điều khiển đọc chương trình ở
bộ nhớ ngoài, nó được nối với chân /OE để cho phép đọc các byte mã lệnh trên ROM ngoài /PSEN sẽ ở mức thấp trong thời gian đọc mã lệnh Mã lệnh được đọc từ bộ nhớ ngoài qua bus dữ liệu (port 0) thanh ghi lệnh để được giải mã
Trang 1717
Lê Bảo Long
Khi thực hiện chương trình trong ROM nội thì PSEN ở mức cao
- Chân ALE (Address Latch Enable): là tín hiệu điều khiển chốt địa chỉ có tần
số bằng 1/6 tần số dao động của vi điều khiển Tín hiệu ALE được dùng để cho phép
vi mạch chốt bên ngoài như 74373, 74573 chốt byte địa chỉ thấp ra khỏi bus đa hợp địa chỉ/dữ liệu (Port 0)
- Chân (EA (External Access): tín hiệu VEA cho phép chọn bộ nhớ chương trình
là bộ nhớ trong hay ngoài vi điều khiển Nếu EA ở mức cao (nối với Vcc), thì vị điều khiển thi hành chương trình trong ROM nội Nếu /EA ở mức thấp (nối GND) thì vi điều khiển thi hành chương trình từ bộ nhớ ngoài
- Chân RST (Reset): ngõ vào RST trên chân 9 là ngõ reset của 8051 Khi tín hiệu
này được đưa lên mức cao (trong ít nhất 2 chu kỳ máy), các thanh ghi trong bộ vi điều khiển được tải những giá trị thích hợp để khởi động hệ thống
- Chân XTAL1, XTAL2: nó được nối với bộ dao động thạch anh có tần số lớn
nhất là 33MHz, thông thường là 12MHz
- Chân Vcc, GND: là chân cấp nguồn
1.4.4 Các thanh ghi đặc biệt
8051 có 21 thanh ghi chức năng đặc biệt SFR chiếm phần trên của Ram nội từ địa chỉ 80H đến FFH Cần lưu ý là không phải tất cả 128 địa chỉ từ 80H đến FFH đều được định nghĩa mà chỉ có 21 địa chỉ được định nghĩa
B, A (thanh chứa A cất byte thấp và thanh ghi B cất byte cao)
Lệnh chia DIV AB chia A bởi B, thương số cất trong thanh chứa A và dư số cất trong thanh ghi B Thanh ghi B còn được xử lý như một thanh ghi nháp Các bit được định địa chỉ của thanh ghi B có địa chỉ từ F0H đến F7H
Thanh ghi trạng thái chương trình (PSW):
Thanh ghi trạng thái chương trình PSW (địa chỉ: D0H) là thanh ghi mô tả toàn bộ trạng thái chương trình đang hoạt động của hệ thống
Thanh ghi ngăn xếp (Stack Pointer):
Con trỏ stack SP (stack pointer) là 1 thanh ghi 8 bit ở địa chỉ 81H SP chứa địa chỉ của dữ liệu hiện đang ở đỉnh của stack Các lệnh liên quan đến satck bao gồm lệnh cất dữ liệu vào stack và lệnh lấy dữ liệu ra khỏi stack Việc cất vào stack làm tăng SP trước khi ghi dữ liệu và việc lấy dữ liệu ra khỏi stack sẽ giảm SP Vùng stack của 8051 được giữ trong RAM nội và được giới hạn đến các địa chỉ truy xuất được bởi kiểu định
Trang 1818
Lê Bảo Long
địa chỉ gián tiếp Các lệnh PUSH và POP sẽ cất dữ liệu vào stack và lấy dữ liệu từ stack, các lệnh gọi chương trình con (ACALL, LCALL) và lệnh trở về (RET, RETI) cũng cất và phục hồi nội dung của bộ đếm chương trình PC (Program counter)
Con trỏ dữ liệu DPTR:
Con trỏ dữ liệu DPTR (data pointer) được dùng để truy xuất bộ nhớ chương trình ngoài hoặc bộ nhớ dữ liệu ngoài DPTR là một thanh ghi 16 bit có địa chỉ là 82H (DPL, byte thấp) và 83H (DPH, byte cao)
Thanh ghi các cổng P0-P3:
Các port xuất/nhập của 8051 bao gồm Port 0 tại địa chỉ 80H, Port 1 tại địa chỉ 90H, Port 2 tại địa chỉ A0H và Port 3 tại địa chỉ B0H Tất cả các port đều được định địa chỉ từng bit nhằm cung cấp các khả năng giao tiếp mạnh
Thanh ghi bộ đệm truyền thông nối tiếp (Serial Data Buffer):
Bộ đệm truyền thông được chia thành hai bộ đệm, bộ đệm truyền dữ liệu và bộ đệm nhận dữ liệu Khi dữ liệu được chuyển vào thanh ghi SBUF, dữ liệu sẽ được chuyển vào bộ đệm truyền dữ liệu và sẽ được lưu giữ ở đó cho đến khi quá trình truyền
dữ liệu qua truyền thông nối tiếp kết thúc Khi thực hiện việc chuyển dữ liệu từ SBUF
ra ngoài, dữ liệu sẽ được lấy từ bộ đệm nhận dữ liệu của truyền thông nối tiếp
Thanh ghi của bộ định thời/bộ đếm:
8051 có 2 bộ đếm/định thời (counter/timer) 16 bit để định các khoảng thời gian hoặc để đếm các sự kiện Các cặp thanh ghi (TH0, TL0) và (TH1, TL1) là các thanh ghi của bộ đếm thời gian Bộ định thời 0 có địa chỉ 8AH (TL0, byte thấp) và 8CH (TH0, byte cao) Bộ định thời 1 có địa chỉ 8BH (TL1, byte thấp) và 8DH (TH1, byte cao)
Hoạt động của bộ định thời được thiết lập bởi thanh ghi chế độ định thời TMOD (Timer Mode Register) ở địa chỉ 88H Chỉ có TCON được định địa chỉ từng bit
Các thanh ghi điều khiển:
Các thanh ghi điều khiển đặc biệt như IP, IE, TMOD, TCON, SCON và PCON
là các thanh ghi điều khiển và ghi nhận trạng thái của hệ thống ngắt, bộ đếm/định thời, truyền thông nối tiếp
Trang 19- Khối cảm biến: đo áp suất môi trường
- Khối ADC: chuyển tín hiệu tương tự sang tín hiệu số
- 8051: Điều khiển ADC, LCD, Cảnh báo và nhận lệnh điều chỉnh giá trị cảnh
báo từ khối Điều chỉnh giá trị áp suất cảnh báo
- Khối điều chỉnh giá trị áp suất cảnh báo: cấp tín hiệu điều chỉnh cho 8051
- Khối LCD: Hiển thị các giá trị được gửi tới từ 8051
Trang 2020
Lê Bảo Long
2.1.2 Mạch nguyên lý
Trang 2121
Lê Bảo Long
2.2 Xây dựng thuật toán
2.2.1 Khai báo đầu chương trình
//Khai bao canh bao
#define DigitalLEDHIGH P2_3 //Chan xuat tin hieu canh bao nguong ap
suat cao
#define DigitalLEDLOW P2_4 //Chan xuat tin hieu canh bao nguong ap
suat thap
//Khai bao bien luu gia tri tuong tu va gia tri chuyen doi
float Vout, Pressure;
char ConvertPressure[4];
//Khai bao gia tri nguong canh bao mac dinh
int ValueHIGH = 90, ValueLOW = 17;
// Gia tri canh bao ap suat cao và thap mac dinh