2015年5月15日金曜日

KiCadで部品のフットプリント作成

回路図からcvpcbを実行してフットプリントの無いものを拾っていきます。
フットプリントエディタは回路図エディタからでなく、パターンエディタ(Pcbnew)の方で表示->Switch Canvas to OpenGLに切り替えてから使います。
基本的にはこちらの方がサクサク動いて使いやすいのですがPadのpropertyだけは標準モードと同じで開くのに時間がかかります。
ほとんどの部品のフットプリントは標準ライブラリから持ってこれます。
標準部品として存在しているものは大きさ、ピンの配置、ピン番号、ピンのサイズを確認し、コピーしてLocalLibraryに登録していきます。修正が必要な物はコピーした方を修正し名前を変更内容がわかるように付けておきます。
私が直したところはSMD部品のPadが手付けするには厳しそうなところを少しコテをあてやすいように伸ばしたり、DIP部品の孔径が大きすぎるものを修正したりといったところです。
回路図用の部品シンボルは修正すると回路図にすぐ反映されますが、フットプリントはパターンに対しては独立しているので修正した場合は一度部品のフットプリントを削除してから再度Netの読み込みをしてフットプリントを繋ぎ直す必要があります。
なので、パターンを引く前に念入りにフットプリントを確認しておいたほうが手間がかからなくていいです。

2015年5月8日金曜日

KiCadで回路図作成

今回は以前CadlusXで作成したHA-2基板を作り直しHA-3基板を作ります。
FRISKケースに収めたXBee経由で赤外線リモコンやHA端子、弱電の接点コントロールの機器をリモート・コントロールするためのモジュールです。
雷対策とか機能追加などで改修項目が増えてきて作るのが大変になってきたので作りなおすことにしました。
前回、回路図用の部品をひと通り作ったので回路図自体はすぐに書き終わりました。
以前作ったHA-2基板の回路図と改修内容の修正内容がちゃんと盛り込まれているかひと通り確認しました。
HA-2基板で念の為に入れていた抵抗で機能を切り替える部分もFixしているので外して手間を削減するようにしました。
回路図はこんな感じです。


1時間程度で書くことが出来ました。


2015年5月1日金曜日

KiCadで回路図用部品作成

KiCadの場合、EAGLEと違って部品が回路図用のコンポーネントライブラリ(.libファイル)と基板デザイン用のフットプリントライブラリ(モジュールライブラリ、.kicad_modファイル)、両者の対応を記述するCvPcbで生成される関連付けファイル(.cmpファイル)で構成されています。
私はEAGLEのほうが特殊でKiCadの管理の仕方のほうが理にかなっていると思います。
今回もEAGLEの時と同じで、基本的には自分のLocalに使う部品を集めて管理します。
基本的には標準ライブラリに存在しているものは確認してコピーして使用、ないものは自分で作るという方針で自分のライブラリを育てていきます。あとはEAGLEから変換することも出来るようです。
コンポーネントエディタの使い方は詳細な日本語マニュアルがあるので割愛します。
KiCadは日本語の詳細なマニュアルが付属しているので非常に助かります。
自分のライブラリを育てるためには、最初にメニューバーの設定ー>アクティブなライブラリを設定でユーザー定義パスを設定する必要があります。
あとは近い形のものを標準ライブラリから読み込んで編集し名前を付けて保存していきます。
私は試行錯誤で色々EAGLEと同じように部品ごとに回路図用記号を作成してしまい失敗しました。
KiCADの場合は例えば4ピンのコネクタなら1種類回路記号を作って、フットプリントとの結びつきで部品を分けるべきでしたが、種類ごとに同じ形の回路記号を作ってしまいライブラリに無駄な部品が沢山出来てしまっています。
それ以外の注意点は、標準ライブラリと同じ名前の部品を作らないこと、後でわかりやすいグループ分けでライブラリを作ることと、0.1inchのグリッドで端子を付けておく、ピンの番号を確認できるように表示するということぐらいです。

2015年4月24日金曜日

KiCad for OS-X

以前のHA-2基板、RP-1基板はCadlusで設計してP板.comで基板作成しました。
先日のRP-2基板はEALGEで設計してelecrowで基板作成しました。
今回は前から気になっていたKiCadで設計してelecrowで基板作成にチャレンジしてみようかと思います。

Windows版と違ってMac OS XでKiCadの場合はソースコードからbuildする必要があります。
kicad.jpをみるとBZR4022が安定版のようですが2014-07-20と半年以上前のもので、その後に押しのけ配線等の機能が追加されています。

OS-X向けのbuildについては下記のblogを参考にさせていただきました。以下何箇所か引用させていただきます。
http://ochaochaocha3.hateblo.jp/entry/2015/01/05/installing-kicad-on-mac-os-x
http://www.usagi1975.com/20150116996/

上のblogも含め、幾つかMac用に最近のものをbuildしてくれているものもあったので試してみたのですが、MacのMagicMouseで使おうとするとズームが中ボタンのスクロールに割り当てられていて拡大率の変更も大きすぎて、ちょっとマウスの真ん中を触ると拡大縮小されてしまい使うに耐えない状態です。設定も色々いじってみたのですがどうにもならず、TrackPadでもスクロール、ズームが使えないのが不便でちょっと使いものにならないなというのが感想でした。
KiCadのlaunchpadのbranchを色々見てみるとやはり同じこと感じるようでosx-trackpad-gesturesというbranchがあり定期的にメインブランチとmerge作業をしてくれています。

いずれにしろ自分でbuildすることになるので、このbranchを利用させてもらうことにしました。
最新の開発branchなので色々問題出るかもしれませんが、その時はmain branchのdebug情報を見ながら修正かけていこうかと思います。

私の環境はMcBook Pro(15-inch, Early 2011) 2.2GHz Intel Core i7/8GB 1333MHz DDR3/OS-X 10.10.2 Yosemiteで、既にbrew 0.9.5とXcode 6.2、Command Line Toolsが入っている状態です。
まずbrewの状態をチェック。
# brew doctor
Your system is ready to brew.
と出ることを確認します。

KiCadのbuildに必要なものをinstallします。
今回はosx-trackpad-gesturesはBZR5282 KiCad本体のBZR5595がベースになっています。
# brew install cmake bzr glew cairo swig boost
bazaarに自分の名前とメールアドレスを設定します。
# bzr whoami '自分の名前 <name@example.net>'

作業directoryを作ってKiCadのソースコードをdownloadします。
# mkdir KiCad
# cd KiCad
# bzr branch lp:~gcorral/kicad/osx-trackpad-gestures

wxPythonをjaistのサーバーからdownloadしてscriptで使われるdirectory名に変更します。
# curl get http://jaist.dl.sourceforge.net/project/wxpython/wxPython/3.0.2.0/wxPython-src-3.0.2.0.tar.bz2 | tar xjvf -
# mv wxPython-src-3.0.2.0 wx-src

次にbuild scriptを修正します。
# cd osx-trackpad-gestures
# cp scripts/osx_build_wx.sh scripts/osx_build_wx_yosemite_trackpad.sh
# vi scripts/osx_build_wx_yosemite_trackpad.sh
下記のdiffの5行を追加
----------
# diff -urb scripts/osx_build_wx.sh scripts/osx_build_wx_yosemite_trackpad.sh
--- scripts/osx_build_wx.sh 2015-03-26 14:42:34.000000000 +0900
+++ scripts/osx_build_wx_yosemite_trackpad.sh 2015-03-26 14:46:32.000000000 +0900
@@ -140,6 +140,11 @@
 doPatch "$1" "$3/patches/wxwidgets-3.0.0_macosx.patch"
 doPatch "$1" "$3/patches/wxwidgets-3.0.0_macosx_bug_15908.patch"
 doPatch "$1" "$3/patches/wxwidgets-3.0.0_macosx_soname.patch"
+doPatch "$1" "$3/patches/wxwidgets-3.0.0_macosx_scrolledwindow.patch"
+doPatch "$1" "$3/patches/wxwidgets-3.0.0_macosx_magnify_event.patch"
+if [ "$4" = "10.10" ] ; then
+  doPatch "$1" "$3/patches/wxwidgets-3.0.2_macosx_yosemite.patch"
+fi

 # configure and build wxWidgets
 wxWidgets_configure "$1" "$2" "$4"

----------
# sh scripts/osx_build_wx_yosemite_trackpad.sh ../wx-src ../wx-bin ./ 10.10 -j4
# cd ..
# mkdir build
# cd buld
# cmake ../osx-trackpad-gestures \
      -DCMAKE_C_COMPILER=clang \
      -DCMAKE_CXX_COMPILER=clang++ \
      -DCMAKE_OSX_DEPLOYMENT_TARGET=10.10 \
      -DPYTHON_EXECUTABLE=`which python` \
      -DKICAD_SCRIPTING=ON \
      -DKICAD_SCRIPTING_MODULES=ON \
      -DKICAD_SCRIPTING_WXPYTHON=ON \
      -DKICAD_SKIP_BOOST=ON \
      -DUSE_OSX_MAGNIFY_EVENT=ON \
      -DwxWidgets_CONFIG_EXECUTABLE=../wx-bin/bin/wx-config \
      -DPYTHON_SITE_PACKAGE_PATH=`pwd`/../wx-bin/lib/python2.7/site-packages \
      -DCMAKE_INSTALL_PREFIX=../bin \
      -DUSE_IMAGES_IN_MENUS=ON \
      -DCMAKE_BUILD_TYPE=Release
# make
# make install
# cd ..
ここまででbin/以下にアプリケーションが出来上がります。

次にライブラリ、日本語ドキュメントをまとめていきます。
# mkdir lib
# cd lib
# git clone https://github.com/KiCad/kicad-library.git kicad
# bzr branch lp:~kicad-developers/kicad/doc
# cp -pr doc/doc/help kicad
# mkdir kicad/share
# cp -pr doc/internat kicad/share
# cd ..

これで
Kicad/bin/kicad.app/に/Application/へコピーするKiCadのアプリケーション
KiCad/lib/kicad/に/Library/Application\ Support/へコピーするライブラリ・ドキュメント一式が揃いました。

/Applications, /Libraryへの書き込みはroot権限が必要なので
# sudo cp -pR bin/kicad.app /Applications
# sudo cp -pR lib/kicad /Library/Application\ Support
この時passwordを聞かれたら管理者のパスワードを入力してください。

/Applicationsにkicad.appが出来上がっているのでFinderからDockに登録してください。
これでKiCadが使えるようになります。

2015年4月17日金曜日

RP-2基板作成

基板が上がってきたので部品を付けて動作試験をしていきます。
この基板はいろいろな用途の回路を盛り込んで作っています。盛り込んでいる機能は次のとおりです。
1.RaspberryPi2との接続(ATMega328pとは排他)
2.ATMega328p(RaspberryPi2接続とは排他)
3.2.1mmDCコネクタでの5V ACアダプタ対応
4.赤外線受光部
5.赤外線発光部
6.圧電ブザー
7.XBee接続
8.12keypad(0-9#*)接続回路(ATMega328p only)
9.人感センサー接続回路(ATMega328p only)
10.火災警報器等の接点出力の検知機能(ATMega328p only)
11.2.54mm pitchのユニバーサル基板

まずは、メインの用途である1,3,4,5,6,7の機能を盛り込んだ基板を作ります。
これまでRaspberryPiで組んでいたホームコントロールシステムの親機をRaspberryPi2で置き換えます。
 部品をマウントした基板(左)とRaspberryPi2(右)
これを組立てます。
下の白いアクリル板は箱に入れるための支持板 

これにアクリルをレーザーカッターで切り出して曲げ加工した物をケースにします。
 ケースの下側(左)とケースの上側(右)

ケース下側と基板を組んだところ

ケース上も組んだところ

物理的にはうまく出来そうです。

ところがそう簡単には行きませんでした。
赤外線リモコンの送受信回路はRaspberryPiのPCM IFを使って組んでいるのですが、RaspberryPiからB+になった時にP6の8pinコネクタ(NoMount)に出ていたGPIO28-31のALT2にあったPCM IFが無くなり40pinコネクタのGPIO18-21のALT0に移動しました。
これは判っていたので回路はそちらに接続するように組んでいたのですが、Raspi2上のプログラムを変更してもうまく動きません。PCM_FSに接続してある圧電ブザーが鳴っていないのとPCMの書き込み時にFIFO Fullで止まってしまってるのでPCM_CLKが入っていないと思われます。

GPIO28のALT2も選ばれていてGPIO18のALT0と入力がぶつかっているのではないかと疑ったのですがどうも違うようです。
丸一日悩んだのですが、どうもGPIOを直叩きしても出てないようでメモリダンプをしたりしてみるとレジスタっぽい値が出てきません。BCM2835からBCM2836に変更になった影響で何か変わっているのではないかとう疑いを抱き始めてメモリマップを眺めていて気が付きました。
DRAMのサイズが1GBになっているはずなのでPeriphralのアドレス空間であるはずの0x20000000はDRAM空間と重なっているではないですか。
あとはネットで検索していたら答えがありました。BCM2836ではPeripehral空間が0x3f000000に移動しているようです。
PCM IFを直叩きしているため罠にハマってました。
これを直したらちゃんと動き始めました。
apache2も高速になって快適です。

2015年4月10日金曜日

RP-2基板到着

基板が届きました。実は頼んだのは春節中の2/22でした。elecrowは2/25まで春節でお休みでしたので受け付けられたのは2/26。
2/22(日) 注文
2/26(木) 受付
2/27(金) 製造開始
3/10(火) 16:21 出来上がったと写真付きのメール、発送したとDHLのtracking numberの連絡
3/11(水)
1  Shipment picked up                              HONG KONG     22:04
3/12(木)
2  Departed Facility in HONG KONG                  HONG KONG     03:13
3  Arrived at Sort Facility HONG KONG              HONG KONG     05:15
4  Processed at HONG KONG                          HONG KONG     06:00
3/13(金)
5  Processed at HONG KONG                          HONG KONG     02:06
6  Departed Facility in HONG KONG                  HONG KONG     02:07
7  Transferred through TOKYO - JAPAN               TOKYO - JAPAN 08:58
8  Customs status updated                          TOKYO - JAPAN 09:02
9  Arrived at Sort Facility TOKYO - JAPAN          TOKYO - JAPAN 10:02
10 Clearance processing complete at TOKYO - JAPAN  TOKYO - JAPAN 10:29
11 Processed at TOKYO - JAPAN                      TOKYO - JAPAN 11:23
12 Departed Facility in TOKYO - JAPAN              TOKYO - JAPAN 11:31
13 Arrived at Delivery Facility in TOKYO - JAPAN   TOKYO - JAPAN 12:55
14 With delivery courier                           TOKYO - JAPAN 12:57
15 Delivered                                       TOKYO         14:44
と11日(土日を除くと7日)で製造、3日で届きました。

出来上がった基板です。

 A面     B面

B面のチップコンデンサのところをみるとセンターに打った点のシルクが若干ずれているのと、ユニバーサル基板部分のスルーホールのところの穴が銅箔に対して若干ずれていますが問題ないレベルです。
シルクの文字自体は綺麗に出ています。今回はviaはレジストをかぶせているので配線で使っている15mil(0.38mm)のviaにかぶっているシルクはちゃんと出ています。
GNDのベタパターンに打った23.6mil(0.6mm)のviaは穴が大きめなのでレジストで埋まらずシルクは一部欠けています。PadにはE-Testの痕跡が残っていて基板の脇にはマジックでチェックされています。
この仕上がりで10枚で送料込みで$34.71(この時のレートで¥4280)、1枚あたり428円なら満足です。

2015年4月3日金曜日

EAGLEでの出図

アートワークが完成したので、CAM出力します。
ElecrowのページからCAMファイルをダウンロードしてきます。
EAGLEのCAMディレクトリにコピーしてガーバーデータを作成します。
今回使用しているのはEAGLE7.2.0なのですが、そのまま作成するとEXCELLON形式のdrillデータの精度が1桁上がっているようでgarberViewerで見た時にdrillだけ10倍大きくなってしまいます。
それほどの精度は不要なので、Drills&HolesのOutputのDevice設定をEXCELLONからEXCELLON_24に変更します。
これでProcessJobを実行するとガーバーデータと同じスケールでドリルデータが出力されます。
OSXだとガーバーデータを確認出来るソフトはX-Window上のgarbvかKiCadのgarbviewくらいしか有りません。どちらかで目視確認して大体ちゃんと出来ていることを確認します。
確認できたらファイルをzipでまとめてelecrowのページでuploadします。
今回は10cm x 10cm 5pcsでも$11.50にしかならないので 10cm x 10cm 10pcs 2layer PCB $15.90を選択します。厚みは1.0mm,色はBlack,FinishはHaslにしました。
届くのが楽しみです。


2015年3月27日金曜日

EAGLEパターン作成

配置が決まり基板外形も決まったので、ボード図を作成していきます。
回路図エディタの上のGenerate/Switch boardボタンでボード図を開き、最初に外形図を作成していきます。
部品が全部左に並んでますが、まずは無視して部品面を上にして外形図を書いていきます。
次に、デザインルールを基板注文するElecrowからダウンロードしてきて読み込みます。
その後、Gridを0.5mmに設定して位置が決まっている部品を配置していきます。
ディスクリート部品が多い場合はGridを0.05inchに設定したほうがいいですが、SMDが多い場合は0.5mmで置いたほうがいいかと思います。
今回の場合、RaspberryPiとの接続の40pinコネクタと取り付け穴はRaspberryPi2と位置を合わせる必要があるので最初に置きます。
それから大体このへんに置きたいとう位置のあるDC-JACK,IR-LED,IR受光部、XBee、コネクタを配置していきます。
あとはできるだけRaspberryPiの40pinコネクタの外にその他の部品を回路の流れを考慮しながら配置していきます。
ラッツネットの線を見ながら部品の向きを大体合わせます。
配線ためにGridを0.1mm~0.05mmに設定します。
その後、自動配線を実行して大体の配線が繋がります。ただ、そのままでは結構無駄な配線が多いので気に入らない配線を剥がしては自分で引き直していきます。

で、出来上がりがこんな感じです。

2015年3月20日金曜日

EAGLE パターン外形図作成

最初に配置を考えて外形を描きます。
RaspberryPi2になってDisplay用のFPCコネクタが板端に寄ったためRP-1でコネクタの外側に配置していたXBeeが入りきらなくなってしまいました。
配置的にはEther,USBが出ている側にDC-JACK、その反対側に赤外線LED、赤外線受光部を配置したいのですが、USBのコネクタが増えたためDC-JACKはRaspberryPi2の横幅からはみ出した位置に置くことにしました。
EAGLEの無料版の制限で80x100mmで作成しなくてはならないのと、XBeeの上の部分はアンテナのため導電性のものは近くに配置出来ないという制限があります。
幅よりも高さ方向を低くしてケースを薄めにするほうがデザイン的に良いかと思うので、横に広げて回路を飛び出した部分に出来るだけ押し込めて、RaspberryPi2の上は工作出来るように2.54 pitchの蛇の目基板にしておきます。
いろいろ悩んだ末、このような配置にしました。
緑色が今回作成するRP-2基板、赤がRaspberryPi2です。RP-2基板は部品面が下を向く想定です。



2015年3月13日金曜日

EAGLE 回路図作成

回路図を書き始める前に基板に何を載せるかの構成を考えます。
今回はRaspberryPi2と接続するための40pinコネクタ、ZigBeeリモート制御用のXBeeモジュール、基板単体でIR-blusterとして使用するときのためのAVRマイコン、IR-BlusterのためのIR-LEDとIR-Remocon受光部、5Vを給電するための2.1mmDC-JACK、圧電ブザー、10key接続用のコネクタ、AVR書き込治具用のコネクタを載せることにします。
前回RaspberryPi TypeB用に作成したRP-1基板の機能とRP-1基板を利用して色々作った回路をそのまま載せることにしました。
使い方としてはRaspberryPi2に重ねてIRリモコンの送受信機能+XBee通信機能として使うもの、今回のRP-2基板上のAVRとXBee+IRリモコン送受信の中継器として使うもの、10キーを接続して暗証番号入力用に使うものの3通りを考えています。

ライブラリをひと通り作るのに結構時間がかかりましたが、ライブラリの部品を作成した後は既に前回の回路図や試験的に作ったものの回路図があったので回路図自体は30分くらいで書き終わりました。


こんな感じです。
左下の+が沢山並んでいるのは基板に並べる蛇の目パターン用のTHの記号です。
EAGLEはちょっと癖があって最初書きにくかったですが、慣れてきて要領がわかってくるとだんだんはかどり始めました。