查看: 427|回复: 0

[应用笔记] WB81实现PWM渐变应用指南

[复制链接]

21

主题

21

帖子

67

积分

利尔达员工

Rank: 9Rank: 9Rank: 9

积分
67
发表于 2023-10-17 13:58:55 | 显示全部楼层 |阅读模式
  1 PWM原理

  PWM(Pulse Width Modulation):脉冲宽度调制,简称脉宽调制,利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术,广泛应用在从测量、通信到功率控制与变换的许多领域中。
  1.1 PWM周期(T):
一个周期的时间T=1/f。如果频率为50Hz ,T=1/50=20ms。

  1.2 PWM频率(f):1秒钟PWM有多少个周期f=1/T。(单位: Hz,表示方式: 50Hz)

  1.3 PWM占空比(duty):一个脉冲周期内,高电平的时间与整个周期时间的比例(单位:%(0%-100%),表示方式:20%


  2 WB81 PWM相关命令


       WB81有一个LED 控制器 (LEDC) 主要用于控制 LED,也可产生 PWM 信号用于其他设备的控制。


  设置 LEDC 通道PWM渐变,需要进行如下配置:
  1. 定时器配置 指定 PWM 信号的频率、占空比分辨率、输出 PWM 信号的 GPIO。
  2. 占空比设置 。
  3. 渐变配置,PWM渐变周期和渐变目标占空比。


  根据PWM的应用像舵机控制、电机转速控制以及呼吸灯等等,其实PWM就是在合适的信号频率一定的情况下,通过一个周期里改变占空比的方式来改变输出的有效电压

  2.1 AT+DRVPWMINIT初始化PWM 驱动器

  设置命令
  AT+DRVPWMINIT=<freq>,<duty_res>,<ch0_gpio>[,...,<ch3_gpio>]

  响应
  ok

  参数
  ●<freq>:LEDC 定时器频率,单位:Hz,范围:1 Hz ~ 8 MHz。
  ●<duty_res>:LEDC 通道占空比分辨率,范围:0 ~ 20 位。该值决定后面 ch0_duty 占空比的最大值,如该值写10,则占空比最大可写2^10=1024。
  
<chx_gpio>:LEDC 通道 x 的输出 GPIO。例如,如果您想将 GPIO16 作为通道 0,需设置 <ch0_gpio> 为 16。

  说明
  ●WB81 最多能支持 4 个通道。
  ●使用本命令初始化的通道数量直接决定了其它 PWM 命令(如 AT+DRVPWMDUTY 和 AT+DRVPWMFADE)能够设置的通道。例如,如果只初始化了两个通道,那么 AT+DRVPWMDUTY 命令只能用来更改这两个通道的 PWM 占空比。
  ●频率和占空比分辨率相互影响。PWM频率越高,可用的占空比分辨率越低,LEDC频率与分辨率关系如下所示:
  其中floo为向下取整


  常见配置频率和精度:
  示例
  AT+DRVPWMINIT=5000,13,17,16,18,19  // 设置 4 个通道17、16、18、19,频率为 5 kHz,占空比分辨率为 13 位
  AT+DRVPWMINIT=10000,10,17  // 只初始化通道 ch0,GPIO17,频率为 10 kHz,占空比分辨率为 10 位,其它 PWM 相关命令只能设置一个通道

  2.2 AT+DRVPWMDUTY设置 PWM 占空比

  设置命令
  AT+DRVPWMDUTY=<ch0_duty>[,...,<ch3_duty>]

  响应
  ok

  参数
  ●<ch0_duty>:LEDC 通道占空比,范围:
  说明
  ●ESP-AT 最多能支持 4 个通道。
  ●若某个通道无需设置占空比,直接省略该参数。

  示例
  AT+DRVPWMDUTY=255,512  // 设置通道 0 的占空比为 255,设置通道 1 的占空比为 512
  AT+DRVPWMDUTY=,,0  // 只设置通道 2 的占空比为 0


  2.3 AT+DRVPWMFADE设置 PWM 渐变


  设置命令
  AT+DRVPWMFADE=<ch0_target_duty>,<ch0_fade_time>[,...,<ch3_target_duty>,<ch3_fade_time>]

  响应
  ok

  参数
  ●<chx_target_duty>:通道x目标渐变占空比,范围:
  ●<chx_fade_time>:通道x渐变的最长时间,单位:毫秒。

  说明
  ●WB81 最多能支持 4 个通道。
  ●若某个通道无需设置占空比,直接省略该参数。

  示例
  AT+DRVPWMFADE=,,0,1000  // 使用一秒的时间将通道 1 的占空比设置为 0
  AT+DRVPWMFADE=1024,1000,0,2000  // 使用一秒的时间将通道 0 的占空比设置为 1024、两秒的时间将通道 1 的占空比设为 0

  3 LED呼吸灯应用

      在频率一定下,可以用不同占空比改变LED灯的亮度,使其达到一个呼吸灯的效果。通过PWM调光LED必须遵循的步骤:
  1. 初始化驱动器,对于LED来说,使用5000 Hz的频率是合适的。此处使用8位分辨率,可以使用0到255的值来控制LED亮度(2的8次方),输出通道为GPIO17。
  2. 设置占空比为255,也就是255/256的亮度
  3. 配置渐变周期为5s,从255/256的亮度变为0:
  AT+DRVPWMINIT=5000,8,17  // 只初始化通道 ch0,GPIO17,频率为 5000 Hz,占空比分辨率为 8 位,其它 PWM 相关命令只能设置一个通道
  AT+DRVPWMDUTY=255  // 设置通道 0 的占空比为 255,亮度是255/256(2^8)
  AT+DRVPWMFADE=0,5000  //使用 5 秒的时间将通道 0 的占空比设置为 0

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表