Bài báo Chuyển đổi máy tính thành dao động ký số hai kênh

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.

pdf12 trang | Chia sẻ: oanhnt | Lượt xem: 1633 | Lượt tải: 1download
Bạn đang xem nội dung tài liệu Bài báo Chuyển đổi máy tính thành dao động ký số hai 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