Arduinoの覚書

自分の備忘録です。Arduino以外もあります。

ATOM Lite 6.じわっとPWM点滅(ledcWrite)


(下書き)

外付けLED 6個をPWM調光にて点滅させる。

回路

前記事と同様に6回路分接続する。

(ATOM LiteのG22)---(アノード [LED-C] カソード)---(330Ω)---(GND)

(ATOM LiteのG19)---(アノード [LED-D] カソード)---(330Ω)---(GND)

(ATOM LiteのG23)---(アノード [LED-E] カソード)---(330Ω)---(GND)

(ATOM LiteのG33)---(アノード [LED-F] カソード)---(330Ω)---(GND)

(ATOM LiteのG21)---(アノード [LED-G] カソード)---(330Ω)---(GND)

(ATOM LiteのG25)---(アノード [LEDH] カソード)---(330Ω)---(GND)

 

必要なもの

前記事と同じ。

  • ATOM Lite (スイッチサイエンス)
  • ブレッドボードx1 (秋月電子)
    (2+5+5+2)x25=350穴以上 200円程度

f:id:Arduino:20201202175602j:plain

  • ブレッドボード用ジャンパー線 オス-オス (秋月電子)
    10cm程度数本 長さいろいろ60本で220円

f:id:Arduino:20201202180246j:plain

  • ピンヘッダ 2.54mmビッチx1列 5pinx1, 4pinx1 (秋月電子)
    長pinをハサミで切る。1円/pin程度

f:id:Arduino:20201202180300j:plain

  • LEDx1 (秋月電子) 120円
    OSX10201-GYR1 (OptoSupply) 10個のLEDが一体化
    2.54mmビッチ 20pin
    角の切欠側が1番pinでLED-Aのアノード、20番pinがそのカソード
    LED-A~LED-Eの5個は黄緑色
    LED-F~LED-Hの3個は黄色
    LED-I~LED-Jの2個は赤色
    VF = 2.1Vtyp, 2.5Vmax (IF = 20mA時)
    IF = 25mAmax
    Iv = 35mcd (IF = 20mA時)
    写真は次の記事参照
  • 抵抗 330Ωx1 (Amazon)
    橙-橙-茶-金は、3-3-1-5 → 33x10^1±5% = 330Ω±5%

f:id:Arduino:20201202180320j:plain

動作

外付けのLED 6個がそれぞれ別々にじわっと点滅する。

PWMの等間隔変化では、暗い時の変化が大きく、明るい時はほとんど変わっていないので、極端に言うと、ほぼ明るく、一瞬消灯する感じです。

フェヒナーの法則

Wikipediaより、刺激量の強度Rが変化する時、これに対応する感覚量Eは
 E = C x log R ・・・(1)
の関係となる。ここでCは定数である。つまり心理的な感覚量は、刺激の強度ではなく、その対数に比例して知覚される。たとえば、100の刺激が倍に増加して200になるときの感覚量と、200の刺激が倍に増加して400になるときの感覚量の変化は等しい。

 

感覚的な光の強さEは、最大値をEmax、r=0~1とすれば
 E = Emax x r
また、実際の刺激量である明るさRは、最大値をRmax、DT=0~1とすれば
 R = Rmax x DT
となるので、(1)式は、
 Emax x r = C x log(Rmax x DT) ・・・(2)
DT = 1の時、r = 1なので
 Emax = C x log Rmax
 ∴ C = Emax / log Rmax ・・・(3)

また、DT = 0~1をDT2 = 0~bitMaxに変換すると
 DT : DT2 = 1 : bitMax
 ∴DT = DT2 / bitMax ・・・(4)
(3)式と(4)式を(2)式に入れて
 Emax x r = Emax / log Rmax x log(Rmax x DT2 / bitMax)
 ∴log(Rmax x DT2 / bitMax) = r x log Rmax ・・・(5)

ここでlogの公式
 log(A / B) = log A - log B
 log(A x B) = log A + log B
より(5)式は、
 log Rmax + log DT2 - log bitMax = r x log Rmax
 log DT2 = r x log Rmax - log Rmax + log bitMax
      = (r - 1)x log Rmax + log bitMax
logを常用対数で計算すると
 DT2 = 10 ^ ((r - 1)x log Rmax + log bitMax) ・・・(8)
感覚的な光の強さを等間隔で変化させる(r=0~1)には、実際のPWMのデューティ(DT2=0~bitMax)を上式で変化させればよい。ただし、Rmax値は実験にて決めました。

 

f:id:Arduino:20201202221559j:plain

スケッチ




<― 前へ

目次へ

次へ ―>




以上