Chương 3 : THIẾT KẾ MẠCH NGUYÊN LÝ
3.1 Mạch công suất
3.1.4 Mạch phản hồi điện áp một chiều DC link và các điện áp pha
Trên board mạch thử nghiệm, phần công suất được cấp nguồn với điện áp . Chọn giá trị điện trở phân áp một chiều . Do điện áp tham chiếu của mạch ADC là nên giá trị tổng của các điện trở
, , và phải là:
Chọn , , và . Khi đó
Việc tính tốn các điện trở cho mạch phản hồi điện áp từng pha cũng tương tự như trên. Các giá trị được chọn như trên hình sau
Hình 3.5 Mạch phản hồi các điện áp pha 3.1.5 Mạch bảo vệ thấp điện áp
Để hoạt động đúng, mạch cấp nguồn điều khiển phải đảm bao duy trì điện áp 15V10%. Khi điện áp điều khiển giảm thấp sẽ dẫn đến giảm tốc độ chuyển mạch và làm tăng tổn hao trong mạch lái các IGBT. Ngược lại, khi điện áp điều khiển tăng cao sẽ làm tăng độ dốc của chuyển mạch và do đó làm tăng nhiễu cũng như các điện áp đỉnh hay làm hỏng mạch lái.
Module FSBF10CH60B có chứa một bộ điều khiển thấp điện áp làm việc từ 12,5 cho đến 4V. Khi phát hiện điện áp thấp, module sẽ ngừng các transistor tương ứng hoặc tất cả các transistor trong trường hợp điện áp kích thích thấp và khóa chúng lại. Khi điện áp điều khiển tăng trở lại khoảng làm việc cho phép thì quá trình làm việc bình thường sẽ được phục hồi. Tín hiệu báo lỗi điện áp thấp từ mạch lái cũng được đưa đến đầu ra VFO.
Lưu ý là tín hiệu từ các điện trở cảm biến dịng cũng được đưa đến đầu vào CSC. Trong trường hợp xảy ra ngắn mạch hoặc quá tải quá mức. điện áp
đầu vào của mạch CSC vượt quá 0,5V và mạch bảo vệ dòng sẽ tác động. Khi đó, các transistor sẽ được khóa lại và xuất hiện tín hiệu báo lỗi ở đầu ra VFO.
Đầu ra VFO là kiểu collector hở. Vì vậy, cần phải có mạch chuyển đổi mức trước khi đưa đến mạch điều khiển như trên hình 3.6.
Hình 3.6 Mạch bảo vệ thấp điện áp 3.1.6 Mạch điện trở hãm
Điện trở hãm được chuyển mạch bởi transistor với giới hạn điện áp collector là 400V và dòng điện là 2A. Chọn điện trở 620 với dịng 0.5A. Khi đó, cơng suất tổn hao sẽ là 155W. Cơng suất hãm phụ thuộc vào qn tính của tải và tốc độ suy giảm mong muốn.
Mạch kích cho transistor hãm được thực hiện bởi transistor và thông qua các điện trở và nối đến +15V. Dòng điện đỉnh đến cực cửa của transistor hãm có thể đạt đến 0,6A. Các transisitor và có dịng collector cực đại là 1A.
3.1.7 Mạch nguồn ni
Hình 3.8 Mạch nguồn ni
Mạch nguồn ni vừa được sử dụng để cấp nguồn cho mạch công suất với đầu ra +15VDC và công suất cực đại 6W, đồng thời cung cấp nguồn +5VDC (VCC) cho mạch điều khiển thông qua jack cắm giao tiếp giữa mạch công suất và mạch điều khiển.
Dung lượng của tụ DC link được xác định bởi công suất đầu ra , điện áp một chiều danh định và độ gợn sóng cực đại
Chọn độ gợn điện áp cực đại . Điện áp một chiều danh định là (5) Giá trị hiệu dụng của điện áp lưới cực đại
(6) Dòng hiệu dụng bậc 1
Công suất đầu ra 3 pha biểu kiến
(8) Dòng hiệu dụng của mạch DC link:
(9) Dung lượng của tụ DC được xác định từ mối quan hệ sau:
(10) Trong đó là chu kỳ điện áp lưới, là giá trị hiệu dụng của dòng DC link, và điện áp rơi tương đối:
(11) Thay vào (10) ta có:
(12)
3.1.8 Công suất động cơ
Công suất biểu kiến của động cơ
(13) trong đó là cơng suất cơ của động cơ, là hệ số công suất của động cơ là hiệu suất của động cơ.
Công suất biểu kiến của bộ biến đổi là 1.8 kVA. Vì vậy, đối với động cơ với cơng suất 1,1 kW, hiệu suất 77% và hệ số cơng suất 0.81, cơng suất biểu kiến của nó là
(14)
3.1.9 Tính tốn các tổn hao
Tổn hao tổng của mạch công suất bao gồm tổn hao trên đường dây, tổn hao chuyển mạch của các transistor và diode.
Các tổn hao này có thể được tính riêng rẽ cho từng thành phần như sau:
(15) trong đó là điện áp ngưỡng, là điện trở động khi làm việc, và là dịng điện trung bình và dịng điện hiệu dụng.
Tuy nhiên, nhà sản xuất chỉ đưa ra điện áp bão hòa của transistor là 2,1V và điện áp thuận cực đại trên diode là 2,3V ứng với dòng điện cực đại và nhiệt độ của transistor là 25°C. Vì vậy, cần phải lựa chọn một phương pháp tính tổn hao đơn giản hơn, trong đó tổn hao là hằng số với
(16) trong đó là điện áp rơi cực đại trên phần tử.
Để cho đơn giản, ta xác định điện áp rơi trên cả transistor và diode là Dịng điện trung bình trong mỗi pha của bộ biến đổi là
(17) Coi dịng điện hình sin của mỗi pha chảy qua một nhánh của bộ biến đổi inverter là tổng công suất tiêu thụ trên nhánh đó. Thay vào (16) ta có
(18) Khi đó, tổng tổn hao của 3 nhánh của inverter là
(19) Tổn hao chuyển mạch trong mỗi nửa chu kỳ dẫn của dòng sin được xác định bởi
(20) trong đó là tần số chuyển mạch, và là công suất tiêu thụ khi dẫn và khơng dẫn.
Hình 3.9 Chu trình chuyển mạch
Các tổn hao công suất không được cho trong tài liệu. Vì vậy, các giá trị xấp xỉ được xác định bằng cách lấy tích phân cơng suất chuyển mạch tức thời theo dạng xác định của sóng chuyển mạch trên hình 3.9 và thời gian chuyển mạch với điện áp DC link là 300V, dòng điện cực đại là 7A.
(21) (22) Thay vào (20) và nhân với số các nhánh ta có
(23) Tổn hao tổng khi đầy tải
(24) Với mạch chỉnh lưu, biên độ của công suất tiêu thụ với tải thuần trở là
(25) Nếu bỏ qua tổn hao của tụ và các loại tổn hao khác thì hiệu suất của inverter ứng với dòng điện xấp xỉ dòng danh định của tải thuần là
Với tải có , hiệu suất sẽ nhỏ hơn nhưng tổn hao thì khơng thay đổi.
3.2 Mạch điều khiển
Mạch điều khiển được thiết kế dựa trên vi mạch STM32F103ZET6. Đây là họ vi điều khiển được tích hợp lõi ARM Cortex-M3 32-bit RISC chất lượng cao hoạt động ở tần số 72 MHz với bộ nhớ tốc độ cao (bộ nhớ Flash đến 512 Kbytes và bộ nhớ SRAM đến 64 Kbytes) và các chân vào/ra (I/O) mở rộng. Họ vi điều khiển này đều có bộ biến đổi tương tự số (ADC) 12-bit, 04 bộ timer 16-bit dùng chung và 02 bộ timer PWM, cũng như các bộ truyền thông nâng cao với 02 module I2C, 03 modulr SPI, 02 module I2S, 01 module SDIO, 05 module USART, 01 module USB và 01 module CAN. Họ vi điều khiển này có thể hoạt động trong dải nhiệt độ từ -40 đế +105°C, điện áp nguồn nuôi từ 2,0 đến 3,6V.
Với các đặc điểm như trên vi điều khiển STM32F103ZET6 được sử dụng rộng rãi trong các ứng dụng truyền động động cơ, điều khiển, các thiết bị y tế và các thiết bị cầm tay, máy tính và các ngoại vi, hệ thống định vị tồn cầu GPS, các ứng dụng cơng nghiệp, các bộ điều khiển lập trình được (PLC), các bộ biến đổi, máy in, máy scan, các hệ thống cảnh báo video và các hệ thống sưởi ấm, thơng gió và điều hịa khơng khí (HVAC).
Cấu trúc tổng thể của vi mạch STM32F103ZET6 được cho trên hình 3.10.
Sơ đồ nguyên lý mạch điều khiển sử dụng vi mạch STM32F103ZET6 được cho trển hình 3.11. Nguyên lý của khối giao tiếp giữa mạch điều khiển và mạch cơng suất được cho trên hình 3.12.
Chương 4: THIẾT KẾ MẠCH IN VÀ PHẦN MỀM
4.1 Mô tả hệ thống phần cứng
Mơ hình thực tế của tồn bộ hệ thống được cho trên hình 4.1. Board mạch công suất sử dụng module tích hợp IGBT và các mạch lái FSBS10CH60 được đặt phía dưới gần với tản nhiệt (xem hình 4.2). Board mạch điều khiển được thiết kế đặt chồng lên mạch công suất.
Nhiều linh kiện thụ động được sử dụng là loại hàn trên bề mặt (SMD) để giảm thiểu kích thước chung của các board mạch.
Nguồn nuôi Mạch điều khiển Tản nhiệt Động cơ Encoder Hình 4.1 Phần cứng tồn bộ hệ thống
Nguồn ni Mạch điều khiển
Tản nhiệt
Động cơ Mạch cơng suất
Hình 4.2 Bố trí board mạch cơng suất FSBS10CH60
Module công suất FSBS10CH60
Mạch đo và phản hồi dòng
4.2 Phần mềm
Phần mềm điều khiển được viết dựa trên nền tảng FOC4 được cung cấp bởi hãng STMicroelectronics và được phát triển thêm cho phù hợp với ứng dụng điều khiển động cơ đồng bộ kích thích nam châm vĩnh cửu. Trong đó có phần giao tiếp với màn hình LCD TFT và bàn phím để thay đổi các tham số và điều khiển tốc độ của động cơ
4.2.1 Thư viện Firmware ngôn ngữ C viết cho STM32F103ZET6
Ngôn ngữ C được sử dụng rộng rãi trong lập trình cho các hệ thống nhúng. Tuy nhiên, ngôn ngữ C khơng giống như ngơn ngữ C++ vì khơng hỗ trợ lập trình hướng đối tượng (Object Oriented Programming – OOP). Vì vậy, trong thư viện firmware FOC viết cho STM32F103ZET6 có phần giả lập OOP để thực hiện các lớp (class) cần thiết. Các thành phần thư viện này được mô tả chi tiết trong tài liệu [2].
4.2.2 Tổ chức quản lý và nội dung các file thuộc các lớp dùng chung
Tùy theo mục đích thực hiện phần mềm, ví dụ lớp Example được tạo
bởi 3 file nguồn:
ExampleClass.h
File này được lưu trong thư mục \MC của thư viện. Đây là một file header dùng chung chứa các giao tiếp của lớp Example. Các giao tiếp của
một lớp đưa ra những định nghĩa của các phương pháp (method) được sử dụng trong các đối tượng của lớp đó. Về cơ bản,trong thư viện firmware FOC viết cho STM32F103ZET6, file này chứa tất cả các thứ cần thiết để làm việc với lớp đó. Với mục đích đó, file này chứa định nghĩa chung của kiểu lớp (CEXMP) và kiểu cấu trúc chứa các tham số hằng để tạo ra đối tượng (ExampleParams_t).
Ngoài ra, chỉ khi có yêu cầu, các định nghĩa của các kiểu cần cho việc sử dụng method mới được lưu trong file này.
/************************************************************** ****
* @file ExampleClass.h
* @author IMS Systems Lab and Technical Marketing - MC Team * @version V0.0.1
* @brief This file contains interface of Example class
************************************************************** ***** */ /* Includes -----------------------------------------------------*/ #include "MC_type.h" /**
* @brief Public Example class definition */
typedef struct CEXMP_t *CEXMP; /**
* @brief Example class parameters definition */
typedef const struct {
unsigned int paramA; /*!< Example of parameter */ }ExampleParams_t, *pExampleParams_t;
/**
* @brief Creates an object of the class Example
* @param pExampleParams pointer to an Example parameters structure * @retval CEXMP new instance of Example object
*/
CEXMP EXMP_NewObject(pExampleParams_t pExampleParams); /**
* @brief Example of public method of the class Example * @param this related object of class CEXMP
* @retval none */
void EXMP_Func(CEXMP this); /**
* @brief Example of virtual method of the class Example implemented by derived class
* @param this related object of class CEXMP * @retval none
*/
void EXMP_VFunc(CEXMP this);
Cần phải nhấn mạnh rằng lớp kiểu CEXMP là một con trỏ (pointer) đến một cấu trúc không kiểu (void structure) CEXMP_t. Điều này nhằm tránh cho
người sử dụng truy cập vào các thành phần đối tượng và các dữ liệu ẩn.
ExamplePrivate.h
File này được lưu trong thư mục \MC library\inc (chỉ được phân phối riêng cho STM32 FOC PMSM SDK). Đây là một lớp header riêng chứa các định nghĩa riêng cho các lớp thi hành bao gồm các định nghĩa kiểu cấu trúc dữ liệu đối tượng (các thành phần biến đối tượng của cấu trúc đó), các cấu trúc chứa các method ảo, các thông số lớp được định nghĩa lại riêng và định nghĩa lớp riêng.
************************************************************** *****
* @file ExamplePrivate.h
* @author IMS Systems Lab and Technical Marketing - MC Team * @version V0.0.1
* @brief This file contains private definition of Example class
************************************************************** *****
*/ /**
* @brief Example class members definition */
typedef struct {
unsigned int base_vars; /*!< Example of member */ }Vars_t,*pVars_t;
/**
* @brief Redefinition of parameter structure */
typedef ExampleParams_t Params_t, *pParams_t; /**
* @brief Virtual methods container */
typedef struct {
void (*pIRQ_Handler)(void *this, unsigned char flag); /*!< Only if class implementation requires to be triggered by an interrupt */
void (*pVFunc)(CEXMP this); /*!< Example of virtual function pointer */ }Methods_t,*pMethods_t;
/**
* @brief Private Example class definition */
typedef struct {
Methods_t Methods_str ;/*!< Virtual methods container */ Vars_t Vars_str; /*!< Class members container */
pParams_t pParams_str; /*!< Class parameters container */ void *DerivedClass;/*!< Pointer to derived class */
}_CEXMP_t, *_CEXMP;
Nếu có cả lớp cơ sở hoặc thi hành yêu cầu các dòng lệnh thực hiện tạo ra một ngắt (interrupt) thì một con trỏ tới các dịng lệnh này (pIRQ_Handler) cũng sẽ được định nghĩa.
ExampleClass.c
File này được lưu trong thư mục \MC library\src (chỉ được phân phối riêng cho STM32 FOC PMSM SDK), đó là một file nguồn chứa phần thi hành của các method lớp. File này bao gồm cả các định nghĩa riêng và giao tiếp của cùng một lớp.
Method Example_NewObject có một số giải thích. Method này tạo ra các đối tượng của lớp Example (CEXMP) khi có yêu cầu.
Có hai phần thi hành khác nhau của Example_NewObject được tạo ra, tùy thuộc vào hiệu lực của MC_CLASS_DYNAMIC trong định nghĩa
MCLibraryConf.h. Nếu MC_CLASS_DYNAMIC được định nghĩa thì
định vị RAM động được cho phép và các đối tượng được tạo ra thông qua một thủ tục thư viện cấp phát bộ nhờ động tiêu chuẩn, làm cho việc sử dụng bộ nhớ RAM một cách có hiệu quả. Phương pháp này khơng tương thích với các quy định của MISRA C 2004 vì có những rủi ro tiềm tàng của việc rị rỉ hoặc hư hỏng bộ nhớ do cấp phát bộ nhớ động.
Ngược lại, việc cấp phát bộ nhớ động bị cấm khi người sử dụng loại bỏ hiệu lực (comment) của định nghĩa MC_CLASS_DYNAMIC. Trong trường hợp này, một mảng của đối tượng được cấp phát trước và tĩnh trong bộ nhớ RAM. Danh sách các đối tượng này, vốn được dành cho mỗi một lớp, được định nghĩa trong MCLibraryConf.h cho cả chương trình điều khiển động cơ đơn và điều khiển động cơ kép (MAX_EXMP_NUM và tương tự). Để tránh cho trình dịch để dành bộ nhớ RAM cho các đối tượng không bao giờ được khởi tạo ta có thể sửa lại kích thước cho phù hợp với ứng dụng cuối cùng.
Đo đếm kích thước chung chỉ được cho phép trong bản phân phối mật của STM32 FOC PMSM SDK. Trong các ứng dụng Web thì khơng có đối tượng ngoại lệ được đưa ra bởi người sử dụng. Chỉ có các ngoại lệ sau được cho phép: không quá 3 đối tượng PID, không quá 5 đối tượng PI và không quá 5 đối tượng đầu ra số.
/**
************************************************************** *****
* @file ExampleClass.c
* @author IMS Systems Lab and Technical Marketing - MC Team * @version V0.0.1
* @brief This file contains interface of Example class
************************************************************** *****
*/ #include "ExampleClass.h" #include "ExamplePrivate.h" #include "MCLibraryConf.h" #include "MC_type.h" #ifdef MC_CLASS_DYNAMIC
#include "stdlib.h" /* Used for dynamic allocation */ #else
_CEXMP_t EXMPpool[MAX_EXMP_NUM]; unsigned char EXMP_Allocated = 0u;
#endif /**
* @brief Creates an object of the class Example
* @param pExampleParams pointer to an Example parameters structure * @retval CEXMP new instance of Example object
*/
CEXMP EXMP_NewObject(pExampleParams_t pExampleParams) { _CEXMP _oEXMP; #ifdef MC_CLASS_DYNAMIC _oEXMP = (_CEXMP)calloc(1u,sizeof(_CEXMP_t)); #else if (EXMP_Allocated < MAX_EXMP_NUM) { _oEXMP = &EXMPpool[EXMP_Allocated++]; } else {
_oEXMP = MC_NULL; } #endif _oEXMP->pParams_str = (pParams_t)pExampleParams; return ((CEXMP)_oEXMP); } /**
* @brief Example of public method of the class Example * @param this related object of class CEXMP
* @retval none */
void EXMP_Func(CEXMP this) {
((_CEXMP)this)->Vars_str.base_vars = 0u; }
/**
* @brief Example of virtual method of the class Example implemented by derived * class
* @param this related object of class CEXMP * @retval none
*/
void EXMP_VFunc(CEXMP this) {
((_CEXMP)this)->Methods_str.pVFunc(this); }
4.2.3 Tổ chức và nội dung các file nguồn lớp dẫn xuất (derived classes)