2009年4月10日金曜日

Thin Fax Line (Olimexプリント基板発注記2)

2月19日 19:00。ツベタンくんから新しい発注書をもらったので、これに必要事項を記入します。記入は発注書PDFをドロー系ソフトに取り込んで、上からテキストを貼り付けました。フォントもタイプライターフォントを使って、いかにもという感じです。決済カードにJCBが使えるってのはよほど日本人客が多いのでしょうか。


一番下のシグネチャーは手書きで書いて、さあ、FAXです。FAX…国際FAXか!そんなのやったことないぞ。大慌てで国際FAXの仕方を調べて、部屋のFAXから送信!
…プルプル…
お、かかった。向こうのベルが鳴ってる。
…ブッ、ピーガーピーガー…
お、ネゴシエーション始めた。行ける!
…ギョワー…
行ってる行ってる!これで安心。数秒後…
…(シ~ン)…
…ピー。グガガガ(紙の排出される音)。「通信エラー」
うっそぉ~。途中で通信がぶった切られました。なんでだろう?回線状況がたまたま悪かったのだろう。では、気を取り直してもう一度……全く同じ現象が。困った。ブルガリアまでって通信料金が高い。アメリカに送るのとはわけが違うのです。何度もトライはできない。何しろ回線接続まではできちゃうわけだからその分料金はかかる。コンビニで送るっていう手もあるらしいけど、なんだか癪だし、めんどくさいし、きちんと送れる保証はないし。

で、思いついたのが、SkypeでFAXできないだろうかということ。Skypeの"SkypeOut"サービスはヨーロッパにあるVoIPゲートウェイから電話回線につなぐことができるから、回線品質は日本から直接つなげるよりもきっとずっといいはずだ。ただし、SkypeOutは安いながらも有料で、「Skypeクレジット」という仮想チケットを前払いで購入しておかなければならない。最低料金は750円ですが、今後も何回かOlimexには発注するかもしれないし、長距離電話をSkypeからかけてもいいし、無駄にはならないと思いました。

Skype用のアドオン(Skype用語で"Extra"という)で、"PamFax"というものがすぐに見つかりました。インストールするとプリンタとして登録され、どのソフトウェアからでもPamFaxに向かって印刷をするだけというものです。料金はページごとの課金でSkypeクレジットからの引き落としです。うまく送れた場合のみ課金されるはずで、こちらのリスクは低いと思われます。…が本当にうまくできるかどうか怪しい…。心配しつつもトライすると…

2月19日 21:30。送信成功です。苦闘2時間半。とりあえずPamFax上では送信完了となりました。送信完了通知をメールで受け取ることもでき、そちらもきちんと通知が来ました。
Hazieさん、.
TSVETAN/OLIMEX (+35932621270) 様宛のPamFaxが送信されました。
ポータル画面でFAXの履歴を見ることができます。
PamFaxをご利用いただきありがとうございます。
PamFax Service より
やった、届いた。届いたはず…だよね?Skypeクレジットは119円だけ減っておりました。これ、たぶん安いよね。ブルガリアだもんね。普通に送ったら大変なことになるよね。(後日、立て続けに2回失敗した国際回線での送信で320円かかったことが判明しました。失敗しただけで1回160円だもんね。成功してても500円超えてたかもなあ。今回はこれでよしと。)

2月20日 9:30。ツベタンくんに何か反応してもらいたいので確認のメール。12時間前にFAXしたけど届いてる?
Dear Tsvetan,

I placed the order through fax about 12 hours ago.
Did you receive it? If you didn't do so and inform about it,
I'm ready to re-send it again.
…待てど暮らせど返事が来ない。その12時間後、来ました。
fax received
そ、そんだけかよ?1行だけ?文にもなってないよ?返事が遅くなってすみませんとかもなしかよ。ちょっと憤りを覚えつつも一安心。まあ、忙しいんだろうけどさ。分かってあげようか。FAXが届く=注文完了なので、製造が始まるわけですが、一番安いコースの"3-5 working days"なので1週間くらいは見ておきましょう。

3月3日 2:00。キター。ツベタンくんからメール!FAX入れてから12日だ。
shipped
また1行野郎だ、コノヤロー。でも出荷されたのね。よかったよかった。しかし、時差を考慮しても6 working daysかかっとるな。まあ、仕事じゃないから我慢しよう。その分安いんだから。

さて、無事にツベタンくんの手を離れて、ブツは国際エアメールのパフォーマンスにゆだねられました。いつ届くのか?こいつも怪しい。

3月16日…ポストイン。待ちましたよー、待ちました。首がこんなに長くなっちゃったよー。13日かかった。ほんとにエア?なのか?1週間、長くて10日くらいに想像してたのに甘かった。で、記念撮影。


中身は3枚まとめてシュリンクラップしてありました。そうか、金フラッシュ仕上げだったのか。半田レベラーにしてもっと安くなんないかな…。


ということで、めでたく完成!いきなりジャンパ入ってますが…。


※PamFaxのインストールと使い方が分かりやすく載ってるページがこちらにありましたので紹介しておきます。

2009年4月9日木曜日

よし、ブルガリアにしよう。(Olimexプリント基板発注記1)

前から気になっていました。東欧のある国には激安でプリント基板を作ってくれる業者があるのです。その名はOlimex(たぶんそのまま「オリメックス」と読むのでしょう)。所在地はブルガリア…ブ、ブルガリア?どこ?ヨーグルトの国としか認識していませんでした。それでもトラ技に紹介されていたり、検索すれば多くの日本人がトライしていたり、もうずいぶん有名になりました。「TinyでDRO!」の基板はXYZ軸で3枚いるし、手張りだとLEDの配線が手間だし、密度も高くないし、ここのところ空前の円高ユーロ安だし、今まさにブルガリアを試してみるチャンス。Eagle(回路CAD)のファイルがそのまま使えるのもうれしい。今回はそのOlimexにDROの基板を発注して届くまでの顛末を書こうと思います。

発注前。EagleでDROのパターン設計を終える。今回はOlimex言うところの"DSS"サイズ、すなわち両面板のユーロカードサイズ160mm×100mmにジャスト3枚面付け(同じパターンを1枚の基板に割りつけること。英語で"panelize")することにしました。Olimexは既定のカードサイズ以内なら無料で面付けして、希望によりカット("de-panelize")もしてくれるのです。私なりに要点をまとめたので紹介します。
注文を意識した設計のTIPS

[1] 基板外形サイズを160mm×100mm以内に入れる。外形線は10milの幅で引き、面付けする場合には切り代を10milとる。
[2] OLIMEX用DRCを走らせる。DRCエラーを修正する。
[3] 非標準ドリルを抽出する。0_OLIMEX_DRILL.ulpを実行。現在プロジェクトの直下にできるOLIMEX_DRILL.scrを実行。
[4] ドリル径をOLIMEX仕様に標準化する。
ライブラリに標準ドリル版のパッケージを追加する。0_OLIMEX_LIB.ulpを実行。変更を受けるライブラリを指定。現在プロジェクト直下にできるOLIMEXLIB.scrを実行。ライブラリを保存。基板エディタでライブラリをアップデート。ドリル変更をするすべてのパーツでパッケージ変更(change package)。
[5] シルク幅の変更。OlimexAllSilk.ulpを実行。すべて10mil幅になる。
[6] ドリル穴数のカウント。drillinfo.ulpまたはcount.ulp(面付け後500穴を超えると割増料金)
[7] 半田マスク層(tStop, bStop)を含めてOLIMEXが使うすべての層に任意の文字列を入れる。基板外形の外でよい。(これを自動化するスクリプトがあるらしいが、当時存在を知らなくて使わなかった。)
[8] .brdファイルとREADME.TXTファイルをZIP圧縮する。
[9] ZIPファイルを添付して注文メールを送る。データの出し直しは3ユーロのペナルティを取られる。

2月18日。上記[8]のZIPファイルを添付して、最初のメールを送る。
From: hazie@mydomain.jp
To: fastpcb@olimex.com
Subject: PCB ORDER
---
Dear

I would like to order PCB with attached files.

Regards,

Hazie
これだけ。本当にこんなんで大丈夫か?かなり心配する。
すると、発信からたった45分で返信が来た。
From: "Olimex Ltd Support"
To: hazie@mydomain.jp
Subject: Re: PCB ORDER
---
Hi
attached is your po form
Best regards
Tsvetan / Olimex
ををっ!早い!担当者は"Tsvetan"…「ツベタン」ですね。かの有名な「ツベタン」くんとはキミか。発注書が添付されているので中を見ると…

45.5ユーロね。ん?こちらの見積りよりちょっと高いな。あれ?"Non Standard drill sizes 4pce Euro 4.00"って何?非標準のドリルが4種類もあるって。実は、この時点ではドリル径の標準化を知らずに発注してしまったのでした。うーん、このまま発注すれば4ドルのプラス、修正して出し直せば3ドルのプラス。これは、修正したほうがわずかに安く済むな。もしかしたら、初めてってことで無償で対応してくれたりして…と淡い期待をいだきつつ、ネット情報で確認しつつ修正です。

2月19日、(こちらの)朝一。修正しますとツベタンに一報。
Dear Tsvetan,

I have to say I'm sorry that I attached wrong data.
I didn't check enough for your standard drill sizes.
The data standardized will be made and I will place another order.
ごめんね、チェック不足で間違っちゃったから、すぐに直すねって、かわいく聞こえただろうか?んなわけないなぁ…。

その日の昼前、11時ごろ、修正済みファイルを添付して送信。
I would like to order PCB with attached files.
Please cancel previous order PO#xxxxxxx and send another PO form.
今度は4時間半後。ツベタンから返事が。
Hi
please note in this case file re-processing charge EUR 3.00 will be add to your order
Thanks
Tsvetan
ううぅ、許してくれなかった…無慈悲にも追加料金が。まあ、こちらが悪いのであきらめて…
Dear Tsvetan,

Oh, I didn't know it. But I agree re-processing the data with the extra-charge EUR 3.00. Please send another PO.

I will be more careful next time. Thanks.
即、受け入れることにしました。今読むとここまでへりくだる必要はないかも。

その3時間後、例のそっけない文面で新しい発注書が届いた。
Hi
attached is your po form
Best regards
キミは無口だなあ。ま、"Best regards"がついているだけいいか。ちなみに、修正したデータの場合は注文番号に「X」がつくようです。なんか落第点とったみたいでへこむなあ。でもきっちり1ユーロ安くなりました。

さあ、ここからまた一騒動ありました。つづきは次回へ。


2009年4月2日木曜日

タイミングチャートの作図ツール

この手のブログで避けて通れないのがタイミングチャートによる説明です。クロックなどの繰り返し波形あり、波形のエッジの前後関係の厳密さあり、論理反転した波形ありでソフトウェアツールによる作図が最適と思えます。

PowerPointとかVisioを駆使して作図するのも疲れるので、巷の人たちはどのようなツールを使っていらっしゃるのだろうと調べてみましたが、あまり決定番ってないんですね。Excelのマクロなども含め、フリーのツールもいくつか(国産2つ、海外産2つ)試してみましたが、どうもぴったりしたのがない。結局は等幅フォントを使ったプレーンテキストで描くのが一番早くて楽だったり、何しろ何でも描けて自由ですから。で、このブログではいまだにテキストで描いたものを張り付けている次第なんですが…。

今回は試したフリーのツールの中で一番よくできていたものを紹介します。"TimingTool"というそのものずばりの名称で、"MOHC Ltd."という---おそらく英国の会社・詳細不明---の製品が商品化されており、その試用版"TimingTool Lite"がそれです。リンクはここから。とりあえずスクリーンショットを見てみましょう。


なかなか本格的な面構え。製品版とほとんど同じなので当たり前ですが。今回のDROのタイミングチャートを書くのに使おうと思って、途中まで入力してみたものです。どんな特徴があって製品版と何が違うか。
  • Java-Appletでオンラインで動くのでダウンロード、インストール不要。とりあえず動かすのにはユーザ登録も不要。
  • ユーザ登録をすれば専用のワークスペースを先方のサーバー上に作ってくれ、データをワークスペース上に保存しておける。
  • 試用期間に制限はない。(この製品が存続する限り?)
  • 製品版ではタイミング解析とかその他の高級な機能(HDLツールやマクロ)が使えるが、これは使えない。それ以外の機能は"lite"でも変わらない(らしい)。
  • デジタルの波形のみ。アナログ波形は不可。
  • 波形の形状がわりときれい(主観です)。
  • 印刷出力もしくはエクスポート出力には必ず"TimingTool"のロゴが入る(製品版は不明)。下は印刷プレビューのショット。



  • エクスポートのフォーマットは↓こんな感じ。ただし、長ーい周期をズームアウトして1枚にまとめたりするとき波形がつぶれます。そのつぶれ方がちょっと変。なるべく波形をつぶさない大きさで出力するべし。これは印刷も同じ。
  • コメントやテキストの入力では、下付き文字、上付き文字、オーバーバーなど文字の装飾がいろいろ選べるが、日本語は入らない。化けるんじゃなくて、そもそも入力できない。
  • UIがかなり特殊な部類。エッジの左をクリックしたときと右をクリックしたときで挙動を変えるとか。右をちょっと長めにクリックしっぱなしにすると別のメニューが出るとか。
  • Javaベースなので動きはちょっと遅め。サーバーも重め。
上にも書きましたがUIがちょっと特殊なので、波形のコピーとかやり方をマスターするのに苦労しました。ディレイやセットアップ/ホールドなどのパラメータをきっちり入れることもできますが、今回はそこまで試しませんでした。でも、使いこなせばかなり高度なことができそうなので、試す価値はあると思います。(なにしろタダですから!)

なお、日本では一般に「タイミング図」や「タイミングチャート」などと言いますが、ググった感じ、英語では"Timing Diagram"というほうが通りがいいようです。検索の参考までに。

2009年4月1日水曜日

TinyでDRO!(ソフトウェア2)

データの頭出しは、データ送出の時間間隔が約0.3秒開いているという仕様に頼ります。0.3秒と仕様にしてはやや甘いので、実際のプログラムでは「0.25秒以上開いたら」という条件に置き換えます。

このタイミングはTimer1を使って計ります。システムクロックを256分周した周波数でカウントアップします。カウントアップの最大値が0.25秒で訪れるように比較一致レジスタOCR1Aを設定し、最大値に達したら自動ゼロクリアするようにCTC動作にします。

下図のタイミングチャートでは、データビットの送出タイミングに合わせてTimer1のカウント値がどのように変化するかを示しています。「絶対座標のデータ」または「相対座標のデータ」の下の部分を見て分かる通り、データビットを取り込むタイミング(INT1のハンドラ内)でTimer1をクリアしています(図の「エッジ割り込みでクリア」と書いてある部分)。0.25秒未満の短い間隔では決して最大値には達しません。

ところが、データを送出し終わってしばらくデータが来ないとTimer1を強制クリアする機会がなく、そのまま増加し続け、0.25秒経過の後ついには最大値=比較一致レジスタの値に達します(図の「比較一致」)。つまり、この時点でデータの区切りが訪れたと認識するのです。プログラムでは比較一致割り込みを起こさせるようにしてあり、そのハンドラの中でバッファポインタを先頭に持ってくる、つまりデータの頭出しをすることになります。以下は再び"interrupt.c"の該当部分です。(行間が空いているのはCPUタイプによるIF-DEFを消して見やすくしたためです。)

// スケールのデータ送信間隔を測る



ISR(TIMER1_COMPA_vect)

{
Rbufp = Rbuf; /* バッファポインタを先頭へ */
}