since 2007.8 by K-ichi

前回は、PIC12F675の出力5ピン全てを使って、中華HC595の動作確認をした。無事確認できたわけだが、実働でこれだけI/Oを使っては割に合わない。
普通は全機能使うわけではないので、多少の制限は我慢しつつ少ないピンで駆動する方法、これをいくつか考えてみた。ものぐさなので、追加部品も最小限にしたい。
なお、74HC595のデータシートは、東芝製を代表として参考にしている。

● (A):2ピン使って「動作まる見え」版

(A)版回路図
シフト状況がパラレル側に筒抜けの、74HC164のような動作になる。
47kΩの抵抗1本を追加している。

この抵抗とICが持つ入力容量とで、RC遅延回路(CR回路、積分回路などとも)を構成し、SCKの数100ns後にRCKが出るようになっている。SCK-RCKのセットアップ時間(ts)は19ns@4.5Vなどとなっており、これを満たす。また、12F675の1命令の処理時間、1μsよりは十分短い。
ちなみに74HCシリーズの入力容量は、5pF(typ.)、10pF(max.)とある。他のCMOSシリーズを見ても、4000シリーズで7.5pF(max.)、74VHCで4pF(typ.)など多少違いはあるものの、おおむね数pFとなっている。温度による変化は無い、とのこと。

実際の遅延は、スレッショルドが1/2VCCとすると、-ln(1-1/2)RCで計算できる。τ=0.69RCというよく見る値がこれで、時定数とも呼ぶ。なお、lnはlogeのこと。
仮に最大の10pFだったとすると、326nsと計算される。

● (B):1ピンで「動作まる見え」版

(B)版回路図
前版を1ピンで駆動しようという試み。抵抗は1本増えて2本使う。

SCKとRCKの関係は従前と同じ。シリアル入力であるSIには、SCKをうんと遅延させたものを使う。1MΩを使うので、遅延時間としては6.93μsとなる。
具体的には、通常は'1'に保っておき、'1'をシフト入力する場合は6.93μs未満のSCKパルスを与える。'0'の場合は、6.93μs以上'0'を保った後に立ち上げる。ただしこれは1/2VCCでの計算であって、VILを満たしたければ1.2RC程度12.0μs余待つ必要がある。
SIは立ち上がりも緩慢になるので、次のビットのために十分に'1'に戻る時間を待っておく。たとえば9割戻しには2.3RC、97%戻しには3.5RCぐらいかかる。

ちなみにロジックICには、信号の鈍りの制限もある。74HCシリーズでは500ns/V(標準ロジック アプリケーションノート(使用上の注意点)のp72)とあり、この回路例ではしっかり越えている。とはいえデータ入力ピンであり、実害はないと考える。

● (C):2ピンで「動作秘匿」版

(C)版回路図
せっかくラッチが内蔵されているので、それも使いたい。(A)版の抵抗値を変更して、RCKを生かしてみる。

上記例にあるように、47kΩの場合は数100nsの遅延だが、1MΩなら数μsの遅延になる。RCKが数μs遅れることで、SCKのみの場合とSCK、RCK共に出る場合とを分けることができる。
具体的には、SCKは通常'1'に保っておき、シフト入力のみ(SCKのみ出力)の場合は6.93μs未満のパルスを与える。シフト入力の後ラッチも行う(SCKの後RCKも出力)の場合は、6.93μs以上のパルスにする。RCKの遅延や復帰に関しては、(B)版のSIに倣う。
この遅らせるRCKは、LE的なCK信号であり、前版にあるアプリケーションノートではまさに禁忌とされているが、何発食わせようがバタつこうが当例では実害はないと考えている。

別のパターンとして、(B)版のRCKを別ポートで駆動する方法、も考えられる。
禁忌が回避でき、クロックが鈍るのは許せない向きにはこちらでもいいが、'0'が多いデータの場合は転送が遅くなる。

● (D):1ピンで「動作秘匿」版

(D)版回路図
1ピンで3信号のコントロールをするのはちょっと難しい。
シンプルに抵抗だけとはいかず、抵抗2本、ダイオード2本を使う。ダイオードは小信号用シリコンダイオード(1N4148など)を指定しておく。

動作としては、定常はSCK='1'としておく。SCK立ち下がりでRCK='0'、立ち上がり(および定常)でSI='1'となる。立ち下がり、立ち上がりとも意味を持たせているので、シリアル転送を開始したら一気に行う。
'1'をシリアル入力したい場合は、短いSCKを与える。'0'の場合は6.21μs以上SCKを'0'に保ったパルスを与える。立ち上げと同時にSI='1'となるので、(B)版(C)版にあるような回復時間は考えなくてよい。
最終ビットまで間断なく転送したら、6.21μs以上'1'を保つ。これでRCKが立ち上がり、パラレル化したデータがラッチ、出力される。

この6.21μsというのは、RC回路にダイオードを含めた値。VF=0.35Vとすると、-ln(1-2.15/4.65)RCで計算できる。
当初はSBDを考えたが、逆電流(IR)がμA~mAオーダと大きい。このRC回路では僅かな電流を扱う。1N4148のデータシートを見ると、微小電流域ではVFは0.2V台、5V逆電圧ではIRはnAオーダという。低VFならショットキ、という固定概念に囚われてはいけない。

なんとか無理やり1ピンで駆動してみたが、手間も気苦労も増える。どうしてもI/Oが足りないときには使えなくもない、ギリギリの線か。


GoogleによるY=1-e-Xのグラフ
左図は、RC遅延回路での電圧の変化をグラフにしたもの。Googleに描いてもらった。

-ln(1-VTH)をそのまま式(Y=-ln(1-X))とすると、Y軸が時定数計算値になる。縦が時間、横が電圧、では見づらいので、逆関数をとってY=1-e-Xとしている。
縦軸がキャパシタの充電割合になるので、電源電圧を掛ければ電圧値になる。横軸は遅延時間の定数部になる。0.69あたりにカーソルを置けば、縦軸は0.5であることが読み取れる。
(ここのVTHは、電圧値ではなく、電源電圧に対するスレッショルド電圧の割合の意)

グラフは電圧の立ち上がりを表しているが、立ち下がり(キャパシタの放電)の場合は上下をひっくり返して見ればよい。
ダイオードを含む場合は、原点を通る部分がVF分上へ上がる。グラフとしてはやや上下に押し潰される。


(B)、(D)タイプの動作の様子
映像は、(B)および(D)の1ピン駆動の動作確認の様子。前回の実験基板にドータボードを載せる形で行った。

(B)は、動作が丸見えだけあって、一点でも点灯するパターンでは非点灯部分もぼんやり光る。表示が読めないわけではないが、この手の用途には向かない。
(D)は、前回の動作確認と同じに見える。カッチリと表示ができている。
ぼんやり部分に帯状が見えたり、点灯部が点滅したりして見えるが、これはカメラのフレームレートとの干渉と思われる。肉眼では見えない。

これらを駆動するPICのプログラムは、短いパルスは3μs、長いパルスは12μs、復帰時間は30μs以上として組んである。
表示シーケンスは前回同様、輝度調整込み10msを50回表示して次のパターンへ、を繰り返している。


ICの電源電圧(VCC)、スレッショルド電圧(VTH)、入力容量(CIN)、場合によってはダイオードの電圧降下(VF)など、不確定要素がたくさんある。
入力抵抗もある。データシートの入力電流(IIN)から計算できるが、小さければ外付け抵抗との分圧が無視できなくなる。
アプリケーションノートによれば、VTHはほぼ2.5Vであり、IINも実際は何桁も小さいnAスケールらしいが……

とりあえず、こんな手もあるということでまとめてみた。

4 件のコメント:

ライン さんのコメント...

突然の質問に失礼いたします。
趣味で日本の木苺を育てています
(シマバライナゴ、エゾイチゴ、クマイチゴ等) ハスノハイチゴの余剰苗はありますでしょうか?譲って(又は販売)いただくことはできますでしょうか?

ライン さんのコメント...

突然の質問失礼いたします。
趣味で日本の木苺を育てています。
(シマバライナゴ、エゾイチゴ、クマイチゴ等)
ハスノハイチゴの余剰苗はありますでしょうか?譲って(又は販売)していただくことはできますでしょうか?
(反映されなかった?ので再度入力しました。だぶっていたらすいません。)

K-ichi さんのコメント...

現在、余剰苗はありません。
ハスノハは一度分けてあげたことがありますが、その後音沙汰もないですし、上手くいかなかったのかなと想像しています。
また、ここのところ余裕もありません。昨年は不徳にも一株枯らしてしまいました。自生でない種を育てるのは、本当に気が抜けないです。

いろいろ育てている方には要らぬお節介でしょうが……
キイチゴのような雌雄の別の無い(時には自家不和合性を有する)種の場合、自生地に赴いて環境をよく観察し、
実りの一部を戴いてくるのがもっとも無難なのかな、と最近思うようになりました。
目的外の発見もあったりしますしね。播いてみたら新雑種だった、なんてことも。

K-ichi さんのコメント...

あと、できれば当該記事に対してコメントを付けてもらえるとうれしいです。
どんな古い記事でも、コメント投稿があった旨の通知が管理者に届くようになっていますので。

コメントを投稿

.

関連記事


この記事へのリンク by 関連記事、被リンク記事をリストアップする」記事

ブログ アーカイブ