« 2017年5月 | トップページ | 2017年7月 »

2017年6月の2件の記事

2017年6月29日 (木)

超音波方式の人感センサーI2C化と新しいオシロ

 PCの横で超音波距離センサーHC-SR04がブレッドボード上に残されたままになっている。他の電子部品に比べると特徴的な形をしているので何かと目立つ。ブログを調べてみたら、このセンサーにはまっていたのはもう2年も前のことで(2015/7/28)、そのあいだ放置したままということになる。Dsc01163

 ブログによると、このあとこの距離計測センサーをI2Cでつなごうとして、AVRの8ピンプロセッサーTiny85を使ってソフトのI2Cスレーブライブラリーを苦労して開発した。ソースコードをブログに上げたのは良かったのだが、そのあとは力が抜けてそのままになっている。

 このセンサーはアナログで動作電圧は5V、距離をパルス時間幅で返してくる。Edisonやesp8266などの3.3Vベースの32ビットプロセッサーとは電圧が違うし、それよりもプロセッサーにOSが入っていたりWiFiなどの割り込みが起きると、こうしたアナログのパルス幅の正確な時間は測れない。 

 そういうことでI2C化を始めたのだが、工作は全然別の方向に迷走したままになっている。そういえば、秋月で異電圧間のI2CをつなぐICも買ってあったのに部品箱の不良在庫になっている。Raspi3の電源問題も一段落したので、このあたりを次のテーマにすることにした。

 HC-SR04のブレークアウト基板(Vccは3V)をつくる。I2CスレーブのTiny85と3.3->5Vコンバーターをつけ、外部へは3.3V入力とGND、それにI2CのSDA、SCLの4本のケーブルをつけて、32ビット機器に簡単に接続できるようにする。

 親機はEdisonはもはや重いので、esp8266あたりを想定する。アプリケーションは、人が近づいたら反応する人感センサーにしようと思う。現在の階段のセンサーは焦電型で結構、反応が微妙で調整が難しい。距離測定の超音波なら、扉を開けるだけで反応するはずだ。

これまでの工作の再現だけで2日を要した(6/19/2017)
 裸になっていたSR04とTiny85を取り出して、ミニブレッドボードに移し替え、ブレークアウト基板のテストベンチをつくる。これまでのブログ記事を参考に(もうこれなしでは生きていけない)、もういちど配線をし直す。Tiny861の親機の方はまだブレッドボード上に生き残っていた。Dsc01157

 UARTを2つつないで意気揚々とテストに入った。しかし動かない。親機は動いたようだが、子機のTiny85は UARTにWelcomeメッセージは出るが、反応が全くない。親機からコマンドを送っても「そんな機械はない」と門前払いだ。

 接続を確かめる。プルアップ抵抗が隣のピンに入っているのを見つけた。最近は目が悪くなって良く間違える。さあ、どうだ。駄目だ。依然として動かない。しようがない。オシロを取り出す。なにー、ちゃんとI2Cの波形が見えるではないか。それでも動かないとはどういうことだ。

 暫く大騒ぎしていたが、落ち着いて配線を見直し、間違いを見つけた。要するにジャンパーコードの接続ミスだった。SDAとSCLが逆さまになっている。Tiny85と親機のTiny861の間のピンが揃っているかだけに気をとられ、ピンそのものが逆だったというお粗末である。情けない。Ws000022

 つまらない配線ミスで時間をとられたが、完動した。次はこのSR04のブレークアウト基板のソフト仕様である。どの程度の独立性を持たせるかで、基板ハードの仕様に影響が出る。何から何まで、例えば、音速の補正をコマンドで修正できるようにしておけば、ファーム書き換えのISPピンソケットはいらないかもしれない。しかしそれも面倒だ。

 実装するDC-DCコンバーターを何にするかも迷うところだ。部品箱を久しぶりに整理すると、5コ以上のDC-DCコンバーター基板が出てきた。1V以下でLEDをつけるやつ(これは今回は使えない)やら、表面実装にこだわったFP6291のもの(2つもある)、昔のHT7750など、自作品だけで沢山ある。

急にオシロが欲しくなって衝動的に発注(6/21/2017)
  そのうち、オシロで半分つぶれかかったI2Cの波形(これで良くデータが通ると感心)を見ていて、突然、これまで我慢していたオシロに対する物欲が沸き起こった。 波形がお粗末なのはオシロのせいではないが、この物欲というやつは、「ときめき」と同じでどうも理由が明確ではない。Dsc01155

 数年前こちらに良くコメントを寄せてくれる、ばんとさんにオシロを勧めたとき、自分も新しいオシロが欲しくなったことがある。このときは、使う機会が少なかったので、やっとのことで我慢した。

 当研究所がオシロを買ったのは、もう9年も前の話である。帯域60MhzのOWON製(PDS6062T)で、当時は10万円近くした(¥79,800)。買ったときは、清水の舞台から飛び降りる気分だとブログにはある。

 オシロの効果は抜群で、PCMプレーヤーのバッファーアンダーランを一発で発見したり大活躍をしたこともあるが、単純なトリガーしか選べないことや、蓄積データ量が少ないので大したことは調べられず次第に使われることが少なくなった。

 まあアナログ工作は殆どやらないので、それほど大きな不満はない。ちょっと複雑になればロジアナを引っ張り出せば良い。 オシロは今度の工作のように、動きを確認するだけに使われていた。必要性を強く感じることはなかったのである。

 このあと、低価格帯のオシロは、さらに安くなって中華のオシロは帯域100Mhzが3万円台になった(ばんとさんに勧めたころ)。中華製も評判は悪くなさそうだったが、強いニーズがなかったことがあって、オシロ熱はそれほど高くならず、その後は余り調査していない。

 あらためて調べてみると驚いた。さらに低価格化が進んでいる。少し前までは高級オシロにしかなかったフォスファー機能(アナログオシロのように繰り返し波形を色分けしてくれる)のついたものが、10万以下で手に入る。

 調べている間に、狙いをつけたのが、SiglentというシンセンのメーカーのSDS1202X-Eというオシロである。帯域が200MHz、メモリが14 Megaポイント。フォスファー付きで、この-EというサフィックスはUART、I2C、SPIなどのレコードの解析もできるシリアルデコーダーが付いている最新バージョンである。Ws000023

 ひところなら確実に100万以上はした商品ランクである。価格が悩ましい。日本で買えば(アマゾンとか楽天)10万近くするのだが、Alibabaなどの中華サイトでは、$380、何と4万円そこそこで売っている。にわかには信じられない安さだ。

 今これがないと進めないようなプロジェクトはないが、欲しいという欲望に勝てなくなった。しかも5万円以下で、これまで想像もしていなかった高性能のオシロが手に入るのだ。ここ数年は、余り電子工作に金をかけていない。少しくらいは良いだろう。

 中華サイトの買い物はリスクが大きいが、日本のサイトの半額以下というのは強烈な魅力だ。何しろ所長は「破格の安値」というのに弱いのである。ウェブサイトの珍妙な日本語の広告画面を何度も見ては迷っていたが、抵抗できず、ついポチってしまった。相手は、AliExpressである。

DCDCコンバーターの電源でSR04が動かない(6/24/2017)
 注文はしたけれど、到着まで10日はかかりそうなので、SR04のブレークアウト基板制作を続けた。次の課題はDC-DCコンバーターのテストである。

 久しぶりに秋葉原で買い物をした。自作のDC-DCコンバーターは、殆どが9 V以上の昇圧コンバーターで、5Vに上げるコンバーターにするため、秋月電子で面実装の半固定抵抗を入手するためである。

 面実装の基板の修正はとても難しい。例の低温ハンダで部品をはずすのは簡単だが、この自作のDC-DCコンバーター基板(FP6291)は、最初のバージョンではんだ付けに大苦労した版だ(ブログ参照)。半固定の抵抗器を取り替えるだけに数時間かかった。

 何とかして取り換えた。電源を入れる。おやあ、無負荷では5Vになるが、LEDだけつけても3V近くまで下がる。オシロで見るとパルスだらけの出力で明らかにおかしい。実体顕微鏡で配線を子細にチェックする。Dsc01162

 すると、分圧抵抗のグランド側のハンダブリッジでつないだところが見事に切れているのを発見した。やれやれ、以前もこの現象に悩まされたことを思い出す。他のところで熱を加えているときにブリッジが解消されてしまうのである。

 これを直して無事、負荷をかけてもちゃんと5Vが出るようになった。300mA以上流してもOK。勇躍、SR04の電源に組み込む。SR04は無事動いた。

不愉快にも市販のDCDCコンバーターは完動(6/25/2017)
 ところが、何故か、センサーの計測距離が不正確になってしまった。どれだけ遠くを指しても、出てくる距離が30cm以上にならないのである。電圧は5Vのままで、オシロで見る限り波形も正常だ。理由はわからない。DC-DCコンバーターのパルス周波数と、超音波センサーのパルス(40khz)とが近いからだろうか。

 スペックによるとFP6291のPWMパルス周波数は、1Mhzと高いのでその影響はないはずだが、おかしなことには間違いない。修正の手間を考えると、もうひとつの自作のDCDCコンバーター(同一のFP6291)をさらに試す気力はもう残っていない。

 昔作ったHT7750もだめだった。距離はもう少しFP6291のより伸びるが、1m以上にはいかない。だいたいこいつはオシロで見ても、脈流でこういう電源には向いていない。本来の工作と違う脇道でこういうトラブルは、気分が滅入る。折角I2Cのレベルシフターまで入れて不良在庫を少し消化したというのに。

 しかし、少々のことではへこたれない当研究所の所長である。手持ちの市販(ストロベリーリナックス)のDC-DCコンバーター基板(LM2735)の予備があるのを思い出し、これを部品箱から探し出して実験してみた。

 何と悔しいことに、このコンバーターでは全く問題なく超音波センサーが動くのである。えー、なぜだろう。何故、自作のコンバーターでは動かないのだろう。不愉快なことだがこれが現実だ。Lm2735

 そもそもDCDCコンバーターをつくるのが目的ではなかった。へそ曲がりでは負けない所長だが、さすがに今度は、これ以上、これにかかわるのはやめることにした。全くの時間の無駄だ。

 だいたいこのストロベリーのコンバーター基板も予備品でこれまで部品箱の肥やしになっていたパーツである。ここで役に立っただけでも良しとせねばなるまい。ブレークアウト基板を早く作って人感センサーを作ろう。

新しいオシロ来たー(6/27/2017)
 オシロを注文したあと、注文先からは「入金は確認しました」や、「商品を配送しました」という意外にこまめなメールが届いていたが、思ったより早く、注文していたオシロが届いた(Siglent SDS1202X-E)。Dsc01158

 カード入金して2日で出荷の知らせがあり、到着は5日後である。たいしたものだ。初めての中華サイトでの買い物でどきどきしていたのだが、とりあえず一安心である。メールが届いていたので大丈夫とは思っていたが、やはり数万円台の買い物では緊張する。

 噂では、大陸からの荷物はべこべこになっている(荷扱いが極端に悪い)はずなのだが、結構、荷姿は崩れていない。ただし、段ボールを開けると、正式の梱包の段ボール箱が現れた。やはり二重になっていた。しっかりした間仕切りの発泡スチロールで機械は中央に浮いている。Dsc01159

 取り出す。現状の8インチに比べれば今度のオシロは7インチでやはり心持ち小さい。心がはやるので前と同じように居間で梱包を解き、プローブの校正をする。画面はかなり高解像度だ。

 我慢が出来ず、早速地下の工作ルームに持ち込んで現在のI2Cなどの波形を観測する。沢山機能はあるが、まだ使いこなせないので、これまで計測したものだけの再現である。

 おおー、測定範囲が広い。これまでのオシロは少しでも長い間観測しようと思っても、すぐに切れてしまい、全体をつかめない(こういうときはすぐロジアナに切り替え)のだが、今度は違う。何しろ記録量がこれまでの2倍以上あるのだ。(6M->14Mpt/s)。Dsc01161

 距離センサーのテスト機で、I2cをスタートさせ実際のアナログの応答トリガーがかえってくるところまでが一目で見られる。これはありがたい。画面が小さくなったことを感じさせない性能向上である。以前より価格は半分で性能はざっと3倍(帯域60Mhz ->200Mhz)。時代の進歩を実感する。

 フォスファー機能とか、シリアルのデコーダーとか盛りだくさんの機能があるのだが、とりあえずは満足である。追い追い調べていくことにしよう。久しぶりに自作のシグナルジェネレーターなどを埃をはらって登場させ色々テストする予定だ。Dsc01160

| | コメント (7) | トラックバック (0)

2017年6月12日 (月)

RaspberryPi3の電源問題はOSの不具合だった

 しつこいことでは誰にも負けない当研究所の所長が、やっとのことでRaspberryPi3(以降Raspi3)が立ち上がらない問題を解決することができた。

 研究所の工作テーマはESP32に移っていたが、定点カメラを目指したRaspi3の初期ブートが失敗するトラブルは解決されていない。パワーオンリセットが効かないのである。USB機器をはずして立ち上げると大体うまく行くが、USBをつないだまま(もちろんセルフパワーHUBで電源供給済み)だと、ほぼ立ち上がらない。Dsc01131_1 質(たち)の悪いことに、一旦、ブートに成功すると暫くは問題なく動く。しかし半日おいておくと、立ち上がらなくなる。一番先に疑われたのは電源である。いくつかのアダプターを買ってきたり、ケーブルを吟味したり、HUBを換えたりしたが、はっきりとした改善は見られない。

 オシロを使って立ち上がりの電圧の波形を何とかとることができた。立ち上がらない時と、正常に動いた時の双方の波形がとれた。しかしどちらも似たような波形だ。確かに0.5msくらいのところで大電流が流れたらしいディップがあるが、正常に立ち上がる時も同じようなものだ。電源が原因ではないような気がする。Dsc01133_1

もう一台RaspberryPi3を買う(5/24/2017)
 次に疑うべきは、Raspiのハードそのものである。以前、Edisonで本体がおかしくなって熱暴走したこともある。もしかしたらハードがやられているのかもしれない。今、Raspi3は一台しかないので確認はできない。これはもう一台買うしかないか。

 予備ということにして(使うあてがないのがつらい)Raspi3をアマゾンで発注する。ケースとヒートシンク付きで¥5980と安かったのでつい手が出た。数日で届く。便利な時代になったものだ。

 まずは、この新しいRaspiの動作確認である。システムディスクの16GBのSDカードを用意し、NOOBS一式をダウンロードする。OSのバージョンは2.1.0から2.4.0に上がっていた。 

 ふーむ、zipファイルが200MB以上増えている。どんどん進化しているようだ。インストールは順調に進みトラブルなくOSは展開された。電源を入れる。全く問題ない。順調に立ち上がる。少なくとも電源ではない。電源不足を示す画面の稲妻マークも全く表示されない。快調だ。

Dsc01137 やっぱり最初のRaspi3が原因だったのか。いや、まだ、カメラをつないでいない。しかもOSが違う。今のOS(2.4.0)はまだ裸の状態で、これからSAMBAや、動体検知motion、日本語入力、固定IPアドレス化などを加えていかないとトラブルの起きた状況にならない。

 加えた変更のうち、初期化のトラブルに関係しそうな要素は、何といってもカメラモジュールの接続だ。ハードの初期化でループしてしまえばブートは先に行かない。まずトラブルの起きた元のRaspi3にこの2.4.0の新しいシステムディスクを差し替えて動かしてみる。

結局、OSを最新版にして落着(5/28/2017)
 やっぱり何の問題もなく立ち上がった。いやいや、まだカメラモジュールをenableにしていない。raspi-configでカメラモジュールをenableにして立ち上げ直す。よーし、素直にブートが始まった。Raspi本体が悪くないことは確実だ。

 最後の確認である。カメラの動作確認だ。motionはまだ入れていないので、raspistillなどの専用コマンドをあせる手でコンソールに入力する。おめでとうございます。ランプがついて写真がとれた。間違いなくOSの問題である。

 これでトラブルの原因がはっきりした。2.1.0でのカメラモジュールの接続はブートの時にハングすることがあるのだ。このあと、元の2.1.0のOSに戻し、再現を確認した後、raspi-configでカメラをdisableにすると、カメラをつけていてもトラブルが解消することを確かめた。

 このハングが何の原因で起きるのかはわからない。少なくともインストール直後は起きていなかったから、カメラモジュールだけの問題ではなさそうである。このあと入れたアプリと何らかの競合が起きた可能性が高い。

 何が原因にせよ、少なくとも2.4.0で電源トラブルは解消した。というので、2.4.0にこれまでのアプリをインストールし直せば問題は解決する。せっせとNOOBS2.4.0の新しいバージョンにこれまでのアプリをインストールし始めた。

 SAMBAサーバーや、Motion動体検知パッケージ、日本語入力など、入れるたびに初期化の状況を確かめる。2.4.0では最終的にmotionを動かしても全く問題は起きなかった。

 やれやれ、長い道のりだったが、ここ暫く当研究所を悩ませたブートの不調は、OSの更新で解決することになった。もっと早く、カメラをdisableにしてテストしておけば、もう一台Raspi3を買わずにすんだのだが、まあ、これは結果論だろう。

今度はSAMBAドライブが不調(5/29/2017)
 そうこうするうちにまたトラブル発生である。SAMBAのディスクにしていた昔のLet'sNoteの2.5インチIDEドライブがおかしなことになった。立ち上がり時に、$LogFile is not clean. mount in Windows....のエラーが出て、書き込みが出来なくなった。Windowsでマウントし直しエラーをリセットせよとのことである。

 ファイルの中身は普通に見ることができる。SAMBAを通すとWindowsからも正常に見えるが、書き込みはこちらからもできない。それではというので、Win10の方にUSB経由で直接持ち込んで、エクスプローラーで見たら、何とドライブは認識したが「この場所にファイルはありません」という完全拒否である。

 Windowsに昔からあるディスク管理ユーティリティで調べる。コントロールパネルの奥にあるこのユーティリティ(このネストの深さは何だ。このソフトはサードパーティ製で、MSとしては何としてもいじらせたくないらしい)でドライブを見ると、ちゃんと正常にディスクは見える。  
 しかし、ディスクの形式がRAW(生とでも訳すか)となっているのが気になる。このRAWをキーワードにウェブを検索すると、おお、良かった。沢山解決法があるようだ。要するに、何らかのタイミングでドライブのブートレコードのディスクの種類を規定するコードが誤って変更されるとこういう状態になるらしい。

Windowsのフリーソフトで解決(6/1/2017)
解決法の中から、まず、TestDiskを選ぶ。このユーティリティは、LinuxやWindowsでも動くフリーソフトで一番評判が良さそうなソフトだ。早速ダウンロードした。ガイドするサイトも沢山ある。簡単に治りそうに見えたが、これが結構難しい。

 やれることが沢山ありすぎて迷うのだ。日本語化されていないのはともかく、何がおかしくなっているのかわからないので下手にいじることができない。このあたりは、一瞬の動作で、すべてのファイルを失う危険がある。良く納得してからでないと作業は出来ない。

 要するに、「今、自分が何をやっているかを理解していないときは手を出してはいけない」というやつである。この「RAW」という文言が何を意味するのか具体的にわからないからである。迷った挙句、他にも方法がありそうなのでこのユーティリティの作業を諦めた。ウェブで検索を続ける。

 その結果、昔、所長も使ったことのある商用ソフトAcronisの無償試用ソフト(Acronis Disk Director)が良さそうなので、これで修復することにした。サイトに行き、慎重に無償版をダウンロードする。こういうソフトのページには、宣伝用の全く違うソフトのダウンロードボタンが隠れていることが多いので気を付けないといけない。Ws000008

 何とか目的のソフトをダウンロードして、早速試してみた。このサイトが親切だ。
画面がわかりやすい。ガイドに従って、未初期化をRAWと読み替え作業を進める。順調に処理が進んで、そう時間もかからず完了した。RAWはNTFSに変わる。

 念のため、Windowsを再起動する。よーし、正常なドライブに戻った。書き込めるか。中に入っているテキストファイルを呼び出し文字を書き込んで保存する。良いぞ、問題なく変更された。このディスクの中に入っているファイルで失って困るものはないが、正常に戻ったことが嬉しい。

 SAMBAにつなぎなおし、read/write可能なことを確かめる。昔、知人にPCで何をするでもないのに環境整備だけに異常に熱心な人がいた。自分も今度の入れ込みぶりはこの系統かなと苦笑いする。今のところSAMBAで使っているのはmotionの記録ファイルだけである。

ACアダプターの負荷特性を調べると驚くべきことが(6/2/2017)
 Raspiの電源問題の後日談である。Raspi3の立ち上がりの不安定さを解消するため、めたらやたらDC5Vの安定化電源ACアダプターを買い込んだことは前回までにご紹介してある。それが、落ち着いて数えたら、容量が2A以上のものだけで6個もあった(購入4ケ、故障した無線ルーターなどからの流用品2ケ)。 

 容量とは言うが、本当にこれだけの電流を取り出せるのか確かめたことはない。前にも書いたように、必ずしも容量の大きいアダプターが安定してRaspiを動かせていたわけではない。彼らの実力がどの程度なのか、ちょっと本格的に調べてみたくなってきた。

 良く言う電源のレギュレーションとは過渡特性のことを指すが、それ以前の静的な負荷特性は余り問題にしない。しかし過渡特性は、この静的な負荷特性が基本になるもので、これが低いようでは問題にならないはずなのだが、余り話題にならないのはなぜだろう。調べてみよう。

Dsc01135 こういうときのために、セメント抵抗を何種類かそろえてある。スライダックのような本格的なものはないが、物理の実験よろしく直列並列を駆使すれば、5Vなら0.1Aきざみで数Aくらいまで測れるくらいの種類は持っている(50、20、10、2Ω)。

 ブレッドボードにこのあいだ買ったUSBコネクター電流計や、ACアダプタージャックを取り付け、少しづつ測り始めた。データが揃ってくると驚くべき事実が明らかになってきた。おおげさな話かもしれないが、こうしたACアダプターは全然定電圧電源ではないのである。

結構、ケーブルの損失があるのだ(6/5/2017)
 どのACアダプターでも、1A少々の電流でもかなりの電圧降下がある。負荷によって出力電圧が変わらないのが定電圧だと思うのだが、サイトのいう定電圧回路の一般的なロードレギュレーションの上限±0.2%どころではない。平気で数%も落ちてしまう。

 4A容量のアダプターといえども1A流して(正確には0.9A)、0.3Vも下がり4.7Vになってしまうのはどうみてもおかしい。これで定電圧アダプターと称するのはいかがなものか。

 確かに、5Vフルスケールでグラフを描いてみれば、0.3Vの低下というのははごくわずかだが、0.5Vフルスケールにしてみると直線的に電圧が低下していく。

 汎用的なアダプターと違い、無線ルーター、USBハブなどの付属のアダプターは無負荷のときはあきらかに5V以上で、使われる範囲で5Vを維持するようになっている。これなんか一種の詐欺だ。

Dsc01138  グラフを描きながら、悪態をついていたが、少し冷静になって考えてみると、わけがわかってきた。流れる電流が1A近くなるとケーブルの長さが効いてきて負荷端では電圧降下が避けられないのだ。 

サイトで調べてみると、銅線の直流抵抗は意外に大きい。#24(アダプターで使われる一般的な太さ)の撚り銅線(錫メッキ)で1mあたり、0.09Ω(1kmで89Ω)。ということは、1A流せば、たった1mのケーブルで、0.1V近く下がってしまうのだ(往復換算)。

 大抵のアダプターのDC側のケーブルは2m近い。一生懸命、アダプターを取り替え、セメント抵抗をつけたりはずしたりしてグラフを作ったが、あまり意味がないことがわかった。手持ちの沢山のACアダプターの記録を詳しく公開するつもりだったが、誤解を招きそうなのでやめておく。

 この測定結果は、これまでのRaspiでのテストの状況と良く符合する。アダプターではなく、DC側のケーブルの長さや太さが大きく影響している。一番成績の良かったのは、例の秋月での長さ10cmの電源ケーブルが一番トラブルが少なかった。

 負荷端での電圧降下を少なくするのは、太いケーブルにするか短くするかが一番で、ケーブルの長さにかかわらず一定にするには、負荷端から電圧測定線(リモートセンシング)を引き出すような大掛かりな装置が必要だということも分かった。今回は良い勉強をさせてもらった。

| | コメント (4) | トラックバック (0)

« 2017年5月 | トップページ | 2017年7月 »