Đề tài Thiết kế và chế tạo máy phân tích đa kênh (1024 kênh) ghép với máy vi tính qua cổng USB

MỤC LỤC

Mở đầu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1

Chương 1. GIỚI THIỆU TỔNG QUAN VỀ ĐỀTÀI

1.1 Lý do chọn đềtài . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

1.2 Sơlược vềmáy phân tích đa kênh . . . . . . . . . . . . . . . . . . . . . . . . . 3

Chương 2. TỒNG QUAN VI ĐIỀU KHIỂN PIC18F2455/2550/4455/4550

2.1 Giới thiệu vi điều khiển PIC18F2455/2550/4455/4550. . . . . . . . . . 5

2.2 Giao động xung nhịp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

2.3 Bộnhớ. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

2.4 Khối timer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

2.5 Khối CAPTURE/SO SÁNH/PWM . . . . . . . . . . . . . . . . . . . . . . . . . . 12

2.6 Khối CAPTURE/SO SÁNH/PWM nâng . . . . . . . . . . . . . . . . . . . . . . 13

2.7 Khối USB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

2.8 Cổng song song streaming . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

2.9 Khối truyền nối tiếp đồng bộchủMSSP . . . . . . . . . . . . . . . . . . . . . . 16

2.10 Thu phát bất đồng bộ đa năng nâng cao EUSART. . . . . . . . . . . . . . 17

2.11 Khối biến đổi AD 10 bit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

2.12 Khối so sánh điện áp tương tự. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

2.13 Khối tham chiếu điện áp so sánh . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

2.14 Khối phát hiện điện áp cao/thấp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

2.15 Ngắt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

2.16 Các chi tiết đặc biệt họPIC18F2455/2550/4455/4550 . . . . . . . . . . . . 22

Chương 3. CỔNG USB

3.1 Cổng USB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

3.2 Mô hình BUS USB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

3.3 Các kiểu truyền USB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

3.4 Giao diện vật lý BUS USB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

3.5 Giao thức truyền . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

3.6 Các quá trình truyền USB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

3.7 Điểm danh và gói phần mềm điều khiển . . . . . . . . . . . . . . . . . . . . . . . . 36

3.8 Một sốvi mạch sửdụng trong kết nối USB . . . . . . . . . . . . . . . . . . . . . . 41

3.9 Các mạch chuyển đổi USB sang RS232 . . . . . . . . . . . . . . . . . . . . . . . . . 43

Chương 4. THIẾT KẾVÀ CHẾTẠO CÁC KHỐI CHỨC NĂNG

4.1 Khối cao thế. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44

4.2 Khối khuếch đại phổvà khối phát xung điều khiển ADC . . . . . . . . . 45

4.3 Khối logic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47

4.4 Khối nguồn nuôi thếthấp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48

Chương 5. CÁC GIẢI THUẬT PHẦN MỀM

5.1 Giải thuật đóng – mởvà điều khiển điện áp cao áp, điều khiển hệsốkhuếch

đại khối khuếch đại . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49

5.2 Giải thuật hiển thịphổ. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51

5.3 Giải thuật làm trơn phổ. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57

5.4 Giải thuật lấy tích phân và hiển thịmiền lấy tích phân . . . . . . . . . . . . . 62

5.5 Giải thuật lấy diện tích hình thang . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63

5.6 Giải thuật chuẩn hóa năng lượng cho phổ. . . . . . . . . . . . . . . . . . . . . . . 64

5.7 Giải thuật đo thời gian chết phần trăm . . . . . . . . . . . . . . . . . . . . . . . . . . 67

5.8 Mã nguồn lưu file, mởfile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70

Chương 6. ĐO CÁC ĐẶC TRƯNG CỦA PHẦN CỨNG

6.1 Độphi tuyến tích phân và độphi tuyến vi phân . . . . . . . . . . . . . . . . . 71

6.2 Độphân giải . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72

6.3 Độtrôi đỉnh phổ. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72

6.4 Thời gian chết trên một xung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72

6.5 Độtrôi hệsốkhuếch đại phổ. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72

6.6 Độtrôi mức zero của khuếch đại phổ. . . . . . . . . . . . . . . . . . . . . . . . . . 73

6.7 Các đặc trưng khối cao áp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73

6.8 Các đặc trưng khối nguồn nuôi điện áp thấp . . . . . . . . . . . . . . . . . . . . . 73

6.9 So sánh các đặc trưng MCA chếtạo và CANBERRA series 30. . . . . . . 73

Chương 7. CÁC KẾT QUẢTHIẾT KẾPHẦN MỀM

7.1 Phần mềm và các kết quả đo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74

7.2 Hiển thịphổ ở3 chế độ: toàn giải, nửa giải cao, nửa giải thấp . . . . . . . 74

7.3 Tính năng tính tích phân và diện tích hình thang giữa 2 vịtrí

con trỏ. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76

7.4 Công cụlàm trơn phổ. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77

7.5 Công cụchuẩn hóa năng lượng . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77

7.6 Tính năng lưu phổ, mởphổ. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79

KẾT LUẬN. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80

Tài liệu tham khảo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81

Phụlục . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82

pdf146 trang | Chia sẻ: netpro | Lượt xem: 1557 | Lượt tải: 4download
Bạn đang xem trước 20 trang tài liệu Đề tài Thiết kế và chế tạo máy phân tích đa kênh (1024 kênh) ghép với máy vi tính qua cổng USB, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
C=12V X1 20MHz RB5 VDD=5V CTL- HV U8 PIC18F4550 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 MCLR/Vpp/RE3 RA0/AN0 RA1/AN1 RA2/AN2/VREF-/CVREF RA3/AN3/VREF+ RA4/TOCKI RA5/SS RE0/RD RE1/WR RE2/CS VDD Vss OSC1/CLKIN OSC2/CLKOUT RC0/T1OSO/T1CKI RC1/T1OSI/CCP2 RC2/CCP1 VUSB RD0/PSP0 RD1/PSP1 RD2/PSP2 RD3/PSP3 RC4/D-/VM RC5/D+/VP RC6/TX/CK RC7/RX/DT RD4/PSP4 RD5/PSP5 RD6/PSP6 RD7/PSP7 Vss VDD RB0/INT RB1 RB2 RB3 RB4 RB5 RB6 RB7 U9 + - U10B LM324A 5 6 7 4 11 RD5C23 20pF RB4 U10 POT10 1 3 2 C24 100nF -VCC=-12V VDD=5V C22 20pF -VCC=-12V AN0 R37 4.7K MCP41010 CS SCK SI Vss VDD B W A VDD=5V VDD=5V VCC=12V Hình 4.4 Sơ đồ nguyên lý khối logic. Đề tài cấp bộ: Thiết kế và chế tạo máy phân tích đa kênh (1024 kênh) ghép với máy tính qua cổng USB Chủ nhiệm đề tài: Nguyễn Văn Sơn 48 Các đặc trưng thiết kế khối logic: - Cổng USB thiết kế hoạt động ở mode full speed. 4.4 KHỐI NGUỒN NUÔI ĐIỆN ÁP THẤP C30 C28 C31 0VAC D15 1N4007 D16 1N4007 OUTPUT 5VR38 T21 5 6 4 8 C27 D17 1N4007 220V R39 C26 U13 LM7912 1 2 3 VI G N D VO AC C32 C33 15VAC U12 LM7805 1 2 3 VI G N D VO OUTPUT 12V D14 1N4007 T3 1 5 4 8 U11 LM7812 1 2 3 VI G N D VO C29 OUTPUT -12V15VAC Hình 4.5 Sơ đồ nguyên lý khối nguồn nuôi điện áp thấp Khối nguồn nuôi điện áp thấp được xây dựng trên biến áp hạ áp T2 220VAC/15VAC, 15VAC, 40VA . Các linh kiện R38, R39, T3,C26, C27, C28 tạo thành bộ lọc điện lưới (line filter). Chỉnh lưu 2 bán kỳ điện áp dương: D14; D15; C29. Ổn áp 12V, 5V nhờ IC U11 và U12. Chỉnh lưu 2 bán kỳ điện áp âm: D16; D17; C30. Ổn áp -12V nhờ IC U13. Các đặc trưng thiết kế khối nguồn nuôi điện áp thấp: - Dòng cực đại lối ra +12V, -12V, +5V là 1A - Công suất tiêu thụ cực đại khối nguồn nuôi: 30VA - Điện áp lối vào 220VAC  20% Đề tài cấp bộ: Thiết kế và chế tạo máy phân tích đa kênh (1024 kênh) ghép với máy tính qua cổng USB Chủ nhiệm đề tài: Nguyễn Văn Sơn 49 CHƯƠNG 5. CÁC GIẢI THUẬT PHẦN MỀM 5.1 Giải thuật đóng – mở và điều khiển điện áp cao áp, điều khiển hệ số khuếch đại khối khuếch đại Máy vi tính điều khiển cho vi điều khiển tại máy phân tích bằng cách gửi 2 byte qua cổng USB, byte thứ nhất tạm gọi là mã lệnh để ra lệnh cho vi điều khiển làm công việc gì, byte thứ 2 là dữ liệu công việc cần điều khiển. Sau đây là bảng tổng kết quy ước các byte điều khiển chuyển từ máy tính đến vi điều khiển. Công việc điều khiển Byte thứ nhất (mã lệnh) (dạng số thập phân) Byte thứ hai (dữ liệu) (dạng số thập phân) Đóng – mở cao áp 01 0: tắt cao áp 1: mở cao áp Điều khiển điện áp cao áp 02 0 - 255 Điều khiển hệ số khuếch đại khối khuếch đại 03 0-255 Bảng 5.1 Bảng tổng kết quy ước các byte điều khiển chuyển từ máy tính đến vi điều khiển. Đóng – mở cao áp: Khi vi điều khiển nhận byte thứ nhất số 01, byte thứ hai số 0, vi điều khiển xuất ra mức cao bit RD5 làm Q5 (mạch cao thế) dẫn, kéo theo Q1, Q2 ngưng dẫn làm mất điện áp nuôi cho biến áp xung T1 (mạch cao thế) và tắt cao áp. Ngược lại, byte thứ hai số 1, vi điều khiển xuất ra mức thấp bit RD5 làm Q5 ngưng, kéo theo Q1, Q2 dẫn, có điện áp nuôi cho biến áp xung T1 , có cao áp. Điều khiển điện áp cao áp: Khi vi điều khiển nhận byte thứ nhất là số 2, byte thứ là con số 0-255, vi điều khiển lấy dữ liệu ở byte thứ hai điều khiển biến trở số U9- MCP41010 bằng giao thức SPI (tại mạch logic). MCP41010 là biến trở số 10 . Khi dữ liệu byte thứ hai là 255, điểm giữa W của biến trở số đi về điểm A và có điện thế bằng 5V, điện thế lối ra này được đệm bởi U10-LM324 (tại mạch logic) tương ứng với điện thế cao áp lối ra cực đại là 2 kV. Từ 0V đến 2KV được chia thành 255 bước, mỗi bước ứng với 8V. KW Mã nguồn đóng/mở cao áp và điều chỉnh cao áp Private Sub CmdHVon-off_Click() ‘ nút lệnh on/off cao áp If Command2.Caption = "OFF" Then Command2.Caption = "ON" Command1.Enabled = True If Not MyDeviceDetected Then MyDeviceDetected = FindTheHid End If If MyDeviceDetected Then OutputReportData(0) = 2 If HScroll1.Value <= 125 Then OutputReportData(1) = 2 * HScroll1.Value Else Đề tài cấp bộ: Thiết kế và chế tạo máy phân tích đa kênh (1024 kênh) ghép với máy tính qua cổng USB Chủ nhiệm đề tài: Nguyễn Văn Sơn 50 OutputReportData(1) = 250 End If OutputReportData(2) = 255 OutputReportData(3) = 255 OutputReportData(4) = 255 OutputReportData(5) = 255 OutputReportData(6) = 255 OutputReportData(7) = 255 Call ReadAndWriteToDevice End If Label3.Caption = Str(8 * HScroll1.Value) + "V" Else Command2.Caption = "OFF" Command1.Enabled = False If Not MyDeviceDetected Then MyDeviceDetected = FindTheHid End If If MyDeviceDetected Then OutputReportData(0) = 2 OutputReportData(1) = 0 OutputReportData(2) = 255 OutputReportData(3) = 255 OutputReportData(4) = 255 OutputReportData(5) = 255 OutputReportData(6) = 255 OutputReportData(7) = 255 Call ReadAndWriteToDevice End If Label3.Caption = "0V" End If End Sub Private Sub HScrollHV_Change() ‘thanh cuốn đặt cao áp 'High Voltage If Not MyDeviceDetected Then MyDeviceDetected = FindTheHid End If If MyDeviceDetected Then If Label10.Caption = "HV ON" Then OutputReportData(0) = 2 If HScroll1.Value <= 125 Then OutputReportData(1) = 2 * HScroll1.Value Else OutputReportData(1) = 250 End If OutputReportData(2) = 255 OutputReportData(3) = 255 OutputReportData(4) = 255 OutputReportData(5) = 255 Đề tài cấp bộ: Thiết kế và chế tạo máy phân tích đa kênh (1024 kênh) ghép với máy tính qua cổng USB Chủ nhiệm đề tài: Nguyễn Văn Sơn 51 OutputReportData(6) = 255 OutputReportData(7) = 255 Call ReadAndWriteToDevice Else OutputReportData(1) = 0 OutputReportData(2) = 255 OutputReportData(3) = 255 OutputReportData(4) = 255 OutputReportData(5) = 255 OutputReportData(6) = 255 OutputReportData(7) = 255 Call ReadAndWriteToDevice End If End If Label3.Caption = Str(8 * HScroll1.Value) + "V" End Sub Điều khiển hệ số khuếch đại khối khuếch đại: Khi vi điều khiển nhận byte thứ nhất là số 3, byte dữ liệu thứ hai vi điều khiển dùng để điều khiển biến trở số U5 (tại mạch khuếch đại). Hệ số khuếch đại của U2 (tại mạch khuếch đại) tính theo công thức sau: 18 WBV 17 WA R RA 1 R R += + + Mã nguồn điều khiển hệ số khuếch đại khối khuếch đại Private Sub HScrollAmp_Change() ‘thanh cuốn đặt hệ số khuếch đại 'amplifier gain If Not MyDeviceDetected Then MyDeviceDetected = FindTheHid End If If MyDeviceDetected Then OutputReportData(0) = 4 OutputReportData(1) = HScroll2.Value OutputReportData(2) = 255 OutputReportData(3) = 255 OutputReportData(4) = 255 OutputReportData(5) = 255 OutputReportData(6) = 255 OutputReportData(7) = 255 Call ReadAndWriteToDevice End If Label4.Caption = Str(0.063 * HScroll2.Value + 26) + "db" End Sub 5.2 Giải thuật hiển thị phổ: Một điểm phổ tượng trưng bởi một điểm (Shape1(i)), độ cao là hàm của số đếm M(i) và giá trị thanh cuốn Vscroll1. Đề tài cấp bộ: Thiết kế và chế tạo máy phân tích đa kênh (1024 kênh) ghép với máy tính qua cổng USB Chủ nhiệm đề tài: Nguyễn Văn Sơn 52 Hình 5.1 Lưu đồ thuật toán đo và hiển thị phổ. Các đoạn mã nguồn hiển thị phổ Private Sub Form_Load() ‘ hiển thị phổ lúc form-load Dim i As Integer Line4.Visible = False For i = 0 To 1023 Shape1(i).Height = 40 Shape1(i).Width = 40 Shape1(i).Left = 400 + i * 15 Shape1(i).Top = 5800 Next Option1.Value = True Option4.Value = True Command1.Caption = "START" Command1.Enabled = False Timer1.Enabled = False Label10.Caption = "HV OFF" Label10.ForeColor = &H0& Image1.Left = 300 Image1.Top = 4750 Line2.X1 = 540 Line2.X2 = 540 Line2.Y1 = 5800 Line2.Y2 = 5200 Image2.Left = 800 Image2.Top = 4750 Line1.X1 = 1040 Đề tài cấp bộ: Thiết kế và chế tạo máy phân tích đa kênh (1024 kênh) ghép với máy tính qua cổng USB Chủ nhiệm đề tài: Nguyễn Văn Sơn 53 Line1.X2 = 1040 Line1.Y1 = 5800 Line1.Y2 = 5200 S = 0 Hr = 0 Mn = 0 End Sub Private Sub VScroll1_Change() ‘ hiển thị phổ lúc kéo thanh cuốn tăng giảm chiều ‘cao phổ If FlagInt = True Or FlagTra = True Then Line4.Visible = False FlagTra = False For i = 0 To 1023 Line3(i).Visible = False Next FlagInt = False End If For i = 0 To 1023 Shape1(i).Top = 5800 - VScroll1.Value * M(i) Next Image2.Top = Shape1(Vtt2).Top - 1000 Line1.Y1 = Shape1(Vtt2).Top Line1.Y2 = Shape1(Vtt2).Top - 600 Image1.Top = Shape1(Vtt1).Top - 1000 Line2.Y1 = Shape1(Vtt1).Top Line2.Y2 = Shape1(Vtt1).Top - 600 End Sub Private Sub Option1_Click() ‘ tùy chọn full scale 'Full Scale If FlagInt = True Or FlagTra = True Then Line4.Visible = False FlagTra = False For i = 0 To 1023 Line3(i).Visible = False Next FlagInt = False End If For i = 0 To 1023 Shape1(i).Left = 400 + i * 15 Shape1(i).Visible = True Next End Sub Private Sub Option2_Click() ‘ tùy chọn low half scale 'Low Half Scale If FlagInt = True Or FlagTra = True Then Đề tài cấp bộ: Thiết kế và chế tạo máy phân tích đa kênh (1024 kênh) ghép với máy tính qua cổng USB Chủ nhiệm đề tài: Nguyễn Văn Sơn 54 Line4.Visible = False FlagTra = False For i = 0 To 1023 Line3(i).Visible = False Next FlagInt = False End If For i = 0 To 511 Shape1(i).Left = 400 + i * 30 Shape1(i).Visible = True Shape1(i + 512).Visible = False Next End Sub Private Sub Option3_Click() ‘tùy chọn high half scale 'High Half Scale If FlagInt = True Or FlagTra = True Then Line4.Visible = False FlagTra = False For i = 0 To 1023 Line3(i).Visible = False Next FlagInt = False End If For i = 512 To 1023 Shape1(i).Left = -14960 + i * 30 Shape1(i).Visible = True Shape1(i - 512).Visible = False Next End Sub Private Sub Timer1_Timer() ‘cập nhật phổ tempL = ReadBuffer(2) ' byte thap tempH = ReadBuffer(3) ' byte cao tempLo = tempL tempHo = tempH Ch = tempH * 256 + tempL If Ch > 30 Then 'cat cac kenh thap M(Ch) = M(Ch) + 1 Shape1(Ch).Top = 5800 - VScroll1.Value * M(Ch) End If End Sub Đoạn mã nguồn kéo con trỏ 1 và 2 Private Sub Image1_MouseMove(Button As Integer, Shift As Integer, x As Single, y As Single) Dim j As Integer Đề tài cấp bộ: Thiết kế và chế tạo máy phân tích đa kênh (1024 kênh) ghép với máy tính qua cổng USB Chủ nhiệm đề tài: Nguyễn Văn Sơn 55 Dim k, c, Akev, Bkev As Double Dim tamAkev As String If Button = 1 Then If FlagInt = True Or FlagTra = True Then Line4.Visible = False FlagTra = False For i = 0 To 1023 Line3(i).Visible = False Next FlagInt = False End If If ((Image1.Left >= 200) And (Image1.Left <= 15600)) Then Image1.Move Image1.Left + x - 180, 5000 'Image2.Top + Y - 100 If Option1.Value = True Then For j = 0 To 1023 If (Abs(Image1.Left + x - Shape1(j).Left) < 40) Then Image1.Top = Shape1(j).Top - 1000 Line2.X1 = Shape1(j).Left Line2.X2 = Shape1(j).Left Line2.Y1 = Shape1(j).Top Line2.Y2 = Shape1(j).Top - 600 If Label24.Caption = "Cal" Then Label9.Caption = Str(M(j)) + "/" + Str(Format(Kev(j), "00.000")) Else Label9.Caption = Str(M(j)) + "/" + Str(j) End If Vtt1 = j End If Next End If If Option2.Value = True Then For j = 0 To 511 If (Abs(Image1.Left + x - Shape1(j).Left) < 40) Then Image1.Top = Shape1(j).Top - 1000 Line2.X1 = Shape1(j).Left Line2.X2 = Shape1(j).Left Line2.Y1 = Shape1(j).Top Line2.Y2 = Shape1(j).Top - 600 Label9.Caption = Str(M(j)) + "/" + Str(j) Vtt1 = j End If Next End If If Option3.Value = True Then For j = 512 To 1023 If (Abs(Image1.Left + x - Shape1(j).Left) < 40) Then Image1.Top = Shape1(j).Top - 1000 Line2.X1 = Shape1(j).Left Đề tài cấp bộ: Thiết kế và chế tạo máy phân tích đa kênh (1024 kênh) ghép với máy tính qua cổng USB Chủ nhiệm đề tài: Nguyễn Văn Sơn 56 Line2.X2 = Shape1(j).Left Line2.Y1 = Shape1(j).Top Line2.Y2 = Shape1(j).Top - 600 Label9.Caption = Str(M(j)) + "/" + Str(j) Vtt1 = j End If Next End If Else If Image1.Left < 200 Then Image1.Left = 220 End If If Image1.Left > 15600 Then Image1.Left = 15500 End If End If Label17.Caption = "" Label19.Caption = "" End If End Sub Private Sub Image2_MouseMove(Button As Integer, Shift As Integer, x As Single, y As Single) Dim j As Integer Dim k, c, Akev, Bkev As Double Dim tamAkev As String If Button = 1 Then If FlagInt = True Or FlagTra = True Then Line4.Visible = False FlagTra = False For i = 0 To 1023 Line3(i).Visible = False Next FlagInt = False End If If ((Image2.Left >= 200) And (Image2.Left <= 15600)) Then Image2.Move Image2.Left + x - 180, 5000 'Image2.Top + Y - 100 If Option1.Value = True Then For j = 0 To 1023 If (Abs(Image2.Left + x - Shape1(j).Left) < 40) Then Image2.Top = Shape1(j).Top - 1000 Line1.X1 = Shape1(j).Left Line1.X2 = Shape1(j).Left Line1.Y1 = Shape1(j).Top Line1.Y2 = Shape1(j).Top - 600 If Label24.Caption = "Cal" Then Label8.Caption = Str(M(j)) + "/" + Str(Format(Kev(j), "00.000")) Else Đề tài cấp bộ: Thiết kế và chế tạo máy phân tích đa kênh (1024 kênh) ghép với máy tính qua cổng USB Chủ nhiệm đề tài: Nguyễn Văn Sơn 57 Label8.Caption = Str(M(j)) + "/" + Str(j) End If Vtt2 = j End If Next End If If Option2.Value = True Then For j = 0 To 511 If (Abs(Image2.Left + x - Shape1(j).Left) < 40) Then Image2.Top = Shape1(j).Top - 1000 Line1.X1 = Shape1(j).Left Line1.X2 = Shape1(j).Left Line1.Y1 = Shape1(j).Top Line1.Y2 = Shape1(j).Top - 600 Label8.Caption = Str(M(j)) + "/" + Str(j) Vtt2 = j End If Next End If If Option3.Value = True Then For j = 512 To 1023 If (Abs(Image2.Left + x - Shape1(j).Left) < 40) Then Image2.Top = Shape1(j).Top - 1000 Line1.X1 = Shape1(j).Left Line1.X2 = Shape1(j).Left Line1.Y1 = Shape1(j).Top Line1.Y2 = Shape1(j).Top - 600 Label8.Caption = Str(M(j)) + "/" + Str(j) Vtt2 = j End If Next End If Else If Image2.Left < 200 Then Image2.Left = 220 End If If Image2.Left > 15600 Then Image2.Left = 15500 End If End If Label17.Caption = "" Label19.Caption = "" End If End Sub 5.3 Giải thuật làm trơn phổ: Mỗi đoạn phổ ngắn có thể xem như một đa thức toán học. Giá trị của đa thức và đạo hàm của nó có thể xem như là hàm của số đếm trong mỗi kênh của phổ và cho bởi công thức sau [3]: Đề tài cấp bộ: Thiết kế và chế tạo máy phân tích đa kênh (1024 kênh) ghép với máy tính qua cổng USB Chủ nhiệm đề tài: Nguyễn Văn Sơn 58 =- = åmn,m k,n,m k mn,m 1Y (i) C y(i k) N + (5.1) Với là đạo hàm bậc n của phổ làm trơn tại kênh i n,mY (i) là số đếm tại kênh thứ (i+k) +y(i k) và là các hằng số cho trong bảng (3.2) k,n,mC n,mN m liên hệ với số điểm làm trơn m’ là: m’= 2m+1 Số điểm tối ưu dùng làm trơn phụ thuộc vào dạng cụ thể của vùng phổ đang xét. r n m’ n,mN k 0 1 2 3 4 5 6 7 k,n,mC 2 3 0 5 7 9 11 13 15 35 21 231 429 143 1105 17 7 59 89 25 167 12 6 54 84 24 162 -3 3 39 69 21 147 -2 14 44 16 122 -21 9 9 87 -36 0 42 -11 -13 -78 k,n,mC 2 1 5 7 9 11 13 15 10 28 60 110 182 280 0 0 0 0 0 0 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 3 4 4 4 4 5 5 5 6 6 7 k,n,mC 3 1 5 7 9 11 13 15 12 252 1188 5148 24024 334152 0 0 0 0 0 0 8 58 126 296 832 7506 -1 67 193 503 1489 13843 -22 142 532 1796 17842 -86 294 1578 18334 -300 660 14150 -1133 4121 -12922 k,n,mC 2 3 2 5 7 9 11 13 15 7 42 462 429 1001 6188 -2 -4 -20 -10 -14 -56 -1 -3 -17 -9 -13 -53 k,n,mC Bảng 5.2 Các hệ số và n,mN k,n,mC Với r là bậc của đa thức làm khớp m’=2m+1 Ví dụ:  Làm trơn cửa sổ 5 điểm, bậc 2: r = 2, n=0, m’ = 5, ta có các hệ số làm trơn là: -3/35 = -0.09; 12/35 = 0.34; 17/35 = 0.48; 12/35 = 0.34; -3/35 = -0.09  Làm trơn cửa sổ 7 điểm, bậc 3: r = 3, n = 0, m’ = 7, các hệ số làm trơn là: -2/21 = -0.1; 3/21 = 0.14; 6/21 = 0.29; 7/21 = 0.33; 6/21 = 0.29; 3/21 = 0.14; -2/21 = -0.1 Đề tài cấp bộ: Thiết kế và chế tạo máy phân tích đa kênh (1024 kênh) ghép với máy tính qua cổng USB Chủ nhiệm đề tài: Nguyễn Văn Sơn 59  Làm trơn cửa sổ 9 điểm, bậc 3: r=3, n=0, m’=9, các hệ số làm trơn là: -21/231 = -0.09; 14/231 = 0.06; 39/231 = 0.17; 54/231 = 0.23; 59/231 = 0.26 ; 54/231 = 0.23; 39/231 = 0.17; 14/231 = 0.06; -21/231 = -0.09 Hình 5.2 Lưu đồ thuật toán làm trơn phổ cửa sổ 5 điểm. Mã nguồn làm trơn phổ Private Sub CmdSpline_Click() Dim Response As Integer Dim st As String Response = MsgBox("You should save spectrum before spline", vbYesNo) If Response = 6 Then 'yes CommonDialog1.Filter = "DataFile(*.spt)|*.spt|AllData(*.*)|*.*" CommonDialog1.ShowSave file1 = CommonDialog1.FileName st = "" Open file1 For Output As #30 Close #30 Open file1 For Append As #30 For i = 0 To 1023 st = Str(M(i)) + Chr(9) Print #30, st Next Close #30 Đề tài cấp bộ: Thiết kế và chế tạo máy phân tích đa kênh (1024 kênh) ghép với máy tính qua cổng USB Chủ nhiệm đề tài: Nguyễn Văn Sơn 60 End If FlagInt = True If Option1(0).Value = True Then ' lam tron 3 diem For i = 0 To 1021 SPL(i + 1) = 0.25 * M(i) + 0.5 * M(i + 1) + 0.25 * M(i + 2) Next SPL(0) = 0.5 * M(0) + 0.5 * M(1) SPL(1023) = 0.5 * M(1022) + 0.5 * M(1023) For i = 0 To 1023 M(i) = SPL(i) Next End If If Option1(1).Value = True Then 'lam tron 5 diem For i = 0 To 1019 SPL(i + 2) = -0.09 * M(i) + 0.34 * M(i + 1) + 0.48 * M(i + 2) + 0.34 * M(i + 3) - 0.09 * M(i + 4) Next SPL(0) = 0.48 * M(0) + 0.68 * M(1) - 0.18 * M(2) SPL(1) = 0.34 * M(0) + 0.48 * M(1) + 0.34 * M(2) - 0.18 * M(3) SPL(1022) = -0.18 * M(1020) + 0.34 * M(1021) + 0.48 * M(1022) + 0.34 * M(1023) SPL(1023) = -0.18 * M(1021) + 0.68 * M(1022) + 0.48 * M(1023) For i = 0 To 1023 M(i) = SPL(i) Next End If If Option1(2).Value = True Then 'lam tron 7 diem For i = 0 To 1017 SPL(i + 3) = -0.1 * M(i) + 0.14 * M(i + 1) + 0.29 * M(i + 2) + 0.33 * M(i + 3) + 0.29 * M(i + 4) + 0.14 * M(i + 5) - 0.1 * M(i + 6) Next SPL(0) = 0.33 * M(0) + 0.58 * M(1) + 0.28 * M(2) - 0.2 * M(3) SPL(1) = 0.29 * M(0) + 0.33 * M(1) + 0.29 * M(2) + 0.28 * M(3) - 0.2 * M(4) SPL(2) = 0.14 * M(0) + 0.29 * M(1) + 0.33 * M(2) + 0.29 * M(3) + 0.14 * M(4) - 0.2 * M(5) SPL(1021) = -0.2 * M(1018) + 0.14 * M(1019) + 0.29 * M(1020) + 0.33 * M(1021) + 0.29 * M(1022) + 0.14 * M(1023) SPL(1022) =- 0.2 * M(1019) + 0.28 * M(1020) + 0.29 * M(1021) + 0.33 * M(1022) + 0.29 * M(1023) SPL(1023) = -0.2 * M(1020) + 0.28 * M(1021) + 0.58 * M(1022) + 0.33 * M(1023) For i = 0 To 1023 M(i) = SPL(i) Next End If Đề tài cấp bộ: Thiết kế và chế tạo máy phân tích đa kênh (1024 kênh) ghép với máy tính qua cổng USB Chủ nhiệm đề tài: Nguyễn Văn Sơn 61 If Option1(3).Value = True Then 'lam tron 9 diem For i = 0 To 1015 SPL(i + 4) = -0.09 * M(i) + 0.06 * M(i + 1) + 0.17 * M(i + 2) + 0.23 * M(i + 3) + 0.26 * M(i + 4) + 0.23 * M(i + 5) + 0.17 * M(i + 6) + 0.06 * M(i + 7) - 0.09 * M(i + 8) Next SPL(0) = 0.26 * M(0) + 0.46 * M(1) + 0.34 * M(2) + 0.12 * M(3) - 0.18 * M(4) SPL(1) = 0.23 * M(0) + 0.26 * M(1) + 0.23 * M(2) + 0.34 * M(3) + 0.12 * M(4) - 0.09 * M(5) SPL(2) = 0.17 * M(0) + 0.23 * M(1) + 0.26 * M(2) + 0.23 * M(3) + 0.17 * M(4) + 0.12 * M(5) - 0.18 * M(6) SPL(3) = 0.06 * M(0) + 0.17 * M(1) + 0.23 * M(2) + 0.26 * M(3) + 0.23 * M(4) + 0.17 * M(5) + 0.06 * M(6) - 0.18 * M(7) SPL(1020) = -0.18 * M(1016) + 0.06 * M(1017) + 0.17 * M(1018) + 0.23 * M(1019) + 0.26 * M(1020) + 0.23 * M(1021) + 0.17 * M(1022) + 0.06 * M(1023) SPL(1021) = -0.18 * M(1017) + 0.12 * M(1018) + 0.17 * M(1019) + 0.23 * M(1020) + 0.26 * M(1021) + 0.23 * M(1022) + 0.17 * M(1023) SPL(1022) = -0.18 * M(1018) + 0.12 * M(1019) + 0.34 * M(1020) + 0.23 * M(1021) + 0.26 * M(1022) + 0.23 * M(1023) SPL(1023) = -0.18 * M(1018) + 0.12 * M(1020) + 0.34 * M(1021) + 0.46 * M(1022) + 0.26 * M(1023) For i = 0 To 1023 M(i) = SPL(i) Next End If If frmMain.Option1.Value = True Then For i = 0 To 1023 frmMain.Shape1(i).Left = 400 + i * 15 frmMain.Shape1(i).Top = 5800 - frmMain.VScroll1.Value * M(i) frmMain.Shape1(i).Visible = True Next End If If frmMain.Option2.Value = True Then For i = 0 To 511 frmMain.Shape1(i).Left = 400 + i * 30 frmMain.Shape1(i).Top = 5800 - frmMain.VScroll1.Value * M(i) frmMain.Shape1(i).Visible = True frmMain.Shape1(i + 512).Visible = False Next End If If frmMain.Option3.Value = True Then For i = 512 To 1023 frmMain.Shape1(i).Left = 400 + i * 30 frmMain.Shape1(i).Top = 5800 - frmMain.VScroll1.Value * M(i) frmMain.Shape1(i).Visible = True frmMain.Shape1(i - 512).Visible = False Next End If Đề tài cấp bộ: Thiết kế và chế tạo máy phân tích đa kênh (1024 kênh) ghép với máy tính qua cổng USB Chủ nhiệm đề tài: Nguyễn Văn Sơn 62 End Sub 5.4 Giải thuật lấy tích phân giữa 2 vị trí con trỏ và hiển thị miền lấy tích phân: Tích phân giữa 2 vị trí con trỏ là tổng các số đếm của các kênh giữa 2 vị trí con trỏ, gọi là INT. Gọi vttt là kênh của con trỏ bên trái và gọi vttp là kênh của con trỏ bên phải, Hình 5.3 Giải thuật lấy tích phân giữa hai vị trí con trỏ Mã nguồn lấy tích phân Private Sub mnuIntegral_Click() Dim Integral As Long Integral = 0 FlagInt = True For i = 0 To 1023 Line3(i).Visible = False Next If Vtt1 > Vtt2 Then For i = Vtt2 To Vtt1 Line3(i).X1 = Shape1(i).Left Line3(i).X2 = Shape1(i).Left Line3(i).Y1 = 5800 Line3(i).Y2 = 5800 - VScroll1.Value * M(i) Line3(i).Visible = True Integral = Integral + M(i) Next Else For i = Vtt1 To Vtt2 Line3(i).X1 = Shape1(i).Left Line3(i).X2 = Shape1(i).Left Line3(i).Y1 = 5800 Line3(i).Y2 = 5800 - VScroll1.Value * M(i) Line3(i).Visible = True Integral = Integral + M(i) Đề tài cấp bộ: Thiết kế và chế tạo máy phân tích đa kênh (1024 kênh) ghép với máy tính qua cổng USB Chủ nhiệm đề tài: Nguyễn Văn Sơn 63 Next End If Label17.Caption = Str(Integral) End Sub 3.5 Giải thuật lấy diện tích hình thang: Diện tích hình thang giữa 2 vị trí con trỏ M(vtt1) M(vtt2)DTHT (vtt2 vtt1 1) 2 += - + (5.2) Hình 5.4 Lưu đồ thuật toán tính diện tích hình thang tại ví trí 2 con trỏ Mã nguồn tính diện tích hình thang Private Sub mnuSurface_Click() Dim Trape As Long Dim Day As Integer Day = Abs(Vtt2 - Vtt1) + 1 Trape = (M(Vtt1) + M(Vtt2)) / 2 * Day Label19.Caption = Str(Trape) Line4.X1 = Shape1(Vtt1).Left Line4.X2 = Shape1(Vtt2).Left Line4.Y1 = Shape1(Vtt1).Top Line4.Y2 = Shape1(Vtt2).Top Line4.Visible = True Line3(Vtt1).X1 = Shape1(Vtt1).Left Line3(Vtt1).X2 = Shape1(Vtt1).Left Line3(Vtt1).Y2 = Shape1(Vtt1).Top Line3(Vtt1).Y1 = 5800 Line3(Vtt1).Visible = True Line3(Vtt2).X1 = Shape1(Vtt2).Left Line3(Vtt2).X2 = Shape1(Vtt2).Left Line3(Vtt2).Y2 = Shape1(Vtt2).Top Line3(Vtt2).Y1 = 5800 Line3(Vtt2).Visible = True FlagTra = True Đề tài cấp bộ: Thiết kế và chế tạo máy phân tích đa kênh (1024 kênh) ghép với máy tính qua cổng USB Chủ nhiệm đề tài: Nguyễn Văn Sơn 64 End Sub 5.6 Giải thuật chuẩn hóa năng lượng cho phổ Gọi x là vị trí kênh và là năng lượng tại kênh , ta được đường chuẩn năng lượng bậc n theo công thức sau: iE ix (5.3) E --= + + + +n n 1n n 1 1a x a x ... a x a0 1 T Tại điểm quan sát thứ nhất: 1E --= + + + +n n 1n 1 n 1 2 1 1 0a x a x ... a x a Tại điểm quan sát thứ hai: 2E --= + + + +n n 1n 2 n 1 2 1 2 0a x a x ... a x a … Tại điểm quan sát thứ m: mE --= + + + +n n 1n m n 1 m 1 m 0a x a x ... a x a Đường chuẩn năng lượng được viết lại dưới dạng ma trận: (5.4) =E X * A X là ma trận (m,n+1), m hàng, n+1 cột A, E là ma trận cột, m cột Để tìm các hệ số a, ta giải các phương trình đại số (5.4) =X * A E Để hệ phương trình đại số là có nghiệm thì ³ +m n Nhân 2 vế phương trình trên với ( là chuyển vị của X) từ bên trái, ta được: TX TX (5.5) =TX * X * A X * E Nhân 2 vế của phương trình (5.5) với ( inv là hàm lấy nghịch đảo ma trận), ta được: Tinv(X * X) = T TA inv(X * X) * X * E (5.6) Ta dùng phương trình (5.6) để tính các hệ số a của hàm số xấp xỉ bằng đa thức. Hình 5.5 Lưu đồ thuật toán chuẩn hóa năng lượng Đề tài cấp bộ: Thiết kế và chế tạo máy phân tích đa kênh (1024 kênh) ghép với máy tính qua cổng USB Chủ

Các file đính kèm theo tài liệu này:

  • pdfThiết kế và chế tạo máy phân tích đa kênh (1024 kênh) ghép với máy vi tính qua cổng usb.pdf