PCBのガーバーデータ

さて、土日にはまりまくって、やっとPCB データが見れたので、メモです。

以下のページの下のあたりにリンクがあってファイルの中を見ると、printed circuit board editor を使っているようでしたので、とにかくこれをインストールしてみました。

Wifi E-ink display – Conclusion

http://spritesmods.com/?art=einkdisplay&page=7

eink-pcb.tgz

.
├── LICENSE.txt
├── bom.txt
├── einkdisp-esp8266
├── einkdisp-esp8266.pdf
└── gerber
    ├── einkdisp-esp8266.bottom.gbr
    ├── einkdisp-esp8266.bottommask.gbr
    ├── einkdisp-esp8266.fab.gbr
    ├── einkdisp-esp8266.outline.gbr
    ├── einkdisp-esp8266.plated-drill.cnc
    ├── einkdisp-esp8266.top.gbr
    ├── einkdisp-esp8266.topmask.gbr
    ├── einkdisp-esp8266.toppaste.gbr
    └── einkdisp-esp8266.topsilk.gbr

1 directory, 14 files

 

PCB のサイトは、以下ですが osx にも入るのですが、ソース、brew、ports と試してやっと ports の pcb で表示できました。

printed circuit board editor

http://pcb.geda-project.org/

 

大変はまったので、メモしておきます。

pcb2

回路図が見えるっていうわけじゃないようです。がーバーデータがレイヤーわけされて出ているようです。

pcb1

 

環境は、osx 10.9.5 で、試したのは、PCB のソースと、後に知ったbrew 版。そして、最後でだめもとで入れた ports 版で、最後のでやっと表示できました。

流れは以下の感じです。

▼port の pcb を入れる
以下より、osx のバージョンにあったインストーラをダウンロード
http://www.macports.org/install.php
入れ終わったら、環境変数を反映。

$ source ~/.bash_profile

$ port search pcb

    pcb @20140316 (x11, graphics)
        Printed Circuit Board Layout Tool
    xgsch2pcb @0.1.3_4 (cad, science, electronics)
        intuitive and user-friendly graphical interface to gsch2pcb
    Found 2 ports.

$ sudo port install pcb

 

途中、以下のエラーで最後までいかず、ログを見ると、GD のヘッダーチェックしているようでした。

—>  Configuring pcb
Error: Failed to configure pcb, consult /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_x11_pcb/pcb/work/pcb-20140316/config.log★
Error: org.macports.configure for port pcb returned: configure failure: command execution failed
Please see the log file for port pcb for details:
    /opt/local/var/macports/logs/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_x11_pcb/pcb/main.log
To report a bug, follow the instructions in the guide:
http://guide.macports.org/#project.tickets
Error: Processing of port pcb failed

★log
#define HAVE_SYS_TIMES_H 1
#define HAVE_SYS_WAIT_H 1
#define HAVE_DLFCN_H 1
#define HAVE_GD_H 1★

configure: exit 1

とりあえず、libgd を入れたり削除してみたりしてみたのですが、だめで、brew のを削除してみたら、大丈夫でした。

$ brew uninstall libgd

ports 版は、以下に入ります。

$ which pcb
/opt/local/bin/pcb

 

とりあえず、以下のエラーは出ていますが見れたり、保存したりexport して、がーバーデータを出したりはできるので良しとします。

 

$ /opt/local/bin/pcb ; exit;
Dynamic session lookup supported but failed: launchd did not provide a socket path, verify that org.freedesktop.dbus-session.plist is loaded!
pcb_dbus: DBus connection Error (Not enough memory)

 

brew 版は入るのですが、レンダリングがおかしく表示が見えない感じです。以下のような感じと同じ現象に会いました。

https://github.com/Homebrew/homebrew-x11/issues/120

OpenGL のライブラリの問題のようですが、解決方法がわからず、ports 版を入れてとりあえず満足です。

で、オンラインで入稿できて安いところはないかなぁと探してみると、Fusion PCB というのがあるそうです。smartDiy の愛称を持つ山梨県南アルプス市(すごい名前の市ですよね)にある株式会社ASsystemさんのWEBサイトです。

海外PCB発注第2弾 【Fusion PCB】 注文から到着まで

http://www.smartdiys.com/blog/make-pcb-fusion-pcb/

サイトを見ると、品質も良くて5枚から発注でき、しかも安いので発注まではまだしていませんが途中まで入稿してみました。

Fusion_PCB__customize_PCB_prototype___Seeedstudio

 

5cm四方のが10枚できて、値段は約$10 です。

Step_2_-_Payment_Information___Seeed_Studio_Bazaar__Boost_ideas__Extend_the_Reach 送料を入れても、15ドル で2000円弱でいけます。これは、エッチングしてやる価値もないほど安いので、ここに発注することにしました。もう少しいろいろと調査してから、発注しようかなと考えています。

Gerber

がーバーデータを入れるとプレビューもしてくれます。ファイル名は、以下のようにするのがセオリーのようです。

パターン表: pcbname.GTL
パターン裏: pcbname.GBL
シルク面表: pcbname.GTO
シルク面裏: pcbname.GBO
基板マスク表: pcbname.GTS
基板マスク裏: pcbname.GBS
ドリルデータ: pcbname.TXT
基板外形: pcbname.GML

 

送料は、急がないので一番安いのでよいです。

2

 

今まで、プリント基板をオンラインで発注しようとしたことがなかったので、これは1からオリジナルで回路を作るノウハウを実につけて実際に発注してみる価値がありますね。両面基盤で5cm が10枚作れて2000円未満なんてなんてすばらしいんでしょうか。1枚あたり200円ということですよね。

 

Eagleか、Kicad で簡単なオリジナル基盤、たとえば1セル用のバックブースト+ESP12 (いまだとギテキ対応したモジュールですかね)とか汎用性がある基盤を作ってみるとすごく需要がありそう。ESP8266 使う身になると電源回路が付いていて、かつブレッドボードに空きがある形のPCB基盤って今のところなさそうだと思うので良いかもです。

 

オリジナルのPCB基盤を作るノウハウの蓄積、当面の目標としてみます。

 

で、PCBエディターを触っていたら、フォトモードで基盤を出力するものがありました。memoしておきます。
 1

3

 

PCB_Print_Layout

 

  einkdisp-esp8266_front_png__683×593_

einkdisp-esp8266_back_png__683×593_

ほー、なるほど。

IC4 のレギュレータは要考慮

BOM.TXTに載っている、IC4は良く見るとESP12への電源と、Pチャンネル Mos-FET を介して、E-inkディスプレイの4番ピンのVDDにつながっています。

型番は、TPS78230 とありますが、これは3Vの150mA出力です。たぶん、足りないと思うのでこのICは変更しようと思います。

候補は、300ma 出せるもの。形状は、SOT-23-5

MCP1802T-3302I/OT(3.3V)

MCP1802T-3002I/OT(3V)

http://ww1.microchip.com/downloads/en/DeviceDoc/22053C.pdf

他は、ON Semiconductorの以下とか。

NCP603SN330T1G(3.3V)

 

たくさんあるので、以下あたりから候補を選ぶことに。3V と3.3V とどちらがいいでしょうかね?リチウム電池に直結しているので、3V のほうがいいのかもしれませんね。というか、これリチウム電池の電圧保護に頼っている形ですね。うーむ。

digikey Voltage Regulators – Linear

 

作者の手書きの図には、MCP1802T-3002I/OT(3V)だと思うものが載っているようです。

http://spritesmods.com/?art=einkdisplay&page=4

http://spritesmods.com/einkdisplay/schema_esp.png

 

E-ink の電源には、22V,15V,-15V,-20V と3V(3.3V)を必要としているようです。

確認してみると、データシートには、3.3V とあるようです。

http://essentialscrap.com/eink/ED060SC4V2.pdf

essentialscrap_com_eink_ED060SC4V2_pdf

ここは本来、前回調査したバックブースト回路があるといいようです。

 

ソースコードを確認してみると、ADCから電圧をみているようです。

—- user_main.c

:: 
#define BAT_LOW_LVL_MV 3100 
:: 
    ioEinkEna(1); 
    os_delay_us(2000); 
    //Battery voltage is divided by an 4.7K/1K resistor divider. 
    //ADC: 1024 = 1V 
    batteryMeasMv=(system_adc_read()*9765*5.7)/10000; 
    if (batteryMeasMv<BAT_LOW_LVL_MV) { 
        //Crap, battery is dying. 
        if (batEmptyShown!=1) { 
            os_printf("Battery empty! Showing bat empty icon…\n"); 
            batEmptyShown=1; 
            system_rtc_mem_write(128+4, &batEmptyShown, 4); 
            einkFile=espFsOpen("batempty.bm"); 
            einkDisplay(2048, fileEinkNeedData, fileEinkDoneCb); 
            return; 
        } else { 
            os_printf("Battery empty! Sleeping…\n"); 
            sleepmode(); 
        } 
    } else { 
        batEmptyShown=0; 
        system_rtc_mem_write(128+4, &batEmptyShown, 4); 
    } 
::

 

3.1V以下になると、以下の画像が出るようなチェックがあるようです。なるほど。ADC ピンは本来こういう使い方をする設計で作られているのかもしれませんね。

 

 

batempty

ということで、IC4は、以下にしました。

MCP1802T-3302I/OT(3.3V)

x 10 \547

http://www.aliexpress.com/item/FREE-SHIPPING-10PCS-LOT-MCP1802-MCP1802T-3302I-OT-IC-REG-LDO-3-3V-0-26A-SOT23/32233456841.html

電源回路のコンデンサを検証

電源回路がどうなっているのかなと調査しました。

E-ink に入る電源電圧は、-20V , +22v , –15V , +15V とあってLT1945でまず、-20V と +20V をスイッチングして生成しています。

 

bom.txt に載っているコンデンサの値がどうもおかしいようで、以下のように掲載されています。

—- bom.txt

::

C2, C4, C5, C6, C7, C8: 2U2 >25V!    490-10486-1-ND

::

最初見たとき、2u2 というのが?で2.2uF のことだろうと思っていましたが、回路を見ると、どうやら違うんじゃないのということで実際に調査しました。実際にeagle でパーツリストと、手書きの図から作者の回路をトレースしました。

なんか、おかしいなと思ったところは以下です。

eagle_power1

bom.txt にあるのと手書きの図とは違うようです。

schema_power 2

LTのシュミレーターがあるので、実際に値を入れてみると、

 Linear_Technology_Corporation

以下のようになり、-20V と +22V を出してくれません。これ便利です。

1

それぞれ、手書きの図にある値を入れると、生成されます。

2

 

また、その後の15V と –15V を出した後の C5 , C6 についても

 

einkdisp-esp8266_front_png__683×593_

データシートを見ると、100nFで良いようです。

 

www_onsemi_jp_pub_link_Collateral_MC78L00A-D_PDF

なので、

C2 100pF > 25V

C4 4.7pF > 25V

C5 C6 100nF > 15V

を用意すればよいようです。

Eagle の自動配線

さて、全部の配線とパーツリストの選択が終わったので、PCB の自動配線を試してみたくなりました。作者の手本を参考にあれこれ置いてまだ試している最中ですが、そのスクリーンショットです。

 

これが、配置したところの図です。

1_Board_-__Users_ishizaka_Documents_eagle_WiFi_E-link_WiFi_E-link_brd_-_EAGLE_7_2_0_Light

こんな感じで簡単操作。

 a

b

気に入るまで、配置しなおしたり、配線したりを繰り返して試しています。このときは、93.6% まで配線してくれたようです。

 

そして、これがオートルートの93%完了のパターン。

5

こっちは、91.7%ですが、スルーホールが80個と少なくなっているものです。

4

手で配線していたら、日が暮れそうなので自動配線助かりますね。

 

パーツを配置しなおしたり、回転させたりといろいろとやっていると、パーセンテージが上がっていきます。最高で93.7%くらいまで行きました。LT の IC 周りと、FPC コネクター周りの数本がどうしても配線できないようです。

このあたりは手作業ですかね。

 

配線のやり直しは、以下のコマンドを入力すると何回でもやり直せます。

ripup;

配置の微妙なグリッド調整は、osx だとオプションキーを押すと良いようです。

 

どうしても、このあたりが自動配線できないようです。

c

まだ手作業で修正する方法は知らないので、今度の休みにでもやり方を覚えてみようと思います。

 

下は、作業の流れをつかむため、Fusion PCB のcam ファイルから、ガーバーファイルを出力し、kikad の gerbview で見たところ。ドリルデータの穴の位置が大幅にずれるのはなにか設定でしょうかね?

まだ、シルク印刷の部分と、マスク面など手をつけていないので、そのあたりは手作業ですかね。

d

こんな配線は、ユニバーサル基盤では考えるだけでも面倒なので、自動配線ありがたいです。

結構綺麗に配線できてると思いますが、プロの方から見るともっとこうした方が良いっていう部分もあるのでしょうね。

about_kicad_gerbview

とりあえず、なんにも知らずにポチぽちと部品を選択し、回路図を描いて、PCB の大きさの上に置いただけで、ここまでできます。偉大ですね。

 

一番面倒なのは、部品をパーツリストから選択するところと、その前段で、パーツリストのデータをいろいろなところから集めてくるのが面倒。逆に、使う部品がある程度決まっている場合、本当に楽です。

Eagle や kicad を使って設計し、プリントサービスに基盤を出して何か作るっていうステップは、ありかもなと思い出しているところです。エッチングして基盤を作るステップを思えば、ちょっと時間はかかるけど、金額はおこずかいの範囲なので、毎月1つ、プリントに出して遊べそうですね。設計が間に合わないとは思いますが。

 

回路図と、PCBの配置をして、E-ink の仕様書のpin と作者の配線が微妙に違う部分もあり、このあたりは、実際にトライエラーを繰り返さないと不明な部分も出てきていますが、問題も少しづつわかってきています。

 

次回は、ソフトウェア部分の検証と、それが行けそうかなと思えば、いよいよパーツ発注です。さて、本当に動くのでしょうかね。

プリント基板データを作成中

だいぶ、自動配線のコツもつかんで、Eagle の操作も少しづつ覚えてきました。Name の文字の大きさや位置を調整するのがわからなかったのですが、どうやら、smash してから文字を選択できる状態に分解して回転や、右クリックでプロパティーで文字の大きさやスタイルなどを調整するようです。

 

自動配線のコツは、ある程度配置を最善にして90%くらいまで最初に配線。その後、部分的に消したり、一部手動で途中まで配線したりして、再度自動配線をすると、うまくいきます。

 

インダクタは、流通も多いTDK のこれを使うことに。接地する面が少なく、配線しやすい。

SLF7045T-220MR90-PF

datasheet
SLF7045 type

SLF7045T-220MR90-PF

x 10 \933
http://www.aliexpress.com/item/7x7MM-22uH-960mA-Shielded-SMD-Power-Inductors-Inductance-SLF7032T-220MR96-TDK/1084729640.html?isOrigTitle=true

tdk

ちょっと配置を変えて、今のところはこんな感じになっています。smd はリフローというつけ方が楽そうで、半田ペーストをステンシルで一気につけて、SMD 部品を置いてあとはホットプレートで230度まで加熱するという感じだそうです。

Eagle で、tCream というレイヤーが半田をつける面で、以下がそれです。

mask

ステンシルを作る説明は、SWATCH SCIENCE さんの trac にありました。

Craft ROBOを使ったリフローはんだづけ用ステンシルの作製

動画を見ると、ほーなるほどとなります。

[youtube https://www.youtube.com/watch?v=prjB_myCwSY]

なるほどー 。この方法なら、うまく半田付けできるかも。実際に紙に印刷してみたんですが、めちゃくちゃ細かいのでできるかちょっと心配ですが。

PCB の裏面のシルクに画像を入れてみた

E-ink controller は CC BY-SA だったので、そのロゴと、オープンソース・ハードウェアのロゴも入れてみました。

これは、ミラーした状態にする必要があるのかわかりませんでしたが、ちょっとテストで入れてみることに。

osshw

横幅2000px くらいのビットマップ画像を白黒にして、黒いところだけチェックを入れるといいようです。

画像は、bmp 形式でインポートするとウィザードがあるようでした。係数に、0.4 を入れて縮小しておきました。レイヤーは、bPlace に入れておけばよいようです。

複数選択をして、レイヤーを変更する方法がなかなかわからず、操作に手惑いました。

・ポイント

グループ選択する

チェンジアイコンからレイヤーを指定。

その後、グループ選択してある対象をクリック

 

インターフェイスが悪いというか、ちょっとこのあたりは要改善してほしいですね。

 

画像でロゴが入れられるということは、JunkHack のロゴも何か作りたくなってきますね。

 

さて、次はソースコードでも見てみますか。