bộ điều khiển tốc độ động cơ

74 101 0
bộ điều khiển tốc độ động cơ

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP HỒ CHÍ MINH KHOA CƠNG NGHỆ THÔNG TIN –––––––––––– ĐỒ ÁN MÔN HỌC HỆ THỐNG NHÚNG Đề tài: BỘ ĐIỀU KHIỂN TỐC ĐỘ ĐỘNG CƠ GVHD: ThS ĐINH CÔNG ĐOAN NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN TP HCM, Tháng 05 năm 2019 GIÁO VIÊN HƯỚNG DẪN (Ký ghi rõ họ tên) ThS ĐINH CÔNG ĐOAN MỤC LỤC PHẦN MỞ ĐẦU 1.1 Tóm tắt 1.2 Đặt vấn đề .1 1.2.1 Tóm lược nghiên cứu ngồi nước liên quan đền đề tài 1.2.2 Tính cấp thiết cần nghiên cứu đề tài .1 1.2.3 Một số tài liệu liên quan .2 1.2.4 Mục tiêu đề tài 1.2.5 Đối tượng phạm vi nghiên cứu 1.2.6 Phương pháp nghiên cứu 1.2.7 Nội dung đề tài .2 CHƯƠNG 1: GIỚI THIỆU VỀ ARM CORTEX M3 STM32F103 1.1 Giới thiệu ARM Cortex M3 STM32F103 .4 1.1.1 1.2 Một vài đặc điểm bật STM32 Vi điều khiển STM32F103 1.2.1 Tổng quan .10 1.2.2 Thông số vi điều khiển 11 CHƯƠNG 2: CẤU TRÚC CHUNG CỦA KIT 12 2.1 Giới thiệu chung 12 2.2 Một số hình ảnh kit 13 CHƯƠNG 3: NHỮNG KIẾN THỨC LIÊN QUAN 14 3.1 Động điện chiều 14 3.1.1 Khái niệm động điện chiều 14 3.1.2 Nguyên tắc hoạt động 16 3.1.3 Cơ chế sinh lực quay động điện chiều .17 3.1.4 Điều khiển tốc độ 17 3.2 Các module hổ trợ cho dự án .20 3.2.1 Mạch điều khiển động DC L9110 20 3.2.2 Mạch chuyển mức tín hiệu kênh giao tiếp IIC UART SPI TTL 21 3.2.3 Module I2C PCF8574 với LCD 1602A .22 CHƯƠNG 4: ỨNG DỤNG 25 4.1 Các bước cấu hình cho chương trình 25 4.2 Các bước cấu hình chân yêu tố cần thiết với CubeMx 25 4.3 Lập trình với Keil C 32 4.4 Nạp code cho kit STM32F103C8T6 49 4.5 Demo dự án 52 KẾT LUẬN 52 TÀI LIỆU THAM KHẢO .53 DANH MỤC CÁC HÌ Hình 1.1 Kiến trúc vi xử lý ARM Cortex M3 Hình 1.2 Kiến trúc STM32 nhánh Performance Access Hình 1.3 Đặc điểm bốn nhánh họ STM32 Hình 1.4 Các phiên kiến trúc lõi ARM Hình 1.5 Hình ảnh vi điều khiển STM32F103C8T6 Hình 1.6 Sơ đồ chân vi điều khiển STM32F103C8T6 10Y Hình 2.1 Hình ảnh thực tế kit STM32F103C8T6 13 Hình 2.2 Sơ đồ chân kit STM32F103C8T6 Hình 3.1 Hình ảnh động giảm tốc V1 trục kim loại .14 Hình 3.2 Nguyên lý hoạt động động điện chiều 16 Hình 3.3 Cơ chế động điện chiều 17 Hình 3.4 Module L9110 .20 Hình 3.5 Sơ đồ chân hoạt động L9110 21 Hình 3.6 Module chuyển tín hiệu kênh 21 Hình 3.7 LCD 1602A 22 Hình 3.8 Sơ đồ kết nối PCF8574 LCD 1602 Hình 4.1 Tạo project với CubeMx .25 Hình 4.2 Lựa chọn chip CubeMx .26 Hình 4.3 Màn hình hoạt động CubeMx .26 Hình 4.4 TIM2 mode and configuration 27 Hình 4.5 TIM3 mode 28 Hình 4.6 Các chân kích hoạt CubeMx .29 Hình 4.7 Điều chỉnh xung nhịp cho vi điều khiển 29 Hình 4.8 Configuration chế độ chân 30 Hình 4.9 Cấu hình cho Timer 31 Hình 4.10 Điều chỉnh chân GPIO 32 Hình 4.11 Mạch nạp ST-Link V2 .50 Hình 4.12 Thực dự án 50 DANH MỤC CÁC BẢNG Bảng Thông số vi điều khiển STM32F103C8T6 .11 Bảng Bảng kết nối chân PCF8574 STM32F103 .23 PHẦN MỞ ĐẦU 1.1 Tóm tắt Xuất từ năm đầu thập niên 1960, hệ thống nhúng dần trở thành ngành phát triển mạnh mẽ lĩnh vực công nghệ thông tin (CNTT), với ứng dụng rộng rãi công nghiệp đời sống Từ hệ thống phức tạp hàng không vũ trụ, phịng thủ qn sự, máy móc tự động cơng nghiệp, đến phương tiện di chuyển thông thường máy bay, xe điện, xe hơi, trang thiết bị y tế bệnh viện, thiết bị truyền hình điện thoại di động sử dụng ngày, có diện hệ thống nhúng Ngày với phát triển đó, ứng dụng hệ thống nhúng vào việc điều khiển hệ thống phức tạp, vận hành dây chuyền, … với xác, làm việc độc lập đạt hiệu ổn định Bộ điều khiển động cung cấp loạt tính điều khiển động motor chiều Sử dụng nguồn ngồi hệ thống xử lý có nhân ARM Cortex M3 Với điều khiển này, việc ứng dụng vào loại hệ thống tự động hóa, khí, lắp ghép giúp tối ưu hóa mặt hiệu thời gian 1.2 Đặt vấn đề 1.2.1 Tóm lược nghiên cứu ngồi nước liên quan đền đề tài - Speed Control of DC Motor https://www.instructables.com/id/Speed-Control-of-DC-Motor-Using-PIDAlgorithm-STM3/ - ARM CORTEX (STM32) BASED MOTOR SPEED CONTROL https://www.academia.edu/27902924/ARM_CORTEX_STM32_BASED_MO TOR_SPEED_CONTROL_SUBMITTED_BY_EDGEFX_TEAM Qua viết phát triển trên, ta nhận thấy mức độ cần thiết điều khiển động hệ thống nhúng, họ điều khiển dựa 1.2.2 Tính cấp thiết cần nghiên cứu đề tài Hiểu rõ chuẩn giao tiếp, điều khiển tín hiệu vi xử lý ARM kit, giúp nhiều việc tương tác điều khiển hệ thống nhúng bên ngồi khác, giúp thực cơng việc cần xử lý theo thành phần Mở rộng điều khiển, tương tác với nhiều kit khác 1.2.3 Một số tài liệu liên quan https://www.st.com/resource/en/datasheet/cd00161566.pdf http://arduino.vn/bai-viet/209-dieu-khien-toc-do-motor-dc 1.2.4 Mục tiêu đề tài Nắm vững cách thức hoạt động chuẩn giao tiếp kit, từ thực xây dựng demo đơn giản điều khiển động motor 1.2.5 Đối tượng phạm vi nghiên cứu - Đối tượng nguyên cứu: đề tài thực kit STM32F103C8T6, với nhân xử lý ARM Cortex M3 - Phạm vi nghiên cứu: đề tập trung nghiên cứu cách hoạt động, xử lý chân tín hiệu kit từ thực việc điều khiển động motor 1.2.6 Phương pháp nghiên cứu Để phục vụ cho q trình nghiên cứu đề tài, cần phải có phương pháp nghiên cứu cách phù hợp, cụ thể nhằm đạt kết tốt nhất, phục vụ cho yêu cầu nghiên cứu Các trình nghiên cứu chủ yếu sử dụng: - Phương pháp phân tích tài liệu: Trên sở tài liệu tổng hợp được, nhóm vận dụng lý thuyết học, sau thiết lập phản ánh phân tích tài liệu để nghiên cứu tìm hiểu cách thức hoạt động loại giao tiếp 1.2.7 Nội dung đề tài Ngoài phần mở đầu, kết luận, danh mục tài liệu tham khảo, nội dung đề cấu thành từ phần nội dung gồm chương sau: Chương 1: Giới thiệu vi xử lý Chương 2: Cấu trúc chung kit Chương 3: Những kiến thức liên quan Chương 4: Ứng dụng Tổng kết { Error_Handler(); } if (HAL_TIM_PWM_Init(&htim2) != HAL_OK) { Error_Handler(); } sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; if (HAL_TIMEx_MasterConfigSynchronization(&htim2, &sMasterConfig) != HAL_OK) { Error_Handler(); } sConfigOC.OCMode = TIM_OCMODE_PWM1; sConfigOC.Pulse = 0; sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH; sConfigOC.OCFastMode = TIM_OCFAST_DISABLE; if (HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_1) ! = HAL_OK) 53 { Error_Handler(); } /* USER CODE BEGIN TIM2_Init */ /* USER CODE END TIM2_Init */ HAL_TIM_MspPostInit(&htim2); } /** * @brief TIM3 Initialization Function * @param None * @retval None */ static void MX_TIM3_Init(void) { /* USER CODE BEGIN TIM3_Init */ 54 /* USER CODE END TIM3_Init */ TIM_ClockConfigTypeDef sClockSourceConfig = {0}; TIM_MasterConfigTypeDef sMasterConfig = {0}; TIM_OC_InitTypeDef sConfigOC = {0}; /* USER CODE BEGIN TIM3_Init */ /* USER CODE END TIM3_Init */ htim3.Instance = TIM3; htim3.Init.Prescaler = 24; htim3.Init.CounterMode = TIM_COUNTERMODE_UP; htim3.Init.Period = 200; htim3.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; htim3.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; if (HAL_TIM_Base_Init(&htim3) != HAL_OK) { Error_Handler(); } sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; 55 if (HAL_TIM_ConfigClockSource(&htim3, &sClockSourceConfig) != HAL_OK) { Error_Handler(); } if (HAL_TIM_PWM_Init(&htim3) != HAL_OK) { Error_Handler(); } sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; if (HAL_TIMEx_MasterConfigSynchronization(&htim3, &sMasterConfig) != HAL_OK) { Error_Handler(); } sConfigOC.OCMode = TIM_OCMODE_PWM1; sConfigOC.Pulse = 0; sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH; sConfigOC.OCFastMode = TIM_OCFAST_DISABLE; 56 if (HAL_TIM_PWM_ConfigChannel(&htim3, &sConfigOC, TIM_CHANNEL_3) ! = HAL_OK) { Error_Handler(); } /* USER CODE BEGIN TIM3_Init */ /* USER CODE END TIM3_Init */ HAL_TIM_MspPostInit(&htim3); } /** * @brief GPIO Initialization Function * @param None * @retval None */ static void MX_GPIO_Init(void) { GPIO_InitTypeDef GPIO_InitStruct = {0}; 57 /* GPIO Ports Clock Enable */ HAL_RCC_GPIOA_CLK_ENABLE(); HAL_RCC_GPIOB_CLK_ENABLE(); /*Configure GPIO pin Output Level */ HAL_GPIO_WritePin(GPIOA, GPIO_PIN_1, GPIO_PIN_RESET); /*Configure GPIO pin : PA1 */ GPIO_InitStruct.Pin = GPIO_PIN_1; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); /*Configure GPIO pins : PA3 PA4 PA5 PA6 PA7 */ GPIO_InitStruct.Pin = GPIO_PIN_3|GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_6 |GPIO_PIN_7|GPIO_PIN_8; GPIO_InitStruct.Mode = GPIO_MODE_INPUT; 58 GPIO_InitStruct.Pull = GPIO_PULLUP; HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); } /* USER CODE BEGIN */ void LCD_Write(int LCDLine, char LCDString[16]) { //lcd_clear_display(); lcd_goto_XY(LCDLine,0); lcd_send_string(" "); HAL_Delay(5); lcd_goto_XY(LCDLine,0); lcd_send_string(LCDString); HAL_Delay(50); } void chayMotor(int state1, bool state2) { if(state2==false){ HAL_TIM_SET_COMPARE(&htim3,TIM_CHANNEL_3,state1); 59 HAL_TIM_SET_COMPARE(&htim2,TIM_CHANNEL_1,0); } else{ HAL_TIM_SET_COMPARE(&htim3,TIM_CHANNEL_3,0); HAL_TIM_SET_COMPARE(&htim2,TIM_CHANNEL_1,state1); } } /* USER CODE END */ /** * @brief This function is executed in case of error occurrence * @retval None */ void Error_Handler(void) { /* USER CODE BEGIN Error_Handler_Debug */ /* User can add his own implementation to report the HAL error return state */ /* USER CODE END Error_Handler_Debug */ } 60 #ifdef USE_FULL_ASSERT /** * @brief Reports the name of the source file and the source line number * where the assert_param error has occurred * @param file: pointer to the source file name * @param line: assert_param error line source number * @retval None */ void assert_failed(uint8_t *file, uint32_t line) { /* USER CODE BEGIN */ /* User can add his own implementation to report the file name and line number, tex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */ /* USER CODE END */ } #endif /* USE_FULL_ASSERT */ /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ 61 Ý nghĩa function: - HAL_GPIO_ReadPin: đọc chân nhận vào - chayMotor: điều khiển motor - LCD_Write: viết chữ LCD 4.4 Nạp code cho kit STM32F103C8T6 Ta sử dụng mạch nạp ST Link V2, sử dụng chuẩn giao tiếp SWD với kit, tương ứng chân SWCLK, SWDIO, GND, 3.3V Hình 4.11 Mạch nạp ST-Link V2 62 Hình 4.12 Thực dự án Như chỉnh chân với CubeMX, chân nút nhấn ta cắm tương ứng vào bảng mạch Về nguồn, dự án có sử dụng mạch giảm áp xuống 3.3V để cấp nguồn cho kit Build Project Keil C load vào Kit 63 4.5 Demo dự án VIDEO KẾT LUẬN  Kết đạt được: Do kiến thức hiểu biết thiếu kinh phí đầu tư cho đề tài hạn chế nên đề tài nhiều thiếu sót, tổng quan nhóm đạt kết sau: - Tìm hiểu kiến thức cách thức hoạt động, cách sử dụng vi điều khiển ARM Cortex M3 STM32F103 - Các kiến thức LCD, PWM - Cách xuất tín hiệu PWM, đọc liệu LCD - Nâng cao kỹ lập trình ARM - Nâng cao kiến thức, kỹ thực hành điện – điện tử  Đánh giá ưu nhược điểm Ưu điểm: - Thực việc điều chỉnh tốc độ, hướng quay động - Mạch xử lý tối ưu, gọn, không rườm rà, thuận tiện cho việc nâng cấp lên dự án khác Khuyết điểm: - Việc đếm ngược thời gian xử lý code xung vi điều khiển, nên xác hồn tồn so với thời gian thực  Hướng phát triển đề tài tương lai 64 Có thể nâng cấp lên điều khiển động khác cách điều chỉnh nguồn thay đổi động phù hợp Thêm mạch đếm thời gian bên ngồi từ nhận liệu để tạo thời gian đếm ngược xác 65 TÀI LIỆU THAM KHẢO Wikipedia – Động điện chiều https://vi.wikipedia.org/wiki/%C4%90%E1%BB%99ng_c%C6%A1_%C4%91i %E1%BB%87n_m%E1%BB%99t_chi%E1%BB%81u Điều khiển động điện chiều http://qqtrading.com.my/dual-channel-motor-driver-module-hg7881 Module điều khiển động L9110 Datasheet https://www.elecrow.com/download/datasheet-l9110.pdf Động điện chiều http://www.motor2hand.com/tin-tuc/so-luoc-ve-dong-co-dc-khai-niem-phan-loaidieu-khien-toc-do-new21251.html PWM STMF407 https://www.youtube.com/watch?v=DStPvC60RLE Giao tiếp STM32F103C8T6 với LCD 16×2 thơng qua module I2C https://tapit.vn/giao-tiep-stm32f103c8t6-voi-lcd-16x2-thong-qua-module-i2c/ 16×2 LCD Display with I2C | PCF8574 Library https://www.factoryforward.com/16x2-lcd-display-i2c-pcf8574-library/ Link full đồ án: 66 https://drive.google.com/file/d/1Icz1IW6-MqifQSzdwtECpqjYIJpiRRgW/view? usp=sharing 67 ... 3.3 Cơ chế động điện chiều 20 3.1.4 Điều khiển tốc độ Thông thường, tốc độ quay động điện chiều tỷ lệ với điện áp đặt vào nó, ngẫu lực quay tỷ lệ với dịng điện Điều khiển tốc độ động cách điều khiển. .. 3.2.1 Mạch điều khiển động DC L9110 Hình 3.4 Module L9110 23 Mạch điều khiển động DC L9110 mạch điều khiển động dùng để điều cho robot có kích thước nhỏ gọn module L9910 nhỏ điều khiển động đọc... lập module tải 800mA cho động Mạch L9110 sử dụng nguồn từ 2.5V đến 12V điều khiển vi điều khiển với mức nguồn 3.3V 5V điều khiển tốc độ động qua điều khiển xung PWM, điều khiển chiều quay qua chân

Ngày đăng: 03/08/2020, 23:51

Mục lục

    1.2.1. Tóm lược những nghiên cứu trong và ngoài nước liên quan đền đề tài

    1.2.2. Tính cấp thiết cần nghiên cứu của đề tài

    1.2.3. Một số tài liệu liên quan

    1.2.4. Mục tiêu đề tài

    1.2.5. Đối tượng và phạm vi nghiên cứu

    1.2.6. Phương pháp nghiên cứu

    1.2.7. Nội dung đề tài

    CHƯƠNG 1: GIỚI THIỆU VỀ ARM CORTEX M3 STM32F103

    1.1. Giới thiệu về ARM Cortex M3 STM32F103

    1.1.1. Một vài đặc điểm nổi bật của STM32

Tài liệu cùng người dùng

Tài liệu liên quan