CHUYỂN ĐỔI MÁY TÍNH THÀNH DAO ĐỘNG KÝ SỐ HAI KÊNH

12
TP CHÍ PHÁT TRIN KH&CN, TP 9, S5 -2006 Trang 21 CHUYN ĐỔI MÁY TÍNH THÀNH DAO ĐỘNG KÝ SHAI KÊNH Nguyn Trường An, Phm ThThu Phương, Hunh Hu Thun, Nguyn Hu Phương Trường Đại hc Khoa hc Tnhiên, ĐHQG – HCM (Bài nhn ngày 01 tháng 12 năm 2005, hoàn chnh sa cha ngày 16 tháng 05 năm 2006) TÓM TT: Dao động ký hai kênh (Two-channel oscilloscope) là thiết bđo đin tquan trng và phbiến, nó hin thdng sóng và mt sđặc tính khác ca các tín hiu. Có hai loi dao động ký: tương tvà s. Dao động ký sưu vit hơn loi tương tnhưng ít phbiến vì giá cao. Bài báo trình bày cách thc chuyn đổi máy tính PC thành dao động ký shai kênh, gm phn cng là mch thu nhn dliu tthiết kế và phn mm là tp nhiu chương trình viết bng ngôn ngVisual C ++ . 1. GII THIU Dao động ký hai kênh (Two-channel oscilloscope) là thiết brt cn thiết và khá phbiến trong các phòng thí nghim đin tvà các phòng thí nghim khác. Nhưng dao động ký shai kênh ít phbiến hơn vì giá cao dù có nhiu ưu đim, đặc bit là khnăng đo, lưu trvà xdliu. Mt khác máy tính PC đã sn có khnăng cao vxlý, lưu trvà hin th. Do đó vn đề là thiết kế mch thu nhn dliu (DAQ) giao tiếp vi máy tính và trang bcác phn mm cn thiết. Đã có nhiu card DAQ và phn mm như vy, đin hình nht có llà thiết bvà phn mm LabView ca hãng National Instruments (M). đây, để gim giá thành xung mc thp nht chúng tôi tnghiên cu phát trin phn cng và phn mm. Phn còn li ca bài báo như sau. Mc 2: Thu nhn dliu, mc 3: Hin thdng sóng và dliu đo, mc 4: Tính toán tham sca tín hiu, mc 5: Phân tích tn ph, mc 6: Lưu trdliu, và mc 7: Kết lun. Do gii hn không gian nên nhiu gii thut chương trình và hình minh ha bbbt nhiu. 2. THU NHN DLIU Hình 1 là sơ đồ khi trình bày nguyên lý ca card thu nhn dliu (DAQ) để chuyn đổi máy tính thành dao động ký shai kênh. Vic giao tiếp thc hin qua bus ISA Hình 1: Sơ đồ khi nguyên lý ca card thu nhn dliu Vi Kênh A Phân tm và lc AD Vi điu khin kênh A Bđệm B U S I S A Dliu Gii mã địa chĐịa chVi Kênh B Phân tm và lc AD Vi điu khin kênh B Bđệm Dliu

Transcript of CHUYỂN ĐỔI MÁY TÍNH THÀNH DAO ĐỘNG KÝ SỐ HAI KÊNH

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ênhA

Bộ đệm

BUS 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

1312

1110

98

147

ACLR

QAQBQCQD

VCCGND

CHANNEL B

VrefClock

GAINA1

-

+

U6B

TL084

5

67

411

C19

2.2n

12

R29

20k

21

+12V

DGND

R54RESISTOR VAR

1 3

2

R24

680k

2

1

AGND

GAINB2

C20

270p

12

LOW-PASS FILTER

R13

20k21

C14

220p

1

2

AGND

C46

1n

1 2

-12V

R47

1M

21

+12V

-12V

C18

1n

12

R10

10k

21

+5V

AGND

-

+

U6DTL084

12

1314

411

R16

1k

21

C37

1n

1 2

R6

20k

21 AGND

-

+

U6CTL084

10

98

411

R3

20k

21

-12V

R23

1M

21

R1

680k

2

1

AGND

+12V

R28RESISTOR VAR

1 3

2

+5V

+12V

C44

104

1 2

AGND

AGND

+5V

+5V

U2

74HC4052

12141511

1524

6

109

133

168

7

X0X1X2X3

Y0Y1Y2Y3

INH

AB

XY

VDDVSS

VEE

C39

104

1 2

AGND

AGND

R43

1k

21

J1BNC

1

2

AGND

C6

1n

12

-

+

U1D

TL084

12

1314

411

+5V

-12V

C16

150p

1

2

AGND

-12V

C42

104

12

-

+

U1B

TL084

5

67

411

LEVEL SHIFTER

AGND

R34

10k

21

INPUTS

LOW-PASS FILTER

DGND

AGND

-

+

U13B

TL084

5

67

411

R11

10k

21

-

+

U6A

TL084

3

21

411

C41

1n

1 2

CHANNEL A

AUTORANGING

J2BNC

1

2

D5ZENERBReset

12

C11u

12

-

+

U13A

TL084

3

21

411

-

+

U13D

TL084

12

1314

411

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

C101u

12

C15

1n

1

2

R5

1k

2 1

+12V

AGND

R40

1k

21

-12V

U3A

74LS393

12

3456

147

ACLR

QAQBQCQD

VCCGND

AGND

-

+

U7

OP07

3

26

74 8

1

R44

1k

21

-

+

U8

OP07

3

26

74 8

1

C4

150p

1

2

+5V

-5V

-

+

U15

OP07

3

26

74 8

1

AGND

AGND

LEVEL SHIFTER

+12V

GAINB1

AGND

-12V

+12V

+12V

-

+

U1A

TL084

3

21

411

AGND

AGND

R30

4k

21C45

104

12

AUTORANGING

-12V

C47

1n

12

R26

20k

21

C40

104

1 2

C21

150p12

+12V

AGND

VrefReset

-12V

C8

270p

12

AGND

+12V

-

+

U14

OP07

3

26

74 8

1

VrefReset

+5V

D4

DIODEB

12

VrefClock

GAINA2

D1

DIODEA

12

R9

20k

21

R37

20k

21

KENHA

-

+

U13C

TL084

10

98

411

C43

104

1 2

+12V

R4

30k

2 1

R33

10k

21

R39

1k

21

C38

1n

1 2 -12V

-

+

U1C

TL084

10

98

411

R15

1k

21

C7

2.2n12

AGND

-12V

R53RESISTOR VAR

1 3

2

R42

10k

21

AGND

C9

150p12

D6ZENERBClock

12

R19

1k

21

R27RESISTOR VAR

1 3

2

+5V

R17

1k

21

R31

1 3

2

AGND

GAINB2

GAINA2

+12V

R2

100k

21

R14

10k21

AGND

GAINB1

-5V

R18

10k

21

U12

74HC4052

12141511

1524

6

109

133

168

7

X0X1X2X3

Y0Y1Y2Y3

INH

AB

XY

VDDVSS

VEE

D2ZENERAReset

12

AGND

AGND

R7

4k21

C5

150p

1

2

R25

100k

21

KENHB

D3ZENERAClock

12

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

10u1 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

1020

54

1213141516171819

23678911

RST/VPP

GNDVCC

XTAL1XTAL2

P1.0/AIN0P1.1/AIN1P1.2P1.3P1.4P1.5P1.6P1.7

P3.0/RXDP3.1/TXD

P3.2/INT0P3.3/INT1

P3.4/T0P3.5/T1

P3.7

DGND

ADD8

DGND

JP1

HEADER 5

12345

DGND

D8

LEDB

1 2

DA3

AGND

C22

1n

1

2

U4

AT89C2051/SO

1

1020

54

1213141516171819

23678911

RST/VPP

GNDVCC

XTAL1XTAL2

P1.0/AIN0P1.1/AIN1P1.2P1.3P1.4P1.5P1.6P1.7

P3.0/RXDP3.1/TXD

P3.2/INT0P3.3/INT1

P3.4/T0P3.5/T1

P3.7

U18B

74LS08

4

56

147

Y1

24MHz

12

+5V

DB4

DATA12

ADDRESSA

ADD2

ADDRESSB

BUSYA

C12

104

1

2GAINB2

AddChan1

DA5

U19

74HC688

1

10

19

20

3579

12141618

2468

11131517

OE

GND

P=Q

VCC

Q0Q1Q2Q3Q4Q5Q6Q7

P0P1P2P3P4P5P6P7

+5V

LEDB1

AphatBnhan

Vin1

DB8

U9

4053

1213

21

53

61110

9

14

15

4

16

87

X0X1

Y0Y1

Z0Z1

INHABC

X

Y

Z

VDD

VSSVEE

AGNDVin2

U17A

74LS32

1

23

147

DATA6ADD4

U17B

74LS32

4

56

147

U11

AD7875

20

18

1615141311109876542

19

211712

322

231

24

VIN

AGND

DB0/DB8DB1/DB9

DB2/DB10DB3/DB11DB4/LOWDB5/LOWDB6/LOWDB7/LOW

DB8/SDATADB9/SCLK

DB10/SSTRBDB11/HBENBUSY/INT

REFOUT

-VCCVCCGND

CLK12/8/CLK

CONVSTRDCS

LEDAB2

IOW

NGAT0

C25

104

1 2

C35

1u

1 2

DATA14

DATASTSA

ADD6

IOW

U18C

74LS08

9

108

147

DATA14

DATA9

MULTIPLEXER

DATA11

DA4

+5V

ADD9

DA11

DB11

-5V

LEDAB2

D9

LEDAB

1 2

C51

2200u

1 2

C56

10u1 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

1311

147

NGAT0

IOR

Vin1

DA2

DGND

KENHB

+5V

C33

104

1 2

-5V

DATA7

DATA5

BphatAnhanDB2

DGND

+12V

DATA3

-12V

R50

1k

21

C48

10u

1 2

DB3

C30

104

1 2

JP2

HEADER 3

123

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

108

147

DB8

ADD7R48

RESISTOR SIP 9

12 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

Vin2DGND

DATA8

DA10

AGND

C55

10u

1 2

C27

104

1 2

U22

74LS244

2468

1

18161412

2010

11131517

9753

19

A1A2A3A4

1OE

Y1Y2Y3Y4

VCCGND

A5A6A7A8

Y5Y6Y7Y8

2OE

ADD0

CONVERTA

D/K_IOCS16

DGND

DATA0

DGND

DGND

U16

74LS138

123

645

15141312111097

168

ABC

G1G2AG2B

Y0Y1Y2Y3Y4Y5Y6Y7

VCCGND

C58

1u

1 2

DUTRUB

DATA11

DUTRUA

DATA10

-5V

CONVERTBRD+CSBRESETA

+5V

DB6

XTAL2

XTAL

DATA14

DATA4

ADDRESSB

LED INDICATORSU18A

74LS08

1

23

147

DATA15

AddChan2

+5V

U23

74LS244

2468

1

18161412

2010

11131517

9753

19

A1A2A3A4

1OE

Y1Y2Y3Y4

VCCGND

A5A6A7A8

Y5Y6Y7Y8

2OE

DATA13

DB11

AGND

DGND

ADDRESSA

ADD5

C29

104

1 2

LEDA1

AGND

AphatBnhanKENHB

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

1311

147

DATA2

DATA2

ADD3

U21

PC AT BUS

2468

101214161820222426283032343638404244464850525456586062

646668707274767880828486889092949698

135791113151719212325272931333537394143454749515355575961

636567697173757779818385878991939597

B01 GNDB02 RESETB03 +5VB04 IRQ9B05 -5VB06 DRQ2B07 -12VB08 SRDYB09 +12VB10 GNDB11 SMEMWB12 SMEMRB13 IOWB14 IORB15 DACK3B16 DRQ3B17 DACK1B18 DRQ1B19 REFRESHB20 SYSCLKB21 IRQ7B22 IRQ6B23 IRQ5B24 IRQ4B25 IRQ3B26 DACK2B27 TCB28 BALEB29 +5VB30 OSCB31 GND

D01 MEMCS16D02 IOCS16D03 IRQ10D04 IRQ11D05 IRQ12D06 IRQ15D07 IRQ14D08 DACK0D09 DRQ0D10 DACK5D11 DRQ5D12 DACK6D13 DRQ6D14 DACK7D15 DRQ7D16 +5VD17 MASTERD18 GND

IOCHCHK A01SD7 A02SD6 A03SD5 A04SD4 A05SD3 A06SD2 A07SD1 A08SD0 A09

IOCHRDY A10AEN A11

SA19 A12SA18 A13SA17 A14SA16 A15SA15 A16SA14 A17SA13 A18SA12 A19SA11 A20SA10 A21SA9 A22SA8 A23SA7 A24SA6 A25SA5 A26SA4 A27SA3 A28SA2 A29SA1 A30SA0 A31

SBHE C01LA23 C02LA22 C03LA21 C04LA20 C05LA19 C06LA18 C07LA17 C08

MEMR C09MEMW C10

SD8 C11SD9 C12

SD10 C13SD11 C14SD12 C15SD13 C16SD14 C17SD15 C18

DATA1

AGNDDB7

C24

1041

2

XTAL1

DGND

DGND

DATA5

IOCS16

DATA13

RESETA

DB1

U5

AD7875

20

18

1615141311109876542

19

211712

322

231

24

VIN

AGND

DB0/DB8DB1/DB9

DB2/DB10DB3/DB11DB4/LOWDB5/LOWDB6/LOWDB7/LOW

DB8/SDATADB9/SCLK

DB10/SSTRBDB11/HBENBUSY/INT

REFOUT

-VCCVCCGND

CLK12/8/CLK

CONVSTRDCS

LEDA2

DB10

ADDRESS DECODER

-12V

DATA13

ADDRESSB

DB3

ADD4

BUSYB

U25

74LS244

2468

1

18161412

2010

11131517

9753

19

A1A2A3A4

1OE

Y1Y2Y3Y4

VCCGND

A5A6A7A8

Y5Y6Y7Y8

2OEADDRESSB

IOW

DB4

-5V

DGND

U20

74LS244

2468

1

18161412

2010

11131517

9753

19

A1A2A3A4

1OE

Y1Y2Y3Y4

VCCGND

A5A6A7A8

Y5Y6Y7Y8

2OE

AddChan2

DGND

J3

DIPSOC-8x2/SM

12345678

161514131211109

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

DATA7DATA6

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

hdxxfhn

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

21

2

0

2

211 N

i

iiTh

yyT

dtVT

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