PWM死区时间

部署运行你感兴趣的模型镜像

[转自:http://blog.chinaunix.net/uid-26435987-id-3372047.html]

    死区,简单解释:通常,大功率电机、变频器等,末端都是由大功率管、IGBT等元件组成的H桥或3相桥。每个桥的上半桥和下半桥是是绝对不能同时导通的,但高速的PWM驱动信号在达到功率元件的控制极时,往往会由于各种各样的原因产生延迟的效果,造成某个半桥元件在应该关断时没有关断,造成功率元件烧毁。死区就是在上半桥关断后,延迟一段时间再打开下半桥或在下半桥关断后,延迟一段时间再打开上半桥,从而避免功率元件烧毁。这段延迟时间就是死区。(就是上、下半桥的元件都是关断的)死区时间控制在通常的低端单片机所配备的PWM中是没有的。

    PWM的上下桥臂的三极管是不能同时导通的。如果同时导通就会是电源两端短路。所以,两路触发信号要在一段时间内都是使三极管断开的。这个区域就叫做“死区”优点就不用说了。缺点是使谐波的含量有所增加。

您可能感兴趣的与本文相关的镜像

Kotaemon

Kotaemon

AI应用

Kotaemon 是由Cinnamon 开发的开源项目,是一个RAG UI页面,主要面向DocQA的终端用户和构建自己RAG pipeline

### PWM死区时间的定义与设置 #### 死区时间的定义 PWM信号中的死区时间是指在互补PWM输出中,为了避免上下桥臂同时导通而引入的一段时间间隔。在这段时间内,两个互补通道均处于关闭状态,从而有效防止短路现象的发生[^1]。 --- #### 死区时间的计算方法 对于基于STM32系列微控制器的高级定时器而言,死区时间由 `TIMx_BDTR` 寄存器中的 `DTG[7:0]` 字段控制。具体计算过程如下: 1. **确定死区时钟周期 (tDTS)** - 如果预分频系数不等于1,则定时器时钟频率为 \( f_{\text{timer}} = \frac{\text{PCLK2} \times 2}{\text{Prescaler}} \),其中 PCLK2 是 APB2 总线时钟频率。 - 当系统时钟为 168 MHz,APB2 预分频设为 2 时,\( \text{PCLK2} = 84 \, \text{MHz} \),因此 TIM1 的实际时钟频率为 \( 168 \, \text{MHz} \)[^2]。 2. **计算单个单位的时间长度** 单位时间为: \[ t_{\text{unit}} = \frac{1}{f_{\text{timer}}} = \frac{1}{168 \, \text{MHz}} \] 3. **配置 DTG 值并计算总死区时间** 死区时间可以通过以下公式计算: \[ t_{\text{deadtime}} = (\text{DTG}[7:0]) \cdot t_{\text{unit}} \] 其中,`DTG[7:0]` 表示寄存器中设定的具体数值范围为 0 到 255。例如,如果设置了 `DTG = 100`,则对应的死区时间为: \[ t_{\text{deadtime}} = 100 \cdot \left( \frac{1}{168 \, \text{MHz}} \right) = 0.595 \, \mu s \][^2]。 --- #### 死区时间的硬件配置 以下是通过 HAL 库实现 STM32 中 PWM 死区时间配置的一个典型代码示例: ```c // 初始化定时器结构体 TIM_HandleTypeDef htim; TIM_OC_InitTypeDef sConfigOC; htim.Instance = TIM1; // 使用 TIM1 定时器 htim.Init.Prescaler = 83; // 设置预分频值 htim.Init.CounterMode = TIM_COUNTERMODE_UP; htim.Init.Period = 999; // 自动重装载值 HAL_TIM_PWM_Init(&htim); // 配置通道1 和 通道2 的 PWM 输出 sConfigOC.OCMode = TIM_OCMODE_PWM1; sConfigOC.Pulse = 500; // 初始占空比 sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH; sConfigOC.OCNPolarity = TIM_OCNPOLARITY_LOW; sConfigOC.OCFastMode = TIM_OCFAST_DISABLE; HAL_TIM_PWM_ConfigChannel(&htim, &sConfigOC, TIM_CHANNEL_1); HAL_TIM_PWM_ConfigChannel(&htim, &sConfigOC, TIM_CHANNEL_2); // 配置死区时间和极性反转 __HAL_TIM_SET dead_time(TIM1, 100); // 设置 DTG 值为 100 ``` 此代码片段展示了如何利用 HAL 函数来初始化定时器、配置 PWM 参数以及指定死区时间。 --- #### 注意事项 - 在启用死区功能之前,需确保已正确配置了定时器的工作模式(如标准 PWM 或互补 PWM)。 - 不同型号的 MCU 可能具有不同的时钟树架构和寄存器布局,请查阅对应的数据手册确认细节[^3]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值