这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » STM32 » 【STM32WBA55CG开发板】过程帖---生成PWM波驱动LED

共1条 1/1 1 跳转至

【STM32WBA55CG开发板】过程帖---生成PWM波驱动LED

专家
2024-12-13 13:55:49     打赏

在STM32WBA55CG提供的例程TIM_PWMOutput中利用定时器2生成了四个PWM波,从通道1~通道4输出,分别使用PB12、PA8、PA7、PA6四个 GPIO口。

图片1.png    四个PWM的占空比为50%、37.5%、25%、12.5%。实测准确无误。

图片2.png    这是通过逻辑分析仪捕获的波形。周期为40微秒的脉冲波的占空比50%、37.5%、25%、12.5%的四个PWM波。

在此例程的基础上,使用通道1,通过周期改变比较值改变PWM的占空比,控制MOS功率管,完成LED灯条亮度的控制。为此修改循环处理,每间隔5模式,改变输出通道1 的占空比,从0增加到100,模拟渐亮的过程;然后再从100回到0,模拟渐灭的过程。

    占空比接近0%时的波形:

图片3.png

占空比接近100%时的波形:

图片4.png    实际测试效果(没有接MOS管,直接使用LED方式演示):

1734069095764657.gif

为了方便截取PWM波形,设置占空比变化的时间间隔是5ms周期,闪烁的速度有点快。实际测试改成15模式的话,看起来会更舒服一些。

完成上述处理正常,接下来,接入MOS功率管,使用12V的LED灯条进行测试。时间间隔已经调整为15ms。电路连接:

图片6.png

MOS管没有使用下面这种,因为这种模块的输入输出端电源正极是相通的,测试时,线路连接不方便。后面制作成果装置的时候,可能会使用这个模块,用5V电源的方式连接电路。

图片7.png

输入输出的电源正极,与开关的控制端正极是相通的。

测试结果大条了,12V的灯条虽然能发生亮灭变化,但那种亮度渐变的变化,用肉眼没看出来。改变程序运行策略,固定6个亮度级别,每个亮度保持2秒,

while (1) {
    if (dir==0) {
        ratio+=20;
    } else if (dir==1) {
        ratio-=20;
    }
    // 改变通道1 的比较值
    __HAL_TIM_SET_COMPARE(&htim2,TIM_CHANNEL_1, (uint32_t)(40 * ratio / 100));
    HAL_Delay(2000);
    if (ratio>=100) {
        dir=1;// 减1
    } else if (ratio==0) {
        dir=0;// 减1
    }
}

整个过程中只能在特定时段看见亮度发生一次明显的变化。得,以PWM控制这个12V的灯条亮度的测试失败!于是改用控制大一点而的发光管试验,主要就是看看经过MOS管以后能否体现出PWN的作用,进而测试MOS管对否正常而已。在修改参数后,结果还不错。

while (1) {
    if (dir==0) {
        ratio+=1;
    } else if (dir==1) {
        ratio-=1;
    }
    // 改变通道1 的比较值
    __HAL_TIM_SET_COMPARE(&htim2,TIM_CHANNEL_1, (uint32_t)(40 * ratio / 100));
    HAL_Delay(100);
    if (ratio>=100) {
        dir=1;// 减1
    } else if (ratio==0) {
        dir=0;// 减1
    }
}

1734069111531810.gif

吐槽一下,明明是红色的LED,拍摄效果呈现为黄色,看来得换Mate70Pro了,有了红枫影像技术加持,应该会还原本色吧。








共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]