« 2013年10月 | トップページ | 2013年12月 »

2013年11月の2件の記事

2013年11月22日 (金)

RaspberryPiの電源制御装置の回路図とソース公開

そう簡単には動いてくれない(11/13/2013)
 Tiny13を使ったRaspberryPiの電源制御装置は、前回の記事を書いているとき実はまだ完全には動いていなかった。あのときは苦労の末何とか動き始めていたので、そう書いたのだが、実機とのテストではさらに予想もしなかったドラマ(試練)が待っていた。

 実装版は、まず最初からプログラマー(AVRSP)がTiny13を認めないのである。ブレッドボードでは動いているので、配線間違いか、ハンダ付けのミスに違いない。しかし小さな基板に空きピンが殆どないほど部品が密集しているので目検するだけでも結構手間がかかる。S_pb146180

 とはいえ、たかが8ピンのAVRである。そんなに時間がかかるわけでもない。ひととおり配線をチェックするが、間違っているところは見つからなかった。しかし動かない。ハンダブリッジなどのハンダ付け不良は、マルチテスターで確認した。おかしいところはない。夜も遅かったので、その日は諦めて手仕舞いする。

 次の日、頭の中がクリアになっているのだろう。すぐ誤りが見つかった。何で昨夜見つけられなかったか不思議なくらいの基本ミスだ。ISPピンの順番と、Tiny13のピン配列を勘違いしていた。こいつが隣り合わせに密接していたので混乱してしまった。

 間違いの原因は、配線量が少ないのでTop Viewだけのアートワークだけで配線面のハンダ付けをしたためである。ハンダ面のBottom Viewの図面を作るのをさぼっていた。基本を忘れるとやはりろくなことがない。

 Tiny13をプログラマーが認識してしまえば、あとはブレッドボードと同じように問題なく動くはずだ。ミニブレッドボードに差したセメント抵抗で負荷テストをする。スイッチで電源が入りショートしていた抵抗を生かすと電流が減ってちゃんと電源が切れる。よし、良いようだ。

 いよいよ、実際のRasPiの電源につなぐ。おやあ、スイッチを入れた瞬間は電源が入り、LEDがつくが、すぐに切れてしまう。何回かやると、1回くらい無事に電源が入って動き出す時もあるが、たいていは切れてしまう。投入直後の電流が少ないのかもしれない。S_pb146170

 オシロのスイープを最大(一単位5秒)にし、実際に流れる電流を測ってみることにした。例の超低抵抗(0.22Ω)を電源にシリーズに入れ、両端の電圧をオシロの入力にする。シャットダウン時の電流量はきれいにいっぺんに下がるが、電源投入時には、定格になるまで結構時間がかかっている。

 これだ。定格の数百mAに上昇するまでには、秒どころが数秒かかっているではないか。現在の仕様は0.5秒たって定格にならないと、さらに0.5秒待ってそれでも下の場合に電源を切っている。そうか、立ち上がりのときはこの仕様では電源が入らないのだ。S_pb146171

投入直後だけ時間をあけるロジックを考える(11/14/2013)
 電源が切れるときは、すぐに切れて欲しいが、立ち上がるときは数秒待って欲しいという要件である。一種のパズルである。色々考える。要するにパワーダウンモードから立ち上がったときだけ、この電流監視を一定期間オミットしてやれば良い。

 出来上がったロジックはまあ、あまり褒められたものではない。秒カウンターを設けてこいつを数えているだけである。動作中はこの無駄なカウントアップを常に行うので(実際には一定以上は増やさないが)無駄なオペレーションになるが、大したロードではないだろう。

 テストに入る。おやあ、全く改善されない。電源を入れるとすぐに切れる。それにこの切れ方がおかしい。少なくとも1秒近くは電流を監視しているはずなのだが、この切れ方は一瞬だ。そうか、わかったぞ。これは電流を監視して切っているのではないのだ。これはマイコンがリセットされているからだ。

 今まで、ロジックばかり気にしていたけれど、Tiny13がリセットしていることまで気が回らなかった。電源投入時のRasPiのラッシュカレントで、電源電圧が低下し、マイコンがリセットしてしまっているに違いない。今度もオシロの出番だ。スイープを戻して、投入時のシングルショットを狙う。

Tiny13がリセットしている。猛烈なラッシュカレントを観測する(11/15/2013)
 何回か失敗した後、オシロで、RasPi投入時のラッシュカレントを観測するのに成功した。何と、電源投入直後、2回も1V台に下がる猛烈なディップが出ている。これじゃあどんなCPUでも、リセットするはずだ。このディップがRasPi本体の初期電流か、同時につないでいるHUBによるものなのかはわからない。S_pb156191

 電源を別にすることは考えられないので、このディップを軽減する措置を考えなければならない。まず、大容量パスコンで止める事を考える。基板はもうぎりぎりで、入れられるにしても100μFが限界だ。

 Tiny13のVccのところに、コンデンサーを空中配線で接続し、動作テストする。やった。スイッチを押すと、リセットせずに電源が入り、動き始めた。良かった。インダクターまでは要らなさそうだ。実装に入る。リレーの横がなんとか入りそうだ。苦労してハンダ付けする。

 テストしてみた。おやあ、何だ、またリセットだ。バラックでは止まったのに実装すると駄目になる。何故だろう。空中配線の方が調子が良い。場所が悪いのか。空中配線は、Vcc直結だったが、実装は少し迂回している。これがいけないのだろうか。

 ばかにされている。念の入ったことに、もう一度、空中配線に戻すと、今度は駄目。ええー、これは一体なんだ。さっきはうまくいったのに。空中配線で100μHのインダクターを入れるとリセットは止まった。コンデンサーは実装した場所でもOKである。S_pb156190

 オシロで波形を調べると、しっかりなまっていて、これなら問題なさそうである。やはりインダクターが必要か。しかし、インダクターを入れる余地は部品面にはもうない。

インダクターの大きさでも変化がある。気難しい(11/15/2013)
 部品箱を漁ると、10μHのリードタイプのインダクターが見つかった。おお、これならハンダ面に入れることが出来る。早速入れてみる。おやあ、駄目だ。うーむ、気難しいものだ。部品箱にあるだけのインダクターを総動員して調べる。

 フェライトビーズまで基板の切片につけてリード線を出し調べる。こいつらはみな20μH以下で全滅。大きいものも、表面実装のものも、100μH以上でないと有効でないことがわかった。このあいだ秋月で調達したLCRメーター(DE5000)が大活躍した。測定器は買っておくものである。S_pb156186

 良く見ると、表面実装のインダクターにも外形が大きいものもあれば、小さいものもある。小さい表面実装のインダクターを見ていて閃いた。こいつはもしかしてハンダ面を整理すれば、基板に直接つけることが出来るのではないか。

 基板を確かめる。ふむ、うまくいきそうだ。リレーの下のハンダ面は、配線を整理すると、ギリギリ表面実装の100μHが収まるくらいのスペースがとれそうである。早速、実装にとりかかる。

 何とかインダクターは納まった。通電してみる。おーし、良いぞ。今度こそリセットせず、素直にRasPiが立ちあがった。今までの暗い気持ちがうそのように吹き飛んで、晴れ晴れとした気分になる。苦労すればするほど動いた時の喜びは大きい。因果なものである。S_pb216207

回路図とソースコードを公開する(11/16/2013)
 テストのためばらしてあったケースと基板を組み立て直し、スイッチボックスに入った制御装置を完成させる。SAMBAサーバーにしているRasPiに接続し、運用を開始した。スイッチを押すと、カチッとリレーの音がして、何事もなく電源が入る。次にシャットダウンボタンを押すと、暫くして、順調にシステムは終了し、赤ランプだけになり、電源も切れる.....はずだった。おやあ、切れない。

 うはあ、何だ、何だ。また、駄目か。あ、そうか。このSAMBAサーバーは2.5インチHDDがUSBでつながっている。シャットダウン時でも想定した以上の電流が流れているのだ。あわてて、ケースをはずし、ISPピンのUARTをつけて(PB1ではなくSCKのPB2がTTLの送信ピン)モニターを開始する。

 PCのコンソール上に一秒ごとのADコンバーターの計測値が表示される。こういうときのためにUARTが必要だったのだ。思った通りこのSAMBAサーバーは、HDDをつないでいるため、シャットダウン時の待機電流が、想定の倍以上の200mA近く流れていた。Autopwe_tiny13

 原因がわかれば対処は簡単だ。動作時との差は前と変わらない(動作時もそれだけ増えている)ので、閾値をそれに合わせて上げるだけで良い。プログラムをコンパイルし直し、ISPで流し込む。さあ、これでどうだ。よーし、シャットダウンのあと、チッと音がして問題なく電源も切れた。うれしくて、何度もRasPiを立ち上げ直しては喜ぶ。まるで子供である。

 以下に、このTiny13のソースコードと、回路図を公開いたします。回路図のBsch3ファイルは、AVRStudioのフォルダーの中に入っています。参考にしてください。

「AutoPwr.zip」をダウンロード

実体双眼顕微鏡をついに注文する(11/14/2013)
 前々から欲しいと思っていた実体双眼顕微鏡を遂に発注した。6年前に電子工作を始めて以来、視力はあきらかに衰えており、今では普通の2.54ミリピッチの汎用基板ですら、拡大鏡無しにはハンダ付けが覚束なくなっている。

 今使っている拡大鏡のレンズは、プラスチック製でハンダごてを不用意にあててあちこち傷が走っている。このあいだ新しいものを買ったのだが、せいぜいが3倍程度の倍率では、正直言って、0.5ミリピッチの表面実装部品のハンダ付けは無理で、前からこの実体顕微鏡は欲しかった。

 実体顕微鏡とは、研究室などでの精密な手作業には欠かせない道具で、昔、基板の実装を女子工員さんが手作業で半田付けしていたころには盛んに使われていた。立体視ができることと、スペースがレンズと対象物の間にあるので、手元の作業が出来るのが特徴だ。

 結構な値段なので、アマチュアの人はまず持っていないだろう。安いものもあるが、対物レンズと対象物の間がせまく観察するだけなら良いが、ハンダごてなどを使う工作にはむいていない。

 これから、0.5ミリピッチの表面実装ICを沢山使うことはもう余り考えられないが、今苦労している細かい作業が文明の利器で少しでも楽になるのに、それを我慢しているのもおかしな話だ。買おうと思えば買えない値段ではない。

 ハンダ付けのあとの仕上がり具合をいちいち20Xのルーペで確認するたびに、実体顕微鏡があればもっと楽に確かめられるのになあといつも思っていた。といって、5万を越える出費は、簡単に決断できるものではない。

 今年の始め頃から波動的に何度か買う気が盛り上がっていたのだが、その度に抑えてきた。年寄りの単なる趣味の工作に、双眼実体顕微鏡をそろえるのは、何か、腕はさっぱりなのに道具に金の糸目をつけない成金ゴルファーみたいで抵抗があったのだ。

 しかし、ウェブで、普通のアマチュアの方が実体顕微鏡で楽な思いをされているのを見ていると段々我慢が出来なくなってきた。中古を買っている人もいるが、こういう道具はなるべく新品が欲しい。電子工作を始めて、早や6年、年も70近くなったし、買っても、もう馬鹿にされることはなかろう(いや馬鹿にされることを恐れているわけではないが)。

 買う決心を固めつつウェブで機会あるごとに何を買うか調べていた。もとより数十万円する業務用は候補ではなく、アマチュアが手の出せる実体顕微鏡では、やはりこのホーザンのL50というのが一番良さそうだ。こいつは電子工作用に特化していて、値段も手頃(正価は8万円台だが実際は6万足らずで買える)である。

 前にも書いたように、こういう工作器具はなぜか店による価格差が大きい。沢山の店が出品しているが、結局、一番安い価格帯に入る楽天のここを選んだ。楽天のポイントが欲しかったこともある。価格は¥59,327(送料は無料)。久しぶりのオシロに次ぐ高額の電子工作関係の買い物である。

ホーザン双眼実体顕微鏡L50が届いた。こいつはすごい(11/17/2013)
 注文して2日で届いた。先方のメールでは受注製品なので1週間近くかかると言われていたのに恐ろしく早い。とるものもとりあえず梱包を解く。思ったよりコンパクトだ。これなら工作机に置いてもそう邪魔にならない。S_pb196199

 早速、セッティングにかかる。最初、メガネをつけたまま調整しようとしたが、どうしてもあわない。メガネをはずすと両眼の位置が接眼レンズに近くなって、突然視界が広がった。おおお、見える、見える。思っていたより視野も広い。

 これはすごい。これまでルーペでやっと見えていた、20倍の世界が両目に広がる。別世界を見るようだ。ハンダの肌目、フラックスの残滓、それを拭き取った時に残った綿棒の繊維の1本1本が手に取るように見える。

 照明が揃えば、もっと鮮明になるだろう。対物レンズとの間は半田ごてを入れる十分な空間もあるし、底板をはずすこともできるので、平面のもの以外にも対応が可能だ。これは楽しみなことになってきた。

 早速、照明アタッチメントを自作する計画を立てる。オプション品として用意されているが、法外な高額(2万円以上する)なのでこれは最初から自作するつもりをしている。参考サイトもある。電源を何にするか、DC-DCコンバーターを使うか、それを使うなら何にするか迷うところだ。

実体顕微鏡の照明アタッチメントをアクリル板で作る(11/18/2013)
 脱線は当研究所の得意とするところである。仕事の帰り秋葉原に寄り、秋月電子で照明用の高輝度白色LEDを物色する。いや、ここのLEDの品揃えは凄い。何を選んで良いのかこれまた迷ってしまう。下調べをしていったのだが、種類が多すぎる。昔買った白色LEDはとうに旧製品となって半額以下で売られている。

 照明用なので、カンデラは小さいが、照射角が広い60°のこれを選ぶ。帰ってきて試しに点けてみた。うわあ、これは明るい。照明範囲もぐっと広がっている。これなら、参考にしたサイトのように12個も並べずに半分で十分かもしれない。

 アタッチメントのフレームはアクリルの2ミリで作ることにする。参考サイトでは3ミリのアルミを使っているが、放熱のことはさほど心配しないで良いだろう。

 早速、手持ちのアクリル板をとりだして設計に入る。形は結局、参考サイトと全く同じ形になった。対象顕微鏡が同じホーザンL50なので当然と言えば当然だ。ただ電源は悩ましい。ACアダプターにするか、DC-DCコンバーター基板を使って使い古しの電池を活用するか。まだ迷っている。

 電源のことはあとで考えることにして、フレームの工作にとりかかる。久しぶりのコッピングソーの出番である。このあいだのライブカメラのフレームの時は、アクリル板が切れたあと熱で再固着してしまい、とても苦労した覚えがある。今度はそうならないようにしたい。

コッピングソーでアクリル板が綺麗に切れて上機嫌(11/19/2013)
 機械を棚から取り出しセットアップする。悲しいことに刃の装填方法を忘れている。ウェブで復習する。糸鋸の刃の装填は意外と難しい。間違えると、うなるだけで往復してくれないし、ゆるみがあると振動が激しくてまともに動かない。ウェブの解説どおりでは最初うなるだけで動かなかった。S_pb196194

 そのうち、糸鋸の理屈がわかって、ウェブの説明を勘違いしていたことがわかる。刃の駆動部が一番下にあるときに上部の可動部(木屑吹き出しポンプになっている)を押し下げておかねばならない。これを逆にすれば当然動かない。2つのサイトの説明をまぜこぜにしていたようだ。

 スムーズに刃が動き出したので、素材にドリルでまず小さい穴を開け、そこに刃を通して、真ん中のレンズが入る空洞部分の切り抜きから始める。今度は失敗しないよう、速度を一番遅くし、一気に切らないで少しづつ切っては休むを繰り返す。全く固着もなくきれいに円形が切れていく。良いぞ。その調子だ。

 安全のため、ガイド穴を4つあけ、1/4円単位に切る。切り過ぎないよう、所定の切り抜き線より少し内側を切るのだが、段々うまくなって、最後の方になると、ぎりぎりのところまで近づいても自信を持って方向を制御できるようになった。思っていたよりずっと早く切り抜きが終わる。

 上機嫌である。「刃のスピードを遅くする」「あせって無理に押して切り進めない」「時々休む」が、熱を持たせないコツのようだ(あたりまえのことだが)。用心して少し寸法線より内側で切ったのだが、この調子だと、これも不要になりそうだ。この部分が少なければ少ないほどあとのやすりかけの手間が省ける。今後が楽しみである。S_pb196196

 次はドリルによる穴あけである。センターポンチはアクリルなので割れる危険があるので省略する。そのかわり錐(きり)で、寸法が厳密なところ(本体との固定用6ミリ穴。これが狂うとレンズにリング部分が入らなくなる)だけ念入りに開けてドリルが泳がないようにする。それ以外のところは少々狂っても問題ない(見栄えは悪くなるが)。

 瞬間接着剤でLEDのはめたところを接着し、早くも完成である。はやる心を抑えながら、LEDを仮にハンダ付けし、このあいだの3Vから9Vを出すDC-DCコンバーターを空中配線し、点灯してみる。おおー、これは十分明るい。全く照明ムラも起きていない。60度の照射角があれば6個で十分だ。照明が明るいので、見えるものが一層はっきりして楽しい。

細かいハンダ付けが楽々。これはもう離せない(11/20/2013)
S_pb216211  辛抱できなくて、仮配線のまま、実体顕微鏡でのハンダ付けを早速試してみることにした。対象は、このあいだマルチメーターのロガー出力でUSB-TTLアダプターを交換したとき、はずしたままになっていたアダプターとUSBソケットのハンダ付けである。

 うはあ、0.3ミリのUEW線が丸太のように太い。ピンセットで動かすとこれが自由自在に動く。いやいや、これは楽だ。半田ごてをレンズの視野に入れる。レンズにあたりそうで冷や冷やするが、大丈夫、十分余裕がある。何しろ8センチ以上クリアランスがあるのだ。 S_pb196198

 ハンダがコテで溶けて基板ホールに溶け込んでいく姿がはっきりと目で確認できる。出来栄えは素晴らしく美しい。感動ものである。顕微鏡からはずして肉眼で見てみても、これが実に綺麗に仕上がっていることがわかる。ピンセットで、UEW線を細かく正確に位置決め出来るのが美しさに寄与しているようだ。

 間違いなく世界が広がった。まだ慣れていないのでひとつの工程にかかる時間は、拡大鏡などでやるより明らかに時間がかかっているが、これは慣れると早くなるだろう。本末転倒だけれど、なにか細かい表面実装の基板を作りたくなった。

 お年を召されてハンダ付けがしにくくなったら、貯金をはたいてでもこの実体顕微鏡はおすすめである。今までなんでこんなに苦労していたのか馬鹿らしくなるほど、ハンダ付けが楽になる。

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

2013年11月14日 (木)

RaspberryPiの電源制御装置をTiny13で作る

 要するに、PCと同じ電源環境にしようという企みである。スイッチのひと押しで電源が入り、システムをshutdownすれば自動的にメインスイッチ(リレー)が動いて本来の電源を切る。

 始め、投入のことだけを考えて、小さなスイッチボックスを作ったのだが、そのうち妄想がどんどん膨らんで、スイッチ一押しで電源が入らないかとか(これはリレーのセルフビレー(自己保持)で簡単にできる)、いや、どうせリレーの制御をするなら、電源断も、shutdownのあとの電流減で自動的に切れないかと考えた。

 このあたりまで来れば、リレーやロジックICでやるよりマイコンの方が圧倒的に楽で、しかも自由度が高い。当研究所で最小のマイコン、AVRのTiny13の出番である。こいつは生意気にもADコンバーターを持っていることがわかって、俄然作る気になった。安く作れれば商品化もできるかもしれない。

 定期的に、流れる電流を監視していれば、シャットダウンのあとは消費電流が激減するので、電流が一定限度以下になればリレーを動かせば良い。ついでにPCのようにボタンを長押しすれば強制的に電源が切れるようにすれば本格的だ。

 昔、マイコンの電子工作は箱庭や盆栽のように面白いと、どこかに書いた覚えがある。Tiny13はなかでも、手のひらに乗るミニ盆栽だ。なにしろフラッシュは1KBしかない。ちょっとしたプログラムを書けばすぐ満杯になる。

 でも、こういう狭いところに、いかに必要な機能を詰め込むか思案するところに大きな楽しみがある。などと余裕で開発に入ったのだが、これが結構難儀した。ここ1週間悪戦苦闘して、やっとのことで動くようになった。これまでのほかの工作の話と一緒に、まとめてご紹介する。

RaspberryPiのSDカードフォルダーを小さいものに取り替える(10/21/2013)
 RasPiのSDカードホルダーは、ご存知のようにコスト節減のためか、ちゃちな安物で、差し込んだカードの半分近くが基板からはみ出す。ただでさえ四方にコネクターが出ている上、さしたSDカードがはみ出して始末が悪い。

S_pb146176 SDカードアダプターを半分に切って、そこへマイクロSDカードソケットを横置きにつけ、このはみ出しをなくすアダプターが作られている。Raspiが売り出された初期の頃から自作レポートがあったり、色々なところで頒布されたりしていたのだが買わずにいた。

 RasPiを使っているうち必要性を感じて探してみたのだが、大抵は売り切れてしまっていた。ただ、ここはまだ在庫があるようなので頼んでみた。例によって、ネットでの申し込みと、オンライン振込なので注文は簡単に済んだ。

 程なく届いたので、早速試してみる。少し厚みが出来るので、RSコンポーネントから買ったケースは少しあたる。これはケースを削ってしまえば問題ない。アダプターは基板から全くはみださず、とても良い感じである。

S_pb146173  ところが、2台目に入れるとI/Oエラーが起きてLinuxが立ち上がらない。別のSDカードを入れると問題なく動くので、このアダプターのせいではなく悪いのはSDカードである。そう、このSDカードは、以前、バックアップをとろうとして出来なかったライブカメラの方の4GBのSDカードである。

ライブカメラのSDカードのバックアップに苦戦(10/26/2013)
 このSDカードはApacheはじめ色々パッケージを入れたので、手狭になり、8GBに換装してやろうと、バックアップをとろうとしたのだが、これがことごとく挫折したいわくつきのカードである。

 まずPC上でのDD_Windowsによる物理レコードバックアップでは、1683.5MB(ファイルレコード上では1723.9MB)でI/Oエラーで止まる。何回やっても同じところで止まる(一度、3G近くまで行ったことがあるが一度のみ)。

 Raspi上のDDコマンドでも同じところなので、ここで物理的な破壊が起きているのは確実である。それではというのでRaspi上で、tarでバックアップをとると、何とか/以下のアーカイブが作れるが、エラーが起きているので完全に戻らないよと釘を刺される。

 cpコマンドでrucursiveにコピーすると、/usr/libのあるファイルでエラー終了する。それを消去しようとしても、同じエラーで消去できない。もうだいぶ意地になってきた。

 PCのUbuntuでバックアップをとると、一応終わるが、10個ほどのファイルがバックアップできなかったというメッセージがでる。これは上記のファイルとは全く無関係なところである。

 ところが、fsck.ext4でスキャンすると、cleanとでる。Ubuntuのbadblocks でサーチすると、3つにわかれた34ブロックのbad blockが記録されるが、これをfsckに反映するのは推奨されていない。全部を壊す可能性があると脅される。

 で、動かないかというとLinuxは普通に立ち上がるし、ライブカメラは全く正常に動くのである。こわれているところを使っていないからなのだが、どうも寝覚めが悪い。いずれにしても、このアダプターではI/Oエラーが起きることは間違いない。さて、どうしたものか。

思い切ってSDカードを取り替える(10/28/2013)

  迷ったけれど、あまりこれにかかわっているのは時間の無駄のような気がして、このSDカードの修復は諦めて、作り直すことにする。とりあえず、これまでに自分が作ったソースファイルや、設定ファイルをrestoreして、新しい8GBのSDカードで作り直しにとりかかる。時間はかかるが、一度通った道なので進捗は順調だ。

 mjpg-streamerのSVNでまたつまづく。しかし今度も、何回かURLをいじっている間に、いつの間にかソースがとりこめた。ところが立ち上げてみるとmjpg-streamerはUnable to set format 144869519というエラーメッセージが出て立ち上がらない。

 以前味をしめた、エラーメッセージそのままをgoogleに投げる方法で情報を探してみた。すると、沢山の人が同じエラーで悩んでいることが判明する。いやあ、世界は狭くなったものだ。どうも、YUVモードをサポートしているとかいないとか、判然としない。

 -yオプションをつければ良いと言う話だが、こちらにはついている。英語の情報なので読むのに時間がかかる。えい、ままよと、立ち上げ直したら、何と何の問題もなく画像が出た。???であるが、まあ、動けば良い。これ以上の追求はやめて先へ進む。

RasPiの電源スイッチをつける工作のあと思いついたこと(10/31/2013)

 新しく作り直した8GBのSDカードでRaspiは、ライブカメラが動くところまで戻った。ライブカメラの運用は、猫対策が思いつかないので頓挫したままだ。そのうち、前から気になっていた、Raspiの電源スイッチを作りたくなった。

 SAMBAサーバーにはシャットダウンコマンドを出すスイッチをつけてうまく行ったのだが、電源までは切れない。赤いランプがついたまま放置しておくのも気分的に良くない。それにもうひとつのRaspiについているHUBには電源スイッチがついていない。こいつを切る時はアダプターのジャックを抜くと言う原始的な方法でしか電源を切れない。物理的な電源スイッチが欲しい。

S_pb086151  大層な話ではない。単に、LED付きのロッカースイッチを小さなタカチ(SW-40 40X30X20)のケースに入れたスイッチボックスを作っただけである。最初、使っているハブのACアダプターのジャックに合うプラグ(えらく細いジャックだ)を探していたが、ケーブルを切ってしまえば良いことに気づいた。

 早速工作にとりかかり、あっという間に完成した。いちいちプラグを抜き差しする手間がなくなって快適である。余りにも簡単に出来たので、何か物足りなく感じているうち思いついたことがある。

 せっかくここまで来たのだから、このあいだのシャットダウンと合わせてRaspiの自動電源断がやりたくなってきた。電流センサーかなにかで、Raspiがシャットダウンしたときの電流を測定し、一定時間、電流が下がれば、全体の電源をリレーで落とせばいけるような気がする。

S_pb086149  早速、実際の電流をマルチメーターで測定する。電源投入直後のラッシュカレントは1Aを越えるが、すぐ400mA程度に落ち着く。ログオン時は、500mAを越える時があるが、大体430~480mAで推移する。シャットダウンすると、120mAまで下がって動くことはない。

 このあいだのDC-DCコンバーター(NJM2360)のとき、1Ω以下の抵抗をいくつか買ってある。0.22Ωが一番小さい抵抗で、さきほどの電流値だと、この抵抗の電位差は、0.1Vと0.03Vあたりになる。Tiny13のADコンバーターは、1.1Vの基準電圧で10ビットなので、カウント値は凡そ、100と30、問題なく識別できそうである。

RasPi電源の自動切断装置の開発(11/2/2013)
 この電源制御装置はSAMBAのサーバーに使う予定だ。スイッチを押すだけで起動し、別のスイッチを押せば自動的にshutdownして電源も切れる。もし、どうしても強制的に電源を切りたければ、PCのスタートボタンと同じように、スイッチの長押しで切ってしまうこともできる。

 ACを切るのではなく、5Vを入り切りするので、制御部のAC電源を用意する必要はない。リレーも手持ちの小型リレーで十分だ。部品箱にいくつか常備してあるリレーを取り出してみる。DC 30V 1Aのは沢山あるが、Raspiの消費電流を考えるとちょっと不安だ。さらに部品箱をさらうと、3Aのリレーがでてきた。

 ケースを何にするか。先の電源スイッチボックスにしたケースでは、リレーが大きいのでちょっと無理だが、それより一廻り大きいケース(タカチ SW-55)が手持ちにある。Raspiの大きさに近づいてくるというのがちょっと不満だが、手持ちだけで部品が揃うというのは気分が良い。

S_pb146183  ハード的には問題なく出来そうである。ソフトの計画を立て始める。小物にしては珍しく慎重に擬似コーディングから始めた。このあいだの時計の自動巻き機のソフトパワースイッチが参考になりそうだ。ただ、こいつはTiny2313なので、Tiny13で、sleepモードが揃っているかが問題だ。

 良かった、Tiny13でもパワーダウンモードがある。まあ、電池ではないので余り神経質になることもない。ただ、パワーダウンモードから立ち上がるピンは、ISPのMISOピンにあたるので、ISP-UARTでモニタリングするには制約が出てきた。

同じPINをUARTと外部割込みに使うのが難しい(11/5/2013)

 慎重に始めたと言っても、複雑なことは何もない。電源が入れば、いきなりパワーダウンモードのスリープに入って、スイッチが押されるのを待つ。スイッチが押されたら、スリープモードをアイドルモードに戻し、リレーをONして電源を入れる。

 そのあとは一定間隔で消費電流をADコンバーターで測定し、何回か規定以下の電流だったときは、リレーをOFFして電源を切り、最初のパワーダウンモードに戻る。このほかスイッチを長押ししたときも電源を切るロジックを加える。難しいところはどこにもない(はずだった)。

 8ピンのAVRである。簡単にブレッドボードに回路が組みあがる。ソースコードも大した量ではない。すぐに出来上がった。いつものavrspを立ち上げて動作を確認したあと、ソフトのテストを始める。ところが、デバッグ用のUARTが思うように言うことを聞かない。

 Tiny13のパワーダウンモードで動く外部割込みピンPB1は、ISP-UARTの送信ライン(MISO/PB1)と共用なので、UARTのたびに、丸ごとポートとピンの設定を取り換えて動かすようにしているのだが、これがうまくいかない。

 デバッグメッセージを出すprintf(ここは自前の文字列出力関数)は、その前後に、次のようにUARTの初期化とリストアコマンドを挟んでいる。

 uart_init();
(文字列出力関数)
 uart_deinit();

 こうすることで、とりあえずUARTも、パワーダウンモードの割り込みも動くのだが、文字が化け化けで中味が見えない。ボーレートを下げても改善されない。頭を抱える。さっさと、UARTを諦めて別の方法でデバッグを考えればよいのだが、UARTにこだわる理由がある。

 この装置では、シャットダウンを決める電流値がキーなのでADコンバーターの値が動作中読み取れて調整が楽なようにしておかねばならない。UARTをなくすわけにはいかないのだ。

 それならパワーダウンモードのPB1のsleepを諦め、アイドルスリープのモードにすれば、ISP-UARTとぶつからずにすむ。しかも電池駆動ではないので、消費電流にこだわることもない。

 しかし、この程度のことがうまくいかないというのが気に入らない。生来の負けず嫌いである。こんなことくらいでパワーダウンモードの低消費電流を諦めるわけには行かない。それに8ピンのAVRにはもう外部割込みに使える独立したピンがない。

 それより、動き方がどうも不審で思ったような動きをしていないような気がする。しかし字化けしているので確認できない。UARTが使えないというのは何と不便なことかということを思い知る。

普通のソフトUARTをTiny13に入れる(11/7/2013)
 何をやっても改善されないので、ついにUARTを外し、動きをLEDの点滅で確認することにした。するといくつか勘違いが見つかり、それを修正して、やっと動くところまで来た。スイッチを押すと電源がONになり、長押しすると電源がOFFになるロジックである。

 流れる電流を逐一報告させるため、UARTを入れなおす。しかし、ポートの切り替えを頻繁にやっているせいか、どうしても文字が正確に出てこない。しかも、スイッチの長押しで強制的に電源を切るロジックは、ISP-UARTでは監視できない(押してるスイッチが送信ライン)ことに気が付く。

 これに暫く気がつかなくて、「動かない。動かない」と悩んでいた自分の馬鹿さ加減が悔しくて、どうしてもTiny13にUARTをつけて動かしたくなった。完全に意地になっている。

 そういうことなら、昔、XbeeのAPIモード汎用モニターのソースを公開するときに、ISPを使わないソフトUARTを開発してある。ChaNさんのISP-UARTは、ISPケーブルをつけたままデバッグに入れるので、超便利なのだが、最近はシリアルのCOM1インターフェースの付いたPCが殆どなくなったのを配慮してソースの公開用のときに開発したものである。

 Tiny13のフラッシュはわずか1KBで、ISP-UARTをはずすと現在のフラッシュサイズは450バイト程度である。ISP-UARTを入れて700バイト近く、確か、ChaNさんのアセンブラーソースをやめて自前のCコードにしたらサイズが大きくなってしまった記憶がある。

 ソースコードはあるが、フラッシュがどれくらい増えるか見当がつかない。恐る恐る、ヘッダーファイルなどをMega用からTiny13用に取替え、コンパイルしてみる。良かった。同じようなサイズで問題なさそうだ。しかし、動かしてみたら文字は化け化けでかえって前より悪くなってしまった。

 こうなると、もう意地の上塗りである。何とかこいつを動かすまで先に進めなくなった。解決策を探る。テスト済みのプログラムだからコーディングミスはない(だろう)とすると、ボーレートが合っていないだけではないだろうかという仮説をたてる。

 オシロスコープを持ち出して、送信データを測る。こういうときのオシロの効果は絶大だ。トリガーをAutoでなく、Normalにして出だしのところを残すようにすると簡単に送信パルスがとれた。測ってみるとやはり所定どおりの長さではなく(9600bpsで、104μs)、100μs以下のようだ。

Tiny13_ctl  Tiny13は、クロックはCR発振で9.6Mhzなのだが少しそれより早いようなので、ボーレートの調整用のループ数を大きくして合わせる。サイズが小さいのでフラッシュ更新は一瞬で終わる。調整は何度でも簡単に行える。

 やっぱり原因はボーレートだった。1ビットの長さを規定どおりにすると、字化けは完全に解消した。ADコンバーターの数値や、タイムアウトの時間などが問題なく表示されるようになった。そう、こうでなくてはいかんと一人悦にいる。

ロボットショーに行って来た(11/9/2013)
 部屋にこもりきりで開発に没頭していると気晴らしに外へ出かけたくなる。たまたま招待券を貰ったので、初めてロボットショー(正式名は2013国際ロボット展)なるものに出かけてみた。TVでも既に色々なところで紹介されている。場所は東京ビッグサイトである。ここは10年近いご無沙汰なところなので息抜きにも良い。

 珍しく首都高速に乗って車で出かけた。ところが降りるところを間違え、隣の島の大井埠頭まで連れて行かれた。レインボーブリッジから東京ビッグサイトに行く時は、必ずつきあたりで左折して、有明インターで降りるか、手前の「お台場」で降りないと大変なことになる。

 事前に地図を見て、「臨海副都心」という最寄のインターで出られると思っていたら、このインターは、レインボーブリッジ側から来ると出口がない!横浜側からは降りられるのだが、反対車線は入り口しかないのである。で、どうなるかというと海底トンネルを越えて隣の島の大井埠頭まで連れて行かれる。

S_pb086141  大井インターで降りると悲劇が待っていた。折り返しは首都高速のトンネルしかなく、同額の別料金をとられるか、延々と迂回してもういちどレインボーブリッジを渡らなければならない。お金を払うのがしゃくで、下の道を経由したら、しっかり迷って30分以上も余計にかかってしまった。

 会場はウィークデイだったので会社関係者が多く、思ったほど混んではいなかった。それにしても産業用ロボットの発達はすさまじい。重量物を軽々持ち上げ、8台近くの大型ロボットが一斉に工作対象に集まって、全くぶつからずに同時に作業を開始する。ただ、ただ、あっけにとられて見ているだけである。

S_pb086139  細かい部品の移動、受け渡し、介護の手助け、およそ人間がやる物理的な作業は、もう殆どのことがロボットに出来そうである。進歩の流れは、ロボットが自律的に判断し、しかも他との協調作業をいかに簡単(複雑なプログラミングなしに)にやるのかという方向に進んでいるように見えた。

 こういうショーで面白いのは、大会社の大きなブースだけでなく、実は細かい仕切りのベンチャーのところにある。しかし、今日はお目当てがあるのであまりゆっくり見ていられない。そう、お目当ては、マイクロマウスやロボトレースの実演である。

S_pb086146  TVなどで散々見ていたけれど、やっぱり実際の眼でみるのとでは迫力は大違いだ。マイクロマウスが思っていた以上に小さいのに驚いた。全国大会で2位の「さくらねずみ」さんの模範走行を見せてもらった。

小さいパッケージにつめこむことに夢中になる(11/12/2013)

 電子工作に戻ろう。UARTが戻ったので、テストは順調に進み、セメント抵抗を使った動作実験もうまくいった。ブレッドボードでのテストはだいたいすんだので、いよいよ実装にかかる。

 最初は、手持ちのリレーが入るタカチのSW-55(55X40X20)を使う予定だったが、秋月で買ってきたリレー(5V DC30V 2A)が思いのほか小さかったので、色気を出して、一番小さいケースで、このあいだのスイッチボックスにしたケース(タカチSW40 予備があった)に現物を入れて試してみた。

S_pb146178  うむ、何とか入りそうだ。アートワークを始める。4隅に固定用のネジ穴が出来るので、本当にギリギリのサイズだ。これも秋月で最近買ったプッシュスイッチがお誂えのようにピッタリ収まる。快調である。

 基板固定のスペーサーは、内径2ミリのパイプにタッピングした高さ3ミリの自作品である。基板の広さを確保するために固定穴を4隅ギリギリに配置した結果、ケースの底板にスペーサーが当たってしまう。底板を削ることでこれを回避する。まさしくミニ盆栽の世界である。

S_pb146181  何とかつめこんだ。あれえ、DCアダプタージャックが、電流測定用の1/2W抵抗とぶつかる。こいつを基板のハンダ面に移動させる。電源用のコードが太いので交差させると基板が固定できない。配線そのものを換えて解決する。まあ、これが楽しくてやっているのだけれど難行の連続である。

 で、この実装した電源制御装置は動いたのか。まともに動くまでにはこれからまだいくつかの山を越さなければならなかったのだが、ちょっと記事の量が多くなりすぎたので、この顛末は次回に。

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

« 2013年10月 | トップページ | 2013年12月 »