見出し画像

シーケンシャルLEDフラッシャー その4

はじめに

レベルメーターIC LA2284Aを用いたシーケンシャルLEDフラッシャーの製作記事の4回目です。前回の記事では、ArudinoのanalogWrite関数による出力は、本当に電圧を変化させているわけではなく、PWM(Pulse Width Modulation)制御であるということを紹介しました。具体的には、5Vの出力を繰り返しオンオフしているだけで、オフの時間が長いほど見かけの電圧が下がって見えるというものです。しかし、LA2284Aにはオンオフの繰り返しにしか見えません。そこで、PWM制御に細工をして、ArudinoでLA2284Aを制御をしようというのが今回の記事です。

PWM制御

図にするとこんな感じです。

オン:オフ = 1:1で見た目は平均値の2.5V
オン:オフ = 1:3で見た目は平均値の1.25V

オン(この場合5V)の時間が長いほど見た目の電圧が高くなり、短いほど低くなります。そして、オンから次のオンの時間までは固定、すなわち周波数は一定で、オンオフの比率(デューティ比)が変わります。長い目で見た時の平均値を出力とみなすわけです。

Arudinoの出力の周波数は490Hzです。490kHzではなくて490Hzです。こんな低い周波数の信号を、さらに長い目で見て時間平均でとらえてほしいなどというお願いは、立派なICであるLA2284Aには通じません。LA2284Aは、パルスをそのまま真に受けてしまいます。

では、なぜこんな機能が実装されているのかという話になりますが、使える分野もあるのです。例えば、LEDは490Hzで点滅していても、人間の目には平均値くらいの値で連続して点灯しているように見えます。また、一般的なモーターは、慣性のため急に止まったり動いたりできません。パルスで駆動しても、実用上は平均値に比例した一定の速度で回転します。

RC直列回路

PWM制御がパルスにしか見えないのであれば、連続的な出力にするしかありません。そこで登場するのがRC直列回路です。Resistor(抵抗)とCapacitor(コンデンサ)をグランドに向けて直列に接続しているのでRC直列回路です。具体的にはこんな感じです。

RC直列回路

こうすることであら不思議。時間平均の電圧を得ることができます。そうなる理由は、抵抗やコンデンサの時間応答特性で説明できますが、長くなるのでここでは省略します。例によってブラックボックス化です。

抵抗とコンデンサは適切な値にしなくてはなりません。抵抗値×コンデンサの容量が小さいと、平均値に落ち着くまでの時間は短くなりますが、落ち着いたあとのばらつきが大きくなります。逆に、抵抗値×コンデンサの容量を大きくとると、ほぼ一定の値に落ち着きますが、落ち着くまでの時間が長くなります。

表計算ソフト等で計算できないこともないですが、ここはインターネットで公開されているツールを使ってみましょう。

Arudinoの出力の周波数は490Hz、電圧は5Vです。デューティ比1:1で出力して、2.5Vを目指す場合を計算してみます。

上記のツールで、fPWM=490Hz、Duty Step 0%→50%、VL =0V、VH=5Vに設定します。これでanalogWrite(pin, 127)を模したことになります。ためしに、CR時定数の設定にチェックを入れて、R=500Ω、C=10μFとして計算してみましょう。

R=500Ω、C=10μF

立ち上がったあとの波形がかなりギザギザしています。計算結果には、最大リップル電圧が0.52991731579392Vとありますので、ギザギザの山と谷の差分は530mV程度あるようです。これではちょっと使い物になりません。

それでは、R=10kΩ、C=100μFで計算してみます。

R=10kΩ、C=100μF

立ち上がり後の波形はかなりきれいになりました。最大リップル電圧は 0.0026595742172576V、つまり3mV弱しかありません。ですが、立ち上がり時間 0%→90%が2.302585092994secもあります。これでは、Arduinoが電圧を出力してからLA2284Aが応答するまで秒単位で遅延してしまいます。

R=1kΩ、C=22μFではどうでしょうか。

R=1kΩ、C=22μF

最大リップル電圧は0.11593468957979V、立ち上がり時間 0%→90% は0.050656872045869secです。リップルが120mVであれば、0Vから4V程度をを5段階で制御する今回のLEDフラッシャーには使えそうです。立ち上がり時間も50msecなら十分短いといえるでしょう。抵抗値とコンデンサの容量はこれで決まりです。

というわけで、R=1kΩ、C=22μFのRC直列回路を、Arduinoからの出力と電圧変換回路の間に挟めば、PMW制御のパルス波形が時間平均での連続的な出力になり、LA2284Aを制御できそうです。

おわりに

さて、そろそろなにをつくっていたのか忘れそうなので、思い出してみましょう。そうです。シーケンシャルLEDフラッシャーをつくっていたのです。5個のLEDを一列に並べて、流れるウインカーのように点灯させようとしているのです。次の記事では、LA2284AへのLEDの接続について紹介します。


この記事が気に入ったらサポートをしてみませんか?