Chuyển đổi máy tính thành dao động ký số 2 kênh
Dao động ký hai kênh (Two-channel oscilloscope) là thiết bị đo điện tử quan trọng và phổ biến, nó hiển thị dạng sóng và một số đặc tính khác của các tín hiệu. Có hai loại dao động ký: tương tự và số. Dao động ký số ưu việt hơn loại tương tự nhưng ít phổ biến vì giá cao. Bài báo trình bày cách thức chuyển đổi máy tính PC thành dao động ký số hai kênh, gồm phần cứng là mạch thu nhận dữ liệu tự thiết kế và phần mềm là tập nhiều chương trình viết bằng ngôn ngữ Visual C++
12 trang |
Chia sẻ: banmai | Lượt xem: 2078 | Lượt tải: 0
Bạn đang xem nội dung tài liệu Chuyển đổi máy tính thành dao động ký số 2 kênh, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
TẠP CHÍ PHÁT TRIỂN KH&CN, TẬP 9, SỐ 5 -2006
Trang 21
CHUYỂN ĐỔI MÁY TÍNH THÀNH DAO ĐỘNG KÝ SỐ HAI KÊNH
Nguyễn Trường An, Phạm Thị Thu Phương, Huỳnh Hữu Thuận, Nguyễn Hữu Phương
Trường Đại học Khoa học Tự nhiên, ĐHQG – HCM
(Bài nhận ngày 01 tháng 12 năm 2005, hoàn chỉnh sửa chữa ngày 16 tháng 05 năm 2006)
TÓM TẮT: Dao động ký hai kênh (Two-channel oscilloscope) là thiết bị đo điện tử quan
trọng và phổ biến, nó hiển thị dạng sóng và một số đặc tính khác của các tín hiệu. Có hai loại
dao động ký: tương tự và số. Dao động ký số ưu việt hơn loại tương tự nhưng ít phổ biến vì giá
cao. Bài báo trình bày cách thức chuyển đổi máy tính PC thành dao động ký số hai kênh, gồm
phần cứng là mạch thu nhận dữ liệu tự thiết kế và phần mềm là tập nhiều chương trình viết
bằng ngôn ngữ Visual C++.
1. GIỚI THIỆU
Dao động ký hai kênh (Two-channel oscilloscope) là thiết bị rất cần thiết và khá phổ biến
trong các phòng thí nghiệm điện tử và các phòng thí nghiệm khác. Nhưng dao động ký số hai
kênh ít phổ biến hơn vì giá cao dù có nhiều ưu điểm, đặc biệt là khả năng đo, lưu trữ và xử lý
dữ liệu. Mặt khác máy tính PC đã sẵn có khả năng cao về xử lý, lưu trữ và hiển thị. Do đó vấn
đề là thiết kế mạch thu nhận dữ liệu (DAQ) giao tiếp với máy tính và trang bị các phần mềm
cần thiết. Đã có nhiều card DAQ và phần mềm như vậy, điển hình nhất có lẽ là thiết bị và phần
mềm LabView của hãng National Instruments (Mỹ). Ở đây, để giảm giá thành xuống mức thấp
nhất chúng tôi tự nghiên cứu phát triển phần cứng và phần mềm.
Phần còn lại của bài báo như sau. Mục 2: Thu nhận dữ liệu, mục 3: Hiển thị dạng sóng và
dữ liệu đo, mục 4: Tính toán tham số của tín hiệu, mục 5: Phân tích tần phổ, mục 6: Lưu trữ dữ
liệu, và mục 7: Kết luận. Do giới hạn không gian nên nhiều giải thuật chương trình và hình
minh họa bị bỏ bớt nhiều.
2. THU NHẬN DỮ LIỆU
Hình 1 là sơ đồ khối trình bày nguyên lý của card thu nhận dữ liệu (DAQ) để chuyển đổi
máy tính thành dao động ký số hai kênh. Việc giao tiếp thực hiện qua bus ISA
Hình 1: Sơ đồ khối nguyên lý của card thu nhận dữ liệu
Vi
Kênh A
Phân tầm và
lọc AD
Vi điều khiển kênh
A
Bộ
đệm
B
U
S
I
S
A
Dữ
liệu
Giải mã địa
chỉ
Địa
chỉ
Vi
Kênh B
Phân tầm và
lọc AD
Vi điều khiển
kênh B
Bộ
đệm
Dữ
liệu
Science & Technology Development, Vol 9, No.5 - 2006
Trang 22
2.1 Mô tả mạch
Đầu tiên, tín hiệu vào ở kênh A hoặc B sẽ đến mạch phân tầm tự động (autoranging), phân
ra các tầm đo khác nhau và qua lọc thông thấp. Mạch phân tầm là mạch khuếch đại có độ lợi
thay đổi tùy theo khoảng biên độ tín hiệu vào. Việc này là cần thiết để tăng độ phân giải trong
lúc phải phù hợp với độ dài dữ liệu. Biên độ tín hiệu vào Vi được phân thành 3 tầm khác nhau
như sau:
Tầm Khoảng biên độ Mã số tầm
X5 Vi < 0,5V 0 0
X1 0,5V< Vi < 2,5V 0 1 1 0
÷5 2,5V < Vi < 12,5V 1 1
Tín hiệu ra khỏi mạch phân tầm sẽ qua mạch lọc thông thấp Butterworth bậc 5. Sau mạch
lọc là mạch cộng để cộng thêm vào tín hiệu điện áp DC 2,5 Volt (gọi mạch chuyển mức điện áp
một chiều – DC level shifter), lý do là mạch chuyển đổi tương tự – sang số (ADC) AD7875
thuộc loại có điện áp vào đơn cực 0 – 5V.
Sau đó, tín hiệu ngõ ra sẽ được AD7875 chuyển đổi sang số, đây là mạch 12 bit, tốc độ 100
kS/s và, đặc biệt, đã tích hợp mạch Track-and-Hold. AD7875 được điều khiển bởi vi điều khiển
AT89C2051. Dữ liệu ra cùng với mã số phân tầm (2 bit) và bit trạng thái từ vi điều khiển được
đưa đến bộ đệm để vào máy tính qua bus ISA. Bộ giải mã địa chỉ xác định địa chỉ cho các bộ
đệm, đây là địa chỉ đọc dữ liệu.
Hình 2a và 2b là sơ đồ mạch đầy đủ.
2.2 Phần mềm giao tiếp
Trước khi vào chương trình, phần mềm yêu cầu xác nhận đã có phần cứng gắn vào bus ISA
chưa. Nếu đã có phần cứng thì bấm OK để vào chương trình chính.
TẠP CHÍ PHÁT TRIỂN KH&CN, TẬP 9, SỐ 5 - 2006
Trang 23
-12V
C2
220p
1
2
+5V
R20
1k
21
AGND
AGND
GAINA1
C3
1n
1
2
U3B
74LS393
13
12
11
10
9
8
14
7
A
CLR
QA
QB
QC
QD
VCC
GND
CHANNEL B
VrefClock
GAINA1
-
+
U6B
TL084
5
6
7
4
1
1
C19
2.2n
12
R29
20k
21
+12V
DGND
R54
RESISTOR VAR
1 3
2
R24
680k
2
1
AGND
GAINB2
C20
270p
12
LOW-PASS FILTER
R13
20k
21
C14
220p
1
2
AGND
C46
1n
1 2
-12V
R47
1M
21
+12V
-12V
C18
1n
12
R10
10k
21
+5V
AGND
-
+
U6D
TL084
12
13
14
4
1
1
R16
1k
21
C37
1n
1 2
R6
20k
21 AGND
-
+
U6C
TL084
10
9
8
4
1
1
R3
20k
21
-12V
R23
1M
21
R1
680k
2
1
AGND
+12V
R28
RESISTOR VAR
1 3
2
+5V
+12V
C44
104
1 2
AGND
AGND
+5V
+5V
U2
74HC4052
12
14
15
11
1
5
2
4
6
10
9
133
16
8
7
X0
X1
X2
X3
Y0
Y1
Y2
Y3
INH
A
B
XY
VDD
VSS
VEE
C39
104
1 2
AGND
AGND
R43
1k
21
J1
BNC
2
AGND
C6
1n
12
-
+
U1D
TL084
12
13
14
4
1
1
+5V
-12V
C16
150p
1
2
AGND
-12V
C42
104
12
-
+
U1B
TL084
5
6
7
4
1
1
LEVEL SHIFTER
AGND
R34
10k
21
INPUTS
LOW-PASS FILTER
DGND
AGND
-
+
U13B
TL084
5
6
7
4
1
1
R11
10k
21
-
+
U6A
TL084
3
2
1
4
1
1
C41
1n
1 2
CHANNEL A
AUTORANGING
J2
BNC
1
2
D5
ZENERBReset
1
2
C1
1u
1
2
-
+
U13A
TL084
3
2
1
4
1
1
-
+
U13D
TL084
12
13
14
4
1
1
AGND
C17
150p
1
2
R38
10k
21
AGND
+5V
-12V
-12V
-12V
R32
1 3
2
+12V
+12V
-12V
R8
20k
21
R41
1k
21
AGND
+12V
C10
1u
1
2
C15
1n
1
2
R5
1k
2 1
+12V
AGND
R40
1k
21
-12V
U3A
74LS393
1
2
3
4
5
6
14
7
A
CLR
QA
QB
QC
QD
VCC
GND
AGND
-
+
U7
OP07
3
2
6
7
4 8
1
R44
1k
21
-
+
U8
OP07
3
2
6
7
4 8
1
C4
150p
1
2
+5V
-5V
-
+
U15
OP07
3
2
6
7
4 8
1
AGND
AGND
LEVEL SHIFTER
+12V
GAINB1
AGND
-12V
+12V
+12V
-
+
U1A
TL084
3
2
1
4
1
1
AGND
AGND
R30
4k
21
C45
104
12
AUTORANGING
-12V
C47
1n
12
R26
20k
21
C40
104
1 2
C21
150p
12
+12V
AGND
VrefReset
-12V
C8
270p
12
AGND
+12V
-
+
U14
OP07
3
2
6
7
4 8
1
VrefReset
+5V
D4
DIODEB
12
VrefClock
GAINA2
D1
DIODEA
12
R9
20k
21
R37
20k
21
KENHA
-
+
U13C
TL084
10
9
8
4
1
1
C43
104
1 2
+12V
R4
30k
2 1
R33
10k
21
R39
1k
21
C38
1n
1 2 -12V
-
+
U1C
TL084
10
9
8
4
1
1
R15
1k
21
C7
2.2n
12
AGND
-12V
R53
RESISTOR VAR
1 3
2
R42
10k
21
AGND
C9
150p
12
D6
ZENERBClock
1
2
R19
1k
21
R27
RESISTOR VAR
1 3
2
+5V
R17
1k
21
R31
1 3
2
AGND
GAINB2
GAINA2
+12V
R2
100k
21
R14
10k
21
AGND
GAINB1
-5V
R18
10k
21
U12
74HC4052
12
14
15
11
1
5
2
4
6
10
9
133
16
8
7
X0
X1
X2
X3
Y0
Y1
Y2
Y3
INH
A
B
XY
VDD
VSS
VEE
D2
ZENERAReset
1
2
AGND
AGND
R7
4k
21
C5
150p
1
2
R25
100k
21
KENHB
D3
ZENERAClock
1
2
AGND
AGND
+12V
Hình 2a: Khối xử lý số và giao tiếp máy tính
Science & Technology Development, Vol 9, No.5 - 2006
Trang 24
GAINA1
DATA12
+12V
+5V
D7
LEDA
1 2
C23
1n
1 2
C32
104
1 2
DA1
+5V
RD+CSB
C54
10u
1 2
RESETA
DA1
R49
1k
21
LEDA2
KENHA
AddLe1
C49
2200u
1 2
DATA3
ADD2
ADD6
ADDRESSB
DA10
DA7
RD+CSA
C13
33p
1 2
U10
AT89C2051/SO
1
10
20
5
4
12
13
14
15
16
17
18
19
2
3
6
7
8
9
11
RST/VPP
GND
VCC
XTAL1
XTAL2
P1.0/AIN0
P1.1/AIN1
P1.2
P1.3
P1.4
P1.5
P1.6
P1.7
P3.0/RXD
P3.1/TXD
P3.2/INT0
P3.3/INT1
P3.4/T0
P3.5/T1
P3.7
DGND
ADD8
DGND
JP1
HEADER 5
1
2
3
4
5
DGND
D8
LEDB
1 2
DA3
AGND
C22
1n
1
2
U4
AT89C2051/SO
1
10
20
5
4
12
13
14
15
16
17
18
19
2
3
6
7
8
9
11
RST/VPP
GND
VCC
XTAL1
XTAL2
P1.0/AIN0
P1.1/AIN1
P1.2
P1.3
P1.4
P1.5
P1.6
P1.7
P3.0/RXD
P3.1/TXD
P3.2/INT0
P3.3/INT1
P3.4/T0
P3.5/T1
P3.7
U18B
74LS08
4
5
6
1
4
7
Y1
24MHz
1
2
+5V
DB4
DATA12
ADDRESSA
ADD2
ADDRESSB
BUSYA
C12
104
1
2GAINB2
AddChan1
DA5
U19
74HC688
1
10
19
20
3
5
7
9
12
14
16
18
2
4
6
8
11
13
15
17
OE
GND
P=Q
VCC
Q0
Q1
Q2
Q3
Q4
Q5
Q6
Q7
P0
P1
P2
P3
P4
P5
P6
P7
+5V
LEDB1
AphatBnhan
Vin1
DB8
U9
4053
12
13
2
1
5
3
6
11
10
9
14
15
4
16
8
7
X0
X1
Y0
Y1
Z0
Z1
INH
A
B
C
X
Y
Z
VDD
VSS
VEE
AGND
Vin2
U17A
74LS32
1
2
3
1
4
7
DATA6
ADD4
U17B
74LS32
4
5
6
1
4
7
U11
AD7875
20
18
16
15
14
13
11
10
9
8
7
6
5
42
19
21
17
12
3
22
23
1
24
VIN
AGND
DB0/DB8
DB1/DB9
DB2/DB10
DB3/DB11
DB4/LOW
DB5/LOW
DB6/LOW
DB7/LOW
DB8/SDATA
DB9/SCLK
DB10/SSTRB
DB11/HBENBUSY/INT
REFOUT
-VCC
VCC
GND
CLK
12/8/CLK
CONVST
RD
CS
LEDAB2
IOW
NGAT0
C25
104
1 2
C35
1u
1 2
DATA14
DATASTSA
ADD6
IOW
U18C
74LS08
9
10
8
1
4
7
DATA14
DATA9
MULTIPLEXER
DATA11
DA4
+5V
ADD9
DA11
DB11
-5V
LEDAB2
D9
LEDAB
1 2
C51
2200u
1 2
C56
10u
1 2
-12V
LEDAB1
AddChan1
+5V
C28
104
1 2
C36
1u
1 2
C52
1000u
1 2
DATA0
ADD5
ADDRESSA
+5V
DATA10
uC_IOCS16
KENHA
AGND
BUSYB
NGAT1
DA2
DB9
DGND
DGND
C57
1u
1 2
AGND
AGND
+5V
CONVERTA
-5V
DB9
VCC
DATA15
DATA15
NGAT1
-5V
U18D
74LS08
12
13
11
1
4
7
NGAT0
IOR
Vin1
DA2
DGND
KENHB
+5V
C33
104
1 2
-5V
DATA7
DATA5
BphatAnhan
DB2
DGND
+12V
DATA3
-12V
R50
1k
21
C48
10u
1 2
DB3
C30
104
1 2
JP2
HEADER 3
1
2
3
DB1
DA0
DGND
+12V
DATASTSB
SELECTB
NGAT1
+5V
NGAT0
ADDRESSA
+5V
MICRO-CONTROLLER
DUTRUA
R51
1k
21
-12V
ADD7
R36
8k2
2 1
U17C
74LS32
9
10
8
1
4
7
DB8
ADD7
R48
RESISTOR SIP 9
1
2 3 4 5 6 7 8 9
DA9
DATA8
DATA5
LEDB2
BphatAnhan
ADD1
+5V
DA11
DGND
XTAL2
ADDRESSA
RD+CSA
16 BITS CONTROL
G2AB
AGND
-5V
SELECTA
LEDB1
AEN
IOCS16
+5V
Vin2
DGND
DATA8
DA10
AGND
C55
10u
1 2
C27
104
1 2
U22
74LS244
2
4
6
8
1
18
16
14
12
20
10
11
13
15
17
9
7
5
3
19
A1
A2
A3
A4
1OE
Y1
Y2
Y3
Y4
VCC
GND
A5
A6
A7
A8
Y5
Y6
Y7
Y8
2OE
ADD0
CONVERTA
D/K_IOCS16
DGND
DATA0
DGND
DGND
U16
74LS138
1
2
3
6
4
5
15
14
13
12
11
10
9
7
16
8
A
B
C
G1
G2A
G2B
Y0
Y1
Y2
Y3
Y4
Y5
Y6
Y7
VCC
GND
C58
1u
1 2
DUTRUB
DATA11
DUTRUA
DATA10
-5V
CONVERTB
RD+CSBRESETA
+5V
DB6
XTAL2
XTAL
DATA14
DATA4
ADDRESSB
LED INDICATORS
U18A
74LS08
1
2
3
1
4
7
DATA15
AddChan2
+5V
U23
74LS244
2
4
6
8
1
18
16
14
12
20
10
11
13
15
17
9
7
5
3
19
A1
A2
A3
A4
1OE
Y1
Y2
Y3
Y4
VCC
GND
A5
A6
A7
A8
Y5
Y6
Y7
Y8
2OE
DATA13
DB11
AGND
DGND
ADDRESSA
ADD5
C29
104
1 2
LEDA1
AGND
AphatBnhan
KENHB
XTAL2
DATA9
DGND
+5V
DB5
DATASTSB
ADDRESSB
uC_IOCS16
DATA4
LEDAB1
LEDB2
ADD8
AddLe1
+5V
DGND
C59
1u
1 2
CONVERTB
BUFFER
GND
DB2
+5V
DGND
-5V
XTAL1
C53
10u
1 2
DATA3
DA4
LEDA1
DA6
AGND
DATA8
GAINA2
DB6
ADC
DA9
AEN
ADD0
+5V
DB7
DATA10
SELECTA
ADD9
DB0
IOR
DA3
DA8
+5V
U17D
74LS32
12
13
11
1
4
7
DATA2
DATA2
ADD3
U21
PC AT BUS
2
4
6
8
10
12
14
16
18
20
22
24
26
28
30
32
34
36
38
40
42
44
46
48
50
52
54
56
58
60
62
64
66
68
70
72
74
76
78
80
82
84
86
88
90
92
94
96
98
1
3
5
7
9
11
13
15
17
19
21
23
25
27
29
31
33
35
37
39
41
43
45
47
49
51
53
55
57
59
61
63
65
67
69
71
73
75
77
79
81
83
85
87
89
91
93
95
97
B01 GND
B02 RESET
B03 +5V
B04 IRQ9
B05 -5V
B06 DRQ2
B07 -12V
B08 SRDY
B09 +12V
B10 GND
B11 SMEMW
B12 SMEMR
B13 IOW
B14 IOR
B15 DACK3
B16 DRQ3
B17 DACK1
B18 DRQ1
B19 REFRESH
B20 SYSCLK
B21 IRQ7
B22 IRQ6
B23 IRQ5
B24 IRQ4
B25 IRQ3
B26 DACK2
B27 TC
B28 BALE
B29 +5V
B30 OSC
B31 GND
D01 MEMCS16
D02 IOCS16
D03 IRQ10
D04 IRQ11
D05 IRQ12
D06 IRQ15
D07 IRQ14
D08 DACK0
D09 DRQ0
D10 DACK5
D11 DRQ5
D12 DACK6
D13 DRQ6
D14 DACK7
D15 DRQ7
D16 +5V
D17 MASTER
D18 GND
IOCHCHK A01
SD7 A02
SD6 A03
SD5 A04
SD4 A05
SD3 A06
SD2 A07
SD1 A08
SD0 A09
IOCHRDY A10
AEN A11
SA19 A12
SA18 A13
SA17 A14
SA16 A15
SA15 A16
SA14 A17
SA13 A18
SA12 A19
SA11 A20
SA10 A21
SA9 A22
SA8 A23
SA7 A24
SA6 A25
SA5 A26
SA4 A27
SA3 A28
SA2 A29
SA1 A30
SA0 A31
SBHE C01
LA23 C02
LA22 C03
LA21 C04
LA20 C05
LA19 C06
LA18 C07
LA17 C08
MEMR C09
MEMW C10
SD8 C11
SD9 C12
SD10 C13
SD11 C14
SD12 C15
SD13 C16
SD14 C17
SD15 C18
DATA1
AGND
DB7
C24
1041
2
XTAL1
DGND
DGND
DATA5
IOCS16
DATA13
RESETA
DB1
U5
AD7875
20
18
16
15
14
13
11
10
9
8
7
6
5
42
19
21
17
12
3
22
23
1
24
VIN
AGND
DB0/DB8
DB1/DB9
DB2/DB10
DB3/DB11
DB4/LOW
DB5/LOW
DB6/LOW
DB7/LOW
DB8/SDATA
DB9/SCLK
DB10/SSTRB
DB11/HBENBUSY/INT
REFOUT
-VCC
VCC
GND
CLK
12/8/CLK
CONVST
RD
CS
LEDA2
DB10
ADDRESS DECODER
-12V
DATA13
ADDRESSB
DB3
ADD4
BUSYB
U25
74LS244
2
4
6
8
1
18
16
14
12
20
10
11
13
15
17
9
7
5
3
19
A1
A2
A3
A4
1OE
Y1
Y2
Y3
Y4
VCC
GND
A5
A6
A7
A8
Y5
Y6
Y7
Y8
2OE
ADDRESSB
IOW
DB4
-5V
DGND
U20
74LS244
2
4
6
8
1
18
16
14
12
20
10
11
13
15
17
9
7
5
3
19
A1
A2
A3
A4
1OE
Y1
Y2
Y3
Y4
VCC
GND
A5
A6
A7
A8
Y5
Y6
Y7
Y8
2OE
AddChan2
DGND
J3
DIPSOC-8x2/SM
1
2
3
4
5
6
7
8
16
15
14
13
12
11
10
9
ADDRESSA
-5V
DB10
DGND
ADD3
+5V
ISA BUS
DA5
DB0
+5V
DGND
DATA6
RD+CSA
AddLe2
DA7
DA0
D/K_IOCS16
DATASTSA
DUTRUB
ADD1
BUSYA
+12V
IOR
DA6
DGND
XTAL1
SELECTB
RD+CSB
DB5
C34
104
1 2
RESET
DATA4
DATA0
C50
1000u
1 2 C26
104
1 2
POWER CONNECTOR
DATA1
GAINB1
C31
104
1 2
DATA2
DATA11
C11
33p
1 2
DATA9
DATA7
DATA6
AddLe2
+5V
DA8
DGND
DATA7
DATA1
C60
1u
1 2
DATA12
+5V
Hình 2b. Khối xử lý số và giao tiếp máy tính của mạch thu nhận dữ liệu
TẠP CHÍ PHÁT TRIỂN KH&CN, TẬP 9, SỐ 5 - 2006
Trang 25
Hình 3 là giao diện Oscilloscope.
Hình 3 Giao diện Oscilloscope
• Nút Run:
Khi muốn chạy chương trình, xem dữ liệu trên màn hình, ta bấm nút Run, hoặc vào menu
Capture/Run.
• Nút Stop:
Khi muốn dừng việc lấy dữ liệu vào, bấm nút Stop hoặc vào menu Capture/Stop.
• Lấy dữ liệu:
Dữ liệu của kênh 1 và kênh 2 được nhập vào hai mảng dữ liệu khác nhau.
3. HIỂN THỊ DẠNG SÓNG VÀ DỮ LIỆU ĐO
Việc vẽ tín hiệu ra màn hình chỉ là việc đưa dữ liệu tương ứng nhận được ra một vị trí xác
định trên màn hình. Để điều khiển, kiểm soát được biên độ, thời gian, ta phải chuyển dữ liệu
vào các giai xác định. Hình 4 là giải thuật.
Science & Technology Development, Vol 9, No.5 - 2006
Trang 26
Hình 4. Giải thuật hiển thị dạng sóng và dữ liệu đo
3.1 Giai dọc và ngang
Oscilloscope mô phỏng phải có hầu hết các chức năng của một Oscilloscope thật sự, trong
đó có vấn đề về giai số dọc (Vert.scale) gốc thời gian (Timebase), vị trí dạng sóng (Position),
độ lợi (Gain), chọn kênh (View channel) . . . Sau đây là giao diện điều khiển:
Đổi từ dữ liệu sang pixel
Trục y là dữ liệu pixel tương ứng
với chỉ số ở trục x chia giai biên
độ (để có thể thay đổi biên độ
hiển thị).
Cờ cho phép vẽ
nối điểm
Vẽ nối điểm dữ liệu
Trục x là [chỉ số] mẫu + hệ số
thời gian (để có thể co giãn
khoảng cách giữa các mẫu).
sai
đúng
Vẽ ra màn hình theo
từng chấm điểm.
TẠP CHÍ PHÁT TRIỂN KH&CN, TẬP 9, SỐ 5 -2006
Trang 27
Để thay đổi giai biên độ (giai dọc) ta thay đổi giá trị biến giaibiendo trong chương trình; để
thay đổi giai thời gian ta thay đổi giá trị biến giaichuky. Còn biến vitri là để thay đổi vị trí của
hình vẽ (có thể di chuyển lên xuống), biến k=1 hoặc k=-1 để đảo dạng sóng tín hiệu (Invert).
3.2 Vẽ dạng sóng ra màn hình
Vẽ dạng sóng là hiển thị dữ liệu ra màn hình dựa vào các cách chọn lựa của người sử dụng:
chọn vẽ tín hiệu thực, vẽ tín hiệu sau khi đã được làm trơn theo các cách khác nhau (xem sau).
Người sử dụng còn có thể chọn các giai biên độ gốc thời gian và nhiều thuộc tính khác tùy ý
như đã trình bày ở trên.
Hình 5 là ví dụ hiển thị dạng sóng tín hiệu của mạch bên ngoài. Cần lưu ý là ở dao động ký
tương tự hai tín hiệu phải có tương quan tần số phù hợp (bằng nhau hay bội số của nhau) thì sự
hiển thị mới vững, còn ở dao động ký số không có sự ràng buộc này.
Hình 5. Ví dụ hiển thị dạng sóng tín hiệu (dạng sóng vuông và sin có tần số độc lập)
3.3 Chọn màu
Science & Technology Development, Vol 9, No.5 - 2006
Trang 28
Chương trình cho phép thay đổi nét vẽ, màu sắc, màu nền . . . Đây là các thuộc tính tính về
đồ họa trong Visual C++. Sau đây là màn hình chọn nét vẽ và màu:
3.4 Sử dụng con trỏ
Để có thể biết được tín hiệu tại một vị trí xác định trên màn hình có biên độ là bao nhiêu,
khoảng cách thời gian giữa hai điểm tín hiệu là bao nhiêu, ta dùng con trỏ (Cursor). Giải thuật
của phần sử dụng con trỏ chuột (kết hợp được với bàn phím) trình bày ở hình 6.
Hình 6. Giải thuật sử dụng cursor
3.5 Bộ định thời
Bộ định thời (Timer) trong Visual C++ chính là hàm SetTimer. Dùng bộ định thời để lặp lại
việc nhận dữ liệu và vẽ lên màn hình sau một khoảng thời gian xác định mà không cần phải
thông qua thao tác hay sự kiện.
3.6 Phóng to, thu nhỏ
Lựa chọn dùng cursor đo biên độ Lựa chọn dùng cursor đo thời gian.
Suy ra giá trị volt Suy ra giá trị thời gian giữa 2 vị trí
Lựa chọn kênh đo
TẠP CHÍ PHÁT TRIỂN KH&CN, TẬP 9, SỐ 5 -2006
Trang 29
Để nhìn thấy rõ hơn dữ liệu hiển thị trên màn hình, ta phóng to hình lên bằng cách bấm nút
Zoom in, đây là sự kết hợp giữa việc tăng chu kỳ ở trục x và tăng biên độ ở trục y, tương ứng là
việc tăng giai trên màn hình.
Tương tự với phóng to, khi muốn thu nhỏ hình, ta bấm nút Zoom out, đây là sự kết hợp
giữa việc giảm chu kỳ ở trục x và giảm biên độ ở trục y, tương ứng là việc giảm giai trên màn
hình.
3.7 Hình Lissajous
Chức năng của Lissajous là để thấy sự lệch pha của hai tín hiện sin cùng biên độ, cùng tần
số. Hai tín hiệu cùng pha: đường Lissajous là đường thẳng có hệ số góc là 1. Hai tín hiệu lệch
pha 900: đường Lissajous là đường tròn. Hai tín hiệu lệch pha 1800: đường Lissajous là đường
thẳng có hệ số góc là -1. Hình Lissajous cũng là cách cổ điển để so sánh tần số hai tín hiệu sin.
Vẽ đường Lissajous là vẽ biên độ của tín hiệu này theo biên độ tín hiệu kia.
3.8 Làm trơn dạng sóng
Một vấn đề then chốt của Oscilloscope hóa máy tính là phục hồi dạng sóng tín hiệu tương
tự từ các trị lấy mẫu của nó (cung cấp bởi mạch ADC) như thế nào để cho dạng sóng trơn tru.
Cách nội suy làm trơn tùy thuộc vào dạng sóng (sin, vuông . . .) và tần số tín hiệu (nếu xử lý
thời gian thực). Hàm fit (làm khớp) là hàm nội suy làm trơn dạng sóng.
Sau đây là một số kiểu làm trơn.
• Lấy trung bình: Lấy trung bình qua một số điểm mẫu, thường là 3 hay 5, nói cách
khác là cho tín hiệu qua một lọc trung bình di chuyển (moving average filter) bậc thấp.
• Nội suy Spline bậc ba: Phương pháp biểu diễn gần đúng các hàm số bằng những đa
thức trên từng đoạn nhỏ rồi ghép lại sao cho tại các điểm nối thỏa điều kiện cho trước gọi là
phương pháp Spline. Thường dùng là Spline bậc ba (cubic Spline), là một công thức nội
suy sao cho làm trơn đạo hàm bậc nhất và liên tục tới đạo hàm bậc hai trong một khoảng tại
biên của nó.
• Nội suy Hermite: Ở các nội suy Hermite ta dùng một đa thức bậc cao sao cho đa thức
này và các đạo hàm bậc nhất, bậc hai, . . . có các giá trị đã biết tại điểm đầu, điểm cuối và
các điểm trung gian. Màn hình bên trái cho thấy sự lựa ba kiểu làm trơn:
Việc làm trơn dạng sóng quá đáng sẽ làm giảm các biến động chuyển tiếp nhanh mà đôi khi
rất cần thiết. Do đó phải tùy dạng tín hiệu vào mà chọn cách phù hợp.
3.9 Trigger
Mục đích của Trigger là hiển thị dữ liệu từ vị trí mức Trigger (Trigger level) đã chọn. Nếu
dữ liệu tuần hoàn thì các lần vẽ lặp lại trùng nhau nên ta chỉ thấy một dạng sóng đứng yên
(thuận tiện cho việc quan sát). Vị trí dữ liệu trong mảng có giá trị bằng hoặc gần mức Trigger
Science & Technology Development, Vol 9, No.5 - 2006
Trang 30
đã chọn được vẽ ra màn hình từ vị trí đó trở đi (cho đến hết số chu kỳ đã định). Cũng giống như
Oscilloscope thật sự, ta có sự chọn lựa Trigger là +Slope (dốc lên) hay -Slope (dốc xuống),
ngoài sự chọn mức. Màn hình ở trên (bên phải) cho thấy các kiểu trigger.
4. TÍNH TOÁN CÁC THAM SỐ CỦA TÍN HIỆU
Sự thuận lợi của Oscilloscope số (ở đây là máy tính dùng như Oscillooscope số) là có thể
tính toán và hiển thị nhiều tham số (đặc tính) của tín hiệu như: chu kỳ, tần số, trị đỉnh - đỉnh...
4.1 Chu kỳ, tần số
Trước tiên tìm giải thuật đo chu kỳ tín hiệu tuần hoàn, sau đó suy ra tần số.
4.2 Trị hiệu dụng (RMS)
Ở đây ta tính trị hiệu dụng dựa vào phép lấy tích phân số. Thường công thức hình thang
(trường hợp đặc biệt của công thức Newton-Cotet) được dùng:
2
)( 10
)1( yy
hdxxf
hn
nh
+=∫ +
với h = chu kỳ lấy mẫu, y0 và y1 là biên độ hai điểm lấy mẫu liên tiếp. Như vậy trị hiệu dụng là:
VRMS = ∑∫ −
=
++=
1
1
2
1
2
0
2
2
11 N
i
iiT hyy
T
dtV
T
Trong đó: T: chu kỳ tín hiệu vào
yi, yi+1: các biên độ của 2 mẫu liên tiếp.
N: số điểm lấy mẫu trong 1 chu kỳ tín hiệu vào.
4.3 Trị đỉnh – đỉnh
Tìm trị của đỉnh dương và trị của đỉnh (đáy) âm trong mảng dữ liệu, sau đó suy ra trị đỉnh –
đỉnh.
5. PHÂN TÍCH TẦN PHỔ TÍN HIỆU DÙNG FFT
FFT (Fast Fourier Transform) là thuật toán tính toán nhanh biến đổi Fourier rời rạc (Dicrete
Fourier Transform – DFT) trong việc phân tích tần phổ tín hiệu. Ta lấy một số lượng mẫu đúng
bằng bội số nguyên của một chu kỳ tín hiệu, phần còn lại xem các mẫu như bằng không (đây là
cách độn không):
5.1 Chương trình biến đổi FFT thuận và nghịch
Vì toàn bộ phần mềm cho phòng thí nghiệm dùng mạng máy tính được viết bằng ngôn ngữ
Visual C++ (ngoại trừ phần cơ sở dữ liệu có kết hợp với Access), không dùng MATLAB nên
chúng tôi tự viết chương trình biến đổi FFT đã biết. Hình 7 là một ví dụ phân tích.
TẠP CHÍ PHÁT TRIỂN KH&CN, TẬP 9, SỐ 5 -2006
Trang 31
Hình 7. Phân tích phổ tín hiệu sin (méo và có nhiễu)
5.2 Độ méo hài
Phân tích FFT đã cho ra các thành phần hài của tín hiệu nên từ kết quả FFT ta có thể tính
được độ méo hài toàn phần (Total Harmonic Distortion – THD). Vì FFT cho kết quả có đối
xứng chẵn (đối xứng gương) nên khi tìm các hài chỉ cần dò tới N/2 là được.
6. LƯU TRỮ DỮ LIỆU
Chức năng cất dữ liệu cho phép người sử dụng lưu lại kết quả vào file, tiện cho việc lưu trữ
và so sánh tín hiệu sau này. Ngược lại với chức năng cất dữ liệu là chức năng lấy dữ liệu để đưa
file dữ liệu vào chương trình
In dữ liệu: Sau khi xem dữ liệu, ta có thể in ra giấy hình vẽ cùng với các thông số của tín
hiệu đó.
7. KẾT LUẬN
Chúng tôi đã thiết kế và thực hiện độc lập một card thu nhận dữ liệu hai kênh với đặc điểm
là có mạch tự động phân tầm (autoranging) và sử dụng vi điều khiển; hai yếu tố này làm tăng
tính tự động và dễ sử dụng của Oscilloscope. Chúng tôi đã viết phần mềm gồm nhiều module
cho hầu như tất cả các chức năng của một Oscilloscope số hai kênh: hiển thị (hai dạng sóng
dịch chuyển và khuếch đại độc lập), đo (trị đỉnh – đỉnh, trị hiệu dụng, chu kỳ, tần số), phân tích
(độ méo hài, tần phổ FFT). Chúng tôi đã thử nghiệm trên nhiều dạng sóng (sin, vuông, tam giác
. . .) và so sánh với oscilloscope tương tự và oscilloscope số, độ chính xác về các phép đo tần
số, biên độ, và các đại lượng khác đều tốt (tương đương) nếu tín hiệu vào có tần số dưới 10KHz
tương ứng 1 chu kỳ tín hiệu lấy được trên 10 điểm mẫu. Với tín hiệu có tần số thấp, từ DC tới
vài chục Hz, thường các oscilloscope tương tự không thể quan sát được, nhưng chúng tôi cũng
viết các chương trình cho phép thu nhận tín hiệu dạng này và đảm bảo độ chính xác tương
đương các oscilloscope số.
Phần mềm xem như đầy đủ với các giao diện thân thiện như Oscilloscope số thật sự, và
cũng tương thích khi phần cứng thay đổi. Với linh kiện sử dụng hiện tại (khuếch đại thuật toán,
mạch chuyển đổi ADC . . .) và với giao tiếp bus ISA, tần số hoạt động bị giới hạn ở dải tần số
Science & Technology Development, Vol 9, No.5 - 2006
Trang 32
từ DC đến 50KHz. Đây là giới hạn rất hiển nhiên của công trình. Việc nâng cấp (dùng linh kiện
cao cấp hơn và giao tiếp bus PCI) sẽ có thể đạt tần số đến vài Mhz nhưng cũng sẽ có thêm một
vài vấn đề cần nguyên cứu giải quyết. Chúng tôi không có vấn đề gì lớn nhưng sẽ tốn kém rất
nhiều đang thực hiện việc nâng cấp này.
CONVERTING A PC INTO TWO-CHANNEL DIGITAL OSCILLOSCOPE
Nguyen Truong An, Pham Thi Thu Phuong, Huynh Huu Thuan, Nguyen Huu Phuong
University of Natural Sciences, VNU-HCM
ABSTRACT: Oscilloscope is a very important and popular measuring instrument for
electronics and many other fields. It displays the waveform and various characteristics of
signals. There are two kinds of oscilloscope: analog and digital. Digital oscilloscope is
superior to analog one but is not as popular because of its higher cost. This paper presents the
conversion of a PC into a two-channel digital oscilloscope, consisting of hardware which is a
self-designed data acquision card, and the software which is a set of various programs written
in Visual C++.
TÀI LIỆU THAM KHẢO
[1]. Nguyễn Hữu Phương et al, Xây dựng cơ sở phần cứng và phần mềm phòng thí nghiệm
điện tử dùng mạng máy tính, báo cáo nghiệm thu đề tài NCKH trọng điểm ĐHQG –
HCM, 2004
[2]. S.C. Gate and J. Becker, Laboratory Automation using IBMPC, Prentice Hall, 1999
[3]. D.V. Hall, Microprocessors and Interfacing – Programming and Hardware, 2nd Ed.,
McGraw-Hill, 1992
[4]. A.D. Helfrick and W.D. Cooper, Modern Electronic Instrumentation and Measurement
Techniques, Prentice Hall, 1994
Các file đính kèm theo tài liệu này:
- dao_dong_ky.pdf