twiiterもチェック!! 15億画素カメラ自作企画進行中!

スキャナカメラのフルスクラッチ【2:回路設計編】

カメラ
この記事は約11分で読めます。

はい.どらびです.

この記事はシリーズもの?になっていますので,初見の方は以下の記事を読んでから戻ってこられることを推奨いたします.

では続きです.

今回は,回路設計について書いていきます.

私は過去PCBE,EAGLEと使ってきて,現在はKiCADを使っています.とはいっても前の二つを使っていた時は基本的に他人が作った回路をそのままコピーさせて頂いていた時に使ったりしていたので,ガーバーデータの出力用としての運用が主でした.

というわけで,KiCADにおける説明になってしまう事を予めご了承ください.

詳細仕様決定

前回,仕様をザッと決めたので,今回はそれに沿って使用するICなどの詳細を決めていきます.

まずは制約条件.前回までの記事で紹介したように,今回は市販の中判フィルムカメラの後ろに取り付けることを想定しています.そのため,中判カメラよりも小さなサイズにすることが制約条件になります.

という事で,私が持っているmamiya645の背面サイズよりも一回り小さい70mm×70mmを基板サイズとします(後にどうしてもサイズが足りなくて70㎜×75mmにしました.).これだけ小さければ他の大抵の中判カメラにも違和感なく置くことが出来ると思います.

DRB
DRB

というかそうであってもらわないと困る…

さて,基板サイズを決定したら,いよいよパーツ選定を行っていきます.

えいや!で適当に決めてしまうと,後でとんでもなく痛い目にあったりしますので,ちゃんと考えながらやりましょう.

手順は,

  1. 確実に使用するメインの部品を決める
  2. それに合わせて必要な部品をチョイス
  3. 必要なI/O数を確認する
  4. 条件を満たすSoCを選定する

の要素を何度もループさせます.今回の例を具体的に当てはめると…

  1. 使用するCCDは東芝製のもので決定.(個人で購入できるルートがあったこと,その中でも高性能な部類であったことが選定理由)
  2. CCDの緒言に合わせたADCを選定(今回はTi製)
  3. 同時にモータドライバを選定(今回はステッピングモータの制御で一般的に用いられているIC.選定理由は単純に安いからです.後このカメラにおいては静穏性はそこまで求められていないこともICの選定条件に含まれます.)
  4. CCDは最大2つ同時に制御できる設計にしたい(という願望の元I/O数を算出)
  5. ボタン数の仮決定(これもI/O数決定のため)
  6. 最低限条件を満たすSoCの選定.
DRB
DRB

ここまでの時点で225pinのzynqを利用しようと考えていましたが,後ほど諸事情でよりI/O数の多いものに変更しました.

メイン部品の諸元を決定したら,サブの部品もどんどん決めていきます.zynqの設計は非常に難しい(と少なくとも私は思います)ので,とりあえず市販されているボード類を参考に決めていくと良いと思います.というのも,zynqでは

  • 電源電圧の決定,及びそれに合わせた電源ICの選定
  • DDR3メモリの相性問題

などの問題があるからです.zynqは電源電圧が最低でも4種類ほど必要になるので,それに合わせてIC等を決める必要があるのです.メモリも,使用実績があるものから選んだ方が安全だと思います.

ICの選定が終わったら,それぞれのデータシートを読み込んで,大抵の場合はリファレンスとなる回路が紹介されていたりするので,とりあえずパクりましょう.聞こえが悪いかもしれませんが,公式が推奨している回路なので,むしろ一番安全です.積極的にパクりましょう.

DRB
DRB

リファレンスの回路が見当たらない場合,そのIC名で検索をかけたりすると,そのチップの評価ボードがHITしたりします.評価ボードは多くの場合回路図を公開しているので,それを参考にしましょう.

回路設計

どのICを使うか決めて,参考になる回路もわかったら実際に電子回路用のCADで設計に移ります.

ライブラリの作成(必要ない場合もあり)

まあ,実際にはこの辺は順序が良く変動するので,臨機応変にやってほしいのですが,それぞれのICについて,まずはCAD用のライブラリが必要になります.とはいっても初めての人は良くわからないと思いますのでお見せいたしますと,

こんな感じのものになります.これは,ICのピン配列の情報と,実際にICチップを回路上に載せる時に基板面をどうするかの情報(フットプリント)が関連付けられるようになっているものです.

例えば,回路図上の1番ピンが,実際の基板上で右の写真における左上のピンになります.って感じの情報です.はんだ付けしたことがある人はわかると思いますが,チップ形状に適したはんだ面が基板上にはあります.その形状がフットプリント.それをICごとに予めライブラリとして持たせておけば,いちいち手作業ではんだ面を設計することなく,チップごとに回転とか移動とかさせられるので後々すごく楽になります.

これは,digikeyやmouserなどの電子部品を取り扱うサイトで,それぞれの商品ページに飛ぶとライブラリが用意されていることが多いです.よほどマイナーなものでも使わない限り,自分でライブラリを作成する必要はありません.(という事で,具体的なライブラリの作成方法はここでは触れません.)

DRB
DRB

ただし注意点として,

  1. そもそもそのライブラリが間違っている可能性がある
  2. 間違っていなくても,見づらいので修正した方がいい

等の理由でライブラリを改変した方がいい時はあります.実際に自分もそうしてます.

実際に設計した回路

さて,私の実例をちらちらと見せていきます.画像はあまり詳細が見えると色々わかってしまうと思いますので,意図的に荒くしています.頑張れば読めるかもしれませんが(笑)

ミスのチェック

基板の設計が済んだら,間違いがないかチェックします.

まずはDRCというので,配線が抜けてたりなどのミスをチェックできるので,これをやりましょう.

残念ながら,電源出力同士が繋がっている,というようなあからさまなミス以外は繋がっていればエラーにならないので注意.

DRB
DRB

例えばSPIのMISOとMOSIを間違えているとかね.

という事で,最終的には2重3重に自分でチェックする必要はありますが,最低限のチェックとして有用です.

もう一つ,zynqを使って設計する場合は,こちらを参考にするとよいと思います.私も非常にお世話になっています.ちなみにですが,このブログはオムニバス形式でFPGAに詳しい専門の方々が寄稿していて,とっても参考になりますが,個人的にはリンク先の記事を書いているなひたふ様のブログに大変お世話になっています.

なひたふJTAG日記

アートワーク設計

ここまで来たらとりあえず一旦は回路設計終了です.次は基板のアートワーク設計に移ります.

一般の人が基板を作るって聞くと,こちらの方がイメージに近いかもしれません.

DRB
DRB

そもそも一般の人は回路設計という言葉を日常で聞かないと思いますけどね.

実際に作成する基板上で,先ほど作った回路をどのように配線するかを決めていく作業です.と言ってもやったことない人にはイメージ湧かないと思うので,完成(仮)状態のアートワークを先にお見せします.(ちなみにですがこれは制御用の基板です.)

回路図上ではタグを使って配線がつながったことを示したり,そもそも配線が交差していてもつながっていないことにできたりしますが,現物ではそうはいきません.

ですので,互いに干渉しないように迂回させたり,多層にしたりと,いろいろ工夫しなければならないわけです.

手順の例

簡単に手順と注意点をまとめると以下の様になります.

  1. 重要な配線をリストアップし,それらが(可能な限りで)短く配線ができるように,主要パーツから順に配置していく
  2. 同様に,まずは重要な配線を先に済ませる.場合によってはKiCADの機能で配線禁止エリアとか設定できるので,場合によっては先に設定してあげる.
  3. (特にこれ以降は順不同,)残りの部品の配置調整
  4. オートルータで配線可能か確認しつつ,できるだけサボる.
  5. 4.での配線で微妙な個所があれば配置変更等で調整する
  6. 3~5を納得いくまで繰り返す.
  7. 最後に,オートルータの配線を最適になるように手で微調整しつつ,塗りつぶしの設定を行う.
  8. DRCでチェック,自分でリストを作ってチェック,ひたすらチェック
  9. 完成!

今回の場合だと,まず中央にメインとなるzynqが来るのはほぼ確定で,配線上上の写真で見て左側にDDRが来るのがほぼ確定してました.まずは配置確認しているの図.

次の画像はひとまず最優先のところだけ先に配線試して,DDRとzynqのスペースがこれでいけるか確認しているところ.

他にも上側に記録系統(flashとかSDとか)が来るのもピン配列的にほぼ決定しており,残りのスペースに何を置くかでした.で,この中で優先度が高いのはセンサとの通信関連と映像関連で,これらはどちらも等長配線が求められます.

等長配線というとすごくハードルが高そうですが,いつも参考にさせていただいているなひたふ様が非常に参考になることを仰られていたので備忘録的にここに載せておきます.

そんなわけで,よく言われている

“同一層内で配線しろ”とかいう類の制約は,第一優先ではなさそうです.まあ私はできる限りやりましたが,正直そのためにかなり無理やりな配線をしたので,ノイズ特性とかどうなっているのか正直不安なところではあります.これについては出来上がったらまた報告できると思いますので,ひとまずは割愛.

オートルータについて

オートルータ,KiCADでは初めて使いました.というより,オートルータを使いたくなるほどの規模の基板設計は初めてです.(というより幾度か挑戦して諦めた.)

今は割とまともに配線してくれる感じですし,先に重要な部分を配線してしまう,という手順をこなしているので,そこまでおかしいことにはなりません.

さて,実際の使い方ですが,こちらで説明するよりかは私が参照したサイトをご紹介したほうがわかりやすいように思います.ということでこちらをご覧いただければ一通りできると思います.

KiCad で自動配線
概要 KiCad 自動配線ツールを使おう KiCad が流行ってきて、使う人が増えてきている。 しかし、自動配線ツールを使っている人は少ない。 それでははもったいない!! 今回は自動配線ツールの使い方を説明する。 (この記事は KiCad version 4 向けの記事です)

一つだけ書いてないことで注意点があるのは,dsnファイルの読み込みでエラーが出て進まない場合はどこかに全角文字が含まれている可能性があります.私の場合,定数にμの字を使っていたのですが(具体的にはコンデンサの定数に100μFとかって感じ),それのせいで読み込みエラーが出て一日悩みました.ファイル名だけじゃなく,中身も含めてあらゆるところから全角文字を排除したほうが楽です.調子子いてμとか使わずに半角のu(アルファベットのユーですよ.)を使いましょう.

freeroutingについては,私ももう少し使い慣れたらもっと詳しく紹介するかもしれません.

(番外)3Dビューワーについて

基板製作において必須ではありませんが,KiCADは基板を3D表示する機能が備わっています.これ,私みたいにサイズに縛りを設けたモノで,筐体も一緒に設計するようなアプリケーションだと,この機能で基盤をモデル化してエクスポートすると実物に限りなく近いものができるので後々非常に重宝します.こんな感じです.

実際に筐体作成で重宝してる図はこちら,

で,よーく見てもらうとわかるように,一部ICが載っておらず基板のフットプリントが丸見え状態なのが分かると思います.

デフォルトで3Dモデルも含めて設定されている汎用部品(コンデンサやら抵抗やら)は,何も設定しなくても上のように3D表示してくれますが,それ以外の,自分でフットプリントを拾ってきたor作った場合は当然ながら3Dモデルも自分で設定しなければなりません.

詳細はこちらあたりを参考にしたので,興味があればどうぞ.

KiCADのモデル Fusion360 - e-tipsmemo
KiCADには3Dmodelを表示・出力機能がデフォルトであるが、 対応フォーマットがwrlというものだけだ。 一方でフリーの3DCADとしては最も優秀だと思われる Fusion360の出力フォーマットにwrlはない。 これをFreeCADを使って変換するプラグインがあるらしいのでそれの導入手順をメモる。 0. ins...

最近は3DCADモデルも用意してくれることが多いので,自分でやらなければならないことはそんなにないですが,位置合わせとかは必要ですので,サイトを参考にしつつ頑張ってみてください.(丸投げ)

完成したのがこちら

というわけで料理番組よろしく,完成したものをお見せします.

当ブログでは製作記録兼,初心者に向けた大筋を示すのが目的なので,各項目で詳細が知りたい方はコメントで要望をください.検討しますので.

しれっと載せてますが下二つはセンサを載せた基板です.これと上の基板をつないであげて,下のやつをスイープさせながら記録することで写真を撮っていくわけです.

まとめ

そんなわけで今回は基板の設計について書いてみました.

作成例の紹介ってだけで,細かい部分はこの記事自体には書いてませんが,ヒントになりそうなサイトを載せておきましたので,興味が出てきた方はチャレンジしてみてはいかがでしょうか?

あと概要編でも述べたように,最終的にこれは販売予定です.今後SNS等でも紹介していく予定ですので,興味がある方は購入検討,あるいは拡散していただけますとものすごーく嬉しいです!(ダイマ)

twitterではリアルタイムでの進捗を呟いたりしてるので是非是非ご覧くださーい.

(多分こんなマイナー記事SNS流入しかないからこの文はほぼ無意味なのは内緒.)

フォローもお待ちしてます!

それでは今回はこの辺で.

 

コメント

タイトルとURLをコピーしました