Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 84 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
84
Dung lượng
3,34 MB
Nội dung
TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI VIỆN ĐIỆN BỘ MƠN TỰ ĐỘNG HỐ CƠNG NGHIỆP ====o0o==== ĐỒ ÁN TỐT NGHIỆP TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI VIỆN ĐIỆN BỘ MƠN TỰ ĐỘNG HỐ CƠNG NGHIỆP ====o0o==== ĐỒ ÁN TỐT NGHIỆP ĐỀ TÀI: THIẾT KẾ CẤU TRÚC ĐIỀUKHIỂNBỘBIẾNĐỔI DC-DC HAICHIỀUKHÔNGCÁCHLYBAPHA INTERLEAVES Trưởng môn : TS Trần Trọng Minh Giáo viên hướng dẫn : TS Vũ Hoàng Phương Sinh viên thực : Vũ Đình Hùng Lớp : ĐK&TĐH5 – K55 MSSV : 20101662 Hà Nội, 6-2015 BỘ GIÁO DỤC VÀ ĐÀO TẠO CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM TRƯỜNG ĐẠI HỌC BÁCH KHOA HN Độc lập – Tự – Hạnh phúc - - NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP Họ tên sinh viên: VŨ ĐÌNH HÙNG Khóa: 55 Khoa/Viện: Điện Số hiệu sinh viên: 20101662 Ngành: Tự động hoá CN Tên Đề tài: Thiết kế cấu trúc điềukhiểnbiếnđổi DC-DC haichiềukhôngcáchlybapha interleaves Các nội dung cần giải Đề tài: Nghiên cứu biếnđổi DC-DC haichiềukhôngcáchly sử dụng thiết bị kho điện cho nguồn phân tán sức gió Tính tốn thiết kế biếnđổi DC-DC haichiềukhôngcáchlýbapha interleaves Đề xuất thiết kế cấu trúc điềukhiển dòng điện cuộn cảm, điện áp phía tụ DClink Mơ biếnđổi DC-DC haichiềukhôngcáchlybapha interleaves hệ thống điềukhiển MATLAB/simulink Xây dựng mơ hình thực nghiệm với điềukhiển cài đặt vi điềukhiển DSP TMS320F28055 Các vẽ A0, đồ thị: Ngày giao nhiệm vụ: Ngày hoàn thành: Họ tên cán hướng dẫn: TS Vũ Hoàng Phương Hà nội, ngày tháng năm BCN Bộ môn Cán hướng dẫn (Ký, ghi rõ họ, tên) ( Ký, ghi rõ họ, tên) Người duyệt Sinh viên ( Ký, ghi rõ họ, tên) (Ký, ghi rõ họ, tên) LỜI CAM ĐOAN Em xin cam đoan đồ án tốt nghiệp: Thiết kế cấu trúc điềukhiểnbiếnđổi DC-DC haichiềukhôngcáchlypha interleaves em tự thiết kế hướng dẫn thầy giáo TS Vũ Hoàng Phương Các số liệu kết hoàn toàn với thực tế Để hoàn thành đồ án em sử dụng tài liệu ghi danh mục tài liệu tham khảo không chép hay sử dụng tài liệu khác Nếu phát có chép em xin chịu hồn tồn trách nhiệm Hà Nội, ngày 29 tháng 05 năm 2015 Sinh viên thực Vũ Đình Hùng MỤC LỤC DANH MỤC HÌNH VẼ i DANH MỤC BẢNG SỐ LIỆU ii DANH MỤC TỪ VIẾT TẮT iii LỜI NÓI ĐẦU Chương TỔNG QUAN VỀ HỆ NGUỒN PHÂN TÁN VÀ THIẾT BỊ KHO ĐIỆN 1.1 Giới thiệu chung hệ nguồn phân tán 1.2 Cấu trúc thiết bị kho điện sử dụng siêu tụ 1.3 Bộbiếnđổi DC-AC 1.4 Siêu tụ dùng SCESS 11 Chương TÍNH TỐN THIẾT KẾ BỘBIẾNĐỔI DC-DC HAICHIỀUKHÔNGCÁCHLYBAPHA INTERLEAVES 14 2.1 Các thông số yêu cầu 14 2.1 Cấu trúc mạch lực 14 2.2 Nguyên tắc làm việc 15 2.3 Tính tốn tham số mạch lực 17 2.3.1 Tính chọn dải điện áp làm việc siêu tụ 17 2.3.2 Tính chọn dung lượng siêu tụ 20 2.3.3 Tính chọn dung lượng tụ DC-Link 22 2.3.4 Tính chọn giá trị cuộn cảm 22 2.3.5 Tính chọn van bán dẫn 23 Chương MƠ HÌNH HĨA THIẾT KẾ CẤU TRÚC ĐIỀUKHIỂN VÀ MÔ PHỎNG HỆ THỐNG 25 3.1 Mơ hình hóa biếnđổi DC-DC haichiềubapha interleaves 25 3.2 Mơ hình siêu tụ dùng thiết bị kho điện 28 3.3 Thiết kế điềukhiển cho biếnđổi DC-DC haichiềubapha interleaves 31 3.3.1 Cấu trúc mạch vòng điềukhiển dòng điện 31 3.3.2 Cấu trúc hai mạch vòng cascade 33 3.4 Mô hệ thống MATLAB/Simulink 36 3.4.1 Mô biếnđổi DC-DC haichiều với đầu vào nguồn dòng chuẩn 36 3.4.2 Mô biếnđổi DC-DC haichiều nối 3PVSI nối lưới 41 Chương XÂY DỰNG MƠ HÌNH THỰC NGHIỆM BỘBIẾNĐỔI DC-DC HAICHIỀU 44 4.1 Các bước xây dựng mơ hình thực nghiệm 44 4.2 Lựa chọn thiết kế thành phần mơ hình thực nghiệm 44 4.2.1 Lựa chọn vi xử lý thiết kế mạch điềukhiển 44 4.2.2 Lựa chọn thiết kế mạch đo lường 50 4.2.3 Lựa chọn phần tử thiết kế mạch lực 51 4.3 Xây dựng mơ hình thực nghiệm 55 4.4 Chuẩn bị liệu cho lập trình 56 4.4.1 Gián đoạn hóa điều chỉnh 56 4.4.2 Chuẩn hóa liệu 57 4.5 Lập trình cho vi điềukhiển 59 4.6 Kết thực nghiệm 61 KẾT LUẬN 64 TÀI LIỆU THAM KHẢO 65 PHỤ LỤC 66 P2 Chương trình cài đặt cho vi điềukhiển 67 Chương trình khởi tạo 3PWM lệch pha 120° 67 Chương trình khởi tạo ADC 69 Chương trình khởi tạo giao tiếp SCI với máy tính 71 Bộđiềukhiển PI cài đặt cho vi điềukhiển 72 Danh mục hình vẽ DANH MỤC HÌNH VẼ Hình 1.1 Cấu trúc điềukhiển tua-bin gió với SCESS Hình 1.2 Cấu trúc hệ thống biếnđổi điện SCESS Hình 1.3 Sơ đồ mạch lực nghịch lưu nguồn áp pha Hình 1.4 Cấu trúc siêu tụ - hai lớp 11 Hình 1.5 Hình ảnh siêu tụ 12 Hình 2.1 Cấu trúc mạch lực biếnđổi DC-DC haichiềubapha interleaves 15 Hình 2.2 Cấu trúc mạch lực pha 15 Hình 2.3 Tín hiệu xung mở van dạng dòng điện qua cuộn cảm 16 Hình 3.1 Cấu trúc mạch lực đơn giản hóa pha 26 Hình 3.2 Cấu hình mạch điện trạng thái nạp lượng 26 Hình 3.3 Cấu hình mạch điện trạng thái xả lượng 26 Hình 3.4 Các chế độ hoạt động biếnđổi DC-DC haichiềuđiềukhiển phát xung bù 27 Hình 3.5 Mơ hình trung bình biếnđổi DC-DC haichiều 28 Hình 3.6 Mơ hình hai nhánh RC siêu tụ 29 Hình 3.7 Mơ hình siêu tụ phục vụ cho toán điềukhiển SCESS 30 Hình 3.8 Cấu trúc điềukhiển mạch vòng dòng điện 31 Hình 3.9 Cấu trúc mạch vòng dòng điện 32 Hình 3.10 Cấu trúc điềukhiểnhai mạch vòng 34 Hình 3.12 Bộđiềukhiển dòng điện mơ Simulink 37 Hình 3.14 Đáp ứng dòng điện qua cuộn cảm 38 Hình 3.15 Cấu trúc điềukhiểnhai mạch vòng Simulink 39 Hình 3.16 Dòng điện qua cuộn cảm với mạch vòng điềukhiển 40 Hình 3.17 Điện áp chiều DC-Link với mạch vòng điềukhiển 40 i Danh mục hình vẽ Hình 3.18 Mơ hình đóng cắt tương đương Simulink 41 Hình 3.19 Dòng điện qua cuộn cảm 42 Hình 3.20 Đáp ứng dòng điện thay đổi dòng iinv 43 Hình 3.21 Đáp ứng điện áp thay đổi dòng iinv 43 Hình 4.1 Sơ đồ khổi TMS320F28055 45 Hình 4.2 Biểu diễn số thực dấu phẩy động 47 Hình 4.3 Biểu diễn số thực dấu phẩy tĩnh 48 Hình 4.4 Mạch điềukhiển sử dụng DSP TMS320F28055 49 Hình 4.5 Sơ đồ chân ACS712 50 Hình 4.6 Cấu trúc mạch đo dòng điện 51 Hình 4.7 Mạch đo dòng sử dụng ACS712 51 Hình 4.8 Bộbiếnđổi DC-DC chiềupha interleaves 52 Hình 4.9 Cấu trúc IC A3120/HCPL3120 53 Hình 4.10 Sơ đồ mạch driver A3120 sử dụng để tạo xung mở van 53 Hình 4.11 Driver A3120 tích hợp mạch lực 54 Hình 4.13 Hệ thống thí nghiệm 56 Hình 4.14 Lưu dồ thuật toán cài đặt cho DSP 59 Hình 4.15 Mơi trường làm việc CCS 6.1.2 60 Hình 4.16 Mơi trường làm việc NI CVI 60 Hình 4.18 Dạng dòng điện cuộn cảm nhánh dòng tổng 62 Hình 4.19 Đáp ứng dòng điện với tín hiệu đặt đầu vào 63 Hình P.1 Cấu trúc điềukhiểnhai mạch vòng cho 3PVSI 66 Hình P.2 Cấu trúc điềukhiển mạch vòng dòng điện cho 3PVSI 67 ii Danh mục bảng số liệu DANH MỤC BẢNG SỐ LIỆU Bảng 2.1 Các tham số siêu tụ 21 Bảng 2.2 Bảng tham số MOSFET SK1940N 24 Bảng 4.1 Các thông số ACS712 20A 50 Bảng 4.2 Thông số van MOSFET 52 Bảng 4.3 Thông số A3120/HCPL3120 54 ii Chương 4: Xây dựng mơ hình thực nghiệm biếnđổi DC-DC haichiều Chuẩn hóa điềukhiển dòng điện Theo (4.6) ta có phương trình sai phân điềukhiển dòng điện chưa chuẩn hóa: U k K P E k U I k 1 K I TS T E k K I S E k 1 2 Giả sử đầu vào E chuẩn hóa với Emax Đầu d khơng có thứ ngun nên khơng cần chuẩn hóa Với Emax giá trị dòng điện lớn mà mạch đo đo Ta có: U k U I k 1 K P Emax E k E k E k 1 T T K I S Emax K I S Emax Emax Emax Emax Từ phương trình ta thu phương trình sai phân điềukhiển sau chuẩn hóa: U DSP k U I k 1 K P Emax E DSP k K I TS T Emax E DSP k K I S Emax E DSP k 1 2 Với: U DSP (k ) U (k ) E (k 1) DSP E ( k 1) Emax Chuẩn hóa điềukhiển điện áp Vì cấu trúc điềukhiển điện áp sử dụng điềukhiển PI tương tự điềukhiển dòng điện, việc chuẩn hóa liệu hồn tồn tương tự chuẩn hóa liệu cho điềukhiển dòng điện Cuối ta thu phương trình sai phân điềukhiển sau chuẩn hóa: U DSP k U I k 1 K P Emax E DSP k K I 58 TS T Emax E DSP k K I S Emax E DSP k 1 2 Chương 4: Xây dựng mơ hình thực nghiệm biếnđổi DC-DC haichiều 4.5 Lập trình cho vi điềukhiển Lưu đồ thuật toán: START INT.x Khai báo biến module tính tốn Lưu nội dung xóa cờ ngắt Khởi tạo cấu hình hệ thống Đọc giá trị dòng điện từ ADC Thiết lập thơng số module PWM , ADC, PI, ngắt Thực tính tốn BĐK PI Back Ground Loop Tính tốn Duty Cycle update PWM INT.x Khôi phục nội dung Trở chương trình Hình 4.14 Lưu dồ thuật tốn cài đặt cho DSP Dựa vào tài nguyên DSP, ta sử dụng ngắt ADC khởi động PWM dịch pha 120° để làm sở thực cho điềukhiển dòng điện sau: - Đọc tín hiệu ADC từ mạch đo đo lường Chuẩn hóa giá trị ADC đọc - Đưa giá trị sau chuẩn hóa làm thơng số đầu vào cho điềukhiển thực tính tốn thơng số điềukhiển Từ tín hiệu điềukhiển đưa vào tính tốn hệ số điều chế, giá trị compare để update cho ghi CMP PWM - Để lập trình cài đặt thuật tốn điềukhiển luật phát xung vào DSP TMS320F28055, ta sử dụng phần mềm Code Composer Studio 6.1.2 Texas Instruments 59 Chương 4: Xây dựng mơ hình thực nghiệm biếnđổi DC-DC haichiều Hình 4.15 Mơi trường làm việc CCS 6.1.2 Cùng với việc sử dụng CCS 6.1.2, ta sử dụng thêm phần mềm lập trình giao diện CVI National Instrument để lập trình giao diện điềukhiển từ máy tính Hình 4.16 Mơi trường làm việc NI CVI 60 Chương 4: Xây dựng mơ hình thực nghiệm biếnđổi DC-DC haichiều Hình 4.17 Chương trình giao tiếp vi điềukhiển viết CVI 4.6 Kết thực nghiệm 61 Chương 4: Xây dựng mô hình thực nghiệm biếnđổi DC-DC haichiều Hình 4.18 Dạng dòng điện cuộn cảm nhánh dòng tổng (a) Q trình tăng dòng từ đến giá trị đặt 62 Chương 4: Xây dựng mơ hình thực nghiệm biếnđổi DC-DC haichiều (b) Thay đổi giá trị đặt Hình 4.19 Đáp ứng dòng điện với tín hiệu đặt đầu vào 63 Kết luận KẾT LUẬN Qua thời gian làm việc với giúp đỡ nhiệt tình thầy hướng dẫn TS Vũ Hồng Phương bạn nhóm đề tài, em xây dựng thành công biếnđổi DCDC haichiềukhôngcáchlybapha interleaves Qua thử nghiệm mô lẫn thực tế kiểm nghiệm tính đắn lý thuyết biếnđổi DC-DC haichiều kỹ thuật điềukhiển interleaves Để phục vụ đề tài em bạn thiết kế thành công mạch điềukhiển sử dụng DSP TMS320F28055, mạch đo lường tạo tiền đề xây dựng thiết bị kho điện sử dụng siêu tụ Xây dựng thí nghiệm biếnđổi DC-DC haichiềubapha interleaves đáp ứng nhiều tiêu chí công thẩm mỹ Trên sở thí nghiệm xây dựng, qua nhiều lần thí nghiệm Với kết đạt kết luậnbiếnđổi đáp ứng yêu cầu biếnđổi trung gian DC-DC sử dụng thiết bị kho điện hệ nguồn phân tán Trong q trình nghiên cứu hồn thiện đồ án, khơng tránh khỏi thiết sót Em mong nhận đóng góp quý báu thầy để dồ án ngày hồn thiện áp dụng tương lai Em xin chân thành cảm ơn Hà Nội, ngày 29 tháng 05 năm 2010 Sinh viên thực Vũ Đình Hùng 64 Tài liệu tham khảo TÀI LIỆU THAM KHẢO [1] Trần Trọng Minh, Vũ Hoàng Phương, Bài giảng Điềukhiển Điện tử công suất [2] Phạm Quốc Hải, Trần Trọng Minh, Võ Minh Chính, Giáo trình điện tử cơng suất [3] Phạm Tuấn Anh, Các phương pháp điềukhiển thiết bị kho điện (BESS) cho hệ phát điện sức gió chế độ ốc đảo, Luận án tiến sĩ ngành Kĩ Thuật ĐiềuKhiển Tự Động Hóa, Đại Học Bách khoa Hà Nội [4] Muhammad Rashid, Power Electronics Handbook [5] Seddik Bacha, Iulian Munteanu, Antoneta Iulian Bratcu, Power Electronic Converters Modeling and Control 65 Phụ lục PHỤ LỤC P1 Cấu trúc điềukhiển cho 3PVSI Hình P.1 Cấu trúc điềukhiểnhai mạch vòng cho 3PVSI 66 Phụ lục Hình P.2 Cấu trúc điềukhiển mạch vòng dòng điện cho 3PVSI P2 Chương trình cài đặt cho vi điềukhiển Chương trình khởi tạo 3PWM lệch pha 120° void InitEPwm3phaseInterleaved() { // // - Must disable the clock to the ePWM modules if you // - want all ePMW modules synchronized // EALLOW; // Enable EALLOW protected register access SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC = 0; EDIS; // Disable EALLOW protected register access // EPWM Module config EPwm1Regs.TBCTL.bit.HSPCLKDIV = 0;//TB_DIV4; // Clock ratio to SYSCLKOUT EPwm1Regs.TBCTL.bit.CLKDIV = 0;//TB_DIV4; EPwm1Regs.TBPRD = 30000; // Period = 30000 TBCLK counts EPwm1Regs.TBPHS.half.TBPHS = 0; // Set Phase register to zero EPwm1Regs.TBCTL.bit.CTRMODE = TB_UPDOWN_COUNT; // Symmetrical mode EPwm1Regs.TBCTL.bit.PHSEN = TB_DISABLE; // Master module EPwm1Regs.TBCTL.bit.PRDLD = TB_SHADOW; EPwm1Regs.TBCTL.bit.SYNCOSEL = TB_CTR_ZERO; // Sync down-stream module EPwm1Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW; EPwm1Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW; EPwm1Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO; // load on CTR=Zero EPwm1Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO; // load on CTR=Zero EPwm1Regs.AQCTLA.bit.CAU = AQ_CLEAR; // set actions for EPWM1A 67 Phụ lục EPwm1Regs.AQCTLA.bit.CAD = AQ_SET; EPwm1Regs.AQCTLB.bit.CAU = AQ_SET; // set actions for EPWM1A EPwm1Regs.AQCTLB.bit.CAD = AQ_CLEAR; EPwm1Regs.DBCTL.bit.OUT_MODE = DB_FULL_ENABLE; // enable Dead-band module EPwm1Regs.DBCTL.bit.POLSEL = DB_ACTV_HIC; // Active Hi complementary EPwm1Regs.DBFED = 200; // FED = 200 TBCLKs EPwm1Regs.DBRED = 200; // RED = 200 TBCLKs // Config ePWM1 to trigger ADC and interupt EPwm1Regs.ETPS.all = 0x0100; EPwm1Regs.ETSEL.all = 0x0A00; // EPWM Module config EPwm2Regs.TBCTL.bit.HSPCLKDIV = 0;//TB_DIV4; // Clock ratio to SYSCLKOUT EPwm2Regs.TBCTL.bit.CLKDIV = 0;//TB_DIV4; EPwm2Regs.TBPRD = 30000; // Period = 30000 TBCLK counts EPwm2Regs.TBPHS.half.TBPHS = 20000; // Phase = 20000/60000 * 360 = 120 deg EPwm2Regs.TBCTL.bit.CTRMODE = TB_UPDOWN_COUNT; // Symmetrical mode EPwm2Regs.TBCTL.bit.PHSEN = TB_ENABLE; // Slave module EPwm2Regs.TBCTL.bit.PHSDIR = TB_DOWN; // Count DOWN on sync (=120 deg) EPwm2Regs.TBCTL.bit.PRDLD = TB_SHADOW; EPwm2Regs.TBCTL.bit.SYNCOSEL = TB_SYNC_IN; // sync flow-through EPwm2Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW; EPwm2Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW; EPwm2Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO; // load on CTR=Zero EPwm2Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO; // load on CTR=Zero EPwm2Regs.AQCTLA.bit.CAU = AQ_CLEAR; // set actions for EPWM2A EPwm2Regs.AQCTLA.bit.CAD = AQ_SET; EPwm2Regs.AQCTLB.bit.CAU = AQ_SET; // set actions for EPWM2A EPwm2Regs.AQCTLB.bit.CAD = AQ_CLEAR; EPwm2Regs.DBCTL.bit.OUT_MODE = DB_FULL_ENABLE; // enable Dead-band module EPwm2Regs.DBCTL.bit.POLSEL = DB_ACTV_HIC; // Active Hi Complementary EPwm2Regs.DBFED = 200; // FED = 200 TBCLKs EPwm2Regs.DBRED = 200; // RED = 200 TBCLKs EPwm2Regs.ETPS.all = 0x0100; EPwm2Regs.ETSEL.all = 0x0A00; // EPWM Module config EPwm3Regs.TBCTL.bit.HSPCLKDIV = 0;//TB_DIV4; // Clock ratio to SYSCLKOUT EPwm3Regs.TBCTL.bit.CLKDIV = 0;//TB_DIV4; EPwm3Regs.TBPRD = 30000; // Period = 30000 TBCLK counts EPwm3Regs.TBPHS.half.TBPHS = 20000; // Phase = 20000/30000 * 360 = 120 deg EPwm3Regs.TBCTL.bit.CTRMODE = TB_UPDOWN_COUNT; // Symmetrical mode EPwm3Regs.TBCTL.bit.PHSEN = TB_ENABLE; // Slave module EPwm2Regs.TBCTL.bit.PHSDIR = TB_UP; // Count UP on sync (=240 deg) EPwm3Regs.TBCTL.bit.PRDLD = TB_SHADOW; EPwm3Regs.TBCTL.bit.SYNCOSEL = TB_SYNC_IN; // sync flow-through EPwm3Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW; EPwm3Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW; EPwm3Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO; // load on CTR=Zero EPwm3Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO; // load on CTR=Zero EPwm3Regs.AQCTLA.bit.CAU = AQ_CLEAR; // set actions for EPWM3Ai EPwm3Regs.AQCTLA.bit.CAD = AQ_SET; EPwm3Regs.AQCTLB.bit.CAU = AQ_SET; // set actions for EPWM3Ai EPwm3Regs.AQCTLB.bit.CAD = AQ_CLEAR; EPwm3Regs.DBCTL.bit.OUT_MODE = DB_FULL_ENABLE; // enable Dead-band module 68 Phụ lục EPwm3Regs.DBCTL.bit.POLSEL = DB_ACTV_HIC; // Active Hi complementary EPwm3Regs.DBFED = 200; // FED = 200 TBCLKs EPwm3Regs.DBRED = 200; // RED = 200 TBCLKs EPwm3Regs.ETPS.all = 0x0100; EPwm3Regs.ETSEL.all = 0x0A00; // Run Time //=========================================================== EPwm1Regs.CMPA.half.CMPA = 0; // adjust duty for output EPWM1A EPwm2Regs.CMPA.half.CMPA = 0; // adjust duty for output EPWM2A EPwm3Regs.CMPA.half.CMPA = 0; // adjust duty for output EPWM3A // // - Enable the clocks to the ePWM module // - Note: this should be done after all ePWM modules are configured // - to ensure synchronization between the ePWM modules // EALLOW; // Enable EALLOW protected register access SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC = 1; // TBCLK to ePWM modules enabled EDIS; // Disable EALLOW protected register access Chương trình khởi tạo ADC void InitADC() { EALLOW; SysCtrlRegs.PCLKCR0.bit.ADCENCLK = 1; //(*Device_cal)(); EDIS; // To powerup the ADC the ADCENCLK bit should be set first to enable // clocks, followed by powering up the bandgap, reference circuitry, and ADC core // Before the first conversion is performed a 5ms delay must be observed // after power up to give all analog circuits time to power up and settle // Please note that for the delay function below to operate correctly the // CPU_RATE define statement in the F2805x_Examples.h file must // contain the correct CPU clock period in nanoseconds EALLOW; AdcRegs.ADCCTL1.bit.ADCBGPWD = 1; // Power ADC BG AdcRegs.ADCCTL1.bit.ADCREFPWD = 1; // Power reference AdcRegs.ADCCTL1.bit.ADCPWDN = 1; // Power ADC AdcRegs.ADCCTL1.bit.ADCENABLE = 1; // Enable ADC AdcRegs.ADCCTL1.bit.ADCREFSEL = 0; // Select interal BG AdcRegs.ADCCTL1.bit.INTPULSEPOS = 1; //ADCINT trips after AdcResults latch delay_us(10000); // - SOC1 configuration AdcRegs.ADCSAMPLEMODE.bit.SIMULEN0 = 0; AdcRegs.ADCSOC1CTL.bit.TRIGSEL = 5; AdcRegs.ADCSOC1CTL.bit.CHSEL = 2; AdcRegs.ADCSOC1CTL.bit.ACQPS = 16; (6+1)=7 cycles 69 // // // // SOC0 in single sample mode Trigger using ePWM1-ADCSOCA Convert channel ADCINA0 (ch0) Acquisition window set to Phụ lục AdcRegs.ADCINTSOCSEL1.bit.SOC1 = 0; TRIGSEL field determines trigger // - ADCINT1 configuration AdcRegs.INTSEL1N2.bit.INT1CONT = 1; regardless of ADCINT1 flag state AdcRegs.INTSEL1N2.bit.INT1E = 1; AdcRegs.INTSEL1N2.bit.INT1SEL = 1; // No ADCINT triggers SOC0 // - Enable the ADC interrupt //PieCtrlRegs.PIEIER1.bit.INTx1 = 1; group //IER |= 0x0001; INT1 in IER to enable PIE group // - SOC2 configuration AdcRegs.ADCSAMPLEMODE.bit.SIMULEN2 = 0; (vs simultaneous mode) AdcRegs.ADCSOC2CTL.bit.TRIGSEL = 7; ADCSOCA AdcRegs.ADCSOC2CTL.bit.CHSEL = 4; (ch2) AdcRegs.ADCSOC2CTL.bit.ACQPS = 16; to (6+1)=7 cycles AdcRegs.ADCINTSOCSEL1.bit.SOC2 = 0; SOC0 TRIGSEL field determines trigger // - ADCINT2 configuration AdcRegs.INTSEL1N2.bit.INT2CONT = 1; regardless of ADCINT2 flag state AdcRegs.INTSEL1N2.bit.INT2E = 1; AdcRegs.INTSEL1N2.bit.INT2SEL = 2; // - SOC4 configuration AdcRegs.ADCSAMPLEMODE.bit.SIMULEN4 = 0; (vs simultaneous mode) AdcRegs.ADCSOC4CTL.bit.TRIGSEL = 9; ADCSOCA AdcRegs.ADCSOC4CTL.bit.CHSEL = 5; (ch2) AdcRegs.ADCSOC4CTL.bit.ACQPS = 16; to (6+1)=7 cycles AdcRegs.ADCINTSOCSEL1.bit.SOC4 = 0; SOC0 TRIGSEL field determines trigger // - ADCINT1 configuration AdcRegs.INTSEL3N4.bit.INT3CONT = 1; regardless of ADCINT1 flag state AdcRegs.INTSEL3N4.bit.INT3E = 1; AdcRegs.INTSEL3N4.bit.INT3SEL = 4; // ADCINT1 pulses // Enable ADCINT1 // EOC0 triggers ADCINT1 // Enable ADCINT1 in PIE // Enable // SOC2 in single sample mode // Trigger using ePWM2// Convert channel ADCINA2 // Acquisition window set // No ADCINT triggers // ADCINT2 pulses // Enable ADCINT2 // EOC2 triggers ADCINT2 // SOC2 in single sample mode // Trigger using ePWM3// Convert channel ADCINA2 // Acquisition window set // No ADCINT triggers // ADCINT1 pulses // Enable ADCINT1 // EOC0 triggers ADCINT1 AdcRegs.ADCOFFTRIM.bit.OFFTRIM = 50; AdcRegs.SOCPRICTL.bit.SOCPRIORITY = 0; // All SOCs handled in roundrobin mode // - Finish up AdcRegs.ADCCTL1.bit.ADCENABLE = 1; // Enable the ADC asm(" EDIS"); // Disable EALLOW protected register access 70 Phụ lục } Chương trình khởi tạo giao tiếp SCI với máy tính void InitSCIA() { EALLOW; /* enable to access to EALLOWProtected registers */ GpioCtrlRegs.GPAPUD.bit.GPIO28 = 0; // Enable pull-up for GPIO28 (SCIRXDA) // GpioCtrlRegs.GPAPUD.bit.GPIO7 = 0; // Enable pull-up for GPIO7 (SCIRXDA) GpioCtrlRegs.GPAPUD.bit.GPIO29 = 0; // Enable pull-up for GPIO29 (SCITXDA) // GpioCtrlRegs.GPAPUD.bit.GPIO12 = 0; // Enable pull-up for GPIO12 (SCITXDA) GpioCtrlRegs.GPAQSEL2.bit.GPIO28 = 3; // Asynch input GPIO28 (SCIRXDA) // GpioCtrlRegs.GPAQSEL1.bit.GPIO7 = 3; // Asynch input GPIO7 (SCIRXDA) GpioCtrlRegs.GPAMUX2.bit.GPIO28 = 1; // Configure GPIO28 for SCIRXDA operation // GpioCtrlRegs.GPAMUX1.bit.GPIO7 = 2; // Configure GPIO7 for SCIRXDA operation GpioCtrlRegs.GPAMUX2.bit.GPIO29 = 1; // Configure GPIO29 for SCITXDA operation // GpioCtrlRegs.GPAMUX1.bit.GPIO12 = 2; // Configure GPIO12 for SCITXDA operation // Reset FIFO's SciaRegs.SCIFFTX.bit.SCIRST = ; /* SCI FIFO can resume transmit or receive */ SciaRegs.SCICCR.all =0x0007; // stop bit, No loopback // No parity,8 char bits, // async mode, idle-line protocol SciaRegs.SCICTL1.all =0x0003; // enable TX, RX, internal SCICLK, // Disable RX ERR, SLEEP, TXWAKE SciaRegs.SCICTL2.all =0x0003; /* Receiver-buffer/break interrupt enable SCITXBUF-register interrupt enable */ SciaRegs.SCICTL1.all =0x0023; // Relinquish SCI from Reset //Baud 115200 SciaRegs.SCIHBAUD = 15 >> 8; /* Set Baud-Select MSbyte */ SciaRegs.SCILBAUD = 15 & 0x00ff; /* Baud-Select LSbyte */ SciaRegs.SCICTL2.bit.RXBKINTENA=1;// enable interrupt receive SciaRegs.SCIFFTX.bit.SCIFFENA = ; /* SCI FIFO enable */ SciaRegs.SCIFFRX.bit.RXFFIENA = ; /* Receive FIFO interrupt enable */ SciaRegs.SCIFFRX.bit.RXFFIL = ; // Receive FIFO interrupt level: bytes SciaRegs.SCIFFRX.bit.RXFFOVRCLR = ; // clear RXFFOVF flag SciaRegs.SCIFFRX.bit.RXFFINTCLR = ; // clear RXINT flag SciaRegs.SCIFFRX.bit.RXFIFORESET = ;// reset SciaRegs.SCIFFRX.bit.RXFIFORESET = ;// re_neable EDIS; registers */ /* disable write to protected } 71 Phụ lục Bộđiềukhiển PI cài đặt cho vi điềukhiển typedef struct { _iq Ref; // Input: Reference input _iq Fdb; // Input: Feedback input _iq Err; // Variable: Error _iq ErrPre; _iq Kp; // Parameter: Proportional gain _iq Ki; // Parameter: Integral gain _iq OutMax; // Parameter: Maximum output _iq OutMin; // Parameter: Minimum output _iq Out; // Output: PID output _iq OutPre; void (*calc)(); //Pointer to calculation function } PIREG; void pi_reg_calc(PIREG *v) { // Compute the error v->Err = v->Ref - v->Fdb; // Compute the pre-saturated output v->Out = v->OutPre + _IQmpy(v->Kp,v->Err) + _IQmpy(v->Ki,(v->Err+v->ErrPre)) ; // Saturate the output if (v->Out > v->OutMax) else if (v->Out < v->OutMin) v->Out = v->OutMax; v->Out = v->OutMin; v->OutPre = v->Out; v->ErrPre = v->Err; } 72