August 04, 2008

カメラモジュール 実装完了

少し前の記事『Super Sylphide 進捗状況(20) -- カメラモジュール基板の企画』で、sparkfunから購入したカメラモジュールの話を書きましたが、この度実装を完了しました。

Sylphide_CAM.jpg
裏と表。高実装密度だが2層基板。

実際に部品を実装してみると、自己満足でしょうか、フツフツと制作意欲が沸いてきます。最初の難関、電源電圧 2種(+3Vと+1.5V)がきっちり出ていることは確認できたので、次はSDRAMをフレームバッファとすべくAltera MAX2(CPLD)用のVHDLを書こうと思います。

※後に、この基板用のファームがある程度できました。

23:59 fenrir が投稿 : 固定リンク | | このエントリーを含むはてなブックマーク | コメント (2) | トラックバック
このエントリーのトラックバックURL: https://fenrir.naruoka.org/mt/mt-tb.cgi/653

August 11, 2008

サーボ信号をアナログ電圧に変換

ラジコン用サーボの信号はパルスの幅によってその強弱が表現されるので、それを直接計測するためにはタイマの機能の一つであるインプットキャプチャを使う必要があり、チャンネル数が増えると大変やっかいです。実際オートパイロットシステム Super Sylphideでは、FPGAを用いてタイマを多数構成しこの信号を計測しました。

マイコンでこの計測を簡易的に行うにはどうしたらいいでしょうか? マイコンに搭載されている機能を思い浮かべてみると、多くのマイコンではA/D変換機のチャンネル数が8chと、比較的多く搭載されていると思います。そこで、サーボに指令値を与えるパルスの幅に応じたアナログ電圧を生成できれば、マイコンでも簡易的にこの指令値が計測できることになります。

そこでPIC16F88と12bits D/Aコンバータ MCP4921を使って、サーボ用信号をアナログ電圧に置き換える装置を作ってみました。できあがりは写真の通りで、1台で1ch分ですが、非常にコンパクトになりました。

pwm2ac.jpg
夏休み前のOlimex最終便

Eagleの回路図レイアウト図をおいておきます。16F88は表面実装品を使っていますが、秋月のPICライタ等で書き込めるように、関係端子のみDIPと同形状のサブ基板に引き出してあります。

pwm2ac_brd.png
上がメイン、下がサブ。

PICのプログラムは無償コンビのsdcc + gputilsで開発しました。sdccのPICのサポートもかなり充実してきているようなので、有償コンパイラがそれなりの値段をすることを考えると有難い限りです。プログラムはpwm2acディレクトリの中にあります。開発環境を整えた上でmakeをしてください。開発環境の構築は『PICマイコン開発環境 (SDCCのインストール)』等が参考になると思います。

最後にPIC16F88を選んだ利用ですが、PIC16F88にはA/D変換機が入っています。ということは、逆の機能も、という魂胆が見え見えということです。

23:59 fenrir が投稿 : 固定リンク | | このエントリーを含むはてなブックマーク | コメント (5) | トラックバック
このエントリーのトラックバックURL: https://fenrir.naruoka.org/mt/mt-tb.cgi/654

August 15, 2008

XBee ワイヤレス電力計 設計資料

hamayanさんXBeeを使った家電等の総合管理システムを作られているようです。メインで使っているマイコンはFreescaleのcoldfireで僕自身は一度も触ったことがないのですが、製作記事が時系列に沿ってどんどん公開されているのでとても楽しいです。

そういえば以前こちらのブログでもXBeeを利用したワイヤレス電力計を製作したことを紹介しました。これは某プロジェクトの為に作ったコンセントにさせる電力計で、XBeeを通じて外部とデータの送受信を行うことができるものなのです。今回の記事では、プロジェクトも無事終了したこともあり、設計資料の公開に踏み切りたい思います。

emeter_8.jpg
トータルで8台作りました。

まずはEagleの回路図レイアウト図です。基板の外注は中国のpcbcartに頼みました。経験的にわかっていることなのですが、pcbcartを使う際は(一応対応を謳っている)Eagleのファイルを直接送るよりも、ガーバに変換してから送ったほうが確実です。基板の外形上が長方形ではなく変わった形をしているのは、この電力計のケースとして使ったエコワット(改造対策として現在は接着剤で分解しにくくなっています)にすっぽり収まるようにした結果です。

電力計のチップとしてAnalog Devices ADE7753を利用しました。内蔵のCTと組合わせることで正確に電流、電圧を時間積分し、電力を計算してくれる専用ICです。XBeeでやり取りするデータは、基本的にADE7753のレジスタで、これらを直接読み書きできるようにしてあります。

搭載しているマイコンはSilicon Laboratories C8051F410です。ファームウェアはsdccで開発しました。
ファームにはファイルシステムとしてELMのchanさんのTinyFatFsを搭載していますが、これを活用するには開発期間が短すぎました。XBeeと通信しない間、基板に実装されているmicroSDにデータを蓄えておく機能を実現しようとしたのですが、ファイルシステムはその名残です。
また、エコワットについていた液晶の制御もピン配置を解析の上ファームに取り込み、経過時刻を表示するようにしました。
XBeeとの通信は7bitsエンコーダ/デコーダという怪しげな方法を使っています。バイナリをXBeeに直接通すと通信状態から制御コマンドに移行してしまう可能性があったので、その対策です。

マイコン等の電源はAC100Vより生成しています。これにはRohm BP5034D5を使いました。手軽にAC100VからDC5Vが生成できます。が、AC100Vは非常に危険なので、しばらくトラウマになっています(一度配線ミスによりパターンが蒸発しましたよ、コンデンサ爆発ならまだしも…)。

PC側は、以前の記事にあるXbeeのUSBモジュールを使ってデータをやり取りしています。表示にはLabviewを使いました。動作しているイメージは下の動画を見ていただくのがよいと思います。

最後に、同じようなことをされている方がいましたら、その参考になれば幸いです。

12:06 fenrir が投稿 : 固定リンク | | このエントリーを含むはてなブックマーク | コメント (5) | トラックバック
このエントリーのトラックバックURL: https://fenrir.naruoka.org/mt/mt-tb.cgi/655

August 21, 2008

気になる新製品とか

[Timely]

電子工作熱はとどまることを知らない訳ですが、秋月電子から発売された新製品が気になっています。

stargazer.jpgstargazer_2.jpg
画像は秋月電子より

StarGazerという製品で、天井に貼り付けられたマーカーとなる画像をカメラで取得、それを画像認識することによって、自身の位置が認識できるそうです。大きさは50 x 50 x 28mm、重さは書いてありませんがある程度の軽さだと思います。ということは、昔やっていた室内飛行機の航法装置として使えるということです。ホビー用途としてはお値段が高いのが気になりますが、室内で手軽に使える航法装置はなかなかない(高感度GPSは高感度といっても場所を選びますし、2.4G帯を使った認識システムは入手性があまりよくないですし)ので、製品としてかゆいところに手が届いているような気がします。

拡大写真をみるとわかるのですが、この製品にはTIのDSP TMS320DM640が搭載されていました。なるほど、これならデータの更新頻度が20Hzというのも納得できます。最近カメラモジュールを使って遊んでいることもあり、画像データがマイコンにとって非常に重たいのでDSPで解決、というのはよくわかります。

そういえばsparkfunにも気になる製品がありました。コイン型のLiPo電池です。200mAhと容量はないのですが、よく電池切れを忘れしまうGPS受信機のバックアップバッテリとして、充電回路を組み込んだ上で使ってみたいです。

話はかわりますが、最近感動したこととして、『初音ミク』の開発者『もちP』さんのお話を聞くことができました。僕自身ニコニコ動画等で『初音ミク』には馴染みがあるので、とてもみっくみっくにされてきました。初音ミクが英語の歌が苦手、というのもお話の中で納得することができました。デモもして戴きソフトがとても使いやすいという印象も受けましたので、機会があれば買って遊んでみたいと思います。残念ながら『弱音ハク』がまた1人増える予兆がしなくもないのですが(笑)。

回線速度が細かったため、残念なことにお話の中で再生されなかった動画。ミクは普通の会話が苦手だそうですが、それを補っている辺り明らかにプロの犯行です。そうそうお話の中にあった、朝の玄関での挨拶『行ってきまーす』が、会話ではなく"歌"だ、というのは新鮮な見方でした。

23:59 fenrir が投稿 : 固定リンク | | このエントリーを含むはてなブックマーク | コメント (0) | トラックバック
このエントリーのトラックバックURL: https://fenrir.naruoka.org/mt/mt-tb.cgi/656

August 27, 2008

秋月GPSモジュールの生データはPECL出力

少し前に書いた『秋月GPSモジュールから生データ抽出』では、秋月のGPSモジュールに搭載されたベースバンドチップSiRF GPS2e/LP-7456には、どうやら差動で微小な信号がきているらしい、ということを書きました。この度ようやく、その差動信号を通常のマイコンで扱えるレベルに変換することができたので、お知らせしようと思います。

差動信号には規格がいくつかあったので、規格仕様を対照しつつ、差動からシングルエンドにレベル変換してくれるICをいくつか試してみることにしました。その結果PECLという規格がどうやら正解のようで、現在はPECLを3.3Vレベルに変換してくれるTI TB3R1というチップを使い、後段のDual 4bits shift registerの74HCT4015に信号を渡すことに成功しました。

現在のGPSモジュールの様子と、基板のEagleでの回路図レイアウト図を公開しようと思います。ファイルは先述のTB3R1も載るようにした新しいリビジョンです。

gps_packet_sniffer_RevB.jpg
美しき(嘘)配線をご覧あれ!!

流石に隣接した0.5mmピッチ足にUEW 4本は辛かった(線材をもっと細いものを使うべきなのか、単に修行が足りないだけなのか、笑)ので、配線はスルホールとチップ部品から引っ張りました。赤丸を記した部分が線材と接続している部分です。上からSIGN、MAG、PECL用のリファレンス電圧、CLKだと思います。

PCにデータを吸い上げるために後に残すは、Cypress FX2LP用のファームを書くことのみとなりました。FX2LPで高速なインターフェイスを記述するためのツールであるGPIF Designerは今回がはじめてなので、うまくいくか少々不安です。コンパイラは以前のノウハウのあるsdccを使おうと思います。

※さらに、ざっとクロックを見てみました。

GPS_sniffer_clk.png
オシロのスクリーンキャプチャ

約38MHzとは随分早いですね。FX2LPのクロック入力がmax:48MHzなのでなんとか大丈夫です。クロック周波数は信号処理をする際に非常に重要なファクタなので、再度測りなおすつもりではいますが、XOの周波数(24.5535MHz、型番:KDA3016B ?)の綺麗な倍数でないところをみると計測結果に自信をもてなくなります(笑)。

※※さらに調べてみた結果、HOT CHIPS 11 Archives (1999)にあるSiRFstarII ARCHITECTURE(PDF)が検索に引っかかりました。これによるとサンプリングクロックは38.192MHzということで計測結果にほぼ間違いはないようです。24.5535MHzを14/9逓倍すると結構近い値(38.194MHz)になりました。そういうことでIF(中間周波)は1575.42MHz mod 38.192MHz = 9.548 MHzだそうです。以前『Open source GPS C/A信号の抽出』で示した方法でC/A信号を抽出するためには、この9.548 MHzを中心に信号を眺めればよい、というわけです。これまで細々と進めてきたことに加えて、生データ取得用のFX2LP用ファームの作成、信号トラッキングをコード化が終われば、晴れてオリジナル受信機の完成です。

ところでGPSのフロントエンドから信号処理、そして測位計算まで全て眺めていくと、アナログ回路の中でも最も難しいと思われるRFの知識(電気・電子)、自己相関やFFT(応用数学)、座標変換(幾何学)など様々なことを学べます。こんな面白い題材があるのに、ハンディ受信機を買ってきて地図にプロットするだけ、というのは工学的視点でいうとなんとももったいないと思いませんか(笑)。これら全て解説した和書があまりない、特に取っ掛かりとなる本がないというのが問題なのかもしれません。

23:59 fenrir が投稿 : 固定リンク | | このエントリーを含むはてなブックマーク | コメント (3) | トラックバック
このエントリーのトラックバックURL: https://fenrir.naruoka.org/mt/mt-tb.cgi/658