|
About this page
カテゴリー Embedded Systemに属する記事の一覧ページです。
現在このカテゴリーには136本の記事があります。 カテゴリー Embedded Systemの説明: 趣味の電子工作のお話。 Latest 5 Entries
秋月GPSモジュールの生データはPECL出力少し前に書いた『秋月GPSモジュールから生データ抽出』では、秋月のGPSモジュールに搭載されたベースバンドチップSiRF GPS2e/LP-7456には、どうやら差動で微小な信号がきているらしい、ということを書きました。この度ようやく、その差動信号を通常のマイコンで扱えるレベルに変換することができたので、お知らせしようと思います。 差動信号には規格がいくつかあったので、規格仕様を対照しつつ、差動からシングルエンドにレベル変換してくれるICをいくつか試してみることにしました。その結果PECLという規格がどうやら正解のようで、現在はPECLを3.3Vレベルに変換してくれるTI TB3R1というチップを使い、後段のDual 4bits shift registerの74HCT4015に信号を渡すことに成功しました。 現在のGPSモジュールの様子と、基板のEagleでの回路図、レイアウト図を公開しようと思います。ファイルは先述のTB3R1も載るようにした新しいリビジョンです。 流石に隣接した0.5mmピッチ足にUEW 4本は辛かった(線材をもっと細いものを使うべきなのか、単に修行が足りないだけなのか、笑)ので、配線はスルホールとチップ部品から引っ張りました。赤丸を記した部分が線材と接続している部分です。上からSIGN、MAG、PECL用のリファレンス電圧、CLKだと思います。 PCにデータを吸い上げるために後に残すは、Cypress FX2LP用のファームを書くことのみとなりました。FX2LPで高速なインターフェイスを記述するためのツールであるGPIF Designerは今回がはじめてなので、うまくいくか少々不安です。コンパイラは以前のノウハウのあるsdccを使おうと思います。 ※さらに、ざっとクロックを見てみました。 約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(応用数学)、座標変換(幾何学)など様々なことを学べます。こんな面白い題材があるのに、ハンディ受信機を買ってきて地図にプロットするだけ、というのは工学的視点でいうとなんとももったいないと思いませんか(笑)。これら全て解説した和書があまりない、特に取っ掛かりとなる本がないというのが問題なのかもしれません。 XBee ワイヤレス電力計 設計資料hamayanさんがXBeeを使った家電等の総合管理システムを作られているようです。メインで使っているマイコンはFreescaleのcoldfireで僕自身は一度も触ったことがないのですが、製作記事が時系列に沿ってどんどん公開されているのでとても楽しいです。 そういえば以前こちらのブログでもXBeeを利用したワイヤレス電力計を製作したことを紹介しました。これは某プロジェクトの為に作ったコンセントにさせる電力計で、XBeeを通じて外部とデータの送受信を行うことができるものなのです。今回の記事では、プロジェクトも無事終了したこともあり、設計資料の公開に踏み切りたい思います。
まずはEagleの回路図とレイアウト図です。基板の外注は中国のpcbcartに頼みました。経験的にわかっていることなのですが、pcbcartを使う際は(一応対応を謳っている)Eagleのファイルを直接送るよりも、ガーバに変換してから送ったほうが確実です。基板の外形上が長方形ではなく変わった形をしているのは、この電力計のケースとして使ったエコワット(改造対策として現在は接着剤で分解しにくくなっています)にすっぽり収まるようにした結果です。 電力計のチップとしてAnalog Devices ADE7753を利用しました。内蔵のCTと組合わせることで正確に電流、電圧を時間積分し、電力を計算してくれる専用ICです。XBeeでやり取りするデータは、基本的にADE7753のレジスタで、これらを直接読み書きできるようにしてあります。 搭載しているマイコンはSilicon Laboratories C8051F410です。ファームウェアはsdccで開発しました。 マイコン等の電源はAC100Vより生成しています。これにはRohm BP5034D5を使いました。手軽にAC100VからDC5Vが生成できます。が、AC100Vは非常に危険なので、しばらくトラウマになっています(一度配線ミスによりパターンが蒸発しましたよ、コンデンサ爆発ならまだしも…)。 PC側は、以前の記事にあるXbeeのUSBモジュールを使ってデータをやり取りしています。表示にはLabviewを使いました。動作しているイメージは下の動画を見ていただくのがよいと思います。 最後に、同じようなことをされている方がいましたら、その参考になれば幸いです。 サーボ信号をアナログ電圧に変換ラジコン用サーボの信号はパルスの幅によってその強弱が表現されるので、それを直接計測するためにはタイマの機能の一つであるインプットキャプチャを使う必要があり、チャンネル数が増えると大変やっかいです。実際オートパイロットシステム Super Sylphideでは、FPGAを用いてタイマを多数構成しこの信号を計測しました。 マイコンでこの計測を簡易的に行うにはどうしたらいいでしょうか? マイコンに搭載されている機能を思い浮かべてみると、多くのマイコンではA/D変換機のチャンネル数が8chと、比較的多く搭載されていると思います。そこで、サーボに指令値を与えるパルスの幅に応じたアナログ電圧を生成できれば、マイコンでも簡易的にこの指令値が計測できることになります。 そこでPIC16F88と12bits D/Aコンバータ MCP4921を使って、サーボ用信号をアナログ電圧に置き換える装置を作ってみました。できあがりは写真の通りで、1台で1ch分ですが、非常にコンパクトになりました。
Eagleの回路図とレイアウト図をおいておきます。16F88は表面実装品を使っていますが、秋月のPICライタ等で書き込めるように、関係端子のみDIPと同形状のサブ基板に引き出してあります。
PICのプログラムは無償コンビのsdcc + gputilsで開発しました。sdccのPICのサポートもかなり充実してきているようなので、有償コンパイラがそれなりの値段をすることを考えると有難い限りです。プログラムはpwm2acディレクトリの中にあります。開発環境を整えた上でmakeをしてください。開発環境の構築は『PICマイコン開発環境 (SDCCのインストール)』等が参考になると思います。 最後にPIC16F88を選んだ利用ですが、PIC16F88にはA/D変換機が入っています。ということは、逆の機能も、という魂胆が見え見えということです。 カメラモジュール 実装完了少し前の記事『Super Sylphide 進捗状況(20) -- カメラモジュール基板の企画』で、sparkfunから購入したカメラモジュールの話を書きましたが、この度実装を完了しました。 実際に部品を実装してみると、自己満足でしょうか、フツフツと制作意欲が沸いてきます。最初の難関、電源電圧 2種(+3Vと+1.5V)がきっちり出ていることは確認できたので、次はSDRAMをフレームバッファとすべくAltera MAX2(CPLD)用のVHDLを書こうと思います。 Super Sylphide 進捗状況(20) -- カメラモジュール基板の企画オートパイロットシステム Super Sylphideですが、ブルガリアの格安基板会社Olimexが長期の夏休みに入ってしまう(8月は丸々休み)ということもあり、最近は色々な基板を設計していました。その中で先日sparkfunより入手した最大SXGA対応(1.3M Pixel)のカメラモジュール『TCM8240MD』(東芝製)も実験してみようという気になり、ここ数日はその設計を行っていました。 結果から言ってしまうと、このモジュールはマイコンに直結して気軽に遊べるほど生易しいモノではないことがわかりました。データがかなりのハイレート(4M~20MHz、8bitバス)でモジュールから垂れ流れてくるので、それを頑張って記録しなければならないようです。供給クロックをとめてデータの垂れ流しを一時停止してしまうという荒業もあるようですが、フレームバッファIC(いわゆるFIFO)を用意するというのが、sparkfunのuser forumでは正攻法と見られているようでした。 フレームバッファを探してみましたが、さすがにSXGAのデータ量を処理してくれるものは入手困難なようでした。デュアルポートSRAM等も検討してみたのですが、容量が全然小さいです。仕方がないので、力技でCPLD+SDRAMでフレームバッファをこさえてみることにしました。SRAMではなくSDRAMにしたのは安かったからです。CPLDのHDLはあとから如何様にもできるはずなので、まずは基板を設計し終えることにしました。出来上がったのはこんな感じです。残念ながらOlimexでは製造できない(0.3mmドリルが必要です)のですが、サイズはかなりがんばりました。 機能的にも詰め込みすぎて、動作するかどうかは少々疑わしいフシがあります。特長を箇条書きすると以下のとおりです。
果たして動くのでしょうか。動けば飛行機に搭載できること間違い無しなのですが、小さくしすぎたことがアダとならないことを祈るばかりです。暇を見つけつつ弄っていきたいと思います。 ※実装が完了しました。電源電圧は正常に出ているようです。 Old Entries @ Embedded System
| |