google-site-verification: google3bd66dd162ef54c7.html
FC2ブログ

チャーリープレクシング (Charlieplexing) の回路図

 今年のMake2018自作のLEDバッチを持って行ったので、それをネタにしていろいろな方からお話を聞くことが出来ました。そこで知ったのですが、たくさんのLEDを出来るだけ少ないポート数で点滅させたい場合は、チャーリープレクシングでやるのが定石のようです。

 実はその時はチャーリープレクシングを知らなかったので帰ってから調べて、なるほどと思いました。特に ikkei さんの書かれた多くの解説記事が参考になりました(charlieplexing ikkei で検索するといっぱい出てきます)。ちなみにikkeiさんとはMFT2018でお会いして資料まで頂きました。

 あと、最近の居酒屋ガレージ日記さんの、電波チェッカ用12LEDレベル表示回路と言う記事にも同じテクニックが解説されています。こちらでは、MICROCHIP のアプリケーションノートの、Complementary LED Drive というタイトルが紹介されています。

 チャーリープレクシングというネーミングは、「チャーリーさんが考案した、少ないピン数でLEDをマルチプレクスして光らせる方法」というところだと思います。でも、人の名前を使うより、MICROCHIPのドキュメントのように Complementary LED Drive と、その技術の名前で呼んだ方がしっくりきます。

 ともかく、そんなことを考えながらチャーリープレクシングの回路について、自分なりにおさらいしてみました。

▼4ポートチャーリープレクシングの回路図
チャーリープレクシング
 4ポートあればこの接続で12個のLEDを光らせることが出来ます。これ、いきなり見せられるとその配線ルールを発見するのにちょっと時間がかかりますが、要はポートの全てのペアの間に逆並列にLEDが入っています。

 チャーリープレクシングで表示出来るLEDとポートの数(N)の間には、LED数 = N*(N-1) の関係があります。これを直感的に理解し易い図で示すと、次のようになります。

▼多角形の頂点を結ぶ線
ピン数に対する組み合わせ数
 頂点の数がピン数で、その間を結ぶ線の数がペアの数。一つの線にLEDを2個逆並列で接続するので、接続出来るLEDの数は線の数の2倍ということになります。(4ピンなら線の数は6本なので、LEDの数はその2倍の12個)

 数についてはこの考え方が判り易いと思います。ちなみに、順列組み合わせが得意な方なら、コンビネーションを使って 2 x 4C2とやって求める方法もあります。

 あとは配線をどうするかですが、ここは回路図をマトリクス形式で書いた方が、見通しが良くなることが多いです。

▼マトリクス形式で書く
格子状配線とその変形
 左がマトリクス形式で書いた回路図で、この記事の最初の回路図と同じ接続になっています。これでもいいのですが、交差した位置にLEDが無いので、この配置のまま表示に使うと、隙間が出来てよろしくありません。

 そこで、右の図のように右上のLEDを下にシフトさせれば隙間は無くなります。ただこの場合、半分のLEDの向きを逆にする必要があります。これ、間違えないように注意して実装すればいいのですが、細かいことを言うとLEDの光の中心がパッケージに対して上下対称に出ている保証は無いので表示ムラが出そうです。ということでちょっと心配なやり方です。
 
 もっとうまい配線方法が無いかと思って調べてみたら、ありました。もっと大きなサイズの、Spark Fun LED Arrey -8x7の配線方法です。

▼SparkFun LED Arrey - 8x7 の回路図
8x7 チャーリープレクシング
 これは SparkFun のweb にある schematics を書き直したものです。これならLEDの向きは全部同じになり、配線も判り易いです。

◆ダイナミック表示に伴う明るさの低下
 チャーリープレクシングではダイナミック点灯に伴い明るさが下がります。でも最近のLEDの発光効率は高いので、この問題は起きにくくなっていると思います。

 ちなみに、上のSparkFun LED Arrey - 8x7 ではLEDの電流制限抵抗は82Ωで、これが両側に入るので合計164Ωということになります。これを1/56のデューティで点灯すると、等価的な電流制限抵抗は9.2kΩなので何とか許せる範囲だと思います。

 あと、電源の電圧とLEDのVfのカーブ、あとポート出力のVI特性などを注意深く選んで、電流制限抵抗無しという使い方もあります。この場合、LED単位では無くライン単位に駆動する手もあると思います。

◆まとめ
 チャーリープレクシングについてまとめてみました。なかなか面白い回路だと思いますが、トライステートのドライバーの出力の使い方としては当たり前で、個人名を付けるほどユニークなアイディアかと言われると、ちょっと疑問です。

 この記事の最初の方にちょっと書いたように、例えば「オールペア・コンプリメンタリー駆動方式」などと、使っている技術の名前で命名した方が、判り易かった気がします。

化学反応式CO2発生装置、ソフト解説編

 水草水槽用のCO2発生装置の話のたぶん最終回、前回の回路解説編に引き続き、今回はソフト解説編です。ソフト解説編と言っても実際は機能解説編のような感じで書き進めていきたいと思います。

 先にこの装置の動作をおさらいしておきます。

 CO2の発生量はチューブポンプの駆動時間と駆動間隔で制御しています。昼間はCO2を発生させ、夜間は止めるのですが、完全に止めてしまうと気温の変化などの影響で反応槽が負圧になることがあって、不具合の原因になりかねません。そこで、夜間も低頻度でCO2の発生を行っています。

 また、朝になってCO2の発生を開始してもなかなか水槽内のストーンから気泡が出ません。こういう現象が発生する原因はいろいろ考えられますが、対症療法として朝の起動時にまとまった量のCO2を発生させて立ち上がりを早くしています。

 こういう機能はマイコンのソフトで行っていますが、その運転状態の表示や各種設定値の変更は操作パネルから行います。以下、その操作方法を説明します。

◆運転中
 運転中は操作パネルは次のような表示になっています。

▼表示・操作パネル
表示操作パネル
 先頭にRunと表示されているのが運転状態です。運転状態の場合、反応容器付近に付けた赤色LEDが1秒周期でフラッシュします。

 この写真の 74s というのは次のショットまでの残り時間(秒)で、120sはショットの間隔を表します。つまり、120秒間隔でショットを行う設定になっていて、次のショットまでの残り時間は74秒ということになります。なお、夜間はショットの間隔を大きくしますが、その内容は自動的に表示に反映されます。

運転状態から操作できるのは1 Shotボタンと、Select ボタンの二つです。

 1 Shot ボタンを押すと、設定された時間だけポンプを動かしCO2ガスの発生を行います。押しっぱなしにすると1秒間隔でポンプを動かします。つまりマニュアルでCO2を発せさせることが出来る訳で、動作確認などに便利です。なお、このポンプの駆動時間(ショットの時間)は自動運転の時も同じです。

 Selectボタンを押すと各種運転パラメーターの表示・変更画面に入ります。

◆運転パラメーター表示・変更画面
 この画面では1行目にパラメーターの説明、二行目にその値が表示されます。値は+-ボタンで増減し、Selectを押すと値が確定されて、次のパラメータに移動します。なお変更した値は内部のEEPROMに保存され、電源を入れ直しても覚えています。

 以下、順番に内容を説明します。

▼Shot Tw (ショットパルス幅)
ショット時間
 1ショット当たりのモーター駆動時間です。値の範囲は5~100msで5msステップで設定可能です。なお、ここに小さな値を入れるとポンプが追従できない恐れがあります。実際に送液されているかどうか、1 Shot ボタンを使って確認すると良いでしょう。

▼DayInt. (デイ インターバル)
ショット間隔(昼間)
 昼間のショット間隔です。値の範囲は10~990秒で、10秒ステップで設定可能です。

▼NightInt (ナイト インターバル)
ショット間隔(夜間)
 夜間のショット間隔です。値の範囲は100~9900秒で、100秒ステップで設定可能です。

▼SS N (スタートショット ナンバー)
スタートショット回数
 朝に行うスタートショットのショット数です。値の範囲は0~30で、刻みは1です。なお0を指定した場合はスタートショットは行いません。

▼SS Int (スタートショット インターバル)
スタートショットインターバル
 スタートショットのショット間隔です。値の範囲は200ms~2000msで、刻みは100msです。

 最後のSS Int の画面で Selet を押すとRunの表示に戻り運転が再開されます。なお、Runの画面に戻さないと自動運転は行われないので注意。(この場合、1秒間隔でフラッシュする赤色LEDも光りません)

◆プログラム
 CO2発生装置のスケッチ (20180928Co2PumpDrive.txt) (Shift JIS エンコード、拡張子はtxt になっています)

 コメントを多めに入れてあるので詳しい説明は省略しますが、以下のようなところがポイントだと思います。
1) EEPROMに変な値が入っていたらデフォルト値に修正。(まっさらなCPUは全データーが0xFFになっています)
2) I2C液晶のライブラリはI2CLiquidCrystal を使用。このあたりは、この記事が参考になるかも
3) 液晶表示の書式指定に sprintf を使用。
4) 液晶画面とタクトスイッチを使った値の入力用に、LcdRW関数を作成(233行目付近)

 居酒屋ガレージ日記さんの記事によると、sprintf よりもっと使い易い、vsprintf や vsnprintf なんてのがあるそうなのですが、まずはsprintf を使ってみました。

 LcdRW関数は汎用性が高いので今後使い道がありそうです。ボタンを離した時に数値が変わる仕様がイマイチですが、、

◆まとめ
 水草の成長が悪いのが何とかならないものか、と思ったことがきっかけであれこれやってきた訳ですが、結果として良い物が作れて良かったです。マイコン制御の反応式CO2添加装置なんてなかなか無いと思います。うまいセンサーがあれば、CO2のガス圧をフィードバックなんてのも面白そうです。

 これで反応式のCO2発生装置の一連の記事はいったん終了です。しばらくこのまま運転して様子を見たいと思います。

化学反応式CO2発生装置、回路解説編

 水草水槽用に作ったCO2発生装置の話、前回の構造解説編に続き、今回は回路解説編です。

▼発生装置の内部
反応式CO2発生装置
 カバーを外して制御回路が見える状態にした写真です。

▼回路図(図をクリックで別窓に拡大図)
20181007SchemCO2.png
 左半分がプリント基板で、右上が操作表示部、右下がモーター制御部です。以下はポイントとなる項目の説明です。

1) CPUのATmega328PはArduino でプログラムを書き込んでいます。
2) 電源入力コネクタの後ろに入っているQ3は、逆接保護回路です。(逆挿し出来るコネクタなので、念のために対策しておきました)
3) Q1とQ2はデジトラのFET版のような物で、在庫が大量にあるので使いました。
4) CN2とCN3のNCになっているピンは折って(詰め物をして)逆差し出来ないようにしています。
5) SW1がAutoの状態ではC51に貯まったエネルギーでポンプのモーターを廻しています。こうすることで、プログラムの暴走や、ドライバトランジスタ(Q51)がショートしても、モーターが廻り続ることが無くて安全です。(モーターが廻り続けると、短時間に大量のCO2が発生するので危険です)
6) SW1とSW2は片側跳ね返りのトグルスイッチを使い、無操作時にはAuto とForward になります。こうしておけばスイッチの戻し忘れを防止出来ます。
7) LEDの点灯方法に一貫性が無いのは、既に釣った部分との関係なので、ご容赦ください。

 以下実際の回路の様子を見て行きます。

▼プリント基板(部品面)
制御基板
 右上から反時計回りに、電源コネクタ、昼夜信号コネクタ、モータードライバコネクタ、操作表示表示コネクタ、ICPコネクタです。

▼プリント基板(配線面)
基板裏面
 基板にSunhayato 表示がありますが、秋月のC基板とほぼ同じ物です。

▼モータードライバ
モータードライバ
 回路図の右下の部分をまとめてあります。なお、TO-220のパッケージがパワーFETの2SK2232です。

▼操作パネルの裏面
操作パネル裏面
 アルミ板に8文字2行のI2Cキャラクタ液晶と、タクトスイッチを取り付けて、ケースにホットボンドで固定しています。

◆まとめ
 回路を考えたり試作するより、最終形に仕上げる方がずっと時間が掛かります。でも手を掛けただけ完成度は上がるので、手抜きは出来ません。とは言っても見えない所で機能に影響の無い部分は思いっきり手抜きしています。

 次回の記事はソフト解説編を予定しています。
カレンダー
09 | 2018/10 | 11
- 1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31 - - -
プロフィール

ラジオペンチ

Author:ラジオペンチ
電子工作を中心としたブログです。たまに近所(東京都稲城市)の話題など。60過ぎて視力や器用さの衰えを感じつつ日々挑戦!
コメントを入れる時にメールアドレスの記入は不要です。なお、非公開コメントは受け付けていません。

記事が気に入ったらクリックを!
最新記事
カテゴリ
最新コメント
リンク
FC2カウンター
検索フォーム
月別アーカイブ
RSSリンクの表示
QRコード
QRコード