第4回 HDDアクセスレベルメーターの作成!

その昔、BeBox(*1)というマシンがあった。
このマシンのすごいところは、なんといっても「CPU負荷率メータの搭載」であろう。
CPUはデュアルCPUマシンなので2個搭載している。CPU負荷率メータはなんとマシン正面パネルの
両側面に下から上までハードウェアで搭載しているのである。
つまり、CPU負荷が上がればマシンの側面のLEDメーターがぐんぐん上昇していくという、
非常にうれしいギミックを搭載(※2)していたのであった。

そして月日は流れ…
我が家にPICライタがやってきた。(※3)
PICとは、MICROCHIP社の1チップマイコンである。CPUコア、メモリ、ROM、入出力I/Oのすべてが
1チップに収まっているので、外部に外付けする部品としては、レゾネータ(※4)くらいである。

ということで、負荷率メーターを作ることにする。が、CPUの負荷率なんて、外部から知るためには、
温度上昇や流れ込む電流でも監視するほか無いので、あっさりとあきらめる。
その他になにかないだろうかと考える事しばし。
いいものがある。いろいろとLEDを交換(※5)していたHDDアクセスランプだ。

ということで、PICの中でも非常に便利(※6)なPIC16F84Aを用意した。
こいつは18ピンながらも13ポートの入出力を持つすごい奴だ。
今回はそのうち出力に8つを使用し、アクセス頻度に応じて8つのLEDが次々と点灯するというものを
作成することにした。アクセス頻度が多ければそれだけ上位のLEDが点灯すると言うものである。

ハードウェアのインプリメントは大体終わったので、次にPICマイコンで動作するソフトウェアにかかる。
ソフトはなれていないRISCライクなアセンブラであるので、どーにも納得できない命令があったりした
が、命令の詳細やハードウェアの詳細を読めば納得の行くものであった。(※7)

ということで早速98と接続(※8)

が、正常に動作しない。
まあ、そんなものか。LEDドライブ電圧が低くてデジタル回路のスレッショルドレベルを
満たせないのかもしれない。いそいそとトランジスタを用意して、LEDドライブ信号は適当な
抵抗をかましてベースに突っ込む。後は制限抵抗付きのコレクタからPICマイコンへ信号をつ
なげばOKであろう。
が、
おかしい。どーやっても出力を取得することが出来ない。
プログラムの関係上、点灯状態として取得されっぱなしなので、出力LEDは点灯したままである。
あれこれと実験していると、突如LEDが消える。
やばい。
とっさにそう思い、電源を引っこ抜き、PICに触れてみると、「あちょー」(※9)という状態であった。
原因はわかっている。基板だけで実験しているときは、電池を3本使用して、3.8V(ちょっと下がっている)
で実験していた。今回は5Vで動作しているので、LEDの制限抵抗値が低く、明るかったのだ。
やばいかな?と思っていたのだが、他のチェックに気を取られているうちに、PICがオーバードライブ状態で
昇天してしまったようだ。プログラムもできない状態である。

ここで素直にマシンのLED出力がどういった状態で出力されているか確認することにした。
マシンが起動するとき、LEDはデバイスの認識がすむまで点灯したままの状態になる。
この点灯している隙にテスタを当てて調べる。
5Vだ。
そのまましばらくほっておく。
0Vになった。
という事は、大してトランジスタも考慮する必要は無いという事であるが…
またあれこれとやってみるが状況は一向に良くならない。
識者から「とりあえずトランジスタの先にLEDをつけて確認してみたらどうだ?」
との事を聞いたので、早速やってみると…
つかない

「なんでやねん!」

と言うことで再びテスタを当ててみる。
するといつでも5Vであった。
「え?なに?引込み専用?え?ギャグ?」(※10)
おかしいなぁ…たしかに0Vになったんだけどなぁ…(※11)
まあ、こうなったからには回路を考えねばならない。ということで、詳しい奴に聞くことにする。
「フォトカプラを使え」
その手があったか。(※12)
そういえばLEDを置き換えるのだから、中身はLEDのフォトカプラはうってつけである。

実験回路基板をせこせこと作って行き、ここで大きな問題が発覚した!
そう、どー考えたって、前面パネルのHDDアクセスランプ部分に、LEDを8個も搭載できるスペースはないのである!(※13)

そこで、3色LEDを使用して、下位3ビットの3つのLEDを使用することにしてみた。
が、3原色LEDは非常に高価である。そのため、今回はRed,Green,Blueの3つのLEDを使用する。
3つしか付けないのだから、アクセスレベル8段階によって、8色に変化させてもいいかもしれない
のだが、これは3原色LEDが手に入ってからでいいであろう。

いろいろとやっていた実験基板
アクセス頻度に応じてLED点灯する
LEDは3つの原色LEDを束ねたものを接続


さて、次回は本番用基板の作成である。


*1
BeOSを搭載したすごい奴。
なんというか、結局は流行らなかった。
恐らくその一番大きな原因は98互換機ではなかったと言うことであろう(嘘)

※2
ちなみに、結局BeBoxは一般人が手に入れられる前に姿を消してしまい、そのCPU負荷率メータは
幻となってしまった…のだが、後にでたBeOSにはきちんとソフトウェアのCPU負荷率メーターが搭載されていた。
もちろんデュアル環境では2つ出るとか。

※3
あいかわらずどこかで聞いたフレーズである。ま、細かい事は気にしない。
別にもらってきたわけではないのだが、いろいろとそそのかされて、秋月電子からキットを購入。
早速組み立てる。

※4
共振器という奴。今回は便利なセラロックを使用。クリスタルのほか、共振用コンデンサも内蔵済み。
とりあえず10MHzを入れた。もっと動作タイミングをシビアにするために20MHzも用意しているのだが、
実験基板なので温存。

※5
アタッチメントであるから、交換には抜いて、差して終わりというお手軽さである。(詳しくは過去の
98改造講座を参照のこと)
現在いろいろな色を経て、白色。

※6
何が便利かというと、入出力ピン数の多さもさながら、内蔵しているプログラムメモリがFLASHである
というところが大きい。これがワンタイムだと失敗すれば終わりであるし、UVEPの場合は消去が面倒
なのである。

※7
そりゃそーなのだが、RISCライクな命令セットでは命令のパワーが小さい。
そのためサンプルプログラムではやたらとマクロがあったりとか、拡張命令を使っていたりとか、
非常にわかりづらいのである。ハードウェアの構成を知っていないと振り回されるかもしれない。
なんつーか命令が原形をとどめていないのでは…

※8
正確にいうとUIDE98の出力端子である。

※9
骨髄反射という奴だな。脳で判断してから駆動するのでは遅いので、信号を脳に伝達しながらも、
駆動信号を伝えるという奴だ。
早い話がえらい熱かったということである。

※10
某まんがの影響かもしれん。

※11
よくあることである。たんなる接触不良であったのだろうか。
とにかく動いたので深く考えないことにする。

※12
やはり餅は餅屋であるな。

※13
またかい!と言われそうなので、念のために言っておくが、うすうすとは気がついていた。
しかしながらよく見ると、本体前面パネルのHDDアクセスランプの上に、吸気口として、
ぼこぼこ穴があいているではないか。この部分に径の小さいLEDを後ろに設置する手もあるかも
しれない。この穴は結構大量にあいているので、全部にLEDを搭載して、電光掲示板のように
光らせることもできそうだか、面倒(今のところ意味無し)なのでやらない。






第5回 続HDDアクセスレベルメーターの作成!

前回は試作基板を作るところまでであった。
今回は本番用基板(※1)の作成と、実際に取りつけるところまでである。

回路設計は前回で終了しているので、今回は適当な大きさの基板に回路を詰め込んで作る。
試作基板は実験用なので無意味にでかかった。
というわけで、試作してみた(※2)。

基板の半分は将来的に別の回路を載せる時に使用するフューチャースペース(※3)として確保されている。
LED点灯情報信号線との接続は、今回はUIDE98とつないでいるのでそちらの基板から拝借する。
4つあるうち、端とその1つ内側の線をフォトカプラの入力に接続(※4)する。
回路自体の電源は、HDDなどの信号線から5Vラインだけを拝借して接続。
で、赤、青、緑の3つのLEDを使用(※5)したバージョンを用意。
全点灯状態
そして実際のマシンに搭載してみる。


アクセスに応じてLEDが変化する(※6)のはいいのだが、ここまでくるときちんとしたレベルメーター
用のLEDを搭載してみたくなるものである。

で、レベルメーター用LEDを購入してくる。

データシートは高いので購入せず、家に帰ってから配線を調べることにする。
で、調べてみたのだが、どうにも一部のLEDに共通ピンがあるようで、面倒な構造になっていた。
おそらく端子数を減らすためにそうなっているらしいのだが…(※7)
もっともLEDは12個あり、すべてを使わなくてもいいのだが、緑、黄色、赤と三色使ってくれているので
全部使用した方がよさそうだ。
都合の言い事にPIC16F84にはI/O端子数が13本ほどあるため、入力ピンと合わせてもなんとか
足りそうな数である。

とりあえず実際のデータシートを入手して端子がどーなっているかを確認しようとしたので、
ちょっくらいってデータシート封入版を購入しようとしたところ、見本用のデータシートが
あったので確認してみた。
すると

となっていた。案の定だ。
こうなっているからには、専用のドライブ用ICを購入するか、プログラムを大幅に書き換えて
ダイナミック点灯(※8)させて処理した方がいいのかもしれない。
面倒なので、当分現状のLEDで済ませて、ぼちぼち進めていく(※9)ことにする。
ところで、HDDアクセスランプが良くなったのはいいとして、その横にあるランプが寂しげである。
幸いにも基板にはまだ余裕がある。
ここを何とかしてみることにする。

つーわけでまた今度。



※1
やっぱり本番はガラエポであろ。

※2
なんだかチップの背が妙に高いのは、丸ピンのICをチップにはかせているからである。
基板には四角のコネクタが刺さっている。
理由は単に丸ピンの方が高価で頑丈抜き差しも容易であるためである。
PICライタと基板の間を何度も往復するために、物理的にICをぶっ壊さないため。

※3
こういった物は大体使われないのが一般的なのであるが。

※4
今回使用したフォトカプラは、1チップに2回路あるので、本体IDEの信号をいれてもかまわない。
その際にはプログラムの入力監視ピンをもう1つ追加しておけば点灯情報を複合させることも可能である。

※5
やっぱり3色LEDは高価であったため、購入してあったストックから用意。

※6
意味も無くデフラグやチェックディスクを実行(笑)

※7
余計な事をしてくれるものである。

※8
LEDは面倒なので現在はスタティック点灯させている。
ダイナミック点灯にすれば、消費電力は減るわ、仮想的にI/O端子数を増やすことも可能である。
LEDは電球に比べれば非常に低消費電力であると言えるが、1つ辺り20mAの消費電力でも、
マトリックスを構成して何千と言う数になるとその消費電力は馬鹿にならない。
そのため、通常は人間の目の残像を利用し、ずっと付けたままにして奥のではなく、点滅させて使用する。
残像としてあまり残らない目の端などで見ると点滅して見えるのはこのためである。
また、ラインごとに点滅させたりするため、ラインドライバのICは大電流に耐えなければならない。
最近は余り無くなったようだが、このラインドライバが破壊されると表示が一列単位で消えると言う状態になる。

※9
PICプログラマは2ndシリアルを使用しているのであるが、他に2ndシリアル専用の機器があるので
いちいちコネクタを交換しなければならないと言うのが大きい。






第6回 続続HDDアクセスレベルメーターの作成!

前回までのあらすじ
アクセスレベルメーターを作成したのだが、カラーLEDだということを差し引いても3つでは
いくらか寂しい事は否めなかった。そのため、アクセスレベルメーター用に、専用のLEDレベルメ
ーターを購入して来たのだが、その内部構造が面倒なことに驚く(※1)。
そのため、制御プログラムの変更でどうにかしようかと思ったのだが…

といったところまで進んでいたのだが、ここで少し気が変わった。
もっと便利でいいアイテムがあった(※2)のだ。
それは、LCD(※3)である。
16桁2行表示のものであるので、色々な状態もついでに表示できるのだ。
レベルメーターは黒い四角で表す事にする。

あれこれと紆余曲折(※4)は経たもののなんとか完成した。
で、これが完成基板とLCD。
上にLCDが搭載される関係上、余り背が高く出来ない
そのため、下駄2段ざしはあきらめた。
セラロックも足を曲げて取りつけてある。
なお、可変抵抗器はLCDのコントラスト調整用(※5)で、
SWは、LCD更新停止ボタン(※6)である。
手前のコネクタは電源供給コネクタで、右側のコネクタが
HDD信号線コネクタである。電源コネクタを下に付けた
は失敗かもしれない。基板のすわりが悪いのである

LCDは基板の左端にあるコネクタで接続される。
そして、電源を入れると初期化メッセージが表示される。
初期化メッセージ(※7)

というわけでアクセス中のスナップショット
Rbは円環測定数。Ctは総アクセス回数。
%はいうまでもなく、忙しさの度合いで横の黒い四角はレベルメーターである。
やはり高回転型のエンジンにチューンしたならば、
後付けの温度計やメーターは必要であろう(※8)
というわけで、いろいろといじってきたHDDレベルメータはいったんここで区切りをつけて、
前回の最後に書いた事を今度こそやろうと思うのであった。

つーわけでまた今度!


※1
一般的には専用のドライバICを使用してアクセスするらしいので、面倒な構造でも問題無いので
あろう。たぶん。
ちなみに、今回購入して来たLEDメーターは最近では需要が少ないと見えて、在庫限りの生産終了品
であった。今時では部品単体で用意するのではなく、いくらか大き目のディスプレイでまかない、
その隅にでも配置するというのが一般的になったためだと思われる。

※2
このために購入したわけではなくて、たまたまなにかに使おうと買っておいたものである。
ちょうどいいので流用することにした。

※3
液晶の事。しかも今回購入したのはちょっと奮発(400円ナリ)してバックライト付きのものである
暗闇でも見る事ができるのであるが、そもそも暗がりではマシンを余りいじらないというのが
大きな問題であるかもしれない。
あ、蛍光灯のスイッチ(引っ張る奴)が戻らなくなってしばらく(数日)真っ暗だった事があったな。
なんにもやれなくて、さっさと寝る事にする。などとしていたのであるが、いいかげん不自由なので、
内部にグリスを注入して回転子をまわして解決した事を思い出す。
どーでもいい話だな。こりゃ。

※4
どこかが接触していてぐいっと押し込むととたんに動作不良をおこすのが一番の難関であった。
ぐいっと押すことが原因とわかってからは、やさしく行う事で解決。
あとはPICのバンク問題か。これは、ハチロク系プロセッサに漏れなくついてくるセグメントみたいな
ものと思えば気にならないだろうか。

※5
最初は買っていなくいて、5V駆動だから、半分と言う事で2.5Vでいいやと固定抵抗で処理したため、
いくらやっても画面になにも表示されないので悩んでしまった。
結局0Vから0.5くらいの間でないと見えない。範囲狭すぎ(笑)
これでは、可変抵抗のAカーブもBカーブも余り関係ないか。

※6
びゅんびゅん表示が変わるので、スナップショットを撮影するのが、非常に面倒であるため、
押している間は画面更新を停止する目的でSWを付加。
そのうち、このボタンを押すと平均なんとかなど表示されるようにするのもいいかもしれない。

※7
実際にはなにも初期化処理などはしていない。こういうものは気分であり、それが重要なのである。
ちなみに一瞬で表示されるわけではなく、きちんとたかたかたかと言う感じで表示される。
余談であるが、映画などに出てくるコンピュータのディスプレイに表示されるメッセージは、
なぜかきゃらきゃらという効果音(SE)と共に表示されるのであるが、あれはいったいなんであろう。
スピーカー内蔵のディスプレイでは、映像信号の変化を音声信号線が拾ってしまって、似たような
音がでる事は考えられるのだが(昔のグリーンディスプレイとかそうだった)
もっと余談であるが、その昔職場のマシンのディスプレイコネクタが抜けた(蹴っ飛ばした?)ので、
後ろを見ずにさしたらノイズ交じりの白黒画像が表示されてしばし途方にくれた事があった。
よくよく後ろを覗き込んで見ると、なんとサウンドカードに接続してしまっていた(^^;;
よく画像が出たもんだ。

※8
ちなみに温度計が表示しているのは室温である(^^;
CPUの温度を測定するものであるが、さしあたって室温が何度なのかを知りたいのではずしてあるため。
あと、後付けするメーターとしたらファンの回転数くらいであるか。
む?それが残っていたか。今度つけよう。


改造講座メニューへ
トップへ