THÀNH PHỐ HỒ CHÍ MINH BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT Tp Hồ Chí Minh, tháng 07/2017 THIẾT KẾ VÀ THI CÔNG MÔ HÌNH CON LẮC NGƯỢC QUAY ĐỒ ÁN TỐT NGHIỆP NGÀNH CNKT ĐIỀU KHIỂN VÀ TỰ[.]
BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT THÀNH PHỐ HỒ CHÍ MINH ĐỒ ÁN TỐT NGHIỆP NGÀNH CNKT ĐIỀU KHIỂN VÀ TỰ ĐỘNG HÓA THIẾT KẾ VÀ THI CƠNG MƠ HÌNH CON LẮC NGƯỢC QUAY GVHD: TS NGUYỄN MINH TÂM SVTH: ĐÀO MINH TIẾN SKL010080 Tp Hồ Chí Minh, tháng 07/2017 BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP.HCM KHOA: ĐÀO TẠO CHẤT LƯỢNG CAO BỘ MÔN ĐIỀU KHIỂN TỰ ĐỘNG ĐỒ ÁN TỐT NGHIỆP Đề tài: THIẾT KẾ VÀ THI CƠNG MƠ HÌNH CON LẮC NGƯỢC QUAY GVHD : T.S NGUYỄN MINH TÂM SVTH : ĐÀO MINH TIẾN MSSV: 13151146 NGÀNH: CNKT ĐIỀU KHIỂN – TỰ ĐỘNG HĨA KHĨA : 2013 - 2017 TP HỒ CHÍ MINH – 7/2017 Trường ĐH Sư Phạm Kỹ Thuật TP.HCM Khoa Đào tạo chất lượng cao Cộng Hòa Xã Hội Chủ Nghĩa Việt Nam Độc lập – Tự – Hạnh phúc NGÀNH CÔNG NGHỆ KỸ THUẬT ĐIỀU KHIỂN VÀ TỰ ĐỘNG HÓA NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP Giảng viên hướng dẫn: Nguyễn Minh Tâm Sinh viên thực hiện: Đào Minh Tiến MSSV 13151146 Tên đề tài: THIẾT KẾ VÀ THI CƠNG MƠ HÌNH CON LẮC NGƯỢC QUAY Nội dung đồ án Đề tài tập trung vào việc xây dựng mơ hình thuật tốn điều khiển hệ lắc ngược quay điều khiển PD ( Proportional Derivative) Đồng thời thiết kế chế tạo mơ hình thực tế hệ lắc ngược quay có khả giữ cân lắc thẳng đứng hướng lên vị trí xác định cánh tay Các sản phẩm dự kiến - Mơ hình mơ hệ lắc ngược quay sử dụng điều khiển PID Matlab-Simulink - Mơ hình điều khiển hệ lắc ngược quay sử dụng điều khiển PD thực tế Ngày giao đồ án: Ngày tháng năm 2017 Ngày nộp đồ án: Ngày tháng năm 2017 i TP Hồ Chí Minh, ngày … tháng … năm 2017 Thông qua môn Giảng viên hướng dẫn Chủ nhiệm môn TS Nguyễn Minh Tâm TS Trương Đình Nhơn ii CỘNG HỒ XÃ HỘI CHỦ NGHĨA VIỆT NAM Độc lập – Tự – Hạnh phúc PHIẾU NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN Họ tên Sinh viên: Đào Minh Tiến MSSV 13151146 Ngành: NGÀNH CƠNG NGHỆ KỸ THUẬT ĐIỀU KHIỂN VÀ TỰ ĐỘNG HĨA Tên đề tài: THIẾT KẾ VÀ THI CƠNG MƠ HÌNH CON LẮC NGƯỢC QUAY Họ tên Giảng viên hướng dẫn: NHẬN XÉT Về nội dung đề tài & khối lượng thực hiện: Ưu điểm: Khuyết điểm: Đề nghị cho bảo vệ hay không? Đánh giá loại: Điểm:……………….(Bằng chữ: ) Tp Hồ Chí Minh, ngày tháng năm 20… Giảng viên hướng dẫn (Ký & ghi rõ họ tên) iii CỘNG HOÀ XÃ HỘI CHỦ NGHĨA VIỆT NAM Độc lập – Tự – Hạnh phúc PHIẾU NHẬN XÉT CỦA GIÁO VIÊN PHẢN BIỆN Họ tên Sinh viên: Đào Minh Tiến MSSV 13151146 Ngành: NGÀNH CÔNG NGHỆ KỸ THUẬT ĐIỀU KHIỂN VÀ TỰ ĐỘNG HĨA Tên đề tài: THIẾT KẾ VÀ THI CƠNG MƠ HÌNH CON LẮC NGƯỢC QUAY Họ tên Giảng viên phản biện: NHẬN XÉT Về nội dung đề tài & khối lượng thực hiện: Ưu điểm: Khuyết điểm: Đề nghị cho bảo vệ hay không? Đánh giá loại: Điểm:……………….(Bằng chữ: ) Tp Hồ Chí Minh, ngày tháng năm 20… Giảng viên phản biện (Ký & ghi rõ họ tên) iv LỜI CÁM ƠN Trong thời gian học tập làm cậu sinh viên trường Đại học Sư Phạm Kỹ Thuật TP Hồ Chí Minh, thân em nhận nhiều giúp đỡ từ gia đình, nhà trường, quý thầy cô, bạn, sau tháng thực hiên đồ án với hướng dẫn thầy Nguyễn Minh Tâm, thầy Nguyễn Văn Đơng Hải, thầy Phan Vân Hồn, bạn Nguyễn giúp chúng em hoàn thành thời gian qui định Trong thời gian thự đồ án tốt nghiệp em xin chân thành cảm ơn đến: Thầy Nguyễn Minh Tâm, Nguyễn Văn Đông Hải, Phan Vân Hồn người tận tình hướng dẫn, truyền đạt, giúp đỡ, giải đáp thắc mắc tạo điều kiện cho chúng em thực đồ án Quý thầy cô khoa Đào Tạo Chất Lượng Cao cung cấp cho chúng em kiến thức quý báu trình học tập trường Các bạn sinh viên giúp đỡ trao đổi kiến thức trình thực đồ án Một lần em xin gởi lời cảm ơn đến tất người giúp đỡ em hoàn thành tốt đồ án tốt nghiệp Em cố gắng trình tìm hiểu thực đề tài kiến thức cịn hạn chế khiến tiểu luận không ý thầy Em mong góp ý, nhận xét đánh giá nội dung hình thức trình bày từ thầy để em hồn thiện tiểu luận Em xin chân thành cảm ơn! Sinh viên thực đề tài Đào Minh Tiến v TÓM TẮT “Thiết kế thi cơng mơ hình lắc ngược quay” Hiện nay, đất nước ta bước vào thời kỳ cơng nghiệp hố, đại hóa, để q trình phát triển nhanh cần tập trung vào tính ổn định khả đáp ứng điều khiển Mơ hình lắc ngược quay mơ hình phổ biến hệ phi tuyến dùng phịng thí nghiệm nhằm để kiểm tra điều khiển hệ thống tự động Mô hình tìm thấy nhiều ứng dụng ổn định, cân bằng… Đặc biệt, mơ hình điều khiển dòng vi điều khiển ARM sử dụng Kit STM32F4 với tốc độ xử lí cao Mục tiêu đề tài “Thiết kế thi cơng mơ hình lắc ngược quay” ứng dụng kit STM32 việc tạo điều khiển ứng dụng vào việc điều khiển hệ lắc ngược quay Thiết kế, lắp rắp mơ hình lắc ngược, Trong q trình thực sinh viên hiểu động cơ, vi xử lý điều khiển thông số điều khiển Từ ta đánh giá điều khiển với hệ lắc ngược quay Giai đoạn cuối dự án tiến hành chạy thử nghiệm quan sát trình cân bằng hệ lắc ngược quay tới ổn định vị trí cân bằng Quan sát liệu thu thập Các thông số điều khiển chọn dựa thực nghiệm đưa kết đáp ứng yêu cầu ổn định hệ hệ thống Tuy nhiên, mơ hình cịn số hạn chế như: rung động trình cân bằng, mơ hình chưa thực có ổn định cao vi ABTRACT “Design and control rotary inverted pendulum system” Nowaday our country has entered a period of industrialization and modernization, so that we need to focus on the stability of the responsiveness of the controllers Rotary inverted pendulum is a nonlinear system and a popular model in testing the automatic system control We can find this system in many real life’s applications Design and control rotary inverted pendulum system in stable and balance…Speciall, Model is high-speed control with ARM’s microcontrollers by using STM32F407 Kit The main objective of the project named “ ” is the application of STM32 to create an application controller to control the reverse pendulum Designing, assembling the pendulum inverted model, During the course students will understand the engine, the microprocessor controller and the parameters of the controller From there we can evaluate the controller with the reverse pendulum pendulum The final stage of the project to run to observe the balance of the pendulum's backward motion until it stabilizes at the equilibrium position Observe the data collected Parameters of the controller selected based on the experimental results are satisfactorily required to stabilize the system However, the model has some limitations such as vibration in the balance process, the model does not really have high stability vii MỤC LỤC NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP i PHIẾU NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN iii PHIẾU NHẬN XÉT CỦA GIÁO VIÊN PHẢN BIỆN iv LỜI CÁM ƠN .v TÓM TẮT vi ABTRACT vii MỤC LỤC viii DANH MỤC HÌNH ẢNH x DANH MỤC TỪ VIẾT TẮT xii Chương 1: TỔNG QUAN 1.1 Đặt vấn đề 1.2 Khả ứng dụng 1.3 Tình hình nghiên cứu hệ lắc ngược 1.3.1 Trong nước 1.3.2 Ngoài nước 1.4 Lý chọn đề tài 1.5 Mục tiêu nghiên cứu 1.6 Đối tượng phạm vi nghiên cứu Chương 2: CƠ SỞ LÝ THUYẾT 2.1 Đặc tính động lực học hệ lắc ngược quay .6 2.1.1 Phân tích đặc tính động lực học hệ thống, xây dựng phương trình trạng thái tuyến tính hệ thống 2.1.2 Các thông số hệ thống .7 2.2 Phương pháp điều khiển PID .8 2.3 Nguyên lý hoạt động encoder 13 Chương 3: THIẾT KẾ MÔ HÌNH 15 viii #endif /** * @} */ /** * @} */ /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ Chương trình truyền nhận liệu file “usbd_cdc_if.c” /** ******************************************************************* *********** * @file * @brief : usbd_cdc_if.c : ******************************************************************* *********** * * Copyright (c) 2017 STMicroelectronics International N.V * All rights reserved * 64 * Redistribution and use in source and binary forms, with or without * modification, are permitted, provided that the following conditions are met: * * Redistribution of source code must retain the above copyright notice, * this list of conditions and the following disclaimer * Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution * Neither the name of STMicroelectronics nor the names of other * contributors to this software may be used to endorse or promote products * derived from this software without specific written permission * This software, including modifications and/or derivative works of this * software, must execute solely and exclusively on microcontroller or * microprocessor devices manufactured by or for STMicroelectronics * Redistribution and use of this software other than as permitted under * this license is void and will automatically terminate your rights under * this license * * THIS SOFTWARE IS PROVIDED BY STMICROELECTRONICS AND CONTRIBUTORS "AS IS" * AND ANY EXPRESS, IMPLIED OR STATUTORY WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A * PARTICULAR PURPOSE AND NON-INFRINGEMENT OF THIRD PARTY INTELLECTUAL PROPERTY * RIGHTS ARE DISCLAIMED TO THE FULLEST EXTENT PERMITTED BY LAW IN NO EVENT 65 * SHALL STMICROELECTRONICS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE * ******************************************************************* *********** */ /* Includes */ #include "usbd_cdc_if.h" extern uint8_t receive_data[64]; uint8_t _index=0; /** @addtogroup STM32_USB_OTG_DEVICE_LIBRARY * @{ */ /** @defgroup USBD_CDC 66 * @brief usbd core module * @{ */ /** @defgroup USBD_CDC_Private_TypesDefinitions * @{ */ /* USER CODE BEGIN PRIVATE_TYPES */ /* USER CODE END PRIVATE_TYPES */ /** * @} */ /** @defgroup USBD_CDC_Private_Defines * @{ */ /* USER CODE BEGIN PRIVATE_DEFINES */ /* Define size for the receive and transmit buffer over CDC */ /* It's up to user to redefine and/or remove those define */ #define APP_RX_DATA_SIZE 64 #define APP_TX_DATA_SIZE 64 /* USER CODE END PRIVATE_DEFINES */ /** * @} */ /** @defgroup USBD_CDC_Private_Macros 67 * @{ */ /* USER CODE BEGIN PRIVATE_MACRO */ /* USER CODE END PRIVATE_MACRO */ /** * @} */ /** @defgroup USBD_CDC_Private_Variables * @{ */ /* Create buffer for reception and transmission */ /* It's up to user to redefine and/or remove those define */ /* Received Data over USB are stored in this buffer */ uint8_t UserRxBufferFS[APP_RX_DATA_SIZE]; /* Send Data over USB CDC are stored in this buffer */ uint8_t UserTxBufferFS[APP_TX_DATA_SIZE]; /* USER CODE BEGIN PRIVATE_VARIABLES */ /* USER CODE END PRIVATE_VARIABLES */ /** * @} */ 68 /** @defgroup USBD_CDC_IF_Exported_Variables * @{ */ extern USBD_HandleTypeDef hUsbDeviceFS; /* USER CODE BEGIN EXPORTED_VARIABLES */ /* USER CODE END EXPORTED_VARIABLES */ /** * @} */ /** @defgroup USBD_CDC_Private_FunctionPrototypes * @{ */ static int8_t CDC_Init_FS (void); static int8_t CDC_DeInit_FS (void); static int8_t CDC_Control_FS (uint8_t cmd, uint8_t* pbuf, uint16_t length); static int8_t CDC_Receive_FS (uint8_t* pbuf, uint32_t *Len); /* USER CODE BEGIN PRIVATE_FUNCTIONS_DECLARATION */ /* USER CODE END PRIVATE_FUNCTIONS_DECLARATION */ /** * @} */ USBD_CDC_ItfTypeDef USBD_Interface_fops_FS = 69 { CDC_Init_FS, CDC_DeInit_FS, CDC_Control_FS, CDC_Receive_FS }; /* Private functions -*/ /** * @brief CDC_Init_FS * Initializes the CDC media low layer over the FS USB IP * @param None * @retval Result of the operation: USBD_OK if all operations are OK else USBD_FAIL */ static int8_t CDC_Init_FS(void) { /* USER CODE BEGIN */ /* Set Application Buffers */ USBD_CDC_SetTxBuffer(&hUsbDeviceFS, UserTxBufferFS, 0); USBD_CDC_SetRxBuffer(&hUsbDeviceFS, UserRxBufferFS); return (USBD_OK); /* USER CODE END */ } /** * @brief CDC_DeInit_FS * DeInitializes the CDC media low layer 70 * @param None * @retval Result of the operation: USBD_OK if all operations are OK else USBD_FAIL */ static int8_t CDC_DeInit_FS(void) { /* USER CODE BEGIN */ return (USBD_OK); /* USER CODE END */ } /** * @brief CDC_Control_FS * Manage the CDC class requests * @param cmd: Command code * @param pbuf: Buffer containing command data (request parameters) * @param length: Number of data to be sent (in bytes) * @retval Result of the operation: USBD_OK if all operations are OK else USBD_FAIL */ static int8_t CDC_Control_FS (uint8_t cmd, uint8_t* pbuf, uint16_t length) { /* USER CODE BEGIN */ switch (cmd) { case CDC_SEND_ENCAPSULATED_COMMAND: break; 71 case CDC_GET_ENCAPSULATED_RESPONSE: break; case CDC_SET_COMM_FEATURE: break; case CDC_GET_COMM_FEATURE: break; case CDC_CLEAR_COMM_FEATURE: break; /******************************************************************* ************/ /* Line Coding Structure */ /* -*/ /* Offset | Field | Size | Value | Description */ /* | dwDTERate | | Number |Data terminal rate, in bits per second*/ /* | bCharFormat | | Number | Stop bits */ /* - Stop bit */ /* - 1.5 Stop bits */ /* - Stop bits */ 72 /* | bParityType | | Number | Parity */ /* - None */ /* - Odd */ /* - Even */ /* - Mark */ /* - Space */ /* | bDataBits | | Number Data bits (5, 6, 7, or 16) */ /******************************************************************* ************/ case CDC_SET_LINE_CODING: break; case CDC_GET_LINE_CODING: break; case CDC_SET_CONTROL_LINE_STATE: break; case CDC_SEND_BREAK: break; default: break; 73 } return (USBD_OK); /* USER CODE END */ } /** * @brief CDC_Receive_FS * Data received over USB OUT endpoint are sent over CDC interface * through this function * * @note * This function will block any OUT packet reception on USB endpoint * untill exiting this function If you exit this function before transfer * is complete on CDC interface (ie using DMA controller) it will result * in receiving more data while previous ones are still not sent * * @param Buf: Buffer of data to be received * @param Len: Number of data received (in bytes) * @retval Result of the operation: USBD_OK if all operations are OK else USBD_FAIL */ static int8_t CDC_Receive_FS (uint8_t* Buf, uint32_t *Len) { /* USER CODE BEGIN */ receive_data[_index]=Buf[0]; if(++_index==64) { 74 _index=0; } USBD_CDC_SetRxBuffer(&hUsbDeviceFS, &Buf[0]); USBD_CDC_ReceivePacket(&hUsbDeviceFS); return (USBD_OK); /* USER CODE END */ } /** * @brief CDC_Transmit_FS * Data send over USB IN endpoint are sent over CDC interface * through this function * @note * * * @param Buf: Buffer of data to be send * @param Len: Number of data to be send (in bytes) * @retval Result of the operation: USBD_OK if all operations are OK else USBD_FAIL or USBD_BUSY */ uint8_t CDC_Transmit_FS(uint8_t* Buf, uint16_t Len) { uint8_t result = USBD_OK; /* USER CODE BEGIN */ memcpy(UserTxBufferFS,Buf,sizeof(uint8_t)*Len); 75 USBD_CDC_HandleTypeDef *hcdc (USBD_CDC_HandleTypeDef*)hUsbDeviceFS.pClassData; = if (hcdc->TxState != 0){ return USBD_BUSY; } USBD_CDC_SetTxBuffer(&hUsbDeviceFS, Buf, Len); result = USBD_CDC_TransmitPacket(&hUsbDeviceFS); /* USER CODE END */ return result; } /* USER CODE BEGIN PRIVATE_FUNCTIONS_IMPLEMENTATION */ /* USER CODE END PRIVATE_FUNCTIONS_IMPLEMENTATION */ /** * @} */ /** * @} */ /************************ *****END OF FILE****/ (C) COPYRIGHT STMicroelectronics Hàm vẽ đồ thị Matlab: plot(F(:,1),'LineWidth',2); hold on; x=linspace(178.2,178.2,14000); 76 plot(x); hold on; y=linspace(181.8,181.8,14000); plot(y); hold on; z=linspace(180,180,14500); plot(z); grid on; Góc cánh tay: plot(F(:,2),'LineWidth',2); hold on; x=linspace(174.6,174.6,14000); plot(x); hold on; z=linspace(185.4,185.4,14500); plot(z); hold on; y=linspace(180,180,14000); plot(y); grid on; Với F ma trận liệu lấy từ Hyper Terminal Dữ liệu vi xử lý STM32 gửi lên thông qua cổng Com máy tính 77 S K L 0