« 2009年7月26日 - 2009年8月1日 | トップページ | 2009年8月16日 - 2009年8月22日 »

2009年8月2日 - 2009年8月8日の1件の記事

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月26日 - 2009年8月1日 | トップページ | 2009年8月16日 - 2009年8月22日 »