Luận văn Thạc sĩ Kỹ thuật điện: Nghiên cứu về nghịch lưu 5 bậc laiLuận văn Thạc sĩ Kỹ thuật điện: Nghiên cứu về nghịch lưu 5 bậc laiLuận văn Thạc sĩ Kỹ thuật điện: Nghiên cứu về nghịch lưu 5 bậc laiLuận văn Thạc sĩ Kỹ thuật điện: Nghiên cứu về nghịch lưu 5 bậc laiLuận văn Thạc sĩ Kỹ thuật điện: Nghiên cứu về nghịch lưu 5 bậc laiLuận văn Thạc sĩ Kỹ thuật điện: Nghiên cứu về nghịch lưu 5 bậc laiLuận văn Thạc sĩ Kỹ thuật điện: Nghiên cứu về nghịch lưu 5 bậc laiLuận văn Thạc sĩ Kỹ thuật điện: Nghiên cứu về nghịch lưu 5 bậc laiLuận văn Thạc sĩ Kỹ thuật điện: Nghiên cứu về nghịch lưu 5 bậc laiLuận văn Thạc sĩ Kỹ thuật điện: Nghiên cứu về nghịch lưu 5 bậc laiLuận văn Thạc sĩ Kỹ thuật điện: Nghiên cứu về nghịch lưu 5 bậc laiLuận văn Thạc sĩ Kỹ thuật điện: Nghiên cứu về nghịch lưu 5 bậc lai
BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC CÔNG NGHỆ TP HCM - ĐỖ MINH TUẤN NGHIÊN CỨU NGHỊCH LƯU BẬC LAI LUẬN VĂN THẠC SĨ Chuyên ngành : Kỹ thuật điện Mã số ngành: 60520202 TP HỒ CHÍ MINH, tháng 07 năm 2016 BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC CÔNG NGHỆ TP HCM - ĐỖ MINH TUẤN NGHIÊN CỨU NGHỊCH LƯU BẬC LAI LUẬN VĂN THẠC SĨ Chuyên ngành : Kỹ thuật điện Mã số ngành: 60520202 CÁN BỘ HƯỚNG DẪN KHOA HỌC: PGS.TS NGUYỄN THANH PHƯƠNG TP HỒ CHÍ MINH, tháng 07 năm 2016 CƠNG TRÌNH ĐƯỢC HỒN THÀNH TẠI TRƯỜNG ĐẠI HỌC CƠNG NGHỆ TP HCM Cán hướng dẫn khoa học : PGS.TS Nguyễn Thanh Phương Luận văn Thạc sĩ bảo vệ Trường Đại học Công nghệ TP HCM ngày 25 tháng 09 năm 2016 Thành phần Hội đồng đánh giá Luận văn Thạc sĩ gồm: (Ghi rõ họ, tên, học hàm, học vị Hội đồng chấm bảo vệ Luận văn Thạc sĩ) TT Họ tên Chức danh Hội đồng T Hu nh Ch u Duy Chủ tịch PG T Trư ng Việt nh Phản biện T V Hoàng Duy Phản biện T Trần Vinh Tịnh Ủy viên T Đ ng u n Kiên Ủy viên, Thư ký ác nhận Chủ tịch Hội đồng đánh giá Luận sau Luận văn sửa chữa (nếu có) Chủ tịch Hội đồng đánh giá LV TRƯỜNG ĐH CƠNG NGHỆ TP HCM PHỊNG QLKH – ĐTSĐH CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM Độc lập – Tự – Hạnh phúc TP HCM, ngày 30 tháng 07 năm 2016 NHIỆM VỤ LUẬN VĂN THẠC SĨ Họ tên học viên: Đỗ Minh Tuấn Giới tính: Nam Ngày, tháng, năm sinh: 20/11/1986 N i sinh: Thanh Hóa Chuyên ngành: Kỹ thuật Điện MSHV: 1441830029 I- Tên đề tài: NGHIÊN CỨU NGHỊCH LƯU BẬC LAI II- Nhiệm vụ nội dung: Nghiên cứu biến tần đa bậc, phư ng pháp điều khiển nghịch lưu đa bậc y dựng mơ hình thực nghiệm nghịch lưu bậc lai Mô nghịch lưu bậc lai Matlab Lập trình giải thuật xuống mơ hình nghịch lưu bậc lai III- Ngày giao nhiệm vụ: 23/01/2016 IV- Ngày hoàn thành nhiệm vụ: 30/07/2016 V- Cán hướng dẫn: PGS.TS Nguyễn Thanh Phương CÁN BỘ HƯỚNG DẪN PGS.TS Nguyễn Thanh Phương KHOA QUẢN LÝ CHUYÊN NGÀNH PGS.TS Nguyễn Thanh Phương i LỜI CAM ĐOAN Tôi xin cam đoan đ y cơng trình nghiên cứu riêng Các số liệu, kết nêu Luận văn trung thực chưa công bố bất k cơng trình khác Những số liệu, kết dùng để tham khảo có trích dẫn Tôi xin cam đoan giúp đỡ cho việc thực Luận văn cảm n thơng tin trích dẫn Luận văn r nguồn gốc Học viên thực Luận văn (Ký ghi rõ họ tên) Đỗ Minh Tuấn ii LỜI CẢM ƠN Trong trình học tập trường Đại học Kỹ Thuật Công nghệ Thành phố Hồ Chí Minh q trình nghiên cứu thực đề tài luận văn tốt nghiệp, th n nhận quan t m, giúp đỡ hướng dẫn tận tình Q Thầy Cơ nhà trường in tr n trọng gửi lời tri n đến quý Thầy Cô, cảm n Thầy PGS.TS Nguyễn Thanh Phương tận tình hướng dẫn, định hướng nghiên cứu để tơi hồn thành luận văn tiến độ đạt mục đích, yêu cầu đề tài Cảm n gia đình, bạn bè đồng nghiệp động viên, hỗ trợ suốt thời gian nghiên cứu, thực luận văn Tr n trọng cảm n./ Thành phố Hồ Chí Minh, ngày 30 tháng 07 năm 2016 Người thực luận văn Đỗ Minh Tuấn iii TÓM TẮT I Mục đích nghiên cứu đối tượng nghiên cứu: Nhằm đáp ứng cầu ngày cao việc biến đổi lượng tái tạo lượng m t trời, lượng gió điều khiển động c , nghịch lưu đa bậc xem giải pháp hiệu quả, với nhiều ưu điểm độ méo dạng thấp, điện áp làm việc linh kiện đóng ngắt thấp h n Do vậy, nghiên cứu nghịch lưu đa bậc lĩnh vực thu hút Đề tài nghiên cứu nghịch lưu bậc lai, kỹ thuật điều chế độ rộng xung sóng mang cho nghịch lưu II Nhiệm vụ nghiên cứu giới hạn đề tài: Nhiệm vụ nghiên cứu: - Nghiên cứu nghịch lưu bậc lai - Nghiên cứu giải thuật điều chế độ rộng xung sóng mang cho nghịch lưu bậc lai - Kiểm chứng giải thuật điều chế phần mềm Matlab/ imulink - y dựng mơ hình thực nghiệm - Viết chư ng trình điều khiển chạy thực nghiệm phần cứng với tải R Giới hạn đề tài: - Do thời gian có hạn đề tài giới hạn việc nghiên cứu nghịch lưu bậc lai giải thuật điều chế độ rộng xung sóng mang - Nhưng mở rộng xa h n thực tư ng lai như: điều khiển động c với nghịch lưu đa bậc lai, nghiên cứu giải thuật điều chế vector không gian cho nghịch lưu đa bậc lai - iv ABSTRACT I The purpose of research and research subject: To adapt the increasing requirement of converting the renewable energy such as solar panel, wind power, and controlling the motors; multilevel inverters are considered as an effective solution with advantages such as low distortion (%THD), lower rating voltage of the switching devices According to these reasons, study on multilevel inverter is an attractive field The topic " Research on hybrid 5-level inverter" focus on the operation of multilevel inverter and carrier-based PWM for this inverter topology II Research tasks and Scope of research Research tasks: - Study on hybrid 5-level inverter topology - Study on carrier-based PWM for this hybrid 5-level inverter topology - Verify the analysis on Matlab/Simulink software - Program and run the experimental hardware with R-load Scope of research: - Due to the limited time, the topic only focus on studying on hybird 5-level inverter and carrier-based PWM - In the future, we can futher tasks such as: motor control, study on the space vector PWM for hybrid 5-level inverter topology - { La=0; Sigma_a=va; } //Phase b if (vb>=3000) { Lb=3000; Sigma_b=vb-3000; } else if ((vb=2000)) { Lb=2000; Sigma_b=vb-2000; } else if ((vb=1000)) { Lb=1000; Sigma_b=vb-1000; } else { Lb=0; Sigma_b=vb; } //Phase c if (vc>=3000) { Lc=3000; Sigma_c=vc-3000; } else if ((vc=2000)) { Lc=2000; Sigma_c=vc-2000; } else if ((vc=1000)) { Lc=1000; Sigma_c=vc-1000; } else { Lc=0; Sigma_c=vc; } voffset=0; PulseA= 8.399*(Sigma_a+voffset); PulseB= 8.399*(Sigma_b+voffset); PulseC= 8.399*(Sigma_c+voffset); // Choose state of S out by L - // -//Phase c if (Lc==3000) { S5H=L4[0];S5L=L3[0]; S1cH=L4[1];S1cL=L3[1]; S3cH=L4[2];S3cL=L3[2]; } else if (Lc==2000) { S5H=L3[0];S5L=L2u[0]; S1cH=L3[1];S1cL=L2u[1]; S3cH=L3[2];S3cL=L2u[2]; } else if (Lc==1000) { S5H=L2d[0];S5L=L1[0]; S1cH=L2d[1];S1cL=L1[1]; S3cH=L2d[2];S3cL=L1[2]; } else { S5H=L1[0];S5L=L0[0]; S1cH=L1[1];S1cL=L0[1]; S3cH=L1[2];S3cL=L0[2]; } // -//Phase b if (Lb==3000) { S3H=L4[0];S3L=L3[0]; S1bH=L4[1];S1bL=L3[1]; S3bH=L4[2];S3bL=L3[2]; } else if (Lb==2000) { S3H=L3[0];S3L=L2u[0]; S1bH=L3[1];S1bL=L2u[1]; S3bH=L3[2];S3bL=L2u[2]; } else if (Lb==1000) { S3H=L2d[0];S3L=L1[0]; S1bH=L2d[1];S1bL=L1[1]; S3bH=L2d[2];S3bL=L1[2]; } else { S3H=L1[0];S3L=L0[0]; S1bH=L1[1];S1bL=L0[1]; S3bH=L1[2];S3bL=L0[2]; } // //Phase a if (La==3000) { S1H=L4[0];S1L=L3[0]; S1aH=L4[1];S1aL=L3[1]; S3aH=L4[2];S3aL=L3[2]; } else if (La==2000) { S1H=L3[0];S1L=L2u[0]; S1aH=L3[1];S1aL=L2u[1]; S3aH=L3[2];S3aL=L2u[2]; } else if (La==1000) { S1H=L2d[0];S1L=L1[0]; S1aH=L2d[1];S1aL=L1[1]; S3aH=L2d[2];S3aL=L1[2]; } else { S1H=L1[0];S1L=L0[0]; S1aH=L1[1];S1aL=L0[1]; S3aH=L1[2];S3aL=L0[2]; } // - // // */ while(1) { rest_time=1; if(IntT1ufPassed==1) { //break; goto BEGIN; } } //IntT1ufPassed=0; /* USER CODE BEGIN */ } /* USER CODE END */ } /** System Clock Configuration */ void SystemClock_Config(void) { RCC_OscInitTypeDef RCC_OscInitStruct; RCC_ClkInitTypeDef RCC_ClkInitStruct; HAL_RCC_PWR_CLK_ENABLE(); HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1); RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE; RCC_OscInitStruct.HSEState = RCC_HSE_ON; RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE; RCC_OscInitStruct.PLL.PLLM = 4; RCC_OscInitStruct.PLL.PLLN = 168; RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2; RCC_OscInitStruct.PLL.PLLQ = 7; if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) { Error_Handler(); } RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2; RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK; RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV4; RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV2; if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_5) != HAL_OK) { Error_Handler(); } HAL_SYSTICK_Config(HAL_RCC_GetHCLKFreq()/1000); HAL_SYSTICK_CLKSourceConfig(SYSTICK_CLKSOURCE_HCLK); /* SysTick_IRQn interrupt configuration */ HAL_NVIC_SetPriority(SysTick_IRQn, 0, 0); } /** NVIC Configuration */ static void MX_NVIC_Init(void) { /* TIM1_BRK_TIM9_IRQn interrupt configuration */ HAL_NVIC_SetPriority(TIM1_BRK_TIM9_IRQn, 0, 0); HAL_NVIC_EnableIRQ(TIM1_BRK_TIM9_IRQn); /* TIM1_UP_TIM10_IRQn interrupt configuration */ HAL_NVIC_SetPriority(TIM1_UP_TIM10_IRQn, 0, 0); HAL_NVIC_EnableIRQ(TIM1_UP_TIM10_IRQn); /* TIM1_TRG_COM_TIM11_IRQn interrupt configuration */ HAL_NVIC_SetPriority(TIM1_TRG_COM_TIM11_IRQn, 0, 0); HAL_NVIC_EnableIRQ(TIM1_TRG_COM_TIM11_IRQn); /* TIM1_CC_IRQn interrupt configuration */ HAL_NVIC_SetPriority(TIM1_CC_IRQn, 0, 0); HAL_NVIC_EnableIRQ(TIM1_CC_IRQn); } /* TIM1 init function */ static void MX_TIM1_Init(void) { TIM_ClockConfigTypeDef sClockSourceConfig; TIM_MasterConfigTypeDef sMasterConfig; TIM_BreakDeadTimeConfigTypeDef sBreakDeadTimeConfig; TIM_OC_InitTypeDef sConfigOC; htim1.Instance = TIM1; htim1.Init.Prescaler = 0; htim1.Init.CounterMode = TIM_COUNTERMODE_CENTERALIGNED3; htim1.Init.Period = 33599; htim1.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; htim1.Init.RepetitionCounter = 0; if (HAL_TIM_Base_Init(&htim1) != HAL_OK) { Error_Handler(); } sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; if (HAL_TIM_ConfigClockSource(&htim1, &sClockSourceConfig) != HAL_OK) { Error_Handler(); } if (HAL_TIM_OC_Init(&htim1) != HAL_OK) { Error_Handler(); } sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; if (HAL_TIMEx_MasterConfigSynchronization(&htim1, &sMasterConfig) != HAL_OK) { Error_Handler(); } sBreakDeadTimeConfig.OffStateRunMode = TIM_OSSR_DISABLE; sBreakDeadTimeConfig.OffStateIDLEMode = TIM_OSSI_DISABLE; sBreakDeadTimeConfig.LockLevel = TIM_LOCKLEVEL_OFF; sBreakDeadTimeConfig.DeadTime = 0; sBreakDeadTimeConfig.BreakState = TIM_BREAK_DISABLE; sBreakDeadTimeConfig.BreakPolarity = TIM_BREAKPOLARITY_HIGH; sBreakDeadTimeConfig.AutomaticOutput = TIM_AUTOMATICOUTPUT_DISABLE; if (HAL_TIMEx_ConfigBreakDeadTime(&htim1, &sBreakDeadTimeConfig) != HAL_OK) { Error_Handler(); } sConfigOC.OCMode = TIM_OCMODE_TIMING; sConfigOC.Pulse = 0; sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH; sConfigOC.OCNPolarity = TIM_OCNPOLARITY_HIGH; sConfigOC.OCFastMode = TIM_OCFAST_DISABLE; sConfigOC.OCIdleState = TIM_OCIDLESTATE_RESET; sConfigOC.OCNIdleState = TIM_OCNIDLESTATE_RESET; if (HAL_TIM_OC_ConfigChannel(&htim1, &sConfigOC, TIM_CHANNEL_1) != HAL_OK) { Error_Handler(); } if (HAL_TIM_OC_ConfigChannel(&htim1, &sConfigOC, TIM_CHANNEL_2) != HAL_OK) { Error_Handler(); } if (HAL_TIM_OC_ConfigChannel(&htim1, &sConfigOC, TIM_CHANNEL_3) != HAL_OK) { Error_Handler(); } } /** Configure pins as * Analog * Input * Output * EVENT_OUT * EXTI PC3 > I2S2_SD PA4 > I2S3_WS PA5 > SPI1_SCK PA6 > SPI1_MISO PA7 > SPI1_MOSI PB10 > I2S2_CK PC7 > I2S3_MCK PA9 > USB_OTG_FS_VBUS PA10 > USB_OTG_FS_ID PA11 > USB_OTG_FS_DM PA12 > USB_OTG_FS_DP PC10 > I2S3_CK PC12 > I2S3_SD PB6 > I2C1_SCL PB9 > I2C1_SDA */ static void MX_GPIO_Init(void) { GPIO_InitTypeDef GPIO_InitStruct; /* GPIO Ports Clock Enable */ HAL_RCC_GPIOE_CLK_ENABLE(); HAL_RCC_GPIOC_CLK_ENABLE(); HAL_RCC_GPIOH_CLK_ENABLE(); HAL_RCC_GPIOA_CLK_ENABLE(); HAL_RCC_GPIOB_CLK_ENABLE(); HAL_RCC_GPIOD_CLK_ENABLE(); /*Configure GPIO pin Output Level */ HAL_GPIO_WritePin(CS_I2C_SPI_GPIO_Port, CS_I2C_SPI_Pin, GPIO_PIN_RESET); /*Configure GPIO pin Output Level */ HAL_GPIO_WritePin(OTG_FS_PowerSwitchOn_GPIO_Port, OTG_FS_PowerSwitchOn_Pin, GPIO_PIN_RESET); /*Configure GPIO pin Output Level */ HAL_GPIO_WritePin(Sc3_GPIO_Port, Sc3_Pin, GPIO_PIN_RESET); /*Configure GPIO pin Output Level */ HAL_GPIO_WritePin(GPIOD, S1_Pin|S3_Pin|S5_Pin|Sa1_Pin |Sa3_Pin|Sb1_Pin|Sb3_Pin|Sc1_Pin |Audio_RST_Pin, GPIO_PIN_RESET); /*Configure GPIO pin : CS_I2C_SPI_Pin */ GPIO_InitStruct.Pin = CS_I2C_SPI_Pin; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; HAL_GPIO_Init(CS_I2C_SPI_GPIO_Port, &GPIO_InitStruct); /*Configure GPIO pin : OTG_FS_PowerSwitchOn_Pin */ GPIO_InitStruct.Pin = OTG_FS_PowerSwitchOn_Pin; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; HAL_GPIO_Init(OTG_FS_PowerSwitchOn_GPIO_Port, &GPIO_InitStruct); /*Configure GPIO pin : PDM_OUT_Pin */ GPIO_InitStruct.Pin = PDM_OUT_Pin; GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; GPIO_InitStruct.Alternate = GPIO_AF5_SPI2; HAL_GPIO_Init(PDM_OUT_GPIO_Port, &GPIO_InitStruct); /*Configure GPIO pin : B1_Pin */ GPIO_InitStruct.Pin = B1_Pin; GPIO_InitStruct.Mode = GPIO_MODE_EVT_RISING; GPIO_InitStruct.Pull = GPIO_NOPULL; HAL_GPIO_Init(B1_GPIO_Port, &GPIO_InitStruct); /*Configure GPIO pin : PA4 */ GPIO_InitStruct.Pin = GPIO_PIN_4; GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; GPIO_InitStruct.Alternate = GPIO_AF6_SPI3; HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); /*Configure GPIO pins : PA5 PA6 PA7 */ GPIO_InitStruct.Pin = GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7; GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; GPIO_InitStruct.Alternate = GPIO_AF5_SPI1; HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); /*Configure GPIO pin : BOOT1_Pin */ GPIO_InitStruct.Pin = BOOT1_Pin; GPIO_InitStruct.Mode = GPIO_MODE_INPUT; GPIO_InitStruct.Pull = GPIO_NOPULL; HAL_GPIO_Init(BOOT1_GPIO_Port, &GPIO_InitStruct); /*Configure GPIO pin : CLK_IN_Pin */ GPIO_InitStruct.Pin = CLK_IN_Pin; GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; GPIO_InitStruct.Alternate = GPIO_AF5_SPI2; HAL_GPIO_Init(CLK_IN_GPIO_Port, &GPIO_InitStruct); /*Configure GPIO pin : Sc3_Pin */ GPIO_InitStruct.Pin = Sc3_Pin; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; HAL_GPIO_Init(Sc3_GPIO_Port, &GPIO_InitStruct); /*Configure GPIO pins : S1_Pin S3_Pin S5_Pin Sa1_Pin Sa3_Pin Sb1_Pin Sb3_Pin Sc1_Pin Audio_RST_Pin */ GPIO_InitStruct.Pin = S1_Pin|S3_Pin|S5_Pin|Sa1_Pin |Sa3_Pin|Sb1_Pin|Sb3_Pin|Sc1_Pin |Audio_RST_Pin; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; HAL_GPIO_Init(GPIOD, &GPIO_InitStruct); /*Configure GPIO pins : PC7 I2S3_SCK_Pin PC12 */ GPIO_InitStruct.Pin = GPIO_PIN_7|I2S3_SCK_Pin|GPIO_PIN_12; GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; GPIO_InitStruct.Alternate = GPIO_AF6_SPI3; HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); /*Configure GPIO pin : VBUS_FS_Pin */ GPIO_InitStruct.Pin = VBUS_FS_Pin; GPIO_InitStruct.Mode = GPIO_MODE_INPUT; GPIO_InitStruct.Pull = GPIO_NOPULL; HAL_GPIO_Init(VBUS_FS_GPIO_Port, &GPIO_InitStruct); /*Configure GPIO pins : OTG_FS_ID_Pin OTG_FS_DM_Pin OTG_FS_DP_Pin */ GPIO_InitStruct.Pin = OTG_FS_ID_Pin|OTG_FS_DM_Pin|OTG_FS_DP_Pin; GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; GPIO_InitStruct.Alternate = GPIO_AF10_OTG_FS; HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); /*Configure GPIO pin : OTG_FS_OverCurrent_Pin */ GPIO_InitStruct.Pin = OTG_FS_OverCurrent_Pin; GPIO_InitStruct.Mode = GPIO_MODE_INPUT; GPIO_InitStruct.Pull = GPIO_NOPULL; HAL_GPIO_Init(OTG_FS_OverCurrent_GPIO_Port, &GPIO_InitStruct); /*Configure GPIO pins : Audio_SCL_Pin Audio_SDA_Pin */ GPIO_InitStruct.Pin = Audio_SCL_Pin|Audio_SDA_Pin; GPIO_InitStruct.Mode = GPIO_MODE_AF_OD; GPIO_InitStruct.Pull = GPIO_PULLUP; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; GPIO_InitStruct.Alternate = GPIO_AF4_I2C1; HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); /*Configure GPIO pin : MEMS_INT2_Pin */ GPIO_InitStruct.Pin = MEMS_INT2_Pin; GPIO_InitStruct.Mode = GPIO_MODE_EVT_RISING; GPIO_InitStruct.Pull = GPIO_NOPULL; HAL_GPIO_Init(MEMS_INT2_GPIO_Port, &GPIO_InitStruct); } /* USER CODE BEGIN */ void TIM1_UP_TIM10_IRQHandler(void) { /* USER CODE BEGIN TIM1_UP_TIM10_IRQn */ cc=TIM1->CNT; if (ccCR1 & TIM_CR1_DIR; // HAL_TIM_IS_TIM_COUNTING_DOWN //if (HAL_GPIO_ReadPin(GPIOD, Sc1_Pin)==0) //if ((TIM1->CR1 & TIM_CR1_DIR)==1) // Chanel - phase A if ((TIM1->SR & TIM_SR_CC1IF)!=0) { if (TIM1->CR1 & TIM_CR1_DIR) //TIM1->CR1 & TIM_CR1_DIR = =>up ; { HAL_GPIO_WritePin(GPIOD, S1_Pin,S1L); HAL_GPIO_WritePin(GPIOD, Sa1_Pin,S1aL); HAL_GPIO_WritePin(GPIOD, Sa3_Pin,S3aL); } else { HAL_GPIO_WritePin(GPIOD, S1_Pin,S1H); HAL_GPIO_WritePin(GPIOD, Sa1_Pin,S1aH); HAL_GPIO_WritePin(GPIOD, Sa3_Pin,S3aH); }; } // Chanel - phase B if ((TIM1->SR & TIM_SR_CC2IF)!=0) { if (TIM1->CR1 & TIM_CR1_DIR) //TIM1->CR1 & TIM_CR1_DIR = =>up ; { HAL_GPIO_WritePin(GPIOD, S3_Pin,S5L); HAL_GPIO_WritePin(GPIOD, Sb1_Pin,S1bL); HAL_GPIO_WritePin(GPIOD, Sb3_Pin,S3bL); } else { HAL_GPIO_WritePin(GPIOD, S3_Pin,S5H); HAL_GPIO_WritePin(GPIOD, Sb1_Pin,S1bH); HAL_GPIO_WritePin(GPIOD, Sb3_Pin,S3bH); }; } // Chanel 3- phase C if ((TIM1->SR & TIM_SR_CC3IF)!=0) { if (TIM1->CR1 & TIM_CR1_DIR) //TIM1->CR1 & TIM_CR1_DIR = =>up ; { HAL_GPIO_WritePin(GPIOD, S5_Pin,S5L); HAL_GPIO_WritePin(GPIOD, Sc1_Pin,S1cL); HAL_GPIO_WritePin(GPIOB, Sc3_Pin,S3cL); } else { HAL_GPIO_WritePin(GPIOD, S5_Pin,S5H); HAL_GPIO_WritePin(GPIOD, Sa1_Pin,S1aH); HAL_GPIO_WritePin(GPIOB, Sc3_Pin,S3cH); }; } /* USER CODE END TIM1_CC_IRQn */ HAL_TIM_IRQHandler(&htim1); /* USER CODE BEGIN TIM1_CC_IRQn */ /* USER CODE END TIM1_CC_IRQn */ } /* USER CODE END */ /** * @brief This function is executed in case of error occurrence * @param None * @retval None */ void Error_Handler(void) { /* USER CODE BEGIN Error_Handler */ /* User can add his own implementation to report the HAL error return state */ while(1) { } /* USER CODE END Error_Handler */ } #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 */ *****END OF FILE****/ ... nghịch lưu bậc lai, kỹ thuật điều chế độ rộng xung sóng mang cho nghịch lưu II Nhiệm vụ nghiên cứu giới hạn đề tài: Nhiệm vụ nghiên cứu: - Nghiên cứu nghịch lưu bậc lai - Nghiên cứu giải thuật điều... LAI 3.1 Xây dựng giải thuật điều chế độ rộng xung sóng mang cho nghịch lưu bậc lai: a Cấu trúc nghịch lưu bậc lai Bộ nghịch lưu bậc lai x y dựng c sở ghép nối nghịch lưu hai bậc cổ điển với nghịch. .. CỨU NGHỊCH LƯU BẬC LAI II- Nhiệm vụ nội dung: Nghiên cứu biến tần đa bậc, phư ng pháp điều khiển nghịch lưu đa bậc y dựng mơ hình thực nghiệm nghịch lưu bậc lai Mô nghịch lưu bậc lai Matlab Lập