利用是stm32cubemx实现双极性spwm调制 基于stm32f407vet6

这篇具有很好参考价值的文章主要介绍了利用是stm32cubemx实现双极性spwm调制 基于stm32f407vet6。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

【双极性SPWM调制讲解以及基于stm32的代码生成-哔哩哔哩】 https://b23.tv/ytFxdkL

双极性spwm调制虽然没有单极性好用,但比单极性要简单易懂一些,以下教程是如何利用stm32实现双极性spwm调制.

双极性spwm,电赛电源题stm32知识讲解,stm32,单片机,arm,c语言,嵌入式硬件

 双极性spwm,电赛电源题stm32知识讲解,stm32,单片机,arm,c语言,嵌入式硬件

•T1,T2不能同时导通,T3,T4也不能同时导通,否则短路烧管子。
•解决方法:T1与T2用高级定时器的互补pwm输出,并给合适的死区时间,T3与T4同,最好用同一个高级定时器的两个通道。
•也可以只用一个通道,T1,T4相同,T2,T3相同,此时只有1,2两种开关模式。

 怎么根据不同开关模式下的Uab值来输出连续的正弦波呢,我们先取几个特殊点分析。

双极性spwm,电赛电源题stm32知识讲解,stm32,单片机,arm,c语言,嵌入式硬件

 •在正弦波峰值处,+VD宽度最大,因此T1,T4管此时的占空比达到最大,-VD宽度最小,因此T2,T3的最小,此时Uab为两者相减(因为2,3导通时为-VD),正好也是最大值。

在正弦波过0处, +VD宽度接近一半周期,因此T1,T4管此时的占空比约为一半, -VD也是,因此T2,T3的也是,此时Uab为两者相减(因为2,3导通时为-VD),正好也是过0。

•在正弦波谷值处, +VD宽度最小,因此T1,T4管此时的占空比达到最小, -VD宽度最大,因此T2,T3的最大,此时Uab为两者相减(因为2,3导通时为-VD),正好也是最小值。

这三种特殊点之间的变化过程,如果占空比是按正弦规律变化的,那么,不难理解,最终输出波形会是连续的正弦波形。

以上就是大致的原理。接下来就是代码的生成。

打开cubemx,选择芯片型号新建工程。

双极性spwm,电赛电源题stm32知识讲解,stm32,单片机,arm,c语言,嵌入式硬件

 选择外部时钟并配置时钟树

双极性spwm,电赛电源题stm32知识讲解,stm32,单片机,arm,c语言,嵌入式硬件

双极性spwm,电赛电源题stm32知识讲解,stm32,单片机,arm,c语言,嵌入式硬件 双极性spwm,电赛电源题stm32知识讲解,stm32,单片机,arm,c语言,嵌入式硬件

接下来配置定时器1(也可以定时器8)pwm互补输出,这里选择通道一

双极性spwm,电赛电源题stm32知识讲解,stm32,单片机,arm,c语言,嵌入式硬件

 频率为168M/(0+1)/(8399+1)=20KHZ;向上计数模式

配置死区和占空比;我这死区配的100多ns,大家根据实际需要配置

双极性spwm,电赛电源题stm32知识讲解,stm32,单片机,arm,c语言,嵌入式硬件

 因为要以正弦规律改占空比,配置一个20khz的定时器中断

 双极性spwm,电赛电源题stm32知识讲解,stm32,单片机,arm,c语言,嵌入式硬件双极性spwm,电赛电源题stm32知识讲解,stm32,单片机,arm,c语言,嵌入式硬件

 接下来就是工程命名,大家用英文路径。

 生成工程转到keil。双极性spwm,电赛电源题stm32知识讲解,stm32,单片机,arm,c语言,嵌入式硬件

双极性spwm,电赛电源题stm32知识讲解,stm32,单片机,arm,c语言,嵌入式硬件

 文章来源地址https://www.toymoban.com/news/detail-611111.html

 在合适位置加入下列代码

HAL_TIM_Base_Start_IT(&htim2);//开启定时器2中断
HAL_TIM_PWM_Start (&htim1,TIM_CHANNEL_1);//开启四路pwm波
HAL_TIMEx_PWMN_Start (&htim1,TIM_CHANNEL_1);

 在合适位置复制以下代码,双极性spwm,电赛电源题stm32知识讲解,stm32,单片机,arm,c语言,嵌入式硬件

uint16_t spwmcnt=0;//数组计数值:0~399;
float M=0.8;//调制比M:0~1
int spwm_group[400]={
	33,99,165,231,297,362,428,494,559,624,690,755,819,884,948,1013,1076,
1140,1203,1266,1329,1392,1454,1515,1577,1638,1698,1758,1818,1877,1936,1994,2052,
2110,2166,2223,2278,2333,2388,2442,2495,2548,2600,2652,2703,2753,2802,2851,2899,
2946,2993,3039,3084,3129,3172,3215,3257,3298,3339,3378,3417,3455,3492,3528,3564,
3598,3632,3664,3696,3727,3757,3786,3814,3841,3868,3893,3917,3940,3963,3984,4005,
4024,4042,4060,4076,4092,4106,4119,4132,4143,4153,4163,4171,4178,4184,4190,4194,
4197,4199,4200,4200,4199,4197,4194,4190,4184,4178,4171,4163,4153,4143,4132,4119,
4106,4092,4076,4060,4042,4024,4005,3984,3963,3940,3917,3893,3868,3841,3814,3786,
3757,3727,3696,3664,3632,3598,3564,3528,3492,3455,3417,3378,3339,3298,3257,3215,
3172,3129,3084,3039,2993,2946,2899,2851,2802,2753,2703,2652,2600,2548,2495,2442,
2388,2333,2278,2223,2166,2110,2052,1994,1936,1877,1818,1758,1698,1638,1577,1515,
1454,1392,1329,1266,1203,1140,1076,1013,948,884,819,755,690,624,559,494,
428,362,297,231,165,99,33,-33,-99,-165,-231,-297,-362,-428,-494,-559,
-624,-690,-755,-819,-884,-948,-1013,-1076,-1140,-1203,-1266,-1329,-1392,-1454,-1515,-1577,
-1638,-1698,-1758,-1818,-1877,-1936,-1994,-2052,-2110,-2166,-2223,-2278,-2333,-2388,-2442,-2495,
-2548,-2600,-2652,-2703,-2753,-2802,-2851,-2899,-2946,-2993,-3039,-3084,-3129,-3172,-3215,-3257,
-3298,-3339,-3378,-3417,-3455,-3492,-3528,-3564,-3598,-3632,-3664,-3696,-3727,-3757,-3786,-3814,
-3841,-3868,-3893,-3917,-3940,-3963,-3984,-4005,-4024,-4042,-4060,-4076,-4092,-4106,-4119,-4132,
-4143,-4153,-4163,-4171,-4178,-4184,-4190,-4194,-4197,-4199,-4200,-4200,-4199,-4197,-4194,-4190,
-4184,-4178,-4171,-4163,-4153,-4143,-4132,-4119,-4106,-4092,-4076,-4060,-4042,-4024,-4005,-3984,
-3963,-3940,-3917,-3893,-3868,-3841,-3814,-3786,-3757,-3727,-3696,-3664,-3632,-3598,-3564,-3528,
-3492,-3455,-3417,-3378,-3339,-3298,-3257,-3215,-3172,-3129,-3084,-3039,-2993,-2946,-2899,-2851,
-2802,-2753,-2703,-2652,-2600,-2548,-2495,-2442,-2388,-2333,-2278,-2223,-2166,-2110,-2052,-1994,
-1936,-1877,-1818,-1758,-1698,-1638,-1577,-1515,-1454,-1392,-1329,-1266,-1203,-1140,-1076,-1013,
-948,-884,-819,-755,-690,-624,-559,-494,-428,-362,-297,-231,-165,-99,-33,
};
 void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)  //中断回调函数 20k
{
	if(htim==&htim2)
	{
	TIM1->CCR1 = 4200.f + M*spwm_group[spwmcnt] ;//20khz的频率改变400次,20000/400=50hz的正弦波;
	spwmcnt++;
  if(spwmcnt==400)spwmcnt=0;	
  }
}

 编译,没有报错,可以正常使用。

双极性spwm,电赛电源题stm32知识讲解,stm32,单片机,arm,c语言,嵌入式硬件     其中T1,T4管由TIM1-CH1(PE9)驱动;
    T2,T3管由TIM1-CH1N(PA7)驱动;

如何在上电路前检查自己的spwm对不对呢,首先可以把中断关了,固定占空比输出,用示波器看pwm波的频率对不对,互补两路间有没有合适的死区时间;无误后正常开启中断,准备两个合适且参数一样的RC滤波器,选择两路通道接上,并用示波器的两个通道同时看两个滤波器中电容两端波形,理论上CH1和CH1N为反相的50HZ正弦波。

如果有问题,欢迎留言交流,顺便把工程上传了,供大家下载(没有会员的就没必要特意开了哈)。

https://download.csdn.net/download/m0_65265936/86394301

 

 

 

 

到了这里,关于利用是stm32cubemx实现双极性spwm调制 基于stm32f407vet6的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 基于STM32CubeMX和keil采用STM32F407的基本定时器中断实现LED闪烁

    定时器有三种,基本定时器,通用定时器,以及高级定时器。 这篇博客以最简单的基本定时器为例,实现LED的闪烁。 后面两种定时器的用法后面再写。 实现功能: TIM6控制LED每隔0.5s变一次状态。 TIM7控制LED1常量2s后熄灭。 因为都是用到LED,所以和上一篇基于STM32CubeMX与keil采

    2024年02月04日
    浏览(13)
  • 2.基于正点原子STM32F103的定时器中断实验(HAL库实现)(cubeMX)

      基本上每一款MCU都会配备定时器这个外设,STM32 的每个通用定时器都是完全独立的,没有互相共享的任何资源。 同样,STM32F1系列的定时器功能也很强大,包括: TIM1和TIM8两个高级定时器; TIM2~TIM5是个通用寄存器; TIM7,TIM8,两个基本定时器。 由于本次实验适用于新手入门

    2023年04月26日
    浏览(133)
  • 基于STM32CubeMX创建FreeRTOS—以STM32F429为例

    目录 1. 实验任务 2. 使用STM32CubeMX创建基础工程 2.1 使用STM32CubeMX创建项目 2.2 创建新项目 2.3 时钟设置 2.4 时钟配置树 2.5 修改时钟基准,打开串行调试 2.6 配置串口 2.7 配置状态指示灯 2.8 FreeRTOS配置 2.9 配置工程输出项 3. 代码编辑 3.1 printf重映射 3.1.1 使用ARMCC 5编译器时的print

    2024年01月22日
    浏览(13)
  • 搭建STM32F407的Freertos系统(基于STM32CubeMX)

           本人长期开发Linux、Windows上应用软件,一直以来MCU开发有所接触,但较少(最近项目需要,小公司么,都得会,被逼的),好在有STM32CubeMX这样工具,貌似就是我想要的工具。         本次demo目标立下:         1. 搭建或移植FreeRTOS到STM32上,毕竟对于长期在Linux环境

    2024年02月10日
    浏览(22)
  • STM32CubeMX生成C代码及时钟树配置(基于stm32f407)

    近来对于stm32单片机编程中,HAL库逐渐取代标准库成为主流的库。标准库支持的芯片型号有限,而且目前已经停止支持,而HAL库支持所有类型的芯片,可移植性也很高,再加上有神器STM32Cube可以生成工程模板,越来越多的编程开始从使用标准库转到使用HAL库。 新建工程后,在

    2024年02月15日
    浏览(20)
  • STM32F4的输出比较极性和PWM1,PWM2的关系

    在这里以通用定时器的通道1作为介绍。 如图,左边就是CNT计数器和CCR1第一路的捕获/比较寄存器,它俩进行比较,当CNTCCR1, 或者CNT=CCR1时,就会给输出模式控制器传送一个信号,然后输出模式控制器就会改变它的 输出OC1ref的高低电平(这里ref是referencel的缩写,意思是参考信

    2024年02月03日
    浏览(10)
  • 基于STM32F103ZET6使用STM32CubeMX配置FSMC模块驱动LCD屏(基于正点原子历程)

    在学习STM32的过程中,刚好学到了LCD屏,我使用的是STM32F103ZET6,屏幕是正点原子的。但是在我自己新建工程点亮显示LCD屏时遇到了很多问题。解决之后分享在此,希望能帮助到遇到此困惑的朋友。 想要快速驱动LCD屏请直接跳转到CubeMX配置 FSMC全名叫可变静态存储控制器(Fle

    2024年02月15日
    浏览(17)
  • 基于STM32F103,利用W5500芯片实现TCP客户端连接TCP服务器的实践

    尊敬的读者,您好!在这篇文章中,我们将一起深入了解如何使用STM32F103和W5500芯片,实现TCP客户端连接到TCP服务器的过程。在详细的步骤中,我们不仅会给出相关的理论介绍,同时也会提供实战代码以供大家参考和学习。希望大家在阅读完这篇文章后,能够有所收获。 实战

    2024年02月11日
    浏览(11)
  • STM32F1基于STM32CubeMX配置硬件SPI驱动1.8寸TFT LCD128X160 ST7735S屏幕

    📌相关篇《【STM32CubeIDE】STM32F103硬件SPI驱动1.8寸TFT LCD128X160 ST7735S屏幕》 ✨驱动效果就不做演示了,和上面的相关篇一样,主要是为了方便使用MDK Keil开发的使用。所以花了点时间从上面的工程当中做了分离,重新使用STM32CubeMX配置一个方便二次开发移植使用和配置的工程。本

    2024年02月03日
    浏览(13)
  • 基于STM32的SPWM逆变器设计

    目录 一、逆变器控制板原理图和PCB  二、逆变器直流升压原理图和PCB  三、代码 四、电路讲解  1、12V 电池输入的辅助电源电路           2、24V-48V 电池输入的辅助电源电路  3、 多路隔离辅助电源电路  4、高频逆变器前级电路的设计  5、闭环前级变压器匝数比的设计  

    2023年04月26日
    浏览(9)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包