Tính toán tốc độ động cơ

Một phần của tài liệu Nghiên cứu, thiết kế, chế tạo mạch điều khiển động cơ BLDC công suất nhỏ (dưới 1kw) (Trang 78)

Khi động cơ hoạt động, cảm biến Hall sẽ liên tục thay đổi trạng thái. Cảm biến Hall sẽ lần lượt đạt đến từng trạng thái khi rotor quay và sẽ trở về trạng thái ban đầu khi mạch điều khiển kết thúc một chu kỳ kích từ. Để tính toán được tộc độ động cơ, vi điều khiển sẽ đo khoảng thời gian giữa hai lần thay đổi trạng thái của cảm biến, kết hợp với số lần thay đổi trạng thái của cảm biến khi động cơ quay đủ một vòng, qua tính toán sẽ biết được tốc độ quay của động cơ mỗi khi cảm biến thay đổi trạng thái.

Hình 4.19. Phương pháp xác định tốc độ động cơ

Đây là cách tính toán được sử dụng phổ biến, có độ chính xác cao. Mặc dù dài tốc độ tính toán sẽ bị giới hạn bởi đặc tính làm việc của bộ đếm thời gian trong vi điều khiển và thời gian lấy mẫu sẽ phụ thuộc vào tốc độ quay của động cơ nhưng những vấn đề này có thể được xử lý thông qua quá trình lập trình. Nhìn chung, đây vẫn là phương pháp đơn giản, hiệu quả và đáng tin cậy để lấy dữ liệu tốc độ động cơ, độ chính xác cao sẽ hỗ trợ

CHƯƠNG 5: LẬP TRÌNH ĐIỀU KHIỂN ĐỘNG CƠ BLDC 5.1. Giới thiệu môi trường phát triển tích hợp STM32CubeIDE

STM32CubeIDE là một môi trường phát triển tích hợp (hay IDE) được phát triển bởi STMicroelectric, là công cụ lập trình và phát triển phần mềm chính thức của dòng vi điều khiển STM32 và là một phần của hệ sinh thái phần mềm STM32Cube. STM32CubeIDE có giao diện gần giống với Eclipse IDE, là một môi trường phát triển tích hợp của ngôn ngữ Java, phần mềm tích hợp nhiều chức năng của các phần mềm tiền nhiệm (TRUEStudio và STM32CubeMX), bao gồm nền tảng lập trình nâng cao cho ngôn ngữ C/C++, công cụ cấu hình và thiết lập ngoại vi cho vi điều khiển dựa trên hình ảnh trực quan, công cụ tạo mã nguồn chương trình, biên dịch, gỡ lỗi nâng cao kết hợp đồng thời với ST-Link. Ngoài ra STM32CubeIDE còn hỗ trợ người dùng với một hê thống thư viện lập trình tích hợp gồm nhiều câu lệnh thực thi trực tiếp (macro), các hằng số được khai báo sẵn, các thanh ghi được đơn giản hóa nhằm hỗ trợ quá trình phát triển ứng dụng và các hàm chương trình được lập trình sẵn, có tên là thư viên HAL (Hardware Abstraction Layer).

Hình 5.1. Môi trường phát triển tích hợp chính thức của vi điều khiển STM32 – STM32CubeIDE

5.2. Các ngoại vi sử dụng trong quá trình điều khiển5.2.1. Bộ định thời Timers (TIM) 5.2.1. Bộ định thời Timers (TIM)

Bộ định thời – Timer là một trong số những ngoại vi cần thiết nhất trong công việc điều khiển động cơ. Ngoài chức năng xác định thời gian cho các vòng lặp kiểm tra và

tính toán của chương trình, bộ định thời Timer còn đóng vai trò tạo tín hiêu PWM để điều khiển tốc độ động cơ. Chương trình điều khiển sẽ sử dụng 6 bộ Timer của vi điều khiển nhằm các mục đích sau:

 Timer 2, 3, 14 và 16 sẽ đóng vai trò là bộ tạo xung PWM cho các chân input/output của vi điều khiển.

 Timer 17 sẽ tạo vòng lặp cho bộ điều khiển PID và hàm lấy giá trị ADC.  Timer 6 sẽ được sử dụng để tính tốc độ động cơ.

5.2.2. Bộ chuyển đổi Analog – Digital (ADC)

Để đọc và theo dõi các tín hiệu như giá trị dòng điện, điện áp, nhiệt độ,… chương trình cần phải sử dụng một hay nhiều bộ chuyển đổi Analog – Digital. Bộ chuyển đổi này đóng vai trò chuyển đổi các tín hiệu tương tự (analog) từ các cảm biến thành tín hiệu số (digital) mà vi điều khiển có thể đọc và xử lí được. Các kênh chuyển đổi được sử dụng trong chương trình gồm:

 Kênh ADC_IN0 sẽ đọc giá trị của biến trở

 Kênh ADC_IN8 sẽ đọc giá trị của nhiệt độ MOSFET

 Kênh ADC_IN10 sẽ đọc giá trị của dòng điện qua cuộn dây stator  Kênh ADC_IN11 sẽ đọc giá trị của điện áp nguồn

5.2.3. Bộ truyền thông nối tiếp không đồng bộ (UART)

UART là một giao thức truyển thông nối tiếp được sử dụng rộng rãi và được tích hợp trên hầu hết các vi điều khiển hiện nay. Giao thức này có ưu điểm là thiết kế và cấu trúc dữ liệu đơn giản, dải tốc độ truyển tín hiệu rộng, có thể giao tiếp giữa 2 vi điều khiển không cùng tần số hoạt động. Giao thức truyền thông này được sử dụng trong đồ án với mục đích đưa các thông số theo dõi hoạt động của động cơ lên máy tính để xuất đồ thị hoặc lưu dữ liệu.

5.2.4. Watchdog Timer (WDT)

Watchdog Timer là một bộ định thời hoạt động độc lập với vi điều khiển bằng cách sử dụng mạch dao động riêng. Watchdog Timer có thể được tạo sự kiện ngắt hoặc khởi động lại vi điều khiển khi bộ đếm tràn hoặc khi giá trị bộ đếm đạt đến một giá định cố

dụng để khởi động lại vi điều khiển khi chương trình thực thi xảy ra lỗi và không thể tiếp tục điều khiển hoặc theo dõi đông cơ.

5.2.5. GPIO và ngắt ngoài (EXTI)

GPIO (General Purpose Input Output) là ngoại vi cần thiết được sử dụng để thiết lập chức năng của các chân tín hiệu vào và ra của vi điều khiển. Tùy vào từng ngoại vi và chức năng được kích hoạt mà các chân tín hiệu tương ứng có thể được thiết lập tự động hoặc bởi người dùng.

Ngắt ngoài – EXTI (External Interrupt) cho phép chương trình theo dõi trạng thái các chân tín hiệu đầu vào và tạo sự kiện ngắt tùy vào trạng thái của từng chân. Người lập trình có thể viết chương trình ngắt cho từng sự kiện ngắt riêng biệt. Trong chương trình này, ngắt ngoài được sử dụng để lấy tín hiệu từ cảm biến Hall, từ đó có thể tính toán tốc độ đồng thời thông báo vị trí kích từ tiếp theo cho vi điều khiển.

5.2.6. Truy cập bộ nhớ trực tiếp (DMA)

Truy cập bộ nhớ trực tiếp – DMA (Direct Memory Access) cho phép các ngoại vi trao đổi dữ liệu trực tiếp với nhau mà không cần thông qua lõi xử lí trung tâm. Ngoại vi này giúp vi điều khiển tiết kiệm tài nguyên xử lí, cho phép dử liệu được truyền nhận nhanh chóng nội bộ bên trong vi điều khiển. Chương trình điều khiển sẽ sử dụng DMA để lấy dữ liệu từ bộ chuyển đổi ADC, vì đây là ngoại vi sử dụng nhiều tài nguyên và dữ liệu chuyển đổi thường có kích thước khá lớn, sử dụng DMA để lưu trữ và truyền dữ liệu sẽ giúp vi điều khiển bảo toàn và đọc dữ liệu nhanh hơn so với các phương pháp truyền thống như chờ bộ chuyển đổi hoàn tất quá trình làm việc hoặc tạo chương trình ngắt để lấy dữ liệu.

5.3.1. Danh sách các hàm sử dụng trong chương trình điều khiển:

Tên hàm Chức năng

void SystemClock_Config(void) Thiết lập tần số làm việc của vi điều khiển

static void MX_GPIO_Init(void) Thiết lập chức năng các chân input/output

static void

MX_USART2_UART_Init(void

Thiết lập các thông số hoạt động của giao thức UART

static void MX_DMA_Init(void) Thiết lập các thông số hoạt động của DMA

static void MX_ADC_Init(void) Thiết lập thông số hoạt động bộ chuyển đổi ADC

static void MX_TIM2_Init(void); Thiết lập các thông số hoạt động bộ Timer 2

static void MX_TIM3_Init(void); Thiết lập các thông số hoạt động bộ Timer 3

static void MX_TIM6_Init(void); Thiết lập các thông số hoạt động bộ Timer 6

static void MX_TIM14_Init(void); Thiết lập các thông số hoạt động bộ Timer 14

static void MX_TIM16_Init(void); Thiết lập các thông số hoạt động bộ Timer 16

static void MX_TIM17_Init(void); Thiết lập các thông số hoạt động bộ Timer 17

static void MX_IWDG_Init(void); Thiết lập các thông số hoạt động của Watchdog Timer

Tên hàm Chức năng

static void Peripheral_Initiate() Khởi động các ngoại vi

static uint8_t

Set_PWM_Value(doubleduty)

Thiết lập giá trị chu kỳ làm việc cho bộ tạo xung PWM

static double getSpeed()

Lấy về giá trị tốc độ động cơ

static void Read_ADC_Value()

Đọc các giá trị của bộ chuyển đổi ADC

static void BLDCStart()

Động cơ bắt đầu hoạt động

static void BLDCStop()

Động cơ ngừng hoạt động

static void

BLDCBackwardCommutate(double

dutySet)

Chuyển bước kích từ theo chiều quay ngược

static void

BLDCForwardCommutate(double

dutySet);

Chuyển bước kích từ theo chiều quay thuận

static void dirCheck(uint16_t GPIO)

Cập nhật chiều quay của động cơ

static void hallCheck()

Cập nhật giá trị cảm biến Hall

static void Speed_PID(double

set_speed) Tính toán giá trị output của bộ điều khiển PID

Tên hàm Chức năng

void

HAL_GPIO_EXTI_Callback(uint16 _t GPIO_Pin)

Hàm ngắt ngoài cho các chân cảm biến Hall

void HAL_TIM_PeriodElapsedCallback( TIM_HandleTypeDef *htim) Hàm ngắt tràn các bộ định thời void HAL_TIM_OC_DelayElapsedCallb ack(TIM_HandleTypeDef *htim)

Hàm ngắt khi giá trị bộ đếm trùng khớp với một giá trị định sẵn

Bảng 5.3. Các chương trình ngắt

5.3.2. Lưu đồ thuật toán

Hình 5.3.static void Peripheral_Initiate()

Hình 5.5.static double getSpeed()

Hình 5.6.static void Read_ADC_Value()

Hình 5.11.static void dirCheck(uint16_t GPIO)

Hình 5.13.static void Speed_PID(doubleset_speed)

Hình 5.15.void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)

CHƯƠNG 6: KẾT QUẢ VÀ PHƯƠNG HƯỚNG PHÁT TRIỂN TRONG TƯƠNG LAI

6.1. Đánh giá hoạt động của chương trình điều khiển

Trước khi kết nối các phần cứng và chạy thử động cơ, cần phải giả lập tín hiệu cảm biến Hall và kiểm tra các chức năng cùng tín hiệu PWM từ vi điều khiển để đảm bảo chương trình có thể hoạt động đúng như dự định khi lập trình. Dưới đây là các kiểm tra cần thiết trước khi kết nối với động cơ được thực hiện trên vi điều khiển.

Tín hiệu PWM được quan sát bằng một thiết bị Logic Analyzer, so sánh với cấu hình PWM đã được xây dựng từ trước, có thể thấy chương trình đã hoạt động đúng chức năng. Các MOSFET trên cùng một bán cầu không bao giờ ở trạng thái dẫn cùng một lúc, các thứ tự chuyển bước và MOSFET được kích hoạt tương ứng đúng với thứ tự được viết trong chương trình.

Các tín hiệu được gửi từ UART cũng được đưa lên thành công, định dạng và giá trị các tín hiệu đều đúng ở trong phạm vi cho phép.

Hình 6.2. Tín hiệu nhận được từ cổng Serial COM Port

Sau khi đảm bảo các chức năng của chương trình đều hoạt động đúng, tiến hành thiết lập kết nối hệ thống dựa trên sơ đồ nối dây và các chân kết nối tương ứng. Cụm dây từ động cơ sẽ được nối trực tiếp vào mạch điều khiển đông cơ BLDC 500W, sử dụng một bộ nguồn 24V để cấp nguồn cho toàn hệ thống và kết nối vi điều khiển vào máy tính để theo dõi các thông số hoạt động của động cơ.

Sau khi đã thiết lập hoàn chỉnh, chạy thử chương trình dưới các điều kiện: chạy tự do không tải và thay đổi giá trị biến trở để kiểm tra khả năng đáp ứng. Sau một số lần

chạy thử, kết quả cho ra các đồ thị dưới đây:

Hình 6.4. Đồ thị khả năng đáp ứng của bộ điều khiển tốc độ - chạy thử lần 1

Hình 6.6. Đồ thị khả năng đáp ứng của bộ điều khiển tốc độ - chạy thử lần 3

Quan sát đồ thị, có thể thấy được qua một số lần hiệu chỉnh, chương trình điều khiển đã làm tốt việc giữ tốc độ động cơ gần với tốc độ mong muốn điều khiển bởi người dùng. Ở lần chạy thử thứ nhất, thiết lập hệ số kP = 0.5 và kI = 0.02, bộ điều khiển không tăng tốc độ của động cơ đủ nhanh, đồng thời sai số ổn định vẫn tồn tại. Lần chạy thử thứ hai, thiết lập hệ số kP = 1 và kI = 0.7 sai số ổn định đã được loại bỏ, tuy nhiên thời gian để động cơ đạt đến tốc độ đầu vào vẫn còn khá lâu (khoảng 400 lần lấy mẫu). Ở lần chạy thử thứ 3, thiết lập hệ số kP = 1.5 và kI = 1.85, động cơ đã có thể đáp ứng gần như đồng thời giá trị setpoint, thời gian thiết lập đã giảm đáng kể (khoảng 140 lần lấy mẫu). Đồng thời, trên đồ thị cũng có thể thấy rõ sự dao động của tốc độ thực tế của động cơ. Đây là một nhược điểm của phương pháp điều khiển 6 bước (6 steps commutation) mà cách khắc phục là sử dụng một phương pháp điều khiển cao cấp hơn.

Hình 6.7. Đồ thị các thông số làm việc khác

Các thông số khác cũng có thể được quan sát trên đồ thị, nhiệt độ MOSFET được duy trì ổn định ở một giá trị hợp lý, trong khi có một số dao động nhỏ ở đồ thị điện áp khi động cơ tăng tốc độ, dòng điện đọc được cũng có một số thay đổi khi động cơ tăng hoặc giảm tốc độ.

6.2. Kết luận

Nhìn chung, quá trình thực hiện đồ án đã đạt được các mục tiêu đề ra cụ thể như sau:  Tìm hiểu và nắm rõ các cấu tạo và nguyên lý hoạt động của động cơ không chổi than,

hiểu được nguyên nhân khiến cho loại động cơ này có độ bền và hiệu suất làm việc cao hơn động cơ sử dụng chổi than truyền thống.

 Xây dựng được một mô hình mô phỏng hoạt động của động cơ không chổi than, hỗ trợ cho quá trình phát triển chương trình điều khiển.

 Phát triển một chương trình điều khiển đơn giản nhưng có hiệu quả điều khiển cao  Quan sát và theo dõi các thông số hoạt động của động cơ thông qua giao tiếp với máy

6.3. Các phương hướng nghiên cứu trong tương lai6.3.1. Về mặt phần cứng 6.3.1. Về mặt phần cứng

Các phần cứng được sử dụng trong đồ án đã có thể phục vụ hầu hết các nhu cầu sử dụng của động cơ không chổi than trên các phương tiện hiện nay. Mặc dù vậy, vẫn tồn tại nhiều yêu cầu để có thể đưa một thiết bị kết nối vào hệ thống điện của một chiếc xe hoàn chỉnh. Các yêu cầu này có thể phân làm 3 nhóm chính là kích thước, khả năng tương thích và kết nối.

Về kích thước, đối với các ứng dụng yêu cầu công suất lớn, động cơ và mạch điều khiển ít nhất cũng phải đạt được công suất cần thiết tối thiểu của hệ thống. Động cơ công suất càng lớn, kéo theo các linh kiện điện tử công suất được sử dụng để điều khiển cũng có sự gia tăng về kích thước. Thành ra phương hướng giải quyết yêu cầu này phần lớn phải dựa trên kỹ thuật và khả năng của các kỹ sư thiết kế mạch điều khiển. Các mạch điều khiển được thiết kế ra phải có kích thước hợp lý, đồng thời đạt khả năng hoạt động ổn định dưới công suất làm việc của động cơ

Về khả năng tương thích, các thiết bị điên tử trên xe hoạt động dưới nhiều điều kiện khác nhau, đặc biệt là khi hoạt động ở gần động cơ. Sự dao động cơ khí, nhiễu trên đường dây điện gây ra bởi từ trường hay các tín hiệu điện khác hoặc các yếu tố môi trường như nhiệt độ, bụi bẩn, dầu nhớt,… có thể ảnh hưởng đến khả năng hoạt động của mạch điều khiển và của cả động cơ. Vì vậy nên khi đưa một thiết bị mới kết nối vào hệ thống của một chiếc xe hoạt động trong thực tế, cần phải cân nhắc về các yếu tố có thể gây ảnh hưởng đến khả năng hoạt động của thiết bị này. Phải đảm bảo sự tương thích toàn bộ của thiết bị đối với các hệ thống khác trên xe, đưa ra các thay đổi về thiết kế hợp lý để đảm bảo khả năng hoạt động ổn định của thiết bị khi chiếc xe đang vận hành.

Về vấn đề kết nối, động cơ và bộ điều khiển phải đảm bảo kết nối với các hệ thống khác trên xe để có thể hoạt động đúng chức năng. Nhờ có mạng CAN, các hệ thống trên xe có thể chia sẻ thông tin và hoạt động đồng thời với nhau một cách hiệu quả nhất. Vậy nên khi thay thế các động cơ chổi than cũ bằng động cơ không chổi than cùng với mạch

Một phần của tài liệu Nghiên cứu, thiết kế, chế tạo mạch điều khiển động cơ BLDC công suất nhỏ (dưới 1kw) (Trang 78)

Tải bản đầy đủ (PDF)

(155 trang)