カテゴリー「EAGLE」の6件の記事

2009年12月20日 (日)

リニアPCMプレーヤー3号機の開発

 忘年会のシーズンがやってきた。お昼より夜のスケジュール調整が忙しい。しかし電子工作を始めてからは回数を減らすようにしている。酒は嫌いではないが、飲んだ後は何もやる気がなくなって、何か人生を僅かづつでも無駄にしているような気持ちになるからだ。

 それでも、楽器演奏、模型制作、フライトシミュレーター(勿論PCでの)という、どれもマイナーで脈絡のない趣味を共通に持つ友人との、先日の忘年会は実に楽しかった。電子工作に関する話題もほぼ通じる。全く同じでなく少しづつ分野がずれているのだが、その方がお互いの情報交換になって盛り上がるようだ。

 そんなこともあって、リニアPCMプレーヤーの第三版(3号機)の開発は余り進んでいないが、日を空けると忘れそうになるので、この10日間の経過を紹介しておこう。

プレーヤーのソフトに画期的改善が可能か(12/15/09)
 これまでリニアPCMプレーヤーのソフトは、液晶モジュール(LCD)を小さいものに取り替えて動くようにしただけで、本体の構造は全く変わっていない。LCDの2行のわずかなスペースに曲名リストを表示し、演奏ボタンで演奏を始めると、1行目にWAVファイル名、2行目にそのWAVフォーマット(サンプリング周波数など)を表示するだけで演奏が終わるまで何も変わらないというのは同じだ。

 PCや市販のポータブルプレーヤーのように、演奏時間や、プログレスバーのようなものが出ると恰好良いのだが、OSのない8ビットのマイコンでは無理だと諦めていた。しかし、3号機のハードの設計にこれだけ苦労しているのに、ソフトを何も改善しないのは芸がない。何か変えるものはないかと思案しているうち、ふと思いついた。

 そもそも、経過時間表示を諦めた理由は、44.1khzの2倍オーバーサンプリング、11.3μsごとの割込みの度に、ステレオ16 ビットのデータをDACに送り、かたわらSDカードからせっせとデータを読み込んでバッファーに途切れなく書き込む処理のシビアな時間的制約である。Pcm44_ok

 悠長にLCDにデータを表示している間はない。ここはミリセカンドのオーダーである。Mega328にはDMAなどという洒落た機構はついていない。バッファーもこれ以上大きくするわけには行かない。OSが入らなければこんな同時処理は無理である。

 しかし、このあいだのロジアナのデータアクセスのタイミングチャートを見ていて気がついた。SDカードのアクセス単位は1セクターで、512バイト、バッファーはこの大きさで2つあり、DACはこれを連続的に読み出し、SDカードの読み込みルーチンは、DACが次のバッファーを処理し始めるまで待って、空いたところのバッファーに書き出す。

 512バイトのバッファーを読み切る時間は決まっている。サンプリング44.1kHz、16ビットステレオでおよそ2.9msである。一方、クロック20MhzでのFatFSの読み込み時間は、実測で1.3msで、残りの1.6msはバッファーが空くのをひたすらループで待っているだけである。

 ここにSysTickのようなインタバルタイマーで割り込みをかけ、バッファーが空いていない時はすぐバックグラウンド処理に戻り、バッファーが空いていたら、この割込みルーチンでファイル読み込みをすれば、OSを使わなくても、経過時間やプログレスバーのようなものが表示できるのではないか。タスク構造は3段になるけれど、常に3段である必要はない。ディスクアクセスの時だけでよい。うーむ、何かうまく行くような気がする。

 勿論、沢山問題があるのはわかっている。まず一番の問題は、DACのサンプリング割込みが、このインタバルタイマー(というよりこれはSysTickそのものだが)割り込みによって影響を受けないかということである。ただ、割込みの割込み、いわゆる多重割込みは確かAVRでも出来たはずだ。

 早速、Webに助けを求める。あった。あった。WINAVRは多重割込み(Nested Interrupt)をサポートしている。通常は割込みルーチンの中は暴走をさけるため割込み禁止になっているのだが、割込み解除のコードを追加するだけで多重割込みができる。C言語でも大丈夫なようだ。おお、割込みルーチンにオプションがあって、割込みルーチンの先頭で割込み禁止を解く、ISR_NOBLOCKというオプションまである。これはDACのように少しでも割り込み禁止をかけたくない(ジッターが出て音質が損なわれる)ときは都合が良い。

 次の問題は、演奏中断のときのタイマーの取り扱いである。今のプレーヤーには、演奏中にボタンを押せば演奏を中断し、さらに次のボタン押しで再開する機能がある。さらに長押しの時間で連続演奏を止めたり、演奏を中止する機能もタイマーの時間をキーにしている。これがバックグラウンドでも正常に動かないといけない。

 これは、割込み側のSDカードアクセスルーチンにこの処理を持ち込めば問題がないようだ。バックグラウンドの処理時間がそれだけ少なくなるが殆ど影響がない。

 経過時間の表示はどうする。グラフィックLCDでないのでプログレスバーは作れないか。いや、16字あるので10%づつのキャラクター表示で十分さまになるはずだ。演奏時間の計算は、フラッシュがまだまだあるので心配ない。

 ふむふむ、これは楽しみなことになってきた。できそうだぞ。経過時間表示が出来れば、これは大威張りだ。胸を張って3号機と言える。これまでのプレーヤーもソフトを替えるだけで恩恵に与ることができる。俄然やる気が出てきた。

EAGLEにはだいぶ慣れた(12/18/09)
 プリント基板制作の作業状況である。久しぶりにEAGLEを開く。まず、秋月の小さなフォンジャックのライブラリを制作する。EAGLEは本体の回路図エディターや、基板エディターより、このライブラリエディターの方が癖があって難しい。

 シンボルファイルから作り始め、パッケージとすすんで最後にディバイスファイルを完成させる。この順番を間違えて既存のデータから部品を作ろうとするととんでもない目に会うのは経験済みだ。今度は、何度か失敗はしたものの、何とかディバイスファイルまで出来た(慎重を期すため、公開は実際に部品が載ってからにする)。Akijack

 次は、このジャックを入れた全体のレイアウトである。スケッチではうまく載りそうだったがやってみるまではわからない。少しづつ部品をつめて2連VRの場所を探す。使い勝手の問題もある。余り変なところに置くと使いにくくなる。出来上がっているボードファイルからripupで配線を、はずし、はずし試していく。うーむ、なかなか入らない。VRをハンダ面に持って行ったり工夫するが、パスコンが思ったより大きくスペースをとって入りきらない。

 結局、これもコロンブスの卵のようなもので、入力側のDACの裏側に、最終段のVRを乗せるとピッタリ納まることがわかった。昔は少しオーディオに凝っていたので、発振を恐れて入力(DAC)と出力(VR)を近づけるのに抵抗があって、これに思いつかなかった。考えてみれば、2号機もDACの横にフォンジャックが隣接していても何の問題もない。高周波ではないので問題ないだろう。Lpcmplayer_eagle

 2日ほど熱中してEAGLEのレイアウトは当面完成した。DRCをかけてもNO ERRORとなる。コツがつかめてきた。変更する時はこまめにDRCをかけてエラーをなくしておくと進み方が早いようだ。ビアの数は14、前は9だった。これからがまた時間を忘れて夢中になる。色々工夫した結果、5つ減らすことができ、前と同じビアに留めた。鼻が高い。だいぶEAGLEに慣れたようだ。

 しかし、Olimexに発注する段になって、また足元をすくわれる。Olimexのクリスマス休暇だ。やれやれ。17日までが1月中の制作で、1月4 日以降の受注の仕上がりは2月以降になるようだ。

 今度はどういう面付けにしようか。ドリル数は一面あたり147で、4枚とると標準価格のドリル数500を越えて、1割り増しの料金をとられる。5枚以上注文すると2割引になる。
このあいだは、Xbeeの変換基板を入れようとして結局、割り増しになった。このへんで悩むのも、くだらないけれど面白い。

プロクソンのミニサーキュラーソーを買ってしまった(12/19/09)
 懸案の電池フォルダーの方は、このあいだCDのケースを利用して作ることになり、前回のスケッチにもあるように、これを前提にレイアウトが確定している。この電池接点を半田付けする両面基板の切り出しをしているときに感じたことがある。

 たいした作業量ではないが、これをあと10個近く作ると思うと気が重い。ハンズで買った鋸は切れ味が鈍ってきて、真っ直ぐ切るのに苦労する。このあいだMCP73831のミニ基板を切り出したときは、うっかりルーターの丸鋸でガラエポ基板を切って1回で刃先を駄目にしてしまった。そろそろこのあたりも生産性を上げておきたい。

 アクリルの切り出しは、本当はカッターが一番きれいに切れるのだが、しっかりした台と定規がいる。それに結構力がいるし、真っ直ぐ刃先を通すのは熟練が必要だ。基板や、アクリル板を簡単に正確に切り取る道具が前々から欲しかった。

 候補はいくつか考えている。一番安いプロクソンのミニサーキュラーソー(卓上丸鋸盤)が今のニーズには一番合っているが、電子工作だけでなく木工(指物師があこがれ)まで視野に入れると、もう少し大きいスーパーサーキュラーソーのほうが汎用性が高い。指物には欠かせない斜め切りも出来る。しかし、こいつはミニに較べると3倍以上の価格だ。

 このあたりになると、他のメーカーからも、沢山売り出されている。しかし情報が少なく入手性も低いので候補から外した。コッピングソー(糸鋸)はちょっと魅力的だったが、直線切りは殆ど出来ないというので早々にあきらめた。Ac202554

 ミニか、スーパーか最後まで迷ったが、結局ミニにして、ここ(\10,800)の通販に決める。それにしても工具の価格体系というのは一体どうなっているのだろう。全く同じ商品(でしょうね)が、正規サイトでは、\18,000、DIY店の店頭では\13,000、通常のウェブで\12,000近辺で、ここだけが飛び離れて安い。プリント基板用のダイヤモンド刃をつけて\14,400のお買い物である。工具としてはルーター、ドリルスタンド以来の大物だ。

 店のメールでは、お取り寄せとか言っていたが、予想より早く3日で届いた。いや、便利な世の中になった。早速、梱包を解いて、試運転する。うわあ、これは楽だ。万力のあて木用のかまぼこ板が面白いように細く切れる。プラスチックなど切れすぎて怖いくらいだ。ダイヤモンド刃に替えて、両面基板を切ってみた。万力で基板を固定し、手鋸でギシギシやって、あとはやすりで整形していた切りだしだったが、正確な4枚分があっという間に出来てしまった。今までの苦労は一体なんだったのか。

 やっぱり工具には金をかけるものだ。世界が変わる。ここで生まれた余裕が次の創造性に生きてくる。かけた投資の元がとれるというものだ。

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

2009年10月 9日 (金)

リニアーPCMプレーヤー2号機ついに完成

プリント基板なのに動かない(10/7/09)
 Xbee子機のブレッドボードでのテストが一段落したので、本来のOlimexに発注したプリント基板、リニアーPCMプレーヤーの実装を始めた。主要な部品が納まるかどうかは既に確認してあるので、あとはパーツをハンダ付けするだけである。

 ハンダ付けだけなので、進行が早い。定石どおり、チップコンデンサー、DACチップなどの表面実装部品をまず最初にハンダ付けする。これがすめば、あとはDIP部品ばかりなので順番に余り気を使う必要がなくなる。これは楽だ。手配線の手間に較べたら雲泥の差だ。まるでプラモデルのように、どんどん捗る。

 リチウム充電の部分が先に組みあがったので、バッテリーをつけて最初の通電テスト。おお、LEDが点いて充電が始まった。いいぞ。誤配線はないようだ(当たり前か)。残りのハンダ付けを急ぐ。

 おやあ、レギュレーターにつける100μFの電解コンデンサーの背が高すぎるのではないか。オーディオ用の100μFより高い。ケースの余裕は、このオーディオ用がぎりぎりのはずだ。やっぱりそうだ。これではケースに当たってしまう。いやあ困った。スペックによれば、33μFくらいでも良さそうなのだが、手頃な背の低いやつが手持ちにない。残念、一気に組み上げようと思ったが、部品不足で止まってしまった。

 次の日の仕事の帰り、秋葉によって部品を調達し、台風の去った8日、残りの実装を一気に進めた。ケースの工作はまだ終わっていないが、基板部はすべて完成した。手に持って完成の余韻を楽しむ。1号機の半分近い大きさだ。手の中に入る。Aa092324

 それにしてもよくここまで来たものだ。3ヶ月前、EAGLEを始めた頃は本当にこれでプリント基板が出来るのか、余りの道の遠さに途方に暮れたときもあったが、今、そのプリント基板の完成品はここに存在し、電源が入れられるのを待っている。満足感で暫く感慨にふける。

 さて、いよいよ通電テストである。いつもの緊張の一瞬である。果たして動くのかどうか。手配線に較べれば動く確率は遥かに高いが、それでも動くまでは安心できない。祈る気持ちで電源ON。おお、LCDにおなじみのスタート画面が出た。良いぞ。SDカードを入れて演奏ボタンを押す。

 おやあ、音がしない。ボリュムを上げても何の変化もない。LCDは動いているのでCPUは問題なく動いているようだ。それで音が出ないのはアナログか。しかし、プリント基板である。誤配線は考えられない。ハンダブリッジなど実装の時の失敗の公算が強い。

 ブリッジしていそうなところを隈なくルーペで探す。特に何もない。フラックス残滓が残って怪しいところをクリーナーできれいにしたりするが何の効果もなし。さきほどまでの元気はどこへやら、いきなり奈落の底に落ちた気分である。やれやれ。何が悪いんだろう。大げさな言い方になるが、人生が暗い(典型的な躁鬱質である)。

やっぱり間違えていた(10/8/09)

 まあ、これでそのままにならないところが躁鬱質である。気を取り直してトラブルシューティングを始める。まずどうやって原因究明していくか、気分を落ち着かせてじっくり方策を考える。当研究所にはオシロがある。こういうときのためのオシロだ。これで、それぞれのピンを見ていけば、どこが悪いかわかるはずだ。少なくともLCDの表示が出てデジタル部は完全に動いている。アナログの部分から見ていこう。

 まず、オペアンプの出力を調べる。何も出ていない。入力は、これも駄目。DACの出力は、これもゼロ。それではDACのデジタル入力は?あれえ、ちゃんとCPUからデジタル出力がある。そうかDACが動いていない。DACのBU9480Fが死んだか?クロックはどうだ。あっあっあ、BCLKが出ていない。ベースクロックが出ていなければDACは動かない。DACが原因ではない。

 ちょっと待て、BCLKは何でこんなCPUのピンから出ているのだ?あわてて元のAVRstudioのソースを確認する。何と馬鹿なことだ。DACのBCLKはSPIのマスタークロックが供給源のはずなのに全然別のピンから貰っている。これはどうしたことだ。うひゃあ、SPIのマスタークロックはもうひとつのクロックLRCKにつながっている。とんでもない間違いだ。BCLKとLRCKを取り違えている。

 あーあ、やってしまった。あれだけチェックしたのにどうして間違えたのだろう。やっぱりバグが残っていた。回路図から間違えている。EAGLEは間違えたとおりにボードを設計し、Olimexは忠実に基板を作ってくれた。

 よし、これが原因だ。これを直せば動くはずだ。希望の火が点った。こうなると俄然やる気が出てくる。配線図、ボード図を見ながら、一番良いジャンパー配線をあれこれ考える。LRCKの結線はビアを使っていたので、その前でパタンを切り、ビアとBCLKのCPUピンに直接UEW線でつなぐ。LRCKは、そのパタンのレジストをはがし、そこへ結線する。うまくいったぞ。Photo

 再度、通電テスト。演奏ボタンを押す。ああ、良かった。音が出た。嬉しい。ケースの工作が残っているが、2号機の完成だ。手のひらにすっぽり入る大きさで、CD音質の音楽が聴ける。市販の携帯プレーヤーはこの大きさだと今は動画が出るレベルで問題にならないけれど、いずれはあのSTM32Primerで作ってやる(いけない。封印してあるのに)。

ケースは作り直し、EAGLEのライブラリを公開(10/9/09)

 残るはケースの工作である。ソフトパワースイッチはスペースがないので諦め(SDカードとLCDの電源制御が必要)、電源用の定番のスライドスイッチを基板の下側のスペースにいれ、タクトスイッチや、ボリューム、フォンジャックなどの穴を空ける。Aa092321

 アクリルの穴あけは簡単だ。ルーターで凡そのサイズを切ってから、ナイフ、やすりで整形する。タクトスイッチの穴が結構難しい。正確な位置決めが難しいので小さめの穴をあけてナイフで広げていく。あ、いけない。仕上げのやすりをかけているとき誤って先端を外に滑らしアクリル面に傷がついてしまった。あーあ、いつもこれである。最後の最後で完成をあせって何か失敗をする。試作版とあって養生テープも張っていない。

 出来上がったので、セットしてみる。傷をつけた面は、自分の横着をあざ笑うかのように、LCDの表示面だ。やれやれ、折角の製品が台無しだ。何とも心が晴れない。どうせ娘に渡す機械だ。少々傷がついていても構わないようなものだが、そこは、それ職人の良心というものがある。

 一晩迷ったが、結局、上蓋だけでも作り直すことにした。このケースは予備を含めて沢山買ってある。何しろ¥100である。次の日、今度は養生テープをしっかり張り、切り欠き位置をきっちり測り直して、作業開始である。お手本があるので穴あけは簡単に済んだ。つけてみる。おお、新しいので蓋のストッパーもしっかり入り、見違えるようにLCDが綺麗に見える。上々の出来だ。これなら自信を持って人に渡せる。

 リニアーPCMプレーヤー2号機は、これで1台目が出来てプロジェクトは一段落した。ヒロセのSDカードスロット(DM1AA-SF 千石で¥210)、千石で売っている平型の2連ボリュウム(型番不明)のEAGLEライブラリーも自信を持って公開できる。Aa092325

 ステレオフォンジャックについては、もういちど部品エディターで確認してみたら、似てはいるけれど各ピンの位置がすべて微妙に違っていることがわかった。これを現物に合わせることはそう簡単ではない。ソースコードも、ミニLCD用にアイコンを追加した修正版を計画中で、これの完成に併せて、2号機のEAGLEボードファイルと一緒に公開することにする。

ここに、EAGLEの部品ライブラリーファイル Gataro_parts.lbrを置きます。ヒロセのSDカードスロットと、2連ボリュ-ム(DBL_POT)の2つの部品がはいっています。使う時は、schematic(回路)エディターで、library -> use.. で、このライブラリを開き、ADDコマンドから、上記部品を選んでください

確認の遅れていたステレオフォンジャック(秋月等で入手可能)のライブラリを追加しました。下のlbrファイルは3つの部品が入っています。

「Gataro_parts.lbr」をダウンロード

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

2009年9月 9日 (水)

Olimex発注の合間にACの実験

Olimexに基板を発注した(9/05/09)
 電力ロガーの仕様を考えているうちに、9月も何日か過ぎてしまった。既に設計が完成しているLPCMプレーヤー2号機のプリント基板を早くOlimexに発注しなければならない。EAGLEによる設計は、本体と、Xbee用のピッチ変換基板ともほとんど完成している。あとは、160×100のパネルの分割指示をする面付け図と、発注仕様を伝えるREADME.TXTを作るのを残すだけとなっている。 

先達のウェブページを参考に、面付け図を作る。今作ろうとしている基板は本体が3 枚、ピッチ変換基板が2枚である。大きさに余裕があるので、基板の切り離しは、ディスクカッター(abrasive)を選ぶ。

 おやあ、ウェブの面付けの参考図と一枚当たりのサイズを求める計算式が一致しない。1枚を2枚にディスクカッターで切るときは、図は、2ミリづつ、4ミリののりしろをとっているが、サイズを求める式は、(n-1)*2で2ミリののりしろしかとっていない。

本家のOlimexのサイトをあたる。FAQに出ている式は先の計算式と全く同じだ。ところが、この図を参照という切り離しのでは、一枚づつのりしろを作っている。うーむ、良くわからない。

 面付け図がおかしいというだけで作成を拒否されたと言う報告もあるが、わからないものは仕方がない。とりあえず2ミリのまま出すことにする。Panel

 EAGLEの基板図(brdファイル)を念のため、もう一度点検する。不要なレイヤーを表示しているだけで拒否されると脅かされているので、DRCを何度もかけ、ドリルチェックをし、何度も表示レイヤーを見直す。

 あれ、SDカードの配線が少しおかしい。ややや、チップセレクトの線がCPUとつながっていないぞ。慌てて回路図(schematic)の方を確かめる。あれえ、回路図から間違っている。これはいけない。いくら基板図でDRCをかけてNo Errorにしても、回路図が間違っていたらお話にならない。

 泥縄に近いが、もう一度回路図を最初から点検する。その結果、USBジャックのピンアサインが逆になっていることを見つけた。それとミニLCDのI2Cの接続が逆になっている。まあ、これはソフトで解決できるにしても、事態は深刻だ。Lpcm

 完全と思っていてもこれだけバグが出るのだから、まだ潜んでいる可能性がある。ICのピンアサインを中心にもういちどチェックし直しである。まるで、答えを全部書き終わった試験の残り時間で何度も検算し、同じ答えが出てきても確信が持てなくて益々不安が拡がる時に似ている。早くOlimexに送ってしまって、楽になりたい気持ちが募る。

 面付け図と、2つのbrdファイル、readme.txtをまとめてzipファイルにする。ウェブの古い別のOlimexの発注ガイドのサイトでは、readme.txtとzipファイルを別々に送れという指示があり混乱する。これは明らかに1つの間違いだ。readme.txtなどという汎用的な名前でファイルを送られたら受け取った方は大変だ。

 出来たzipファイルを念のためこちらで解凍し、正しくファイルが解凍されるのを確認したうえ、いよいよ送付である。「行けー」という掛け声とともに、送信ボタンを押す。何い、エラーで送れない。そんな馬鹿な。ブラウザーを動かしてみる。ありゃりゃ、ネットが不通だ。

 よりによって、このタイミングで回線が切れている。しかし、何もこんなタイミングで回線が切れることはないだろう。高ぶった気分が納まらない。どうしてやろうかと頭が激しく回転していた時、ウェブが復活した。数分の回線断だったようだ。

 メールを送り直す。今度は順調だ。zipファイルを添付したOlimexへのメールは無事、ブルガリアに向けて出発した。出した日は土曜なので受け付けられるのは、あさっての月曜だろう。今のところエラーメールで帰ってこないので、とりあえずOlimexのメールボックスには納まったようだ。

交流(AC)波形を調べる(9/6/09)
 発注データは送ってしまった。今さらもういちどEAGLEを動かして図面を見る気にはならない。誤りに気がついても間に合わない。気分が悪くなるだけである。手持ち無沙汰になったので、このあいだ思いついた実験をしてみることにした。

 考えてみたら、オシロがあるのだ。50Hzの交流など簡単に観測可能な環境を持っていることを忘れていた。電圧と電流をそれぞれ観測して、家庭内の機器が、どんな負荷か調べて見ようと思いたった。特にトランスを経由したあとの電圧を見てみたい。

 電圧の測定は直接100Vからとるのでなく、トランスを経由して絶縁すれば、危険な直接接続は避けることが出来る。しかし、トランスというのは誘導負荷のかたまりみたいなもので、これを経由して波形を見るのは本来意味がない。ただ、理論的には位相差は出ないことになっている(理想トランス)。これがどの程度なのか実際に見てみようというのである。

 こんなに絶縁にこだわるのは理由がある。家庭用の100V ACは漏電による感電事故に備えて必ず片側が地面に接地されている。筐体(接地してある)などにホット側が漏れ出せば直ちにブレーカーが飛び、接地側が漏れても漏電ブレーカーが動くようになっている。

 この結果、100Vを機器に引き込んで、うっかりプラグ(電極の大小で極性はわかるようになっているが)を逆に差してしまうと、機器のグランド側が地面に対して100Vの電位差を持つことになる。触れれば当然感電するし、繊細な電子部品など触れればあっという間にこわれるだろう。

 自作の、名刺ケースに入れたトランスのACアダプター(3、6V出力)で波形を見る。うーむ、少し歪んでいる。きれいな正弦波ではない。CTセンサーをはさむ。手持ちに10W以上消費できる抵抗がないので、とりあえず1Wほど流れるよう豆球(0.3A)の負荷をつける。おお、電流波形が出た。おや、このトランスの最大容量は0.16Aだ。これはいかん。焼けてしまう。Photo

 トランスにCTセンサーが動くほどの電流は流せないことがわかった。待てよ。テーブルタップを使い、ひとつをトランス、もうひとつを別の機器に入れ測っても、その時点の電圧と電流が測れるのではないか。

 やってみた。見事に各種の機器の波形を見ることができた。トランスの電流電圧位相差は2次側が無負荷のときは180°になることがわかる。電圧(赤)はこの際無視して電流(黄)波Photo_2形を見る。

 まず、手元の60Wの白熱灯スタンドを測定する。きれいな電流波形が出た。セラミックの半田ごても抵抗負荷なので正弦波である。次は、工作照明用の32Wの電球型蛍光灯 を使ったスポットライト。こいつは予想通り、派手なパルス波形が出た。調子に乗って、身のまわりの電気器具を片っ端から測り始める。スイッチング電源のDCアダプターも、完全なパルス波形だ(電流が少ないためオシロ波形はスケーPhoto_3ルが替わっている)。

 ドライヤーをモーターだけで測る。波形が半分削られたような電流波形になる。位相差はそう激しくない(力率が高い)。いやあ面白い。ただ、電圧は同じタップ上とはいえ、器具の負荷点で測っているのではないので、何ともいえない。

まだこだわっている(9/7Photo_4/09)
 1週間ぶりに事務所に出る。メールを片付けた後、当面の仕事がないので、ウェブで非接触で100V電圧を測る手立てをあれこれ探した。まだ、こだわっている。日置という昔からある計測器メーカーが「世界初の非接触電圧計を売り出し」たという去年のニュースリリースを見つける。原理は詳しくわからないが、静電結合で双方の波形を測定し、その差を電圧とするらしい。そうか非接触で電圧を測ることは普通は出来ないのだ。少し安心する。

 しかし、よく考えてみれば、ADコンバーターの部分さえ独立させ、そこでデジタルにしてしまえば、あとはフォトカプラーが使える。基板を別にしてグランドを独立させれば、感電の心配はなくなる。あの電力測定用のIC ADE7753もアナログ部とデジタル部のグランドは共通なので、この方式をとる必要がある。

 絶縁型のADコンバーターがあればフォトカプラーも要らないのだがと、ウェブで検索してみたら、あったのである。前のICと同じ、アナログディバイス社のAD7400というADコンバータだ。アナログとデジタルの間が絶縁されている。3.5KV以上の耐圧だ。DigiKeyでも1個売りしてくれるが¥984と少し高い。

 やはり考えていることはみんな同じだった。しかし、波形のサンプリングや、二乗平均をとる演算などの手間を考えれば(面白そうだけど)、専用ICのADE7753を使うのが最も合理的のようだ。DigiKeyで1個¥495で買える。絶縁はボードを分けてフォトカプラーを使えば良い。50Hzの観測データだ。フォトカプラーは高速である必要はない。汎用品で十分だろう。

 DigiKeyで買いたいものが増えてきた。しかし、送料無料の¥7000にはまだまだ達しない。欲しいのは今のところ、イーサネットのPHYトランシーバーとこの電力測定ICだ。2つづつ買ったとしても¥2000少々にしかならない。

整流をオペアンプでやるか(9/8/09)
 Olimexからまだ返事は来ない。波形実験の次は、CTセンサーからのAC出力をDCにする方法を思案している。整流回路だ。一番簡単なダイオードをシリーズにつけた半波整流回路は今度は使えない。ダイオードはどんなものでも順方向電圧降下というのがあり、微小電圧は整流できない。電圧が高ければたいした問題でないが、こんどは数mVからDCにする必要がある。電圧降下が少ないといわれるショットキーダイオードでも0.3V、入手難といわれるゲルマニウムダイオードでも0.1V、これでは話にならない。

 やはりオペアンプで検波回路を組み、いわゆる理想ダイオード回路で、小電圧を整流する必要がある。しかしウェブに出ている回路は、スペクトルアナライザーなどに使う高周波の整流回路が殆どで、高速性が重視されており、50Hzなどという「ゆるい」対象向けの簡便な回路例がない。

 オペアンプの整流回路といえば、このあいだのリズムキャプチャーで使った、単電源オペアンプの全波整流回路があるが、これは、ダイオードの順方向電圧以上でしか整流しない。

それにオペアンプを使うとなると、今度は消費電流が心配である。Xbeeをタイマーで止めて50μA以下にしても、こちらがミリアンペアオーダーで流れるというのは嬉しくない。

 ダイオードの入力側にバイアス電圧をかけて、この区域をキャンセルし、ソフトで補正する方法も考えられるが、今度は、測定上限電圧が低くなってしまうし、バイアス電圧の変動が直接誤差になってしまう。難しいものだ。

となるとFETでオペアンプの電源制御か。やれやれおおごとになってしまった。

OlimexからPO用紙が届いた(9/8/09)
 先週の日曜日にメールでデータを送ったOlimexから待望の返事が届いた。営業日2日目である。注文の殺到しているだろう休み明けにしては早い。夜の9時に届いているから現地は午後2時ごろだ。1日半というところか。来たメールはウェブで報告されている通り、たったの4行である。

Hi
attached is your po form
Best regards
Tsvetan / OlimexOlimex_po

 噂のTsvetan(ツベタン?)君である。まあ、Best regards(どうぞよろしく)があるだけ良しとせねばなるまい。問題は、請求金額だ。どきどきしながら添付のPO用紙(Purchase Order form)ファイルを開く。良かった。追加料金はなかった。パネルの面付けはあれで合格したようだ。ドリル数が500を超えた追加料金3ユーロは織り込み済みである。Xbee基板を入れると、どうしてもドリル数が500を超え、どうせならと汎用基板のようにパッドを沢山つけて全部で800近くになっている。送料を含めて合計41.5ユーロ、約¥6000というところだろう。うーむ、Xbeeピッチ変換基板を日本で買って、4枚にした方が安かったか。Xbeebrd

 それはともかく、早速クレジットカード情報を書き込んで発注書を完成させる。支払いがカードで出来、しかも、その情報をFAXで送らせるという用心深さが気に入っている。海外との通信販売で一番神経を遣うのがお金のやりとりだからだ。

 いよいよ国際FAXである。国際電話のかけ方を、ウェブで復習する。何、頭につける番号に沢山種類があるぞ。001だけじゃないんだ。マイライン契約のときはいらないだと?うーむ、そう言えば、あのマイラインってどうなったんだっけ。我が家の電話はだいぶ前から「ひかり電話」でこのあいだKDDIの「ひかりONE」に替えたばかりだがマイラインをどこにしていたのか全く思い出せない。

 いくら読んでも、良くわからないので、一番ポピュラーそうな001010を選ぶ。FAXにカード番号を書き込んだPOをセットした。Olimexへの電話番号を入れる。数回、短い通話音がしたあと、先方のFAXのネゴシエーショントーンが聞こえた。やった、つながった。
FAXが動き出す。無事POを送り終わった。1時間足らずで処理は終了した。

 次の日、Olimexからメールが届いた。例によって本文は

fax received

この一行だけである。まあ、これで用は済んでいる。POフォームを裏側にしてFAXしたのではないかと少し心配したが、これで安心だ。まさか白紙を受け取ってfax receivedとは書かないだろう。AirMailが結構日数を喰うみたいだが、今月中には届く予定だ。楽しみである。

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

2009年8月19日 (水)

CADソフト EAGLEにはまる

 およそ2 週間ぶりのブログの書き込みである。お盆より一足早く一家で¥1000の高速を利用して車で関西に帰省し墓参りをしてきた。みんな行ったことがないというので帰りに足を伸ばして国宝の姫路城を見に行き東京へ戻ったら、姫路の近くの町で大水が出て沢山の人が亡くなられ、東名高速は帰ってきた次の日に地震で不通になった。間一髪で危機を逃れるアクションスターの気分である(家族は災害を残してきたと気にしているが)。

 そんなことで電子工作は少しお休みしていた。それでも帰ってきてから、またCADソフトにすっかりのめりこんでいた。前記事のタイトルは「EAGLEの落とし穴」で、こんどのタイトルは「EAGLEにはまる」である。ソフトや電子工作の世界で「はまる」というと、このあいだのように落とし穴やバグにつかまって中々問題が解決しないときに使うが、もうひとつの意味として「ゲームにはまる」というように夢中になる時にも使う。

 まさしく今度のEAGLEは2つの意味ではまっている。考えてみたら、これまで鉛筆と消しゴムで紙が真っ黒になるほど苦労して描いていたアートワークがPC上で自由に出来るのだ。下手なゲームよりよほど面白い。

 色々癖はあるが、まともに買えばスタンダードのライセンス版で10万円近くするCADソフトである。さすがに良く出来ている。エラーチェックを厳密にやってくれるのが安心である。Lite版ながら、非営利の目的なら無料で解放してくれるCadSoft社の太っ腹に感心する。事業用のLite版は49ドルである。安い(日本では少し高く1万円前後)。しかしこれは巧妙なマーケッティングである。学生に無料で使わせれば仕事に入った時このソフトの導入を提案する可能性は極めて高い。

 ソフトも使い慣れてくると、癖のある部分も、じゃじゃ馬を乗りこなして得意になるように、使いこなしている快感につながるから人間と言うのは不思議なものである。毎晩遅くまで奮闘した結果、やっとのことでLPCMプレーヤー2号機の基板は、Olimexに発注できるレベルに達した。以下はその作業記録である。818lpcm

正確なスケールに感動する(8/13/09)
 お盆の帰省を挟んだ作業の結果、2号機の基板設計は予定したすべての部品を載せて配線率が100%になり、配線が終了した。 まだ自分で作った部品のサイズが正確かどうか最終的に確認する必要があるが、電源ソケット代わりのUSBミニジャック、電池とスイッチの接続に使うピンヘッダー、3端子レギュレーターなど残していた部品も全て載った。

 コツがだいぶわかってきた。最初から自動配線にしないことである。VccやGNDなど引き回しの多い配線やアナログ線など、重要な配線は手動で前にすませておく。このあと自動配線を指示すると、基板上下の配線をつなぐビアを開けながらコンピューターが勝手に配線してくれる。

 ここでもEAGLE特有の操作性が悩ませる。エラー状況のデータはエラーリストをクリアしただけでは更新されない。DRC(デザインルールチェック)ボタンで必ずもう一度チェック処理を最初からしなおす必要がある。考えてみたら当たり前のことなのだが、最初は何度配線の位置を変えても、エラーリストからエラーがなくならず頭を抱えていた。

 さらに部品の緒元は、部品を載せた後、変更できる部分と出来ない部分がある。容量や抵抗値は自由に変えられるし、シルク印刷の線の巾などはボードエディターで変更できるが、パッケージの形を変更するのは部品エディターまで戻る必要がある。パッケージデータを変えた後、updateコマンドで基板エディターのところまで変更してくれるのは嬉しいが、時々前のデータが残っていたり(tNameが2重になる)、ひとつのシンボルデータに何種類もパッケージがある部品(コンデンサーなど)は、変更した部品とは別の部品までパッケージが変わってしまったりして一筋縄ではいかない。

 抵抗をすべて縦置きにしてスペースを稼ぎ、コンデンサーをノギスで測りなおして正確な小さなパッケージデータにしたりして、部品をつめ、間を配線していく。基板の端やドリル穴の近くは配線禁止区域が思ったより広くなかなか許してもらえない。Lpcm2

 何とかNo Errorになったので、出来た基板を印刷する。スケールは1。実際の部品を印刷した実体図の上に載せてみる。おおお、正確だ。これは素晴らしい。表面実装のSDカードソケットとUSBミニジャックのピンがピタリと納まっている。感動ものである。2連ボリュウムのピッチ違いもこれで確認できた。部品エディターを開いて、ピッチを正確な2ミリピッチにする。ミリとmil(1/1000インチ)の換算がややこしい。印刷を切り抜いてケースに入れる。ちゃんとサイズが合っている。1号機と並べてみると、そのコンパクトさが実感できる。12

 LCDパネルがケースと、さらにLCDのピンヘッダーが裏の電池フォルダーとぶつかることがわかった。細かく位置調整して、LCDパネルをボードに合わせる。少し位置を変えるだけであちこちがclearanceエラーになるのでそう簡単ではない。しかしEAGLEにだいぶ慣れてきて、変更が早くなった。ときどきripupコマンドが動きすぎて全部の配線をはがしてしまい、面食らうが、これもripupするところを慎重に選べば必要なところだけはがれてくれる。

  3回、ファイルをセーブしてスナップショットを作りながら、微調整する。ほぼ望みの配置と配線を終えた。それにしても、このアートワークは際限がない。やり始めると時間のたつのを完全に忘れて夢中になってしまう。配線も良く見ると自動配線は無駄が多い。電源やアナログの部分の結線は太くしたいし、ビアを少なくする方法が見つかることもある。見るたびに不満なところが出てくる。きりがない。

  最初はとんでもなく遠い道に見えたが、何とかなるものである。印刷した実体図を見て感慨にふける。2層でも結構な配線量だ(48×74ミリ  パッド数132 ドリル数156)。手配線では苦労しただろう。あとはOlimexへの注文のための処理を残すだけとなった。

最初はStopMaskエラーが900以上(8/17/09)
 出来た、出来たと得意になっていた鼻は、しかし次の作業ステップで簡単にへし折られた。Olimexに発注する制限事項をこのウェブサイト(ここは詳しくておすすめ)でチェックし、所定のレイヤーを指定したところ、何とStopMaskエラーというのが917個もあらわれたのである。

 レジストを塗らないハンダ面にシルク印刷をしているよというエラーなのだが、標準ライブラリの部品はほとんどが元からそうなっている。こちらで置いた部品名などがパッドにかぶっているところはむしろ少ない。部品ライブラリを全部直さなくてはならない。すぐに何とかなるものではない。気の遠くなる話だ。あわててウェブに助けを請う。

 ウェブには余り情報はなかったが、EAGLEのバージョン5からの問題なのだそうだ。単にシルク印刷がそこにされないだけで、Olimexがこれで発注を拒否したり追加料金をとったりすることはないように思われるが、確証はない。

 しかし、エラーがあるままOlimexに発注するのは何となく気分が悪い。幸い、Olimexは8月一杯休みをとるので発注できるのは9月になってからだ。ひとつひとつの部品ライブラリのシルク印刷の部分を直して行く必要があるが、時間はたっぷりある。それにこういう手仕事は嫌いではない。

 今日も真夏の炎天下でテニスをして体はばてているのだが、気がついてみると、PCの前で、コツコツ、部品をとりだしてはシルク印刷のレイヤーを分解してエラーを無くす作業をしている。 標準ライブラリに入っているパッケージの中には既にStopMaskエラーを考慮したシルク(tPlace)になっていてパッドを横切るラインはtDocuという別のレイヤーになっているパッケージがあったりして混乱する。どうも混在しているようだ。

 しかも部品ライブラリとOlimex指定ルールの実際の基板とではStopMaskの大きさが違うので部品エディターの段階では確認できない。ひとつ部品を更新しては、実際のボードエディターでエラーをチェックしていかなければならない。結構大変である。

 それでも、部品をとりかえてはDRC(デザインルールチェック)をかけ、少しづつでもエラーが少なくなっていくのを確認していくのは楽しみなものである。それに、この作業の過程でレイヤーの構造がかなり理解できた。tDocuとtPlaceの2つのレイヤーを持っている部品は、始めこれが何のためかさっぱりわからなかったのだが、この作業のおかげで完全にその目的が理解できた。

 要領がわかってくると作業のスピードは速くなる。 900あまりと言う気の遠くなるエラー数は、2日余りで100前後に減らすことが出来、今日(8/17)、遂に0になった。万歳! これで安心してOlimexに基板制作を発注することが出来る。

 調子に乗って、このあいだからの懸案、Xbeeの2ミリピッチの変換基板もついでに作ってOlimexに発注することにする。160×100のOlimexの発注基板は、4分割して3枚をLPCMプレーヤー基板、残りの1枚を2分割して、Xbeeのピッチ変換基板2枚にする予定だ。

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

2009年8月 6日 (木)

CADソフト EAGLEの落としあな

 この一週間、暇さえあればEAGLEと格闘していた。きのうやっと充電回路分を除いたLPCMプレーヤー2号機の自動配線のところまで進み、少し目鼻がついてきたので、忘れないうちにこれまでの作業記録を残しておくことにする。自動配線の達成率は最初50%を割っていたが、昨日の段階で83%まで上がった。いやそれにしてもプリント基板の道は遠い。

 この世界は、これまでとは、また全く違う世界である。ガーバーデータ、CAMプロセッサー、ネットリスト、ドリルデータなどという耳慣れない単語が続出する。熱心に説明されていることが何故重要なのか読んでいて理解できない。同じ電子工作の世界なのにまた右も左もわからない状態に放り込まれる。

 恐らく職業でこの世界に飛び込めば、どこかに特化し、これほど混乱することはないのかもしれないが、こちらはアマチュアである。AVRから始まってアナログオペアンプ、ARM、JTAG、FPGA、組み込みLinuxなど、興味に任せて色々なところに手を出しすぎている。好奇心の強さでは人に負けないつもりだが、同じ電子工作、組み込みコンピューターの世界と言ってもその余りの違いにただ驚くばかりである。

 プリント基板技術はこれらの世界のまさしく基盤を支えるものだけど、これはこれで世界が全く違うし、奥が深い(ネットでは精密加工や工作技術の人のサイトが多い)。今、世の中に溢れている携帯電話、パソコンなどの電子機器のプリント基板は16層が当たり前に使われていると言う。気の遠くなるような技術だが、アマチュアでも4層まで作る人がいる。こちらは2層で精一杯だが、それでも知らなければならないことが膨大にある。

 プリント基板の制作はAVRマイコンを触り始めたころから横目でちらちら眺めていたが、ChaNさんから教わったUEW線の手配線が思いのほか調子が良いので手を出す機会がなかった。しかし、手配線では同じものを複数作るのはきついし、師匠のように汎用基板上に0.5ミリピッチの表面実装ICをすべてUEW線で半田付けしてしまうと言うような芸術的レベルにはとても届かない。それに何と言ってもプリント基板に実装された電子機器は美しい。見ているだけでわくわくしてくる。

 先月、複数台の基板を作らなければならないことになって、ついに参考書を買ってCADソフトの定番EAGLEの勉強をし始めた。すでにいくつかCADソフトを使っていたので簡単そうに見えたが、実際の部品のライブラリを作り始めて早々に頓挫した。とんでもなく難しいのである。

 悪戦苦闘の結果、回路図から自動配線が出来るまでになった。作業的には少し一段落したので、ここでこれまでに経験したEAGLEの落とし穴とその解決法について整理しておくことにする。アマゾンで酷評されていた(自分はそれほどでもないと思うが)最初に買った参考書は、結局、落とし穴からの脱出には殆ど役に立たなかった。Eagle

 ただ、これから述べるEAGLEの落とし穴とは、あくまでもCADの素人がEAGLEを使うに当たって、はまりこんだ問題点であり、ソフトそのものの問題点ではないことをあらかじめお断りしておく。CADソフトの歴史は古く、多くの経験、実績によって現在の姿があるわけで、経験者から見れば、がた老AVR研究所のあげる問題点は的外れな指摘かもしれないからである。しかし、知らなければ、殆どの人がはまることになることは確信する。なお、対象はEAGLEの最新バージョン5.6.0の話である。

回路図の操作は簡単だが、部品エディターはとても癖があって難しい(7/30/09)

 EAGLEの中で部品は、回路図を作る時に使うシンボルデータと、その外観とピン配置を規定して、基板に部品を配置し、配線するときのためのパッケージデータ、それにこの2つを組み合わせたディバイスデータに分かれる。同じ仕様で外観だけ違う部品があるので、この構造はとても合理的だ。回路図で部品と部品をつなぐ配線操作も難しくない。部品を動かすと配線した線がちゃんとついてくる。フリーのCADソフトに較べれば確かにレベルが高い。ここまでは快調だった。

 部品データを収容するライブラリが用意されている。しかし、部品ライブラリが巨大で探すのが大変である。日本でおなじみの部品が中々見つからない。検索機能が用意されているが、正規表現的に厳密なのでなかなかヒットしない。(例えば、SOT23-5を検索するとき、両側に*をつけて *SOT23-5*としないと、SOT23-5を含むテキストにあたらない)。

 ここにない部品は、自分でこれまでのデータを組み合わせたりして作ることになるが、この部品エディターが難物なのである。エディターの操作性もあるが、一番の原因は、ライブラリの構造からくるものである。

・ライブラリからパーツを抜き出すことが難しい
 ライブラリはひとつのファイルで構成されているので、部品データはファイルとして物理的に分離できない。それぞれの部品データが物理的なファイルに分かれていれば、ライブラリの管理はとても楽になるが、それが出来ないため、一旦新しい空のライブラリを作った後、そこへデータをcopyする形をとらなければならない。そのとき、必ずターゲットのライブラリを部品(ライブラリ)エディターで開いておかないとcopyは出来ない。ここでまずはまる。

 新しい部品データを作るとき、いちから作ることは殆どない。既存のシンボルやパッケージデータを流用することが多い。しかし、あとで色々編集できるようにとディバイスデータの形で既存の部品を自分のライブラリに持ってくるとえらい目にあう。ディバイスデータについてくるシンボルデータは簡単に消去したり編集できないからだ。パッケージデータとつながってディバイスを形成しているため、ちょっと操作をするとすぐ文句を言われて先に進めない。第一、エディターは、ディバイスデータを開いた時はシンボルとパッケージのピン接続をする以外ほとんど何も出来ない。

 それではシンボルデータだけ持ってこようとすると、これが出来ない。EAGLEのコントロールパネルでライブラリを開きコピー(copy to library)できるのは、ディバイスデータと、パッケージデータだけなのである。

 既存のシンボルデータを複製して新しい部品のシンボルにするには、まず、既存のデータの入っているライブラリをエディターで開き、欲しいシンボルデータをペーストバッファーに入れた後、別のターゲットのライブラリでエディターを開き直し、newで新しい名前を定義して空のシンボルデータを作って、そこへペーストするという回りくどい方法をとる必要がある。

 この方法と下の操作をこのウェブで教えられて、始めて部品ライブラリの操作が自由に出来るようになった。それまでは全く手も足も出なかった。

・カット&ペーストとはコピー&ペーストのこと
 EAGLEの操作は、GUIと言っても少しコンセプトが古く、「オブジェクトを決める」「それに対する操作を選ぶ」「実行する」という順ではなく、コマンドアイコンを先にクリックして操作の種類を決めたあと、次にその対象を選ぶという、これまでのキャラクタディスプレイのコマンドフォーマットを踏襲した形になっている。

 慣れればそう問題ではないが、それより一番の問題は、カット&ペーストである。EAGLEのコピーコマンドは、単に回路図上で同じオブジェクトを増やすだけで、ペーストバッファーにデータは入らない。ペーストバッファーに入れるためにはカットする必要がある。EAGLEではカットしても原データはなくならない。カット&ペーストではなく、コピー&ペーストである。これを知らなくて何度「ペーストバッファーが空だよ」と怒られたことか。

 ある部品のデータを別の部品に複製するには、まずコピーしたいシンボルまたはパッケージデータを開き、持って行きたい部分をグループ設定してから、その範囲内(ハイライトされる)で、カットコマンドを実行し(グループの上を一回クリックする。このとき画面は全く変化しない)、次にターゲットの部品を開き直し(前の画面はなくなる)、そこでペーストコマンドをクリック(実行)すると始めてさっきコピーした部品がカーソルとともに画面にあらわれる。部品エディターが複数のウィンドウを開けないためである。この操作は知っていなければ手品に近い操作である。

・簡単に消去が出来ない
 ディバイスデータは、シンボルデータとパッケージデータで構成されるので、前にも書いたようにディバイスデータを簡単に変更することはできない。シンボルデータだけを消すことは出来ない。一旦ディバイスを開き、回路図上のピン(シンボルデータ内)と実際のパッケージのピンとの対応を全て切らないとディバイスデータに使われているシンボルデータは消す(変更する)ことが出来ない。

 パッケージデータもディバイスデータとつながっているので消去しようとすると怒られる。パッケージは色々な部品(ディバイス)に使われているので、ライブラリを大きくすると大変である。しかも、ライブラリ上の部品データを消去するには、アイコンやメニューにコマンドがなくULPと言われるユーザープログラムをテキストコマンドエリアから入力する必要がある。恐らくEAGLEはテキストコマンドで操作するインターフェースから進化してきたCADなのだろう。その性格が色濃く残っている。

・位置決めが難しい
 オブジェクトの移動がグリッド単位でしかできない。グリッドを細かくすれば、その単位で移動できるが、今度はグリッドが細かくなりすぎて、これを数えるのが難しい。配線図のときは良いが、正確な位置決めが必要なパッケージデータの編集ではこれが非常にネックになる。さらに、一旦細かい位置で位置ぎめしてしまうとグリッドを大きくしたとき、大きくしたグリッド単位でしか動いてくれない(Altキーを押したまま動かすとある程度自由に動かせることがあとでわかった)。
2vr
 この問題の解決は、位置(mark)コマンドを活用することである。markコマンドで基準点にマークを置き、そのあとはメニューバーの下の情報エリアに表示される座標を読み取っていくと正確な位置にオブジェクトを置くことができる。もちろんそのときはグリッドを細かくしておかなければ望みのところには止まってくれない。

つながっているように見えても接続されていない(8/3/09)
 部品エディターにやっと慣れて、ライブラリにない部品の登録が進んだ。SDカードスロットや、2連の可変抵抗器、DAコンバータなどである。秋月などで売られている基板用ステレオフォンジャックは、標準ライブラリの中にたまたま同じものを見つけた。

 con-lumberg.lbrというライブラリにある1503_09という部品がそれで、外形はともかくフットプリント(基板上のピンの位置)が全く同じだったのでこれを使う。

 電池の充電回路部を除いた(入るかどうかわからないため)回路図が完成した。ミニLCDの部品データはピンヘッダーですませる。いよいよ基板配線である。ボードエディターを開く。おおお、ratsnestという黄色い空中配線でつながれた部品が画面の隅にひとかたまりになって並んだ。部品の移動は回路図エディターと全く同様の操作なので楽だ。部品を所定の位置に運ぶ、配線も同時に動いてくる。素晴らしい。おやあ、2連可変抵抗器の大きさが大分違うぞ。どうもmilとmmの換算を間違えたらしい。
A8042098
 もう一度部品エディターまで戻って、実体をノギスで測り直し、正確な外形に修正する。ついでにSDカードスロットもヒロセのサイトから実体図のPDFを落とし測りなおす。EAGLEのすごいところは、変更した部品を回路図で更新すると、ボードエディターの外形まで替わっていることだ。何度も測りなおしたが、このへんは実際に基板を発注する時に、もう一度確認しておく必要があるだろう。部品ライブラリとしての公開は、ちゃんとした基板になってからでないと危ない。

 想定した基板サイズ(48×74ミリ)上に部品を載せていく。うーむ、少し厳しい。そうか抵抗やコンデンサーが実体より少し大きすぎるようだ(パッケージを良い加減に選んだ)。これを直せば入るかもしれない。それより気になるのは、ratsnestになっていない(未配線)部品が多いことである。念のためERCコマンドでエラーを見てみる。Sdcard

 何と言うことだ、100近いエラーが出て、ratsnestのないところはすべてunconnectedになっている。EAGLEの鉄則は「基板エディターでは変えない。すべて回路図から修正する」なので、回路図エディターを確認する。ちゃんと配線されている。しかし、ネットを確認するコマンドを入れると、確かに色が変わらず配線されていない。拡大してみてもちゃんとピンと配線はつながっている。

 良くわからない。サイトによると「wireは使うなnetで配線せよ」とあるのでnetでつなぎなおすが変わらない。原因を考えあぐねていたとき、たまたまmoveコマンドで部品を移動させたとき、つながっていないところは配線が切れて離れることを発見した。これだ。

 接合は厳密に座標が合わないと実行されないようだ。それを試すのは、マウスで部品をつかんで動かしてみる。何度か動かしているうちに接合がされる。これは良い方法をみつけた。

 overlapしているという警告も、この方法で原因を見つけることができる。配線は終端でどうしても余分なクリックをして枝が出来ていることが多いが微小なのでなかなか見つけられない。これも部品を移動させると、その枝が拡大されて一目瞭然になる。拡大されたところで不要な枝を消去すると警告はなくなる。Eagle_2

 このノウハウを見つけてからは早かった。100近くあったエラーは、ピンの未配線や、Vccに違う名前(Vddなど)のピンを配線していることの警告だけになり、ratsnestもすべての部品に出るようになった。

 自動配線を試してみる。何回かコンピューターが試行錯誤したあと自動配線が終了する。うむ、達成率は83%とこれまでより格段に上がった。そりゃそうだ2割近い配線が未配線だったのだ。

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

2009年7月20日 (月)

プリント基板の道は遠い

EAGLEのバージョンが古かった(7/18/09)
 プリント基板CADの勉強を参考書で始めている。    レイトレーシングで有名なフリーのPOV-Rayを使って3D CADも出来るようだ。素晴らしくきれいにレンダリングされた基板の写真が口絵にある(添付の画像は著作権のため本家のもの)。これはすごい。20年前なら一部の大企業が莫大な開発費用をかけ、大型機でやっとのことで実現してきたことが、こんなアマチュアの世界でも可能になった。良い時代になったものだ。Fetchphp

 今度のLPCMプレーヤーの回路図を入力し始める。これまでのCADとはユーザーインターフェースが違うが基本的なことは同じなので、そうまごつく事はない。moveで、ちゃんと結線を維持したまま移動できる。機能はフリーウエアのCADに較べると格段に高そうだ。ただ、回路図を入れただけで、自動配線までやらせるためには、これまでのように気楽に部品を設定し、そこをつなぐだけというわけにはいかない。部品の諸元を厳密に決めているライブラリがしっかり出来ていないとそこまで行き着けない。

 しかし、ウェブの解説ページにもあるように、EAGLEのライブラリはヨーロッパ主体で、日本のおなじみの部品が標準ライブラリに少ない。ウェブで検索してもなかなか適当なのが見つからない。ICはともかく、SDカードのソケット、基板用のステレオフォンジャック、平型の2連可変抵抗器などは、どうも全部自分で作るしかないようだ。

 メインのIC、Mega328(168)すらAtmelのライブラリに入っていない。おかしいな、これもないのかとウェブで探す。やっと見つけてインストールしてみたら、古いバージョンには入らないと怒られた。ええー、この参考書そんなに古いのか。去年(2008年)のはずだぞ。奥付をもう一度確かめる。しまった。初版は2004年で5年も前だ。去年と思ったのは第三版の発行日付だった。

 参考書のEAGLEのバージョンは4.11r2である。あわてて、ウェブで最新バージョンを確かめる。うわあ、5.60だ。違いすぎる。去年3版を出したのなら少しはこのあたりを補足しておいて欲しかった。良く確かめて参考書を買うんだった。後の祭り。

 進歩の早いこの世界では、参考書はよほど気をつけて買わないとこういうことが起きる。全体的な流れを掴むために参考書を使うのだが、こんなにバージョンが大きく変わってしまうと個々の細かい説明が違ってしまって結局それすら出来なくなる恐れがある。そうならないことを祈りたい。

 慌てて、製造元のCadSoftのサイトに行き、最新バージョン(25MBあまり)をダウンロードする。旧版を消し、インストールしなおす。Atmelのライブラリを見る。ちゃんとMegaの新シリーズ(Mega8系)のパーツが揃っていた。別のサイトからダウンロードしたMega168のパーツも無事認識された。

 配線は出来ても、自動レイアウト、自動配線(Autoroute)まで行くには、今度のLPCMプレーヤーにかなりなライブラリを自分で登録する必要がある。まだ相当時間がかかりそうだ。基板の発注は、これも定番のブルガリアのOlimex(この前のARM-USB-TINYインタフェースを買ったところ)に決めてあるが、発注して基板が送られてくるのまで2週間はかかるという。

 一方、EAGLEの勉強と並行して、ケースの工作の方は順調に進み、ケース上蓋とタクトスイッチ、LCDの間の高さ調整(タクトスイッチはリード線を延ばしてOK。LCDはピンソケットでぴったりOK)、基板取り付けポストの固定も済んだ。レイアウトをもう一度検討しなおし、右利きの人が片手で持って、音量調整と演奏ボタンが親指で楽に出来るようにした(自分は左利きだが)。部品を載せて全体を確かめる。うむ、何とか入った。汎用基板で作る準備は整った。A7172088

 今、迷っている。早く作りたいという気持ちと、ここで実装を始めれば、それに夢中になって、プリント基板の方が全く進まなくなる懸念とが交錯している。EAGLEの1枚のフリー基板で2セットとれるので(50×40 2枚)、3台作るなら1台足らない。手配線版が無駄になることはないと思うが、プリント基板制作を軌道に乗せる方が先だ。しかし、ケースにきれいに取り付けられたハンダ付けを待つブランクの汎用基板を見ていると誘惑に負けそうになる。

ソフトパワースイッチ検討と新版 LPCMプレーヤーのソース公開(7/21/09)
 ハードはさておき、2号機のソフトウエアの話である。このあいだFatFSを新しいバージョンに上げ、SDHCが読めるようにしたが、ソースコードを公開していなかった。忘れたのではなく、あの時点ではSDHCが動くかどうかを確認していなかったからである。

 BeagleBoardのために8GBのカードはあったが、Ubuntuのシステムが入っていたためこれでテストをするわけにはいかなかった。その後秋葉原に行ったときもう一枚8GBのSDカードを買ってきた(あきばおー¥1550)。ちゃんとしたブランド品のSanDiskだ。いつも不思議に思うのはSDカードの価格である。秋葉原、通販あたりと、家電量販店の価格の差が激しすぎる。数倍あることは珍しくない。保証の差だと言ってしまえばそれまでだが、これまで10枚以上SDカードを買って一度も不良品にあたったことはない。秋葉原でも2週間以内の初期不良には対応する。

 それはともかく、帰って早速テストしてみる。問題なく動作した。¥2000しないこんな小さな8GBカード一枚で、音楽CDが12枚近く入るのだ。良い時代というより、今までの常識が通用しない空恐ろしい時代になったともいえる。

 ソースの公開だが、実は先日、ブログのメールでソース公開の要請を受けた。これまで自分のソースコードが誰かの役に立っているという実感がなかったのだが、こういうメールを頂くと素直に嬉しい。ただ、こんどのLPCMプレーヤーのVccは3.3Vで、メーカーが保証する規格外の20Mhzのクロック(メーカーでは13.3Mhzまで)で動かしている。全く問題なく動いているとはいえ、規格外であることは間違いない。

 もし、遊び以外で使う時は、Vccを5Vに上げ、SDカードとの間はレベルシフターで接続することをお勧めする。まあ私のソースコードも無保証だから、あまり形式にこだわることはないのかもしれない。

 2号機向けのソフトは、これにミニLCDの実装と、スイッチの長押しで電源を入れるソフトパワースイッチの実装が残っている。これを含めてソースを公開しようと考えていたが、早めにこれだけで公開することにした。         

 AVRStudioのフォルダーになっています。最初のコンパイルで警告が出ますが無視して大丈夫です。

「SDPCM328V3.lzh」をダウンロード

 ソフトパワースイッチもちょっと難航している。自分なりの構想は出来ているのだが、他の人はどうしているのだろう。気になってウェブをあちこち探しているのだが、何処にもロジックを解説しているところがない。

 考えてみると、結構難しい。もし、どこかでハングして電源が切れなくなったら、バッテリーをはずすなどの作業をしなければ、あっというまに電池を消耗してしまう。特に今回は過放電に敏感なリチウム電池なので心配である。徹底したフェイルセーフにしておく必要がある。出来ればリセットをうまく使って、おかしくなれば即リセットし、最初のパワーセーブsleepに入れるようにしてやりたい。

 これまでのロジックを余りいじらず付加機能的に実現しておこうと、暇さえあればメモをとりながらロジックを考えていた。コードの視認性を高めるためには大きなループは避けたい。といってC言語ではロジックを関数として切り出すと、内部変数がグローバル化し、バグの原因になる。難しいものだ。しかし、結局は、今のメインのソースコードをそっくり関数に切り出した以下のような構造になってしまった。擬似コーディングなので細かいところの調整は必要だが、これで余り構造を変えず、しかも見やすいソフトパワースイッチのロジックの目処がついた。ウェブには、意外とこういう情報が少ない。参考になれば幸いである。

Softpwrsw

(以上)

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