Chương 3 : THIẾT KẾ MẠCH NGUYÊN LÝ
3.1 Mạch công suất
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 ni 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).
Ngồi ra, chỉ khi có 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)
Để hồn thiện hình ảnh của các file nguồn lớp dẫn xuất, các mẫu của các file này được đưa ra ở đây cho một lớp dẫn xuất bắt nguồn từ class cơ sở Example.
Derived_ExampleClass.h
File này được lưu trong thư mục giao tiếp \MC, đó là một header chung chứa các giao tiếp cho lớp Derived_Example. Như đối với ExampleClass.h, một file header chứa mọi thứ cần thiết để làm việc với các lớp liên quan. File này bao gồm các method đặc trưng của lớp dẫn xuất, định nghĩa chung của kiểu lớp dẫn xuất và cấu trúc kiểu chữa các tham số hằng cần thiết để tạo đối tượng lớp dẫn xuất.
Ngoài ra và chỉ khi nào cần thì lớp này có thể chứa các định nghĩa về các kiểu nhất định cần thiết cho việc sử dụng method.
Tạo một ví dụ mới của đối tượng lớp dẫn xuất yêu cầu các con trỏ tới cả cơ sở và các cấu trúc tham số lớp dẫn xuất (xem thêm cả
Derived_ExampleClass.c).
/**
************************************************************** *****
* @file Derived_ExampleClass.h
* @author IMS Systems Lab and Technical Marketing - MC Team * @version V0.0.1
* @brief This file contains interface of Derived class
************************************************************** *****
*/
/**
* @brief Public Derived class definition */
typedef struct CDRV_EXMP_t *CDRV_EXMP; /**
* @brief Derived class parameters definition */
typedef const struct {
unsigned int param1; /*!< Example of parameter */ }DerivedParams_t, *pDerivedParams_t;
/**
* @brief Creates an object of the class Derived
* @param pExampleParams pointer to an Example parameters structure * @param pDerivedParams pointer to a Derived parameters structure * @retval CDRV_EXMP new instance of Derived object
*/
CDRV_EXMP DRV_NewObject(pExampleParams_t pExampleParams, pDerivedParams_t pDerivedParams);
/**
* @brief Example of public method of the class Derived * @param this related object of class CDRV_EXMP * @retval none
*/
void DRV_Func(CDRV_EXMP this); Derived_ExamplePrivate.h
File này được lưu trong thư mục \MC library\inc (chỉ có trong phiên bản bí mật của STM32 FOC PMSM SDK), đó là một file header lớp riêng chứa các định nghĩa riêng cần thiết cho việc thực thi lớp dẫn xuất. Nó bao gồm định nghĩa riêng của kiểu cấu trúc dữ liệu đối tượng (các biến đối tượng là các phần tử của cấu trúc này), định nghĩa lại riêng lớp tham số và định nghĩa lớp riêng.
Không giống như file header định nghĩa lớp riêng có sở liên quan, một kiểu cấu trúc lớp dẫn xuất không chứa các con trỏ tới cả các lớp dẫn xuất tiếp theo lẫn các vật chứa (containers) phương pháp ảo. Điều này hạn chế các mức độ thừa kế tới mức 1.
/**
************************************************************** *
* @file Derived_ExamplePrivate.h
* @author IMS Systems Lab and Technical Marketing - MC Team * @version V0.0.1
* @brief This file contains private definition of Derived class
************************************************************** *****
*/
/* Define to prevent recursive inclusion ------------------------*/ #ifndef __DERIVED_EXAMPLEPRIVATE_H
#define __DERIVED_EXAMPLEPRIVATE_H /**
* @brief Derived class members definition */
typedef struct {
unsigned int derived_Vars; /*!< Example of member */ }DVars_t,*pDVars_t;
/**
* @brief Redefinition of parameter structure */
typedef DerivedParams_t DParams_t, *pDParams_t; /**
* @brief Private Derived class definition */
typedef struct {
DVars_t DVars_str;/*!< Derived class members container */
pDParams_t pDParams_str;/*!< Derived class parameters container */
}_DCDRV_EXMP_t, *_DCDRV_EXMP; Derived_ExampleClass.c
File này được lưu trong thư mục \MC library\src (chỉ có trong phiên bản bí mật của STM32 FOC PMSM SDK). Đây là một file nguồn chứa các thực thi của cả các method đặc trưng lớp dẫn xuất lẫn các method ảo lớp cơ sở. Nó bao gồm cả cơ sở và giao tiếp các lớp dẫn xuất cũng như các định