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ỀU KHIỂN BỘ BIẾN ĐỔI DC-DC HAI CHIỀU KHÔNG CÁCH LY BA PHA 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ều khiển biến đổi DC-DC hai chiều không cách ly ba pha interleaves Các nội dung cần giải Đề tài: Nghiên cứu biến đổi DC-DC hai chiều không cách ly 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 hai chiều không cách lý ba pha interleaves Đề xuất thiết kế cấu trúc điều khiển dòng điện cuộn cảm, điện áp phía tụ DClink Mơ biến đổi DC-DC hai chiều không cách ly ba pha interleaves hệ thống điều khiển MATLAB/simulink Xây dựng mơ hình thực nghiệm với điều khiển cài đặt vi điều khiể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ều khiển biến đổi DC-DC hai chiều không cách ly pha 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 HAI CHIỀU KHÔNG CÁCH LY BA PHA 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ỀU KHIỂN VÀ MÔ PHỎNG HỆ THỐNG 25 3.1 Mơ hình hóa biến đổi DC-DC hai chiều ba pha 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ều khiển cho biến đổi DC-DC hai chiều ba pha interleaves 31 3.3.1 Cấu trúc mạch vòng điều khiể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 hai chiều với đầu vào nguồn dòng chuẩn 36 3.4.2 Mô biến đổi DC-DC hai chiề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 HAI CHIỀ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ều khiể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ều khiể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ều khiể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ều khiển PI cài đặt cho vi điều khiển 72 Danh mục hình vẽ DANH MỤC HÌNH VẼ Hình 1.1 Cấu trúc điều khiể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 hai chiều ba pha 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 hai chiều điều khiển phát xung bù 27 Hình 3.5 Mơ hình trung bình biến đổi DC-DC hai chiề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ều khiển SCESS 30 Hình 3.8 Cấu trúc điều khiể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ều khiển hai mạch vòng 34 Hình 3.12 Bộ điều khiể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ều khiển hai 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ều khiển 40 Hình 3.17 Điện áp chiều DC-Link với mạch vòng điều khiể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ều khiể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ều pha 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ều khiển hai mạch vòng cho 3PVSI 66 Hình P.2 Cấu trúc điều khiể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 hai chiều Chuẩn hóa điều khiển dòng điện Theo (4.6) ta có phương trình sai phân điều khiể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ều khiể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ều khiển điện áp Vì cấu trúc điều khiển điện áp sử dụng điều khiển PI tương tự điều khiể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ều khiển dòng điện Cuối ta thu phương trình sai phân điều khiể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 hai chiều 4.5 Lập trình cho vi điều khiể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ều khiể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ều khiển thực tính tốn thơng số điều khiển Từ tín hiệu điều khiể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ều khiể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 hai chiề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ều khiể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 hai chiều Hình 4.17 Chương trình giao tiếp vi điều khiể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 hai chiề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 hai chiề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 hai chiều không cách ly ba pha 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 hai chiều kỹ thuật điều khiển interleaves Để phục vụ đề tài em bạn thiết kế thành công mạch điều khiể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 hai chiều ba pha 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ận biế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ều khiể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ều khiể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ều Khiể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ều khiển cho 3PVSI Hình P.1 Cấu trúc điều khiển hai mạch vòng cho 3PVSI 66 Phụ lục Hình P.2 Cấu trúc điều khiển mạch vòng dòng điện cho 3PVSI P2 Chương trình cài đặt cho vi điều khiể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ều khiển PI cài đặt cho vi điều khiể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