大数跨境
0
0

【ESP-12K模组专题④】 智能照明真的有那么神奇吗?带你用安信可ESP-12K实现PWM平滑调光!(附Demo)

【ESP-12K模组专题④】 智能照明真的有那么神奇吗?带你用安信可ESP-12K实现PWM平滑调光!(附Demo) 安信可科技
2020-10-16
2
导读:我们在选购智能灯具时,除了外观,最主要的是关注它支持哪种调节方式,比如单色,冷暖色,还是RGB彩色控制。家庭

我们在选购智能灯具时,除了外观,最主要的关注它支持哪种调节方式,比如单色,冷暖色,还是RGB彩色控制

家庭应用中普遍选择单色和冷暖光就可以满足日常生活的需要,而 RGB彩色控制多应用于舞台灯光场景。

因此智能家居的灯具普及,以单色和冷暖光居多,但是这些灯具的色温是怎么定义的呢?PWM 又是如何输出这样的效果呢?

今天就带大家了解下色温是如何定义的,以及如何通过安信可科技的新品模组ESP-12K实现PWM平滑调光。

1、冷暖光的PWM关系



1.1、色温的定义

色温表示光源光色的尺度
色温的单位是卡尔文 ,简称K
色温的标准图可参考下面这张图,很容易得出结论:
色温数值越大,看到的效果越冷白;
误解:色温越大,就越暖光;

我们常买的灯具又是如何产生这样的效果呢? 

聪明的开发者,利用冷白灯珠和暖光灯珠产生的亮度不一样的原理,实现了以上的效果!

1.2、PWM与指定的色温亮度计算

2个灯珠各自的亮度不同,通过不断的调节形成最终的色温亮度,你是否也好奇它们是怎样通过PWM技术实现的呢?

很多人也许会这样理解,色温大小就是暖色灯珠的亮度明暗,而亮度大小就是冷白灯珠的亮度明暗,这样的说法其实并不正确!

对于 PWM 和 色温亮度的计算公式,我们接触过很多,这里我们以乐鑫提供的开源为基准,如下:

  • color_temperature:用户预想的灯具的色温数值,范围[0,100]
  • brightness :用户预想的灯具的亮度数值,范围[0,100]
  • 计算过程如下,得到的cold_tmpPWM冷灯珠的占空比,warm_tmpPWM灯珠的占空比:
uint8_t warm_tmp = color_temperature * brightness / 100;uint8_t cold_tmp = (100 - color_temperature) * brightness / 100;

(←向左滑动可查看全部代码)

看了上面的计算步骤,是否觉得很简单?

我们可以通过计算得出我们想要的的亮度效果:

  • 效果1 中性光 :

入参 color_temperature= 50 ,brightness= 100 ;

代入公式后得到:warm_tmp:50 ,cold_tmp:50 ;


  • 效果2 最冷光 :

 入参 color_temperature = 100 ,brightness = 100 ;

代入公式后得到:warm_tmp:100 ,cold_tmp:0;


  • 效果3 最暖光 :

入参 color_temperature = 0,brightness = 100 ;

代入公式后得到:warm_tmp:0,cold_tmp :100 ;

以上步骤,为啥结论是相反的?

因为在上边的色温标准图中可以看出,色温数值越大越趋近于冷光,意味着色温越大,其暖灯珠的PWM高电平占空比越小!

那么我们又该如何纠正这个错误呢?


这里只需要把入参的color_temperature 修改为即可:

color_temperature = 100 - color_temperature;

(←向左滑动可查看全部代码)

、 RGB/HSV


这个概念相对比较好理解!学电子专业的小伙伴,应该经常接触这样的模型转换,下面给大家贴下转换代码。

2.1 HSV模型转RGB

static esp_err_t light_driver_hsv2rgb(uint16_t hue, uint8_t saturation, uint8_t value,uint8_t *red, uint8_t *green, uint8_t *blue){uint16_t hi = (hue / 60) % 6;uint16_t F = 100 * hue / 60 - 100 * hi;uint16_t P = value * (100 - saturation) / 100;uint16_t Q = value * (10000 - F * saturation) / 10000;uint16_t T = value * (10000 - saturation * (100 - F)) / 10000;

switch (hi) {case 0: *red = value; *green = T; *blue = P;break;case 1: *red = Q; *green = value; *blue = P;break;case 2: *red = P; *green = value; *blue = T;break;case 3: *red = P; *green = Q; *blue = value;break;case 4: *red = T; *green = P; *blue = value;break;case 5: *red = value; *green = P; *blue = Q;break;default:return ESP_FAIL; } *red = *red * 255 / 100; *green = *green * 255 / 100; *blue = *blue * 255 / 100;return ESP_OK;}

(←向左滑动可查看全部代码)

2.2 RGB模型转 HSV

static void light_driver_rgb2hsv(uint16_t red, uint16_t green, uint16_t blue,uint16_t *h, uint8_t *s, uint8_t *v){double hue, saturation, value;double m_max = MAX(red, MAX(green, blue));double m_min = MIN(red, MIN(green, blue));double m_delta = m_max - m_min;

value = m_max / 255.0;if (m_delta == 0) { hue = 0; saturation = 0; }else { saturation = m_delta / m_max;if (red == m_max) { hue = (green - blue) / m_delta; }else if (green == m_max) { hue = 2 + (blue - red) / m_delta; }else { hue = 4 + (red - green) / m_delta; } hue = hue * 60;if (hue < 0) { hue = hue + 360; } } *h = (int)(hue + 0.5); *s = (int)(saturation * 100 + 0.5); *v = (int)(value * 100 + 0.5);}

(←向左滑动可查看全部代码)

三、函数说明



  •  light_driver_set_hue(uint16_t hue);   //设置HSV模型的H

  • light_driver_set_saturation(uint8_t saturation);   //设置HSV模型的S

  • light_driver_set_value(uint8_t value);   //设置HSV模型的V


  • light_driver_set_color_temperature(uint8_t color_temperature);   //设置色温

  • light_driver_set_brightness(uint8_t brightness);    //设置俩亮度

  •  light_driver_set_hsv(uint16_t hue, uint8_t saturation, uint8_t value);    //设置HSV模型 

  •  light_driver_set_ctb(uint8_t color_temperature, uint8_t brightness);    //设置色温亮度

  •  light_driver_set_switch(bool status);    //设置开关

- 注意,一般情况下是不能同时调节 RGB 和冷暖灯珠的哦。

- 具体的使用可参考下面的demo,欢迎大家留言提问:https://github.com/xuhongv/StudyInEsp32/tree/master/17_light_utils_pwm




 复制淘口令  ₤QMhgc3cCx98₤  打开淘宝,立即购买!


-推荐阅读-
点击文字即可阅读全文


☞ 【新品上架】五根天线的LoRa网关,真的可以很牛!

☞ 安信可首款4G Cat.1模块 Ca-01隆重登场,支持MQTT直连阿里云物联网平台!

☞ 【安信可“拍了拍”你】新一代“旗舰级”WiFi模块,震撼发布!

☞ 【新品发布】安信可首款室内定位BU01开发板 , 晃动身体都能感知到的精度!

☞ 【1元拿样】安信可科技蓝牙模组TB-03F,TB-04正式发布!


【声明】内容源于网络
0
0
安信可科技
全球领先的联网模组、智能家居等物联网硬件方案提供商。
内容 393
粉丝 0
安信可科技 全球领先的联网模组、智能家居等物联网硬件方案提供商。
总阅读321
粉丝0
内容393