DC-DC コンバータ
日経Linuxだか日経ラズパイだか分からんようになった8月号を見てる。
ラズパイプログラミングで取り上げられていたのは、距離センサーをPythonから コントロールして、物体の距離を測ってみましょって記事。
超音波距離センサー HC-SR04 なんてのを使うみたい。400円で、こうもりだかいるかだかが搭載してるセンサーを 手に入れられるって、なかなか愉快な状況になってるね。
40KHzのパルスを8発発射して、それが物体に反射してくるまでの間、信号が出るって 仕様らしい。だから、発射(トリガー)を出した時に時刻を測り、信号が返って きた時の時刻を測って、その差を2で割れば、距離に応じた時間が得られる。
後は、中学校の理科の時間に習う、音は1秒間に340m進みますって事から、 時間を距離に換算出来る。但し、340mってのは、気温や気圧によって変わるから 正確に求めようとしたら、補正が必要。
こういった事は、紙面が限られているので、詳しく解説してない。で、他の 記事が無いか、探してみた。
Arduinoでパーツやセンサを使ってみよう~超音波モジュール編
へぇ、勉強になるな。水中で距離センサーとか言うと、潜水艦の兵器に分類される やばいものになるのかな。音波を吸収するような仕掛けを施して、ステルス潜水艦 とか、当たり前になってるんだろうな。
ソナーでは、音響分析で、スクリューの出す音を分析して、潜水艦の個別識別が 出来るらしい。で、スクリューを使わないで進行出来る方法を、生物から学んで それを応用する。イカのジェット水流推進方法とか、海ヘビみたいに、くねくね 進行とか。。。
ふと疑問、こうもりは超音波で獲物を識別するらしいけど、皆が同じ信号を 出すのだろうか? もしそうだとすると、別の個体が出した探索波を誤って 受信するとかないのだろうか?
それを防ぐ為に、超音波の周波数を違えたり、信号に変調をかけているとか あるのかな?
コウモリは超音波を使って虫を捕まえるそうですがどのようにしているのでしょうか
findで検索
前回、findとgrepを使って、検索を行った。その時、2つのやり方を試した。
find . -name PLIST | xargs grep fusrmount find . -name PLIST -exec grep fusrmount {} \;
上の検索方法が速かった。何故? 動作は、portsツリーの中にあるPLISTという パッキングリストを探し出してきて、そのファイル中にfusermountって行が 存在してるか確認なんだ。
上の方は、見つけたファイルパスをパイプでxargsに渡して、そこからgrepしてる。 下の方は、findのオプションにexecってのが有って、それでgrepを起動。この場合 対象のファイルパスは、へんてこりんな {} が、ブレースフォルダーの役目を 果たして、置き換えられる。
普通に考えたら、1コマンド内で完結してる下の方が速そうなものだが。。。 上の方が速かった。そこで、何故何故の夏休み、自由研究の始まりですよ。
execでgrepを起動するって言っても、所詮はgrepを起動してるんでしょ。 上のも同じ。とすると、差は何だ? grepの起動回数ぐらいしか差の付く所は 無さそう。
そこで、xargsのmanを、まず引っ張り出した。
NAME xargs 窶・construct argument list(s) and execute utility
引数のリストを組み立てて(から)ユーティリティーを実行するものらしい。 知らないで馬鹿の一つ覚えで使ってました。
大量にあるテキストファイルからgrepしたい場合、
grep hoge *.txt
なんてやって、引数の数が多すぎエラーを喰らった時(そう、newsが健在な頃だ)、 先輩に、xargs使えと指導され、訳も分からずに使ってたってのが真相。
改めて、xargsのオプションを調べてみると、面白いのが有る事が分かった。 使ってみた。
[ob: ports]$ find . -name PLIST | xargs -t -L 4 grep fusermount grep fusermount ./archivers/arc/pkg/PLIST ./archivers/bzip2/pkg/PLIST ./archivers/cabextract/pkg/PLIST ./archivers/deco/pkg/PLIST grep fusermount ./archivers/fastjar/pkg/PLIST ./archivers/freeze/pkg/PLIST ./archivers/fuse-zip/pkg/PLIST ./archivers/gcab/pkg/PLIST grep fusermount ./archivers/gcpio/pkg/PLIST ./archivers/gshar+gunshar/pkg/PLIST ./archivers/gtar/pkg/PLIST ./archivers/ha/pkg/PLIST :
Lオプションは、引数ががn個集まったら、ユーティリティーを起動せい。tオプションは 、ユーティリティの起動状況を報告せよ。
で、Lオプションを指定しなかったら、幾つ、集めるの? OpenBSDのソースを見たら 5000個になってました。(引数バッファーの長さによって調整される模様)
すなわち、xargsを噛ませる事で、grepの起動回数を削減してるんだな。
それに対して、execで起動するやつは、PLISTが見つかる度に、grepを呼んでる。 findを実行中にpsすると、タイミングが合えば、
25042 p2 S+ 0:03.54 find . -name PLIST -exec grep fusermount {} ; 21284 p2 D+p 0:00.01 grep fusermount ./devel/ORBit2/pkg/PLIST
こんな風に、引数1つだけで、grepが呼ばれているのを観測出来る。 syscallした時の失敗/成功は、ifで判定するのが普通の方法と思っていたけど、 こういう書き方も有るのね。参考になるな。
switch (pid = vfork()) { case -1: err(1, "vfork"); /* NOTREACHED */ case 0: if (fchdir(dotfd)) { warn("chdir"); _exit(1); } execvp(plan->e_argv[0], plan->e_argv); warn("%s", plan->e_argv[0]); _exit(1); }
find/function.c/run_f_exec って、関数の中で、こんな風に外部コマンドを 起動してたよ。 vforkって、余り推奨されていないのね。 知らんかったよ。
findコマンド(応用編その2)なんてのも、参考になるかな。それにしても、オプション有杉。
AC アダプター
友人の持っているACアダプターが壊れたので、秋月の通販で探したそうな。 そしたら、壊れたやつの定格ぴったりのやつが無く、それより若干高い電圧の ものが有ったので、発注したとの事。定価780円。そんな値段なんか。
配送料と代引き手数料を入れると、1500円ぐらいと言っていた。地方の人は つらいね。まるで東京は外国ですよと、嘆いてみる。
商品検索 秋月電子通商 を見ると、色々あるね。中華製が多いな。肝は内部で使ってるコンデンサ。 わざわざ、日本製を使ってますよって謳ってるメーカーもある。
半導体は、怪しげなメーカーの物って無いだろうから、差別化は出来ないんだろうね。 いや、そんな事ないか。中国へ進出してるコリャーメーカーから、3流ランクの 石を買い叩いて使っている可能性もあるな。ロシアンルーレットかもよ。
それにしても、近頃の電子機器は電源内蔵ってほとんど無いね。液晶TVに始まって、 固定電話、ルーター類と、外部電源のごろごろBOXばかりになって、始末が悪い。 おまけに、プラグの極性が、プラスのものと、マイナスのものと有ったりして、 買い替え需要を狙っているとしか思えん。困ったものだ。
知ってるようで知らないAC-DCアダプターってどうなってるの?調べてみた。 交流を直流に変換する「AC-DC電源」のきほん。 なる程、地味に進化してるのね。昔は何か自作すると言うと、電源どうする?って、 頭を悩ませたけど、今は、秋月から簡単に調達して使えばいいんだ。
AC-DC電源回路なんてのを 見ると、中華製は信用ならんて事で、更に安定器をかませているよ。そういう 注意深さが安定動作を補償する事になるんだろうね。
憧れの的のMacBookのアダプター電源も、燃える事があるそうです。 MacBookのApple純正ACアダプターの構造はどうなっているのか分解して確認 に、生々しい写真が載ってた。そして、バチもんの電源も掲載されてた。 恐ろしいレポートをありがとう。
昇圧コンバーター
コイルを1個だけ使っても、昇圧出来るそうなので実験する。これに使うMOSの スイッチは、よく知らないので、取りあえずngspce備え付けのやつを採用。
up-converter ckt v1 in 0 10v L1 in rs 200u rs rs ss 100m v2 cont 0 dc 0v pulse(0v 3v 1n 1n 1n 5u 10u) s1 ss 0 cont 0 mysw off d1 ss out D c1 out 0 100u rx out 0 10k .model D D .control tran 10us 200ms plot v(out) .endc .end
これで10Vから45Vに昇圧出来た。Lをオンオフしてるんで、負側に180Vも振れるけど こういう耐圧のPowerMOSって、どのスペックを見たらいいの?
降圧コンバーター
DC-DCコンバーターと言ったら、普通はこれでしょう。AC100Vをまずブリッジ ダイオードで直流に直し、そこから、必要なDC15VとかDC3.3Vを作り出すってやつ。
DC-DOWN ckt v1 in 0 10v s1 in rs cont 0 mysw off L1 l2 lo 200u rs rs l2 100m d1 0 l2 D v2 cont 0 dc 0v pulse(0v 3v 1n 1n 1n 3u 10u) c1 lo 0 100u rx lo 0 1k .model D D .control tran 10us 100ms plot v(lo) .endc .end
これだと、制御回路が何も入っていない、出た所勝負型の降圧コンバーターに なる。出力電圧は、スイッチのON/OFFの比になるはずなんだけどね。 果たして、何Vになるのやら?
反転型コンバーター
上記の降圧型を作る過程で、AC-DCに変換してた。このDC電源を使って、電圧が 反転する電源を作りましょってのがこれ。
オイラー、自作パソコンはやった事が無いんで、詳しくは知らないんだけど、 タワーに組み込んで使う電源は、マイナス電圧も取り出せるようになってる らしい。
ATX電源ってのが 名称らしい。素人丸出しだな。これを見ると、やはり何種類かのマイナス電圧が 使えるようになってた。
パソコンの電源ユニットの選び方、スペックの読み方の解説 ドスパラって有名なパーツ屋さんが、解説してくれてた。マイナスの電源って、 ちょびっとしか電流を取り出せないのね。この用途は何だろう?
想像するに、サウンドとかのアナログ回路に必要なのかな。インテルがこの規格の 提唱者って事は、自分の所の石を使ってもらうために制定したんだな。
まあいい、回路がどうなってるかネットリストを書くと
DC-INV ckt v1 in 0 10v s1 in rs cont 0 mysw off rs rs tol 100m L1 tol 0 100u v2 cont 0 dc 0v pulse(0v 3v 1n 1n 1n 5u 10u) d1 out tol D c1 out 0 100u rx out 0 1k .model D D .control tran 10us 200ms plot v(out) .endc .end
こんな具合だ。
電源ユニット(電源ボックス)の性能の説明 ここにも説明が有った。変換効率の高いものはゴールド認証で、地球を大切に してますよって、自己満足するために有るんだな。
それなら、CPU より電力を喰う、グラボを何とかせいよ。ひたすら速さを 競っている感がある。ああ、石は、インテルがしっかり覇権を握っているから、 他の分野で勝負してるんだな。納得です。