Archive for the '電子回路' Category

XBeeを最高速で使いたい

Posted by ゆのじ on 11月 2nd, 2009

Digi社のXBee、かなり便利に使える道具だと思うのだが、割とはまっているのが速度。ああいった物に速度を求めるなという話もあるが、実際どれくらい出るのだろうと思って試してみることにした。なお、XBeeといっても802.15.4だけしか使えないOEM RF Moduleで、ZigbeeやDigimeshを使えるモデルではない。また、転送レートを調べることが目的なので、Transparent modeで使っての試験とした。

試験は自宅というごくありふれた環境で、送信元と送信先のXBee距離は40cm程度、WiFiの電波もそれ以外の妨害電波もばしばし飛んでいる状況である。その中でXBeeのボーレートを250kbpsにして、適当なソースをつないでフロー制御なしで走らせてみることにした。設定は8bit/Odd/1Stopとしたので、1バイトあたり9bit分のデータを飛ばすことになる。

その結果だが、数回繰り返したところ、おおよそ12~13kbytes/sec程度の転送レートが出ることがわかった。流れたビット数で108~117kbps、つまり出ても定格の半分程度ということになるだろうか。このテストでは、最大速度を知ることが目的だったのでフロー制御をしていない。そのため、パリティをつけている分欠損データは拾わない(カウントしていない)ものの、データの欠落は山ほど出る。実際に使うには送信側できちんとフロー制御しなければいけないだろう。また、XBeeは無線の制御にCSMA-CA方式をつかっているため、リアルタイム性も保証されない。ビットレートを落とせばある程度の安定したタイムラグを得ることは出来るだろうが、正確なリアルタイム制御をしたければNTP的にラウンドトリップタイムを得たりしなければならいような感じである。

ちなみに、マニュアルによれば、フロー制御をしたくない場合、DI Buffer size(202bytes)より1メッセージを小さくしたりボーレートを下げることを要点としてあげている。

簡単なテストではあったが、割と勘所はつかめた気がしてきた。ひとまず、CTSを握って制御してやることがまず第一のようだ。

引き続き開発。

追記:その後、CTSをきちんと処理するようにした結果、目視する限りビット落ち無しで、8k~9kbytes/sec程度のスループットが出ることもわかった。鉄筋コンクリートの壁を数枚隔てたくらいではほぼスループットは落ちない感じ。ビット落ちがきわめて少ないのは大変有り難い。

AVRが予想せずリセットされる時

Posted by ゆのじ on 11月 2nd, 2009

WinAVRの環境(avr-gccなら同じだと思うが)で複雑な割り込みがかかるようなプログラムを書いているとき、原因不明のリセットがかかる場合、可能性として考えられるのは1)ウォッチドッグ、2)電圧低下のBORリセット、3)割り込みベクタが変、が考えられる。このうち1と2は割とデバグしやすいのだが3がどう対応すればいいのかと思って調べてみたところ、こう書けばいいということがわかった。

ISR(BADISR_vect) 
{ 
    cli();    // これ以上割り込ませない
    // このあたりでデバグメッセージ	
    for(;;);  // ここで止めておく
} 

とりあえずこの中でデバッグメッセージを書いて止めてしまえば、何か起きていることまではわかる。その先はさらにデバグデバグ。

 

なんでこういうことになったかというと、送信可能状態になったときに飛んでくる割り込み(USART1_UDRE_vect)を書かないといけないところに、ぼんやりしていて送信完了時に飛んでくる割り込み(USART1_TX_vect)を書いてしまっていたからだった。そりゃBADISRにもなる。

同じはまり方をしないためにメモ。

追記:何も考えずにTXCIEnを有効にする場合、USARTn_UDRE_vectだけだとBADISRになる。USARTn_TX_vectも書いておくこと。

追追記:嘘書いた。TXCIEnはUSARTn_TX_vect、UDRIEnがUSARTn_UDRE_vectに対応ということのよう。もう少し調べてまとめたい。

ベーク板を買ってきた

Posted by ゆのじ on 10月 8th, 2009

  ユニバーサル基板上に100milピッチ以外の部品を実装するのに、elm氏のポリイミドテープ固定というアイデアも捨てがたいのだが、他の方法はないだろうかと考えてベーク板を買ってきた。秋葉原のマルカ電機で0.5mm厚、200mm x300mmで1枚250円なり。

早速切るべしと思ったのだが、いちいちカッターを出すのが面倒だったので金切り鋏を持ってきておもむろに切ってみた。結果は下記、金切り鋏の上の刃があたる側がばりばりになってしまって、いまいちおいしくない感じに。。

試し切り

やはり、対象のパッケージごとに適当な幅を決めておいて、カッターで切り出すのが正解のようだ。

そういえば、ポリイミドテープも秋葉原で買おうと思っていたのだが、某店で20mm幅の10mで3300円もしていた。monotaroブランドであれば1600円、某店と同じ寺岡製作所のカプトンテープでもmonotaroなら2733円。こういうのを見ると、秋葉原というか実店舗の固定費がかかる経営は厳しいよなーと思う。特にスペックだけで色々決めることが出来てしまう物を売る業種でコンサルティングをしない場合、厳しい。
せめて顧客の要望を聞いて適切なアドバイスをしてくれるだけでも全然違うと思うんだが、いかんせん秋葉原はそういう街ではないのだよな。そりゃーオタク系の店が席巻するのも無理はないよなぁ。

IMG_0878 話を戻す。秋葉原では他にタカチのMX2-6-8ケースを2つ買ってきた。これが、秋月のCサイズ基板の短辺がきれいに入る(長辺は7ミリ出る)ケースだということに気づいて買ってきたのだが、予想通りきれいに収まった。ケースの上半分下半分両方に基板を差し込む溝が切ってあって、溝間は実測でおよそ8ミリ。
ここで、秋月のロープロファイルピンヘッダの寸法を見てみると、メス側が5.7mmとある。オス側の樹脂部分が何ミリかちょっとわからないのだが、画像から寸法を読み出すと2.5ミリ程度ではないかと思う。ということは、うまくこのシリーズを使うと2枚のCサイズ基板を組み込むことができるのではないかと思う。この点については追ってロープロファイルピンヘッダを入手次第追試してみたいと思うが、うまくいけばDIPパッケージを主に相当な高密度実装が出来てしまうのではないかと期待している。

こうなってくると基板を切断する道具が欲しくなってくる。

道具欲はとどまるところを知らない。

 

追記:
IMG_0881 うちの在庫部品を調べてみたら、2×14のロープロファイルヘッダがあったので、Cサイズ基板の真ん中においてケースに突っ込んでみた。
結果はこんな感じで、基板にテンションがかかってしまっている。反るほどのテンションでは実際に使うには厳しい感じで、残念だが目論見は外れてしまったと言わざるを得ない結果となった。あきらめてケースのデータシートを今更見てみると、基板間は7.8ミリほどある模様。勘合高さがそれ以下のコネクタを探す必要がある。
だが、秋月のロープロファイルヘッダは勘合高さは実測で8.5mm。欲しいのは余裕を見て7.5mm前後のものなのだが、ちょっと探した限り、そんな感じのロープロファイルヘッダはどうも簡単には見あたらなかった(*)。なかなかうまくはいかないようだ。ちょっと寝かせて考えることにしよう。

(*)JST,JAE,HRSと調べてみたが無かった。Digikeyとmouserはまだ見ていませんが、ご存じの方は教えていただければ大変ありがたいです。。