'2018/03/09'에 해당되는 글 2건

  1. 2018.03.09 감마 교정(gamma correction)
  2. 2018.03.09 WS2811를 이용한 color LED 구동


사람의 눈은 밝기를 선형적으로 인지할 수 없습니다. 즉, 어두운 부분에서 밝기의 변화는 실제 변화보다 더 많이 변화하였다고 인지하고 밝은 부분에서는 밝기 변화는 실제 변화보다 적게 변화하였다는 느껴진다는 것입니다.



위 그림은 입력에 따른 실제 밝기의 변화는 기울기인 '1'이지만 사람의 눈 빨간색 커브처럼 느낀다는 것입니다. 여기서 x축은 밝아지는 방향으로 어두운 부분에서는 실제 변화보다 크게 변화하는 것처럼 보이고 밝은 부분에서 실제 변화보다 적게 변화하는 것처럼 보여진다는 것입니다.


사람의 눈의 이러한 왜곡을 해결하기 위해서 이미지 데이터를 미리 빨간색 커브를 y=x의 곡선에 대칭인 커브로 조정한다면 해결될 수 있다는 것입니다. 이와 같은 커브는 지수함수로 나타낼 수 있으며 이처럼 이미지 데이터를 보정하는 것을 감마보정(gamma correction)이라고 부릅니다.



위 그림에서 초록색 커브는 감마 교정을 한 커브이며 이 커브의 지수함수 표현은 다음 식과 같습니다.



입출력은 밝기이며 M은 최대값을 의미하며 통상 255이며, g는 감마(gamma)값입니다. 만일 g값이 '1'이면 기울기 '1'이어서 선형적인 위 그림에 파란색 직선 y=x이 g값이 '1'보다 작으면 위로 볼록한 커브가 만들어지고 '1'보다 크면 아래로 볼록한 커브가 반들어집니다. 또한 g값이 '0.5'인 커브의 y=x 축에 대한 선형 대칭 변환은 '1/0.5'의 g값을 갖습니다.



Posted by Nature & Life


Color LED는 각각 red, green, blue의 색을 발하는 3개의 LED 소자가 집적화되어 빛의 3원색에 해당하는 각 LED의 발기를 조절하면 사용자가 원하는 색깔의 얻을 수 있는 LED입니다. 다음은 대표적인 color LED인 Adafruit사의 ada-2739입니다. 



Color LED는 단자가 4개로 아래 그림에서와 같이 가장 긴 단자가 2번으로 Common Anode이며, 이를 Common-Anode 타입이라 부릅니다. 따라서 Common Anode 단자에는 VDD가 연결되어야 하며 Common-Cathode 타입의 경우에는 반대로 GND에 연결되어야 합니다. 



위와 같은 Common-Anode 타입의 color LED는 각 rgb 단자가 LOW이면 점등되며, 그러므로 PWM 제어의 경우 duty가 0%에서 점등하게 된다는 것입니다. 만일 각각의 rgb 단자에 8-bit인 256 레벨의 PWM 출력을 연결하고 전체 24-bit 데이터 스트림으로 PWM을 동시에 제어할 수 있다면 이 color LED를 자유롭게 색상을 변경하며 사용할 수 있습니다(24-bit true color).


이를 위해 설계된 칩이 WS2811로 시리얼 통신으로 24-bit 데이터를 전송 받고 3개의 8-bit PWM 채널로 출력하며, 별도의 저항 소자가 필요없도록 약 20mA로 전류를 제어한다는 것입니다. 최근에는 color LED 자체에 WS2811 소자를 내장하여 구동이 더욱 간편한 digital color LED가 출시되고 있습니다.


WS2811은 single-line NZR(None return to zero) 통신 모드를 사용합니다. DIN 포트는 데이터를 받고, DOUT 포트에 cascade로 연결된 다음 WS2811 소자에 800KHz로 다시 데이터를 전송됩니다. 비록 순차적으로 24-bit 데이터가 전송되지만 사람의 눈으로 보기에는 여러개의 color LED가 동시에 켜지고 커지는 것처럼 보이게 됩니다.



아래 그림에서와 첫번째 WS2811 소자는 연속적으로 들어오는 데이터의 첫번째 24-bit 데이터를 내부 data latch에 래치시키고, 나머지 후속되는 데이터는 다음 WS2811 소자로 보내게 됩니다. 또한 두번째 WS2811 소자도 자신에게 도달하는 첫번째 24-bit 데이터를 취하고 나머지 후속되는 데이터를 세번째 WS2811 소자로 보내지며, casecade로 연결된 소자들이 이를 반복하게 됩니다.



위 그림에서와 같이 cascade로 연결된 color LED를 실장한 WS2811 소자는 차례로 D1, D2, D3, ...라고 하면 시간에 따른 데이터의 흐름을 도식적으로 보인 것입니다. 



데이터 통신 방식은 800KHz에서 고주파 NRZ 프로토콜을 따르므로, 각 비트는 다음과 같이 코딩되어야 합니다. 타이밍은 엄격하지 않으며 +/-150ns의 마진이 있습니다.

    • Bit 0 - 1/3 of the period HIGH, 2/3 of the period LOW

    • Bit 1 - 2/3 of the period HIGH, 1/3 of the period LOW

    • Reset Stay LOW for at least 40 cycles (50us are about 40 periods of 1.25us)


데이터 전송은 RGB의 순서를 따르며 high bit가 먼저 전송됩니다.


http://fabioangeletti.altervista.org/blog/stm32-interface-ws2812b/?doing_wp_cron=1520571971.3953249454498291015625



Posted by Nature & Life