SK6812の電圧や信号の特性についての調査

# SK6812の性能テスト

フルカラー RGB LED の SK6812 について、実際に使うとデータシートの数字から大幅に離れた電圧や信号を使っても動作したりするので、詳しく物理的な特性を調べてみた。

## SK6812　

マイコンを内蔵したフルカラーLED

ピン配置及びピンの機能は以下の通りである

<img width="208" alt="PIn配置.PNG" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/266247/9717bdec-15b7-3d95-b4dc-0e7ae3ee97c3.png">


<div style="text-align: center;"> 	図 1 SK6812ピン配置    </div>
<div style="text-align: center;"> 	表 1　ピン番号と機能  </div>

| ピン番号 | 名称 | 機能               |
| -------- | ---- | ------------------ |
| 1        | VDD  | LEDへの電源供給    |
| 2        | DOUT | 制御信号の出力ピン |
| 3        | VSS  | GND                |
| 4        | DIN  | 制御信号の入力ピン |

 

## 制御方法

SK6812のDINにRGB各8bitからなる24bitの信号入力することで点灯制御が可能

24bitデータの構造は図 2のようになっている．データを転送する際はG７から順に転送を行う．

<img width="434" alt="スライド5.PNG" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/266247/334be9b5-4019-7498-24de-583e02c2b59e.png">


<div style="text-align: center;"> 	図 2　データ構造 </div>

### データの送信方法

　制御信号の送信元に近いSK6812から順にピクセル1，ピクセル2，ピクセル3，…とする．ピクセル毎24bitの制御信号をつなげて送信する．送信されてきた制御信号をピクセル1は先頭24bitのデータを抜き出し，残りを次のピクセルに2に送信する．ピクセル2も先頭24bitのデータを抜き出し次のピクセルに送信する．制御信号が80μs以上途絶えた際は以前の制御信号はリフレッシュされ，次の制御信号はピクセル1から順に割り当てられる．

### 制御信号

制御信号は，1bitのデータの送信時間を1.25μsとして，この時間内にHIGHとLOWを変化させる．その時，HIGH＝0.3μs，LOW＝0.9μsとしたとき’0’，HIGH=0.6μs，LOW＝0.6μsで’1’となる．

RESET信号は80μs以上のLOW信号により認識される．

<img width="555" alt="信号.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/266247/575f911f-79c8-fbaa-7f85-c478ac089e01.png">


<div style="text-align: center;">
  図 3 信号'0'及び信号'1' 
</div>

## 性能テスト

### “0”と”1”を識別する境界の調査 

LEDを制御する際の制約をより厳密にするために”0”と認識される信号と”1”と認識される信号の境界の調査を行った．

#### 実験方法

RGB値をR＝0，G＝0，B＝0で与える． SK6812が“0”と認識するHIGH＝0.3125μs，LOW=0.9375μsからHIGHの時間を1クロックずつ増やしていく． 16MHz動作のArduino pro miniで実験したため1クロックは0.0625μsである．

#### 実験結果

実験を行った結果を表 2に示す．HIGHが0.5625μsの際にLEDが白く点灯することが確認された．そのため，HIGH=0.5μs以下で”0”， HIGH=0.5625μs以上で”1”と認識されることが分かった．

<div style="text-align: center;">
  表 2　認識される信号の境界の結果
</div>

| HIGH(μs) | LOW(μs) | LEDの状態 |
| -------- | ------- | --------- |
| 0.3125   | 0.9375  | 消灯      |
| 0.375    | 0.875   | 消灯      |
| 0.4375   | 0.8125  | 消灯      |
| 0.5      | 0.75    | 消灯      |
| 0.5625   | 0.6875  | 点灯      |

![スライド6.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/266247/16e3e8b5-1537-56bc-067c-0049ed338bcf.png)


<div style="text-align: center;">
  図 4　HIGH=0.3125μs時の制御信号波形とLEDの状態
</div>

![スライド7.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/266247/0afb7214-be1f-4780-d2b9-e724ec8d7602.png)


<div style="text-align: center;">
   図 5　HIGH=0.5625μs時の制御信号波形とLEDの状態
</div>

### 信号“1”のHIGHの比率を大きくした際の認識の変化の調査

　LEDを制御する際の制約をより厳密にするために”1”と認識される信号のHIGHの比率を上げていった際にどう認識されるのか調査を行った．

#### 実験方法

　RGB値をR=00100000(2進数)，G=0，B＝0で与える． SK6812が“1”と認識するHIGH＝0.625μs，LOW＝0.625μsからHIGHの比率を1クロックずつ増やしていく． 16MHz動作のArduino pro miniで実験したため1クロックは0.0625μsである．

#### 実験結果

　実験を行った結果を表 3に示す．実験に使用したアセンブラの仕様上HIGHを1.00μsまでしか長くすることができなかったが，色，光量ともに変化は確認できなかった．そのため，信号”1”のHIGHを1.00μsまで長くしても問題ないことが確認された．

<div style="text-align: center;">
    表 3 HIGHの比率を高くした際の認識の変化の結果
</div>

| HIGH(μs) | LOW(μs) | LEDの状態           |
| -------- | ------- | ------------------- |
| 0.625    | 0.625   | 点灯(LED点灯色：赤) |
| ～       | ～      | ～                  |
| 1.00     | 0.25    | 点灯(LED点灯色：赤) |

![スライド8.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/266247/d4ae1964-a2eb-fc0b-f75f-29f05ae279ac.png)


<div style="text-align: center;">
    図 6 HIGH=0.625μs時の制御信号波形とLEDの状態
</div>

![スライド9.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/266247/4f76fdc6-75d2-ee73-89bb-dce990fed37d.png)


<div style="text-align: center;">
図 7 HIGH=1.0μs時の制御信号波形とLEDの状態
</div>

### RESET信号の必要時間の調査

一度，LEDの制御信号を与えなおす際にRESET信号としてなにも信号を与えない時間をデータシートでは80μs必要とする．信号のRESETを安定して行うためのRESET信号の長さの調査を行った．

#### 実験方法

　2つのLEDを点灯させる信号を送信する．LEDごとの信号の間にRESET信号挟む．このRESET信号の長さを変化させ調査．RESET信号の認識が不安定な信号長の際の挙動を目視しやすくするため点灯信号は赤，緑，青と順々に点灯させた．

#### 実験結果

　実験結果を表 4に示す

<div style="text-align: center;">
   表 4 RESET信号の時間を変化させた際の結果
</div>

| RESET信号(μs) | LEDの状態                      |
| ------------- | ------------------------------ |
| ~50           | 2つのLEDが点灯                 |
| 50～70        | 1つ目のLED点灯，2つ目のLED点滅 |
| 70~           | 1番目のLED点灯，2番目のLED消灯 |

RESET信号が50μs以下では認識せず，50μs以上70μs未満では2番目のLEDは点滅しており，RESET信号を認識できているときとできていないときがあるため点滅していると考えられる． 70μsでは1番目のLEDのみ点灯しており点滅も確認されなかったため正常に動作していることが確認された．そのため，正常にLEDを制御するためにはRESET信号は70μs以上の時間を必要とする．

　

### 制御に必要な信号の電圧値の調査

　SK6812の電源電圧を5Vとし，制御信号の電圧を低下させた際にどの程度の電圧でも制御が可能なのかの調査を行った．

#### 実験方法

　LEDに与えるRGB値は赤，緑，青と順々に点灯するように与える(視覚的には白く発光しているように見える)．FXMA2102を使用した電圧レベル変換モジュールを使用して制御信号の電圧を変化させる．制御信号の電圧を５Vから０Vに向け低下させていく．

#### 実験結果

制御信号を2.7Vに変化させた際にLEDの点灯色が制御信号を認識しなくなったタイミングでの色で変化しなくなっていることが確認できた．そのためSK6812の電源電圧を５Vとして動作させた際は2.7V以上の電圧の制御信号で制御を行う必要がある．

![スライド12.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/266247/03f35f92-2ef9-ed85-b8c1-f7a43a528e26.png)


<div style="text-align: center;">   図 8 制御信号5V時のLEDの状態</div>

![スライド13.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/266247/e54ddd26-c637-454f-7395-a67a57f1d379.png)


<div style="text-align: center;">   図 9 制御信号2.7V時のLEDの状態</div>

### SK6812の電圧値を変化させた際の信号電圧の変化の調査

　SK6812の電源電圧と制御信号の電圧低下させていった際のSK6812の挙動の調査を行った．

#### 実験方法

　LEDに与えるRGB値は赤，緑，青と順々に点灯するように与える(視覚的には白く発光しているように見える)．FXMA2102を使用した電圧レベル変換モジュールを使用して電源電圧と制御信号の電圧を変化させる．電源電圧と制御信号の電圧を５Vから０Vに向け低下させていく．

#### 実験結果

　電源電圧と制御信号を2.7V以下にした際もLEDは正常に動作していることを確認．しかし，青LEDは約2.5V，緑LEDは約２.0V，赤LEDは約1.9Vで光量が確認できなくなった．2.7V以下に電圧を落としたとしてもSK6812は制御信号を認識して動作しているが，LEDを点灯させるための電圧が足りなくなっていると考える．

![スライド14.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/266247/7b1d3e5d-c114-44ff-4c7b-c4621c7160b8.png)


<div style="text-align: center;">   図 10 電源電圧，制御信号5V時のLEDの状態</div>

![スライド15.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/266247/74583c6e-f414-fe1d-8851-7c4b26ec9b80.png)


<div style="text-align: center;">   図 11 電源電圧，制御信号2.5V時のLEDの状態</div>

![スライド16.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/266247/e111fa72-723a-aa09-0322-923f822c927f.png)


<div style="text-align: center;">   図 12 電源電圧，制御信号2.0V時のLEDの状態</div>

![スライド17.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/266247/178e5a52-03e1-b929-c1f1-53fef5f98afa.png)


<div style="text-align: center;">   図 13 電源電圧，制御信号1.9V時のLEDの状態</div>

(団員F)