2012年12月29日土曜日

電気系CADから筺体設計に移行する手順について整理してみよう ~筺体設計も楽しいよ!~

箱に入れないとゴミなんでしょ?

「回路基板、箱に入れなきゃタダのゴミ」 (筺体について考えよう)」では、箱に入れなきゃゴミですよと言わんばかりの方向が示されてしまいました。
まぁ、示したのは私ですが、実際に家の中を見てみると設計した基板で箱に入っていない物は全てゴミのようになっています。というか、ほぼゴミです。

BlueTankを「エフェクタ・プラットフォーム」として仕立てる方向性が見えてきたので、実際に筺体設計を行なう事にしました。
ここでは電気系CADから筺体設計に移行する手順について整理してみようと思います。

今回の環境

今回の環境を以下に示します。
  • EAGLE 5.11.0
  • RootPro CAD 5
BlueTank基板はEAGLEで設計しています。

機構設計はRootPro CAD 5を使います。
RootPro CAD 5無償版はDXFエクスポート等ができませんが、気に入ったら比較的安価に購入する事のできるCADです。

手順

方針を決める

設計は何事も方針を決めるのが先決です。

今回は基板が先に出来てしまっているので「入るケースなんて限られるだろう」という諦めが半分。
タカチ電機工業のカタログを眺めながら物理的に入る物を消去法で選定する事にしました。


先日の「「回路基板、箱に入れなきゃタダのゴミ」 (筺体について考えよう)」で気になっていたTD型アルミダイキャストボックスの中からの消去法です。

基板外形サイズをノギスで測定し、後はリストに掲載されているサイズに入るかどうか印を付けて確認しました。今回の場合、TD型の中で収まるのは3種類と判明し、その中で一番小さい物を選んだという事です。

今回、アルミダイキャストのケースに入れるのは初めての試み。
細かい事は考えずにとにかく作ってみるという乱暴な考え。

試作という事で大目に見る方針です。

漫画を描いてみる

ここからいきなりパソコン上の作業に移るのは後戻りを生む原因になります。
漫画を描いて方向性やコンセプト、加工可能かなどを確認します。

もう皆さん見飽きているかもしれませんが、今回の設計対象は以下の基板です。
筺体への組み込みも少しは考慮して設計しましたが、どの程度効果的でしょうか。


「この基板を箱に入れたらどうなるの?」と漫画を描いてみます。
「ユーザとのインターフェース」と「外部装置とのインターフェース」を意識すると良いです。


上面加工はかなり大きめの穴を空け、その上からアクリル化粧板を載せる事にしました。
LCD周辺などはかなり大きめの穴を開ける算段です。


この加工範囲なら「EAGLEの図面からアクリ屋ドットコムさんに頼むアクリル外装部品のサイズを簡単に得る方法」で示した比較的安価な加工コースを選択する事ができそうです。ふむふむ、納得。

で、最後に「本当にこれで良い?穴とか忘れてない?」というのを確認します。
漫画と基板を並べて確認すると良いでしょう。


「うーん。多分これで良いだろう。」です。

EAGLE上で基板外形をDXFでエクスポート

さて、漫画で方針を確認したら作業に取り掛かります。
え?まだ漫画を描いていないですって?
描いた方が良いですよ・・・。

以前の記事「EAGLEの図面からアクリ屋ドットコムさんに頼むアクリル外装部品のサイズを簡単に得る方法」を参考に、EAGLEボード・ファイルからDXFファイルを作ります。


筺体のDXFと基板のDXFを組み合わせる

タカチ電機工業さんの場合、DXFをウェブからダウンロードする事ができます。
ダウンロードした筺体のDXFと、EAGLEで出力した基板のDXFを組み合わせて図面を作成します。


2つのDXFをそれぞれ読み込みます。
以下のように各DXFファイルの設計がタブで表示されている事がわかります。


ここで、EAGLEが出力したDXFから基板の配線パターンのデータを取り除きます。
これはデータを軽量化し、ここから先の作業性、操作性を向上させるためです。


必要な外形データ以外を削除すると以下のようにスッキリ。
データも軽量になって操作をスムーズに行なう事ができます。


さて、ここから筺体外形と基板外形を組み合わせます。
RootPro CADは、開いたデザイン間でデータをコピーする事ができます。

今回は基板外形を筺体外形にコピーする形で作業しました。

RootPro CAD 5のコピーは、少し普通のコピーとステップが違います。
選択してCTRL+Cでは期待通りのコピーはできないでしょう。
ここでは簡単に触れておきます。

普通にコピーを選択します。


この状態で「コピー対象を選択する」動作になっています。
コピー対象を矩形で選択します。
コピー対象が水色でハイライトされます。

ここで、画面右側を見て下さい。
基準点という欄が空欄になっていますね?


ここで、選択対象のどこを基準点とするのかを決定します。


これでコピー用バッファにコピーされました。
水色でハイライトされていたコピー対象が通常の描画状態に戻ったと思います。


通常のコピー作業と異なるのは「原点を指定する」という事です。
さて、最後に筺体図面側にコピーして準備完了です。


漫画を参考にCAD上で作画する

漫画を参考にしながら、CAD上で作画します。
ポイントは、インポートした図形に下書き線などを適時加えながら作画するという事です。

私の場合、「下書き線」というレイヤーを新たに作って、そこに下書き線を描く事にしています。
これなら後で「下書き線だけ全部消去」という事が簡単にできます。


「あーでもない」、「こーでもない」みたいな若干の試行錯誤をしながら図面を完成させます。


最終的に印刷して確認しよう

図面ができたら「本当に本当に本当にこれで良い?」という確認をします。
何せ工場にデータを送ったら最後、間違っていても手元に届くまでわかりません。

同じ完成を待つなら「大丈夫かなぁ」というドキドキより、「組み合わせるのが楽しみだなぁ」というドキドキの方が嬉しいですよね?


色んな視点が必要なので、寸法入りや寸法なし等バリエーションを加えて下さい。


箱にしてみると更に良い?

折角印刷したのだから箱にしたくなってきます。
箱に仕立てて確認すると更に効果的かもしれません。
ちょっとやってみました。

厚手の紙に印刷してカッターでくりぬきます。
Craft ROBOを使えと言いたいのですが、セットアップが面倒だったので手作業です。


基板と組み合わせてみます。
うーん。
こんな感じになるのか、なるほど。


コネクタ部分はどうでしょうか。
一応良さそうですね。
もう少しきちんと確認したい場合、もう少し固い紙できちんと組み立てた方が良いかも。


後ろから見た感じ。
エフェクタに見えなくもない?


色を塗ってみるとこんな感じ?


実際の発注でのポイント

実際に発注する場合、私は漫画も添付する事にしています。
図面の解釈で誤解を未然に防ごうという狙いです。


上記の場合、「箱と蓋のどちらに加工するの?」という疑問に対する答えを示しています。
明らかに「蓋は単なる蓋」という事が図面と合わせてみる事でよくわかります。

実は、以前発注した時に箱に加工して欲しいのに蓋に加工されてしまったという事がありました。
図面に自信がなければ色々な策(策が互いに矛盾しない事!)を打っておくのも手です。

まとめ

電気設計に慣れた人でも、筺体設計まで行なっている人は意外に少ないのが現状です。
実際にやってみると細かな確認が多くて大変ですが、箱に入った時の気持ち良さには、電気設計と異なる快感があります。
年明け早々に発注出来るように詰めの作業をしたいなぁと考えています。

ダウンロード

今回作ったいい加減なCADファイルを公開します。
RootPro CAD 5のFree版で開く事ができます。

ここからダウンロード(もちろん何の保証もありません。自己責任でお使い下さい。)

2012年12月28日金曜日

「回路基板、箱に入れなきゃタダのゴミ」 (筺体について考えよう)

「回路基板、箱に入れなきゃタダのゴミ」

「回路基板、箱に入れなきゃタダのゴミ」は少し言い過ぎかもしれませんが、2013年のCuBeatSystemsは、実際に使える物に仕立てるまでの過程も重視しようと計画しています。

ここで実際に幾つか考えている物のアイデアを記しておこうと思います。

タカチ電機工業

タカチ電機工業さんには何度か加工依頼を出しています。
幾つか気になる採用候補についてリストアップしてみました。

TD型アルミダイキャストボックス



BlueTankは、もともとオーディオ・プラットフォームとして設計しましたが、「何のオーディオ装置?」と聞かれると実際に答えに困ります。具体的なアプリケーションをあまり想定していなかったというわけです。

少し思い直して考えているのが「エフェクタ・プラットフォームとしてのBlueTank」です。
で、調べてみると沢山のエフェクタがタカチ電機工業社製のアルミダイキャストボックスで製造されている事がわかりました。おぉ、こうなるのね。

MXA型アルミモバイルケース



次に目を付けたのがお洒落なアルマイト仕上げが印象的なMXA型アルミモバイルケースです。
こちらはヘッドフォン・アンプなどへの採用を多く見かけました。
これまた素敵だ。


WO型サイドウッドケース

http://www.takachi-el.co.jp/data/pdf/05-39.pdf


CuBeatSystemsの名前の由来」で取り上げた装置で採用して気に入っているサイド・ウッド仕上げですが、手作業で製作していては大変です。

少し調べるとサイド・ウッドの付いたモデルがあるではありませんか。
これもなかなか良さそう。

まとまりのないまとめ

メーカ標準品を使ってお洒落な外装を実現する事もできそうです。
BlueTankが外装によってどのようなオーディオ・プラットフォームに見えるのか気になってきました。

ACB-BF592とUMB-SGTL5000を使ったTalk ThroughをTOPPERS/JSP上で実現する

オーディオ・プラットフォーム・プロジェクトであるBlueTankも、ベース基板が上がってきて半年が経とうとしています。その間にベア・メタルなアプリケーションは幾つか実装したのですが、そろそろ色々な不満が出てきました。


Blackfin BF592は、ARM Cortex-Mシリーズ等と比較しても有り余るプロセッサ能力を持っています。簡単なサンプル・プログラムならともかく、システムとして様々なサービスを提供するのにRTOSを使って楽をしたくなってきました。RTOSを使えばNatural Tiny Shell (NT-Shell)もシステム・シェルとして提供できます。「ビデオやオーディオのDMAバッファの管理手法 (動かして遊べるソースコード付き!)」をRTOS上で試してみたいというのもあります。

プロジェクトを始めた当初はフラッシュ・ロムへの書き込みも出来なかったため独立した組み込みシステムとして動作しませんでした。Blackfin BlueBootを実現した事で独立した組み込みシステムとしての道筋が見え、だんだんと欲も出てきました。

幸いにも、DSP空挺団の酔漢さんが「ACB-BF592とTLV320AICを使ったTalkthroughサンプル。TOPPERS/JSPベース。 (bf592_tlv320aic23b_talkthrough) 」というものを公開して下さっています。このプロジェクトは、TOPPERS/JSP for Blackfin上に、使いやすいI2C制御層が組み込まれた上、オーディオ・フレームワークUZUMEが実装されています。

BlueTankプロジェクトにおけるRTOS環境の出発点として、この酔漢さんの成果物をふんだんに活用させて頂く事にしました。これは本当に有難い話です。

TLV320AIC23BもI2Cインターフェースを持つデバイスですから、UMB-SGTL5000に搭載されているオーディオ・コーデックに対する処理も、少しの改造で可能だろうという算段。実際に酔漢さんの丁寧な設計実装のおかげで、ものの3分でBlueTankでもTalk Throughが動作するようになりました。ちなみに、オリジナルのコードは、レジスタ互換のSSM2603が搭載されたUMB-SSM2603でも動作します。

唯一変更したソースコード : uzume.c

対応は至って簡単で、init_codec関数の中身を少し変更しただけです。

今回のTalk Throughは、氏の進めているUZUMEフレームワーク上に構成された物です。
BlueTankプロジェクトも、UZUMEフレームワークを使って色々と実験を進めようと考えています。

素晴らしいプロジェクトを公開して頂いているDSP空挺団の酔漢さんには感謝感謝です。

2012年12月26日水曜日

マルツパーツ館さんでDSP基板とオーディオコーデック基板が販売になりました

BlueTankで愛用しているDSP基板とオーディオコーデック基板がマルツパーツ館さんで販売になりました。

http://www.marutsu.co.jp/shohin_158707/

http://www.marutsu.co.jp/shohin_158709/

「DSPってもっと遠い世界の事だと思っていた」という人でも安心して手を伸ばせる価格設定。
先日実装したBlackfin BlueBootもこの基板で使えるようになっています。

VisualDSP++が無くてもフラッシュロムの書き込みに困る事はありません。

2012年12月24日月曜日

999円で売られていたBEHRINGER DR400 (DIGITAL REVERB/DELAY)の安くない中身

クリスマスの雰囲気が満載の街中を歩いていたところ、楽器屋でBEHRINGERのコンパクト・エフェクターがサンキュー価格ということで999円で売られていました。


よく見ると「DIGITAL」と名のつくエフェクタも999円です。
興味が出てきたのでBEHRINGER DR400 (DIGITAL REVERB/DELAY)を購入して分解してみました。

分解して最初に目に入ったのは信号処理プロセッサであるDSP56364です。
Freescale社のDSPで、「24-Bit Audio Digital Signal Processor」と銘打った音声信号処理に特化したシリーズです。
音声コーデックにはAKM4552が採用されています。

面白いのはATMEGA16AがノブのADC処理用として用いられている事でしょうか。
配線を見るかぎりではエフェクトのOn/OffスイッチもATMEGA16Aに接続されていました。
フロントエンドはATMEGA16Aが担当という設計ですね。
DSP56364とATMEGA16AとはSPIかI2Cで通信でしょう。


電源にはMPSのMP1591が使われていました。
330KHzのステップ・ダウン・コンバータです。

今回分解したエフェクタはリバーブでもありディレイでもあるので、それなりのメモリを必要とします。
「どうしてるのかなぁ」と思ったら、当然のようにメモリが鎮座していました。
ISSIのIS41LV16105B-60TLがそれです。


こんな風に、街中で999円でエフェクタを買って分解できてしまう時代。
いやー、恐ろしいものです。


ちなみに、笑ってしまったのですが、右端のモードを切り替えるノブ。
メモリの位置に合わせてクリックがあるのかと思ったら・・・ありません!

単なるボリュームだったのです!
うーん、切り替えが難しいぞっ!



本当は機構と電気設計の関係もフムフムと眺めたかったのですが、自分が再現するとしたら「プラスチック成型」などあり得ません。
そう考えるとあまり参考にならない気もしました。

うーん、何か良いケースはないかなぁと考え始めるこの頃。
2012年初頭から始めたBlackfinいじりも2013年は更に加速させようと考えています。

今度は「本当に使えるモノ」に仕立てていく計画です。

2012年12月7日金曜日

Blackfin BlueBoot - Blackfinに接続されたブート用外付けフラッシュ・ロムを書き換える事ができるソフトウェアのデビューです!

このプロジェクトって何なの?

Blackfin BlueBootとは、Blackfinに接続されたブート用フラッシュ・ロムを書き換える事のできるソフトウェアです。

ターゲット用の専用ブート・ローダとホスト用の専用アプリケーションから構成され、両者が協調動作する事でBlackfinに接続されたブート用フラッシュ・ロムの書き換えを実行します。



Blackfinは、SPIに接続された外部フラッシュ・ロムからブートさせる事ができます。
しかし、Blackfinは予めどんな外付けフラッシュ・ロムが接続されるのか知るよしもありません。


当然のようにBlackfinが外付けフラッシュ・ロムの書き換え機能を持つわけもなく、「一体どうやったら書き換えができるの?」というわけです。

Analog Devices社は、同社純正ソフトウェアであるVisualDSP++でこの問題を解決しており、Blackfinに接続されたフラッシュ・ロムの型式を選択する事で、GUIから書き換えができるようなサービスを提供しています。

うーん、さすが有償ツール!なんて感動している場合ではありません。
VisualDSP++はとても高価なツールです。
業務で使うならまだしも、趣味のDSP開発で手の出せる金額ではない事がわかりました。

Blackfin BlueBootは、このような背景から高価なツールを購入せずともBlackfinに接続されたフラッシュ・ロムを書き換えられるようにしようというプロジェクトです。

プロジェクトのゴール

このプロジェクトは、以下のゴールを設定しました。
  • Blackfin搭載のターゲットに対応可能な事。
  • 幅広いフラッシュ・ロムに対応可能な事。
  • とにかく簡単に使える事。
  • ユーザが自由にターゲットを追加できる事。
  • 業務でも趣味でも少ない制約で利用できる事。
  • 入手性の良いDSPボードを使って実例を示す事。
  • CUIとGUIでホスト側ツールを用意する事。
  • 将来的にWindows、Linux、Mac OSのプラットフォームをサポートする事。
  • ターゲット側のコードは公開し、幅広く利用してもらえるようにする事。
  • その他。
上記のゴールを基に設計したのが、今回公開するBlackfin BlueBootです。

簡単に使える

Blackfin BlueBootが標準でサポートするBlackfin基板を使う場合、特に簡単に使う事ができます。
最初にリリースされるWindows版における動作を見てみましょう。

インストーラでソフトウェアをインストールすると、デスクトップにアイコンが作られます。
ダブルクリックしてソフトウェアを起動します。


ソフトウェアを起動すると、以下のような画面が出現します。


初めに行なうのは、ターゲットとホストを接続するシリアル・ポートの設定です。


次に標準的にサポートされているターゲット・ボードの選択を行ないます。


このリストにないターゲット・ボードの場合、インストール先ディレクトリに公開されているターゲット用ソース・コードと設定ファイルの更新により、独自にブート・ローダを記述する事で対応させる事ができます。(これは後日、別途記事を書きたいなぁ。)


最後に、使用するブートローダとアプリケーションを指定して選択は完了です。

Boot Loaderとは、初段でターゲットに流し込むフラッシュ・ロム書き換え用プログラムです。
Boot Loaderを流し込んで書き込みを行なう場合、ターゲットをUARTブート・モードにしておく必要があります。

Applicationとは、ターゲット上のフラッシュ・ロムに書き込むバイナリを指します。
Applicationは、初段で流し込んだブート・ローダを経由してフラッシュ・ロムに書き込まれます。

こんな風に「シリアル・ポート」、「ターゲット・ボード」、「ファイル」の3つの選択をするだけで、即座に書き込みを実行できるのがBlackfin BlueBootです。


ちょっと便利なLDR表示機能

単に書き込めるだけでは面白くないのでBlackfinで使用しているLDRファイルの属性も表示できるようにしました。


Version 0.2.0ではBF592形式しか対応していませんが、順次対応を拡大しようと考えています。
あ、DEADBEEFなんて洒落ていますね。

ダウンロード

  • こちらからダウンロードできます。
  • ライセンスはMITです。
  • 業務の開発に、趣味の開発に存分に御活用下さい。
  • 無保証です。使用した結果起きる如何なる損害も当方は責任を負いません。

関連文書

  • 先日の記事でM25P16の書き換えコードを公開しました。
  • DSPいじりを楽しみたい方には、金子システム株式会社さんが販売されているACB-BF592をお勧めします。
  • DSPなどの話題が盛りだくさんの酔漢さんのページ、DSP空挺団もお勧めです。

まとめ

今回のBlackfin BlueBootツールは、これからBlackfinを使ってみたいけどツールは高価で手が届かないという人にも、手軽にDSPを体験して頂く事のできるツールとして設計しました。

Blackfin BlueBootで用いた、「第1段階に書き換え機能を持ったプログラムを流し込み」、「本当にやりたい事を第2段階でやる」という手法は、一般的に用いられる手法の一つです。
実はXilinx社のFPGAツールでもプラットフォーム・フラッシュの書き換えで同様の手法が用いられていたりします。

世の中の色々なツールの動作を観察してみるのも意外に面白いかもしれませんね。

2012年11月30日金曜日

CQ出版社Interfaceの2013年1月号にNatural Tiny Shell (NT-Shell)を使ったモニタ・プログラムの記事が掲載されました

CQ出版社Interfaceの2013年1月号にNatural Tiny Shell (NT-Shell)を使ったモニタ・プログラムの記事が掲載されました。
「わずかROM 10Kバイト!コマンド入力ライブラリ」と銘打って、NT-Shellの簡単な紹介と、応用事例としてモニタ・プログラムを実装した事例を紹介しています。


対応するプログラムは以下からダウンロードできます。
記事の中ではFM3マイコンに対する実装を紹介していますが、他のマイコンでの実行も可能です。
マイコンのコマンド入力インターフェースでお悩みの方は是非お試し下さい。


また、CQ出版社さんのページでは、IAR Embedded Workbench for ARMで使用可能なFM3付属基板用プロジェクトファイル一式のダウンロードが可能です。
2013年1月号の「ROM 10Kバイト/RAM 1Kバイトでヒストリ機能付き! コマンド入力ライブラリNT-Shell」の項目を御参照下さい。

2012年11月4日日曜日

Natural Tiny Shell (NT-Shell)の更新

小規模組み込みシステム向けシェルモジュールNatural Tiny Shell (NT-Shell)の更新情報です。
最新バージョンは今日現在でVersion 0.2.0です。

変更点は以下の通りです。
  • 初期化と実行の関数を分離しました。
  • ユーザがプロンプトを変更できるようになりました。
  • その他、細かい修正。
最新版はhttp://shinta.main.jp/firmware/ntshell/ntshell_ja.htmlからダウンロードできます。

NT-Shellユーザとして一番嬉しいのはプロンプトの変更が可能になった事ではないでしょうか?
ntshell_set_promptという新しい関数を使うと、動的にプロンプトの変更が可能です。


FATファイルシステムと組み合わせて使用する場合など、パス名をプロンプトにしたりできます。
コマンドモードによってプロンプトを変更するなどの利便性を提供する事が可能になりました。

内部実装も初版から大幅に整理して変更を加えています。
初版をご利用の方も是非一度ダウンロードしてお試し頂ければと思います。