Chương 1: Giới thiệu về vấn đề đo điện áp xoay chiều.
1.1. Khái niệm đo điện áp.
Đo điện áp là ta dùng một thiết bị có khả năng chuyển từ tín hiệu tương tự sang
một tín hiệu khác mà chúng ta có thể đọc nhìn thấy được giá trị của chúng một
cách cụ thể nhất.
1.2. Các phương pháp đo điện áp, hoạt động mạch đo điện áp.
Có nhiều cách mà chúng ta có thể đo được điện áp 2 cách mà chúng ta thường
sử dụng đó là:
+ Dùng các loại đồng hồ đo
+ Sử dụng mạch vi xử lý
1.3Các đặc điểm của hệ vi xử lý 89C51.
Vi điều khiển (VĐK) là một hệ vi xử lý được tổ chức trong một chíp. Nó
bao gồm:
+ Bộ vi xử lý
+ Có 40 chân
+ 4 kbyte ROM. 1, có thể ghi xoá được 1000 lần
+ 4 kbyte EPROM.
+ Dải tần số hoạt động từ 0MHz đến 24Mhz
+ Có 4 port xuất nhập (I/O) 8 bit
+ Có 128 byte RAM
+ 2 bộ định thời 16 bit
+ Mạch giao tiếp nối tiếp
+ Không gian nhớ chương trình (mã) ngoài 64k byte.
+ Không gian nhớ Data ngoài 64k byte.
+ Bộ xử lý bit thao tác trên các bit riêng.
+ 210 vị trí nhớ định địa chỉ, mỗi vị trí một bit.
+ Các thanh ghi chức năng, cơ chế điều khiển ngắt .
+ Các bộ thời gian dùng trong limh vực chia tần số và tạo thời gian thực.
+ Có thể lập trình được qua cổng nối tiếp
+ Bộ vi điều khiển có thể lạp chương trình để điều khiển các thiết bị thông
tin, viễn thông thiết bị đo lường,thiết bị điều chỉnh cũng nhuu các ứng dụng
trong công nghệ thong tin và kỹ thuật điều khiển tự động. có thể xem bộ VĐK
như một hệ VXL on-chíp đối với AT89C51, nó có đầy đủ chức năng của một
hệ VXL 8 bit, được điều khiển bởi một hệ lệnh, có số lệnh đủ mạnh, cho phép
lập trình bằng hợp ngữ (Assemply).
Cơ bản về cấu tạo của AT89C51
Hình 2.3: Sơ đồ chân của 89C51
+ GND (chân 20): Chân nối với 0v
+ Port 0 (chân 32 – chân 29)
Port 0 là Port xuất nhập 8 bit hai chiều. Port 0 còn được cấu hình làm bus
địa chỉ (byte thấp) và bus dữ liệu đa hợp trong khi truy xuất bộ nhớ dữ liệu
ngoài và bộ nhớ chương trình ngoài. Port cũng nhận các byte mã trong khi lập
trình cho. Flash và xuất các byte mã trong khi kiểm tra chương trình (các điện
trở kéo lên bên ngoài được cần đến trong khi kiểm tra chương trình).
+ Port 1 (chân 1- 8): port 1 là port xuất nhập 8 bit hai chiều. Port1 cũng
nhận byte địa chỉ thấp trong thời gian lập trình cho Flash.
+ Port 2 ( chân 21 – 28): Port 2 là port xuất nhập 8 bit hai chiều. Port 2 tạo
ra các byte cao của bus địa chỉ trong thời gian tìm nạp lệnh từ bộ nhớ chương
trình ngoài và trong thời gian truy xuất bộ nhớ dữ liệu ngoài, sử dụng các địa
chỉ 16 bit. Trong thời gian truy xuất bộ nhớ dữ liệu ngoài sử dụng các địa chỉ 8
bit, port 2 phát các nội dung của các thanh ghi đặc biệt, port 2 cũng nhận các
bits địa chỉ cao và vài tín hiệu điều khiển trong thời gian lập trình cho Flash và
kiểm tra chương trình.
+ Port 3 (chân 10- 17): Port 3 cũng nhận một vài tín hiêu điều khiển cho
việc lập trình Flash và kiểm tra chương trình. Port 3 là port xuất nhập 8 bit hai
chiều, port 3 cũng còn làm các chức năng khác của AT89C51. các chức năng
này được nêu như sau:
Chân Tên Chức năng
P3.0 RxD Ngõ vào port nối tiếp
P3.1 TxD Ngõ ra port nối tiếp
P3.2 INT0 Ngõ vào ngắt ngoài 0
P3.3 INT1 Ngõ vào ngắt ngoài 1
P3.4 T0 Ngõ vào bên ngoài của bộ định thời 1
P3.5 T1 Ngõ vào bên ngoài của bộ định thời 0
P3.6 WR Điều khiển ghi bộ nhớ dữ liệu ngoài
P3.7 RD Điều khiển đọc bộ nhớ dữ liệu ngoài
+ RST (chân 9)
Ngõ vào reset. Mức cao trên chân này trong hai chu kỳ máy trong khi bộ
dao động đang hoạt động sẽ reset AT89C51
+ ALE/PROG (chân 30)
ALE là một xung ngõ ra để chốt byte thấp của địa chỉ trong khi xuất bộ nhớ
ngoài. Chân này cũng làm ngõ vào chân lập trình (PROG) trong thời gian lạp
trình cho Flash. Khi hoạt động bình thường xung ngõ ra luôn có tần số không
đổi là 1/6 tần số của mạch dao động, có thể được dùng cho các mục đích định
thời bên ngoài. Khi cần, hoạt động chân ALE có thể được vô hiệu hoá bằng
cách set bit 0 của thanh ghi chức năng đặc biệt có địa chỉ 8Eh. Khi bit này
được set, ALE chỉ tích cực trong thời gian thực hiện lệnh MOVX hoặc MOVC.
Ngược lại chân này sẽ được kéo lên cao. Việc set bit không cho phép hoạt động
chôt byte thấp của địa chỉ sẽ không có tác dụng nếu bộ vi điều khiển đang ở chế
độ thực thi chương trình ngoài.
+ PSEN (chân 29): PSEN (program Store Enable) là xung điều khiển truy
xuất chương trình ngoài. Khi AT89C51 đang thực thi chương trình từ bộ nhớ
chương trình ngoài, PSEN được kích hoạt hai lần mỗi chu kỳ máy, nhưng hai
hoạt động PSEN sẽ bị bỏ qua mỗi khi truy cập bộ nhớ dữ liệu ngoài.
+ EA vpp (chân 31): Là chân cho phép truy xuất bộ nhớ chương trình ngoài
( địa chỉ từ 0000 H tới FFFF H). EA = 0 cho phép truy xuát bộ nhớ chương
trình ngoài, ngược lại EA = 1 sẽ thực thi chương trình bên trong chip. Tuy
nhiên, lưu ý rằng nếu bít khoá 1 được lập trình EA được chốt bên trong khi
reset.
+ XTAL1&XTAL2: Là hai ngõ vào ra của hai bộ khuyếch đại đảo của
mạch dao động, được cấu hình để dùng như một bộ tạo dao động trên chip
Hình 2.4: Bộ tạo dao động
Tổ chức bộ nhớ của 89C51
Bộ nhớ bên trong chip bao gồm ROM, RAM va EPROM. RAM trên chip
bao gồm vùng RAM đa chức năng, vùng RAM với từng bit được định địa chỉ,
các dây thanh ghi (bank) và các thanh ghi chức năng đặc biệt.
7F
RAM ĐA DỤNG
30
2F 7F 7E 7D 7C 7B 7A 79 78
2E 77 76 75 74 73 72 71 70
2D 6F 6E 6D 6C 6B 6A 69 68
2C 67 66 65 64 63 62 61 60
2B 5F 5E 5D 5C 5B 5A 59 58
2A 57 56 55 54 53 52 51 50
29 4F 4E 4D 4C 4B 4A 49 48
28 47 46 45 44 43 42 41 40
27 3F 3E 3D 3C 3B 3A 39 38
26 37 36 35 34 33 32 31 30
25 2F 2E 2D 2C 2B 2A 29 28
24 27 26 25 24 23 22 21 20
23 1F 1E 1D 1C 1B 1A 19 18
22 17 16 15 14 13 12 11 10
21 0F 0E 0D 0C 0B 0A 09 08
20 07 06 05 04 03 02 01 00
1F
BANK 3
18
17
BANK 2
10
0F
BANK 1
08
07
Bank thanh ghi 0 ( mặc định cho R0-R7)
00
CẤU TRÚC RAM NỘI
Có 2 đặc tính đáng lưu ý:
+ Các thanh ghi và các port I/O được định địa chỉtheo kiểu ánh xạ bộ nhớ
và được truy xuất như một vị trí nhớ trong bộ nhớ.
+ Vùng track thường trú trong RAM trên chip thay vì ở trong RAM ngoài
như đối với các bộ vi xử lý.
Vùng RAM đa mục đích: Có 80 byte, địa chỉ từ 30H đến 7FH.
Bất cứ vị trí nào trong vùng RAM ta đều có thể truy xuất tự do bằng cách sử
dụng định địa chỉ trực tiếp hoặc gián tiếp.
Ví dụ:
+ Kiểu định địa chỉ trực tiếp:
MOV A,5FH ;Đọc nội dung tại địa chỉ 5FH của RAM
+ Kiểu định địa chỉ gián tiếp: (Qua các thanh ghi R0,R1)
MOV R0,#5FH ; Di chuyển giá trị5FH vào thanh ghi R0
MOV A,@R0 ; Di chuyển dữ liệu trỏ tới R0 và thanh chứa A
Vùng RAM định địa chỉ:
Chip 8951 chứa 210 vị trí định địa chỉ in đó có 128 byte chứa trong các byte
ở địa chỉ 20H đến 2FH (16 byte x 8 = 128 bits), phần còn lại chứa trong các
thanh ghi chức năng đặc biệt.
Công dụng: + Truy xuất các bit riêng rẽ thông qua các phần mền.
+ Các port có thể địng địa chỉ từng bit, làm đơn giản việc giao
tiếp băng phần mền với các thiết bị xuất nhập đơn bit.
Ví dụ: + Set bit trực tiếp:
SETB 67H; lệnh làm nhiệm vụ set bit 67H bằng 1
+ Hoặc ta có thẻ sử dụng lệnh sau để set bít 67H là bit lớn nhất của
byte 2CH:
ORL A,#10000000B ;Tác dung set bit
Các thanh ghi chức năng đặc biệt (SFR)
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.
Các thanh ghi chức năng đặc biệt bao gồm:
+ Tử trạng thái chương trình PSW: có địa chỉ là D0H
+ Thanh ghi B: Có địa chỉ F0Hđược dùng chung với thanh chứa A trong các
phếp toán nhân và chia.
+ Con trỏ Stack (SP) : là thanh ghi 8 bit ở địa chỉ 81H, nó chứa địa chỉ của
dữ liệu hiện đang ở đỉnh của stack.
+ Con trỏ dữ liệu DPTR:
Dùng để truy xuất bộ nhớ chương trình ngoài hoặc bộ nhớ dữ liệu ngoài.
DPTR là thanh ghi 16 bit có địa chỉ 82H (byte thấp ) và 83H (byte cao).
Ví dụ:
MOV A,#55H ;Nạp hằng dữ liệu 55H và thanh chứa A
MOV DPTR,%1000 ;Nạp hằng địa chỉ 16 bit 1000H cho
; con trỏ DPTR
MOV @DPTR,A ; Chuyển dữ liệu từ A vao RAM ngoài
; tai địa chỉ DPTR trỏ tới.
+ Các thanh ghi port:
- Port 0 : địa chỉ 80H
- Port 1 : địa chỉ 90H
- Port 2 : địa chỉ A0H
- Port 3 : địa chỉ B0H
+ Các thanh ghi định thời:
IC 8951 có 2 bộ định thời/đếm dùng để định khoảng thời gian hoặc đếm các
sự kiện.
- Bộ định thời 0: địa chỉ 8AH (TL0 ) va 8CH (TH0)
- Bộ định thời 1: địa chỉ 8bH (TL1 ) va 8DH (TH1)
Hoạt động của bộ định thời được thiết lậpbởi thanh ghi chế độ định thời
TMOD ở địa chỉ 89H và thanh ghi điều khiển bộ định thời TCON ở địa chỉ 88H
(chỉ có TCON được định địa chỉ từng bit)
+ Các thanh ghi của port nối tiếp: Chip 8951 có 1 port nối tiếp để truyền
thông với các thiết bị như các thiết bị đầu cuối hoặc model
+ Các thanh ghi ngắt: có một cấu trúc ngắt với 2 mức ưu tiên và 5 nguyên
nhân ngắt. Các ngắt bị vô hiệu hoá sau khi Reset hệ thống và được phép bằng
cách vào thanh ghi IE ở địa chỉA8H. Mức ưu tiên ngắt được thiết lập bơit thanh
ghi IP ở địa chỉ B8H.
+ Thanh ghi điều khiển nguồn: PCON có địa chỉ 87H.
Chương 2: Thiết kế mạch phần cứng.
2.1. Sơ đồ khối mạch phần cứng.
Cấu trúc chung của hệ thống
- Khối nguồn: để cung cấp nguồn cho bộ chuyển đổi, vi xử lí, và khối hiển thị.
- Bộ chuyển đổi ADC: chuyển đổi tín hiệu Analog từ khối công suất thành tín
hiệu Digital.
- Khối hiển thị: để hiển thị giá trị đo.
Điện áp
Đo Vi xử lý
Bộ chuyển
đổi ADC
Nguồn
Khối
hiển thị
- Vi xử lí: nhận tín hiệu từ bộ chuyển đổi ADC hiển thị dữ liệu trên Led 7
vạch.
2.2. Chức năng của các khối.
2.2.1. Khối nguồn.
Chức năng cung cấp nguồn cho mạch điều khiển
Sơ đồ nguyên lý của khối nguồn :
Các thành phần trong khối nguồn:
a. Biến áp T1:
- Biến đổi điện áp nguồn thành điện áp phù hợp đặt lên bộ chỉnh lưu.
- Đảm bảo cho nguồn và bộ chỉnh lưu chỉ quan hệ với nhau về từ mà không
quan hệ trực tiếp về điện nên bảo vệ an toàn cho người sử dụng.
b. Cầu chỉnh lưu 1 pha D1:
Bao gồm 4 Diode ghép lại có tác dụng chỉnh lưu 2 nửa chu kỳ điện áp xoay
chiều thành điện áp 1 chiều.
Cấu tạo và hình dạng thực tế của cầu diode chỉnh lưu.
c. Tụ điện C1, C2, C3:
Có tác dụng lọc bỏ thành phần xoay chiều sau diode cầu và lọc nhiễu sau khi
ổn áp để bộ nguồn được ổn định.
Kí hiệu và hình dạng thực tế của tụ điện.
d. IC ổn áp 7805:
Là loại IC dùng để ổn định điện áp +5V đầu ra.
Input 1 : Chân điện áp vào.
GND 2: Chân nối mass.
Output 3: Chân điện áp ra 5V.
Thông số của IC ổn áp 7805
Ta chọn IC KA7805 với các thông số tương đối phù hợp:
- Điện áp ngõ vào chịu có thể chịu được:
VV
IN
4035 →=
- Công suất tiêu thụ tương đối vừa phải :
WP
D
8.20
=
- Tầm nhiệt độ chịu được khi kéo tải:
CT
0
15030
→−=
- Dòng ra đạt được:
mAI 100
0
=
2.2.2. Bộ chuyển đổi ADC.
Chip ADC 0804
Chíp ADC 0804 là bộ chuyển đổi tương tự sang số. Nó làm việc với +5V và
có độ phân giải là 8 bít. Ngoài độ phân giải thì thời gian chuyển đổi cũng là một
yếu tố quan trọng khác khi đánh giá một bộ ADC. Thời gian chuyển đổi được
định nghĩa như là thời gian mà bộ ADC cần để chuyển một đầu vào tương tự
thành một số nhị phân. Trong ADC 0804 thời gian chuyển đổi thay đổi phụ
thuộc vào tần số đồng hồ được cấp tới chân CLK R và CLK IN nhưng không
thể nhanh hơn 110µs. Các chân của ADC 0804 được mô tả như sau:
1. 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 ADC
0804. Để truy cập ADC 0804 thì chân này phải ở mức thấp.
2. 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.
RD
đượ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
RD
thì đầu ra số 8 bít được hiển diện ở các chân dữ liệu D0 - D7. Chân
RD
cũng được coi như cho phép đầu ra.
3. Chân ghi
WR
(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
WR
tạo ra xung cao xuống thấp thì bộ
ADC 0804 bắt đầu chuyển đổi giá trị đầu vào tương tự V
in
về số nhị phân 8 bít.
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.
4, 19. 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ở. Trong trường hợp này tần số đồng hồ
được xác định bằng biểu thức:
f =
Giá trị tiêu biểu của các đại lượng trên là R = 10kΩ và C= 150pF và tần số
nhận được là f = 606kHz và thời gian chuyển đổi sẽ mất là 110µs.
5. 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
INTR
xuống thấp, ta đặt CS = 0 và
gửi một xung cao xuống - thấp tới chân
RD
lấy dữ liệu ra của 0804.
6, 7. Chân V
in
(+) và V
in
(-).
Đây là các đầu vào tương tự vi sai mà V
in
= V
in
(+) - V
in
(-). Thông thường
V
in
(-) được nối xuống đất và V
in
(+) được dùng như đầu vào tương tự được
chuyển đổi về dạng số.
20. 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 V
ref/2
(chân 9) để hở.
9. 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 V
CC
). Tuy nhiên, có nhiều ứng dụng mà
đầu vào tương tự áp đến V
in
cần phải khác ngoài dải 0 đến 5v. Chân V
ref/2
được
dù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ì V
ref/2
được nối với +2v.
10. Chân D GND: Chân nối đất
11 – 18. Các chân dữ liệu D0 - D7.
Các chân dữ liệu D0 - D7 (D0 là bít thấp nhất LSB và D7 là bít cao nhất
MSB) là các chân đầu ra dữ liệu số. Đây là những chân được đệm ba trạng thái
và dữ liệu được chuyển đổi chỉ được truy cập khi chân CS = 0 và chân
RD
bị
đưa xuống thấp. Để tính điện áp đầu ra ta có thể sử dụng công thức sau:
buocthuockich
V
D
in
out
=
Với D
out
là đầu ra dữ liệu số (dạng thập phân). V
in
là điện áp đầu vào tương
tự và độ phân dải là sự thay đổi nhỏ nhất được tính như là (2 × V
ref
/2) chia cho
256 đối với ADC 8 bít.
Hình 2.1: Sơ đồ chân của ADC0804
Bảng 2.2: Điện áp V
ref/2
liên hệ với dải V
in
.
V
ref
/ 2(V) V
in
(V) Step Size (mV)
Hở * 0 đến 5 5/256 = 19.53
2.0 0 đến 4 4/255 = 15.62
1.5 0 đến 3 3/256 = 11.71
1.28 0 đến 2.56 2.56/256 = 10
1.0 0 đến 2 2/256 = 7.81
0.5 0 đến 1 1/256 = 3.90
Ghi chú:
+ V
CC
= 5V
+ Kích thước bước (độ phân dải) là sự thay đổi nhỏ nhất mà ADC có thể
phân biệt được.
2.2.3 Khối hiển thị màn hình máy tính
Khối hiển thị màn hinh máy tính VIRTUAL TERMINAL trong Proteus.
2.3. Nguyên lý đo và chuyển đổi tương tự/số của ADC
Nguồn điện áp xoay chiều qua chỉnh lưu cầu thành điện áp 1 chiều với giá trị
điện áp tương ứng .Giá trị tương tự là điện áp 1 chiều được đưa vào vào V
in
cua ADC0804 sao cho điện áp vào lớn nhất là 5V khi đó ứng với mỗi giá trị
đầu vào V
in
thì ADC0804 sẽ chuyển đổi từ giá trị tương tự là điện áp sang số,
ứng với mỗi giá trị số sẽ là một giá trị điện áp tương ứng.
buocthuockich
V
D
in
out
=
Với D
out
là đầu ra dữ liệu số (dạng thập phân). V
in
là điện áp đầu vào tương
tự và độ phân dải là sự thay đổi nhỏ nhất được tính như là (2 × V
ref
/2) chia cho
256 đối với ADC 8 bít. Tương tự các giá trị điện áp khác được chuyển đổi
tương tự.
2.4. Mạch phần cứng .
CHƯƠNG 3: Thiết kế phần mềm
3.1 Lưu đồ thuật toán.
Đọc Giá
Trị ADC
End
a
1
Hiển thị số
Hàng chục
a3=a1
Hiển thị số
Hàng đơn vị
Hiển thị số
Hàng thập phân
Begin
a2 =
Khởi tạo chuyển đổi
cho ADC
3.2 Code lệnh.
#include <sfr51.inc>
mang_chu: db "Vac=$"
;###########main##########
org 0000h
clr p2.7
lcall delay
setb p2.7
lcall delay
mov scon,#42h
mov tmod,#20h
mov th1,#-3
setb tr1
mov scon,#42h
next:
mov dptr,#mang_chu
lap:
movc a,@a+dptr
cjne a,'$',hien_thi
sjmp next
hien_thi:
lcall nhan
inc dptr
sjmp lap
;########guilenhhienthitrenmanhinh##########
mov a,p1
mov b,#100
div ab
lcall nhan
mov a,b
mov b,#10
div ab
add a,#30h
lcall nhan
mov a,b
add a,#30h
lcall nhan
sjmp manhinh
nhan:
jnb ti,$
clr ti
mov sbuf,a
ret
;#######################
delay:
mov r0,#10
w3:mov r1,#100
w2:mov r2,#100
w1:djnz r2,$
djnz r1,w2
djnz r0,w3
ret
end
3.3. Kết quả đạt được .
- Kết quả đạt được có độ chính xác cao ,có độ chính xác mà các loại đồng hồ cơ
không có được.
- Sai lệch trong khoảng 1%.
- Trên thực tế vẫn còn vẫn đề về độ chính xác của mạch tương tự trước khi đưa
vào adc.