« 2012年5月 | トップページ | 2012年7月 »

2012.06.27

XBee-WifiとPOL電源の対決

XBee Wifiという暴れん坊がいます。

この無線LANモジュールは、リセット後に大電流を消費して、周囲の回路の電源電圧を降下させるというからたまったものではありません。

過去に実験した結果は次のとおりです。

  1. XBee Wifiの電源
  2. XBee Wifiの電源実験の続き

そこで、この大電流を退治するために、BellnixのPOL電源「BSV-3.3S3R0M」をつないでみました。

Xb3_1

BSV-3.3S3R0MはFPGAやDSPなど、瞬間的な大電流を要求するIC向けに作られた電源モジュールです。もし、これでだめなら、XBee Wifiはどうかしているといえるでしょう。

しかし、その結果は惨敗。

リセット後、約12ms後に大きな電源電圧の落ち込みが見られました。

Xb3_2Xb3_3

3.3Vから約2.5Vまで落ちています。

東信工業の低ESRコンデンサ(470uF)と積層セラミック(22uF)を入れると、最低電圧は約2.9Vになります。

Xb3_4Xb3_5

ここでさらに、オリーブオイルじゃなくて、タンタルコンデンサを投入します。

Xb3_6

XBeeを駆動するための電源は、POL+470uF+22uF+タンタル(33uF)になりました。

しかし、あまり結果は変わらず、電源電圧は2.9Vまで下がっています。

Xb3_7Xb3_8

結局のところ、POL電源を使っても、低ESRコンデンサを使っても、XBee Wifiによる電源電圧降下を抑えることはできませんでした。

電源コンデンサ電圧降下備考
LDO なし 2.5V
LDO 普通の470uF 1.6V
LDO 470uF 1.2V 東伸工業 低ESR
LDO 680uF 1.6V ルビコン 超低ESR
LDO 680uF+0.1uF 0.7V ルビコン 超低ESR + 積セラ0.1uF
安定化電源 なし 1.6V
安定化電源 470uF+680uF+10uF 0.6V 電圧降下は抑えられるがコンデンサが多すぎる
SW電源 470uF+22uF 0.6V RaXino基板+東伸低ESR+積セラ
POL電源 なし 0.7V
POL電源 470uF + 22uF 0.4V 東伸 低ESR+積セラ
POL電源 470uF + 22uF + 33uF 0.4V 東伸 低ESR+積セラ+タンタル

現時点での結果をまとめておきます

  • XBee Wifiの定常状態での消費電流は約120mA
  • XBee Wifiはリセット解除後、約12ms後に大電流が流れる
  • その結果、周囲の回路の電圧降下を引き起こし誤動作させるが、この電圧降下は、通常の電解コンデンサでは抑えられない
  • どのような電源を使うかによっても、実験結果はかなり変わる

結論としては、「XBee Wifiを使う場合は、低ESRで500uF程度のコンデンサと、22uF程度の積層セラミックコンデンサを並列に入れれば、電圧降下は約0.7V程度に抑えらる」ようです。

しかし、それでも0.7Vもの電圧降下が生じてしまうので、マイコンの動作に影響を与えかねません。そこで、XBeeとマイコンを使う場合は以下のようにするのがベストではないかと思われます。

  • XBee Wifiの電源には、低ESRコンデンサと大容量積セラを入れておく
  • マイコンからXBee Wifiをリセットする
    (ここでXBee Wifiが大電流を消費して、システムの電圧は降下する)
  • マイコンは、約15ms後に自分自身をリセットする
  • マイコンはのスタートアップルーチンでは、2回目の起動(ソフトリセット)であることを調べて、今度はXBee Wifiのリセットを行わないようにする。

  • | | コメント (2)

    2012.06.26

    DIPパッケージのRXマイコン

    RXマイコンにはDIPパッケージのものがありません。

    そこで、DIP20ピンのソケットにささるようなものを設計できないかなと思い、衝動的に設計してみました。

    RX62マイコンには、BGA85ピンという7mm×7mmサイズのとても小さなものがあります。DigikeyにはR5F56218BDLDというのが在庫されています。

    このBGA85パッケージは、RX62にはありますが、RX63にはないようです。また、RX62NではなくRX621なので、イーサネットコントローラも入っていませんが、この用途では不要でしょう。

    Rx621_bga85_1

    そして、回路の無駄を徹底的に省き、水晶発振回路と、最小限のプルアップ/プルダウン抵抗とコンデンサだけをのるようにします。RTCも不要なので32kHz水晶はのせません。

    イーサはもともと搭載されていないので、25MHz水晶ものせません。ただし、電源はUSB駆動を考えて5Vを直接入力できるように、3.3Vのレギュレータを乗せます。JTAGはやっぱりあると便利なので、JTAG兼UART兼SPIの端子を出しておきます。RX62マイコンには5Vトレラントの端子が何本かあるので、それらを優先的にDIPの端子から出すようにします。

    BGA85のパッケージだと、ぎりぎりでDIPの300milの幅に収まります。

    Rx621_bga85_2

    上の図はUSB Mini-Bのコネクタも乗せているので、外形からはみ出してエラーになっています。さすがに、USBのコネクタは外付けにならざるを得ないかもしれません。

    アナログの入出力も何CHかできるようにしておきます。

    出来上がりのイメージはこんな感じです。

    Rx621_bga85_3_2

    気になるスペックは、

    ・DIP20ピンサイズ (横10.1mm、縦27.9mm)
    ・RX621(内蔵RAM96kB、内蔵ROM512kB)を搭載。96MHz動作。
    ・5Vトレラントの端子を15~16本ほど出力
    ・USBで書き込み可能
    ・USB仮想COMポート対応
    ・SPI、I2C、PWM、その他もろもろのペリフェラルを利用できる
    ・Arduino互換の開発言語環境「RXduino」とクラウド開発環境を提供

    RXマイコンは、CPUのコアはどれも同じなので、RX62Nでも、RX63Nでも、RX621でも速度は変わりません。で、内蔵メモリも十分たくさんあります。

    RaXinoや、GR-SAKURAとの違いは、外形サイズとIOの数ということになります。

    このアイデアが実現できるかどうかの課題は、貫通部品であるピンヘッダがBGAのパッケージとぶつかる点です。表面実装タイプのピンヘッダがないかどうか探してみることにします。

    本当に作るかどうかは、いまのところわかりませんので、あまりご期待なさらぬようお願いします。

    | | コメント (6)

    2012.06.25

    ZYNQのデバイスが届いた!

    6週間ほど前に正規ルートで注文しておいた、XILINXのZYNQデバイスが今日届きました。

    型番はXC7Z020-1CLG400CES9937。

    届いたときには、1個のデバイスが1個のトレイに置かれて1つの袋に入れられて、1つ1つの段ボールで送られてきました。なんと豪華な梱包でしょう。

    Zynq1

    ちなみに、めっちゃ高いですよ。このデバイス2個で、ZEDボードが3枚買えるくらいの値段です。

    ラベルをES品であることがわかります。

    Zynq2

    デバイスの表面には凛々しい字でZYNQと書かれています。

    Zynq3

    さて、何を作りましょう。その前に、ハードウェアマニュアルというかユーザガイドってあるんだろうか。

    ZYNQDUINOでも作ろうかなと思ったけど、ホントにDUINOにしちゃっていいのだろうか。

    そもそも、このXC7Z020って何ができるんだろう。

    ・Dual ARM® Cortex™-A9 MPCore™ with CoreSight™が800MHzで動く
    ・FPGAのロジック部分は、Artix-7で130万ゲート相当(?)
    ・ブロックRAMは560kBの容量がある
    ・PCI Expressは内蔵されていない

    史上最強のDUINOができそうだ。。うっしっし

    | | コメント (0)

    2012.06.21

    究極のRX62NボードにUSBマウスをつなぐ

    特電・究極のRX62Nボードに、USBマウスをつなぐことができるようになりました。

    Rx62n_mouse_photo

    マウスに限らず、今回のライブラリの更新で、
    ロースピードのUSBデバイスに対応し、
    また、インタラプト転送を実装しました。

    そのほか、コントロール転送のルーチンを再度じっくり見直して、
    問題のありそうな箇所をいろいろ直しました。

    いままでのRX用USBライブラリのコントロール転送のルーチンでは、フルスピード・デバイスなのにディスクリプタを8バイト単位で返してくるデバイスや、8の整数倍のサイズのディスクリプタを返すデバイス、ロースピードデバイスで異常な動作をすることがありました。

    そのあたりを徹底的に直したつもりです。RXマイコンに本家Arduino UNOをつないでディスクリプタを取得するということもできました。

    より多くのUSBターゲットデバイスをつなぐことができるようになったのではないかと思います。

    Rx62n_mouse

    USBマウスをつないで座標を読みとっている画面

    | | コメント (0)

    2012.06.19

    RaXinoにDHCPを搭載してみた

    Arduino互換のRXマイコン評価ボード RaXino♪ですが、
    ようやく本気でTCP/IPの機能を作りはじめました。

    会社と自宅でネットワークアドレスが違うので、毎回ソースコードを書き換えてコンパイルするのも面倒だったので、DHCPを実装しました。

    Raxinodhcp

    DHCPはUDPを使って送られます。
    UDPは、チェックサムの計算がかなり面倒でした。

    疑似ヘッダというのを作って、疑似ヘッダの中にはUDPの本当のヘッダも含めたパケット全体の長さをいれておかなければならないこと、それから疑似ヘッダはUDPヘッダも含めてチェックサムを計算しなければならないことなど、ハマりまくりでした。

    ようやくDHCPが送れるようになって、そのDHCPのオプションフィールドにいろいろなコマンドを書いておくことを知りました。DHCPの250バイトくらいある膨大な領域は基本的にほとんど使われていなくて、ほとんどの重要な情報はオプション部分でやりとりしていたのです。

    また、DHCP REQUESTのときに、どのような情報がほしいか(DNS、GATEWAYアドレス、サブネットなど)を送っておかないと、DHCP ACKのときに送られてきません。

    このようなことをクリアして、ようやく、RaXino♪にIPアドレスを自動設定できるようになりました。

    Raxinodhcp2

    DHCPが動いたら、こんどはARPが動かなくなりました。まだまだプログラムが汚すぎるので、いろんな問題が起きています。

    なにはともあれUDPのチェックサムの計算方法がわかったので、そろそろ全体的に作り直すことにします。

    UDPとICMPとARPが完璧に動けば、ping、nslookup、NTP、TFTPくらいはできそうですから、RaXino♪からネットワークを叩いて面白いことができそうです。

    | | コメント (0)

    2012.06.18

    掲示板を設立しました!

    特殊電子回路のお客様向けに、ユーザサポート掲示板を設立しました。

    皆様からのご質問・ご要望をオープンな場で議論したいと思い掲示板の設置に至りました。

    Bbs_2

    「いまさら掲示板!?」って思われるかもしれませんが、さすが現代風の掲示板なだけあって、とても高機能です。あまりにも高機能すぎて、デフォルトではごちゃごちゃしていたので、むしろ、シンプルに削っていくのに苦労したくらいです。

    この掲示板は、メッセージにファイルの添付が可能だったり、ブログを書くように絵やリンクを貼り付けたれたり、至れり尽くせりです。
    その上、(まだ有効にしていませんが、)ユーザ登録できたり、個人ページがもてたり、プライベートメッセージが送れたり、メッセージが読まれたかの追跡ができたり、・・これまでメールでやりとりさせていただいていた以上のことが、掲示板でできるようになったのです。

    それに、SNSのようにわざわざログインする必要もなくいので、ログインやユーザ登録不要で気軽に書き込みできるのも便利です。

    掲示板にはフォーラムというのが設定できて、「RXマイコン」「JTAG」「FPGA」「その他」「購入方法」カテゴリごとに分類されていて、なおかつ細かすぎないこと、など使いやすさを重視しました。
    もちろん、かなりレスポンスが速く、ストレスを感じさせません。

    いままでメールなどで個別にやりとりさせていただいた件も、できるだけ掲示板に移行できたらなと思います。

    特殊電子回路サポート掲示板は、こちらにあります。

    http://support.tokudenkairo.co.jp/

    どうぞ、どしどし書き込んでください。

    皆様からの熱いご意見やご質問、ご要望をお待ちしております。

    | | コメント (0)

    2012.06.14

    FX3ボードRev2の動作確認開始

    他のことで手いっぱいになっていてなかなか手が回らなかった、
    EZ-USB FX3ボードですが、ようやく今日から電源を投入して動作確認を行うことができました。

    ところが、電源を入れても、LEDが点かないし、認識もされない・・
    どうやらスイッチングレギュレータの電圧設定抵抗の値が間違っていて、
    電源電圧が1.5Vくらいしか出ていないのが原因でした。
    正しい値の抵抗に取り換えたら動くようになりました。焦った。

    Fx3_rev2

    ファームウェアをロードすると、ちゃんとUSB3.0のディスクリプタが出るようになったので、SuperSpeedでの動作も大丈夫でしょう。

    金曜日にはI2C、SPI、UART、GPIOの動作を確認しようと思います。

    | | コメント (0)

    2012.06.08

    XBee Wifiの電源実験の続き

    前回の結果が正しいものかどうかを確認するため、再び、XBee Wifiの電源実験を行いました。

    菊水の安定化電源に、60cmくらいのリード線で接続し、XBEE WIFIに3.3Vを供給します。

    まず、コンデンサなしの状態で試しました。
    リセット解除して約12ms後に電源電圧が低下して、リセットを周期的に何度も繰り返しています。
    Multireset

    電源電圧の低下部分を拡大してみると、約1.6V降下しています。タイミングは±10μ秒くらいの揺れがあるようです。
    Bure

    次に、基板の裏、コネクタのピンヘッダの近くに低ESR 470uFと低ESR 680uFと10uF(積セラ)を入れます。
    ESRの小さいコンデンサに囲まれれば、だいたいどんな物も落ち着くはずですが、
    Xbeewific3

    電圧降下△V=0.6Vくらいが限界です。
    Kaizen1

    次に疑ったのは、菊水の安定化電源です。電源から60cmものリード線があるのが長くていけないんじゃないかと。そこで、リード線を短くするために、Arduino互換のRXマイコンボードRaXino♪の電源端子から電源をもらうようにしました。

    Kaizen2Kaizen3

    より実際の運用方法に近い形で実験ができるかと思います。
    RaXinoはスイッチング電源を使っており、1A以上の電流が取り出せます。

    そして、RaXinoのボード上の電源電圧を測ってみました。
    すると結果は・・・

    Kaizen4

    全然だめでした。リセット時の電流によってRaXino上の電源電圧が降下してしまいます。
    幸いにも最低電圧は2.7V程度は確保できていたので、マイコンは動いていましたが、健全な状態ではありません。470μFのコンデンサを抱き合わせなければ、マイコンが誤動作します。

    結論をいうと、たとえ強力なスイッチング電源を積んだボードでも、XBEE Wifiはメインのボード上から電流をいっぱい吸い取って誤動作させてしまうということです。

    普通のスイッチング電源ではダメでした。
    こういうやつは別電源に隔離したいものです。

    | | コメント (5)

    2012.06.06

    RXduinoライブラリ 0.82のリリース

    RXduinoライブラリの最新版 v0.82をリリースします。

    主な更新点は次のとおりです。
    ●Version 0.82 平成24年6月6日
    【全般】
    ・UTF-8化
    ・ROM化の際の.dataセクションを0x00001000番地に移動 (printfの%xのルーチンと被っていたため)
    ・動作安定化のための様々な調整
    ・ビルド用スクリプト rxbuild の提供

    【ライブラリ】
    ・Arduino互換のServoライブラリの追加
    ・Arduino互換のMMC(または例外的実装であるSD)カードライブラリの追加
    ・Arduino互換のSPIライブラリをここに移動
    ・Arduino互換のLiquidcrystalライブラリここに移動
    ・NokiaLCDライブラリを一時的に対象外とする
    ・OLEDライブラリを一時的に対象外とする
    ・Arduino互換のEEPROMライブラリを作りかけ(まだ動かさないこと)

    【RXduino】
    ・analogRead関数がちゃんと動作するようになった (旧版では不具合)
    ・analogWriteFrequency(int Hz) 関数を追加して、PWMの周期を変えられるようにした
     (12Hz~185kHzまで)
    ・pinModeまたはdigitalWriteでPWM出力を停止するようにした
    ・複数のシリアルポートが同時に使用できるようになった
       ※Serial Serial1 Serial2 Serial3 という名前で最初からインスタンスが存在します。
       Serial.begin(38400,SCI_USB0)のようにすると、ポートに割り当てられます
    ・Serial.setDefault()という関数を追加し、これを実行することで、
     printfの出力をSerialに出力することができるようになった
    ・SPIライブラリの分離
    ・Liquidcrystalライブラリの分離

    【特電HAL】
    ・disk用タイマ割り込みルーチンとユーザ用タイマ割り込みルーチンの分離
    ・USBの文字化け対策
    ・toneの音質改善
    ・シリアルポート関係(sci,USB仮想COM)に、peek関数とflush関数を追加
    ・servo関数を追加

    これでだいぶんArduinoに近づいてきました。

    今回更新されたライブラリは、下記のURLからダウンロードできます。
    rxduino-src-082.tgz  ← 究極のRX62Nボードのお客様
    rxduino-lib-082.tgz  ← RaXino♪のお客様

    今回実装された、SDMMCクラスやServoクラスは便利で面白いですよ。

    さて、次回の更新予定は、Stepperクラス、Wireクラス、EEPROMクラスです。
    乱数を発生させるrand関数を、C言語標準ライブラリのものを用いるとオブジェクトサイズが巨大になるので、これも独自実装したほうがよいかなと思えてきました。

    | | コメント (0)

    2012.06.05

    XBee Wifiの電源

    XBee Wifiという暴れん坊がいるそうなので、興味半分で買ってみました。
    Xbeewifi

    どうやらこのモジュールは、リセット後に大電流を食って、周囲の回路の電源電圧を低下させるそうなのです。
    本当かどうか実験してみました。

     ◆

    まず、モジュールにコンデンサをつけずに、リセット後の電源電圧を見てみました。
    上の波形がリセット端子の波形。下の波形がXBee Wifiの電源端子です。
    リセットを解除してから十数ms後に、3.3Vあった電源電圧が1V程度まで降下しているのがわかります。
    XBee Wifiの中で何かのシーケンスが動いて、大電流を消費していることが伺えます。

    Withoutc
    コンデンサなし。リセット後約12msに大電流が流れる
     ◆

    電源電圧が落ちる部分を詳しくみてみましょう。
    次の図も、コンデンサなしのときの波形です。先ほどのとは時間軸が拡大されています。

    Withoutc2_2
    コンデンサなし。電源電圧降下部分の拡大

    実は、電源電圧が先に落ちて、リセットがそれに引っ張られるように落ちています。

     ◆

    次の図の波形は、コンデンサなしで動作させしたときの別の波形です。
    最初のリセットが解除されてから、12~13ms後に電源電圧が降下して、自分で自分にリセットをかけています。それを4回繰り返しています。

    Withoutc3
    コンデンサなし。リセットが4回繰り返して、その後起動

    しかし、徐々に電圧の下がり方が減っていって、4回以降リセットは発生しなくなっています。この考察は後で行うことにします。

     ◆

    さて、この電源電圧の降下に対してコンデンサをつけることで対処してみましょう。
    まずは、秋月で売っていた普通の電解コンデンサ470uF。これをXBeeを実装した基板の裏側に付けます。すると、電圧降下は△V=1.6Vになりました。何もしないときの△V=2Vに比べると改善が見られます。が、電源電圧が1.6Vにまで下がってしまってはいけません。

    Aki
    普通の470uFをつける。

     ◆

    次に東信工業製の低ESR470uFをつけたときの波形です。このコンデンサは千石で売っています。電圧降下△V=1.2Vにまで減りました。

    Toshin
    東信工業製の低ESR 470uFをつける。

     ◆

    同じく千石で購入したルビコン製の超低ESR680uFをつなぎます。
    なぜかこちらのほうが電圧降下は大きいです。電源の下がっている幅が短くなっているのも興味深いですが、考察はしません。

    Rubi
    ルビコン製の低ESR 470uFをつける。

     ◆

    次に、0.1uFの積セラのみをつないだ場合です。電源電圧は0.78Vまで下がってしまっています。何もしないときとほとんど変わりません。0.1uFくらいの容量に蓄えられた電荷程度では、太刀打ちできないのでしょう。

    Cera
    積セラ0.1uFのみをつける。

     ◆

    ということで、単体のコンデンサではどうやってもだめなようです。
    一番よさそうなのは、ルビコンの680uFと0.1uFを組み合わせたときです。
    電圧降下△V=0.7V、2.66Vまでこれました。

    Rubicera
    ルビコン製の低ESR 470uFと積セラ0.1uFをつける。

     ◆

    しかし、どうあがいても、基板の裏側にコンデンサをつけるのはこれが限界のようです。XBeeは1番ピンと10番ピンがVCCとGNDで、コネクタを経由して電源を供給するため、どうしても距離が長くなってしまいます。

    そこで、いけないのを承知でXBeeの表面にコンデンサを空中配線しました。
    結局、これが一番良くなりますが、残念ながらオシロの都合で正確に測れていません。どこまで改善したかは今後の課題としましょう。

    Omote
    XBeeの表面にルビコン製の低ESRと積セラをつける。

     ◆

    さて、どうしてXBee Wifiはこんなに電源電流を食うかを考察してみます。
    通常の選択肢の範囲にあるコンデンサでは、どうしても電源電圧の低下を抑えることができませんでした。

    ヒントになるのが、この波形。

    Withoutc3
    リセットが4回繰り返す波形(再掲)。

    コンデンサなしの場合で、4回リセットを繰り返したのち、正常に動いてしまっている場合の波形です。
    4回で済む場合もあるし、無限に繰り返す場合もあります。このリセットが繰り返す現象はずっと実験をしているとなかなか出なくなりますが、しばらくおいた後で使うとまた出るようになります。

    上の図では、4回の電圧降下が、徐々に軽くなっていっています。

    ここで大胆な仮説を立ててみます。
    ・XBee Wifiはリセット後約13ms後に、内部で貫通電流か何かで大電流を消費する。
    ・きっと内部のどこかが熱くなっているに違いない。
    ・その温度変化は、大きな電流を抑える方向に働く。
    ・そのため、何度かリセットしていると、そのうち動くようになる。

    今度、気が向いたら、コールドスプレーを買ってきて温度変化の検証をしてみることにします。

    まぁ、「何度かやればそのうち起動する」わけですが、XBeeだけ起動しても、周りの回路の電源電圧を低下させるので、マイコンとかが起動できませんね。

    この実験から、XBee Wifiの電源電圧の変化はコンデンサだけでは取りきれないということがわかったので、次の計画では強烈な電源モジュールを使ってみることにしましょう。

    まさにリアルほこ×たてをしましょう。


    どんな急激な電流変化にも対応できる最速の電源
    Bellnix



     VS


    どんな電源電圧でも降下させる最強の無線LANモジュール

    Xbeewifi

    ご期待ください!

    | | コメント (3)

    2012.06.03

    伊勢参りに行ってきました

    6月2日、6月3日の二日間、伊勢参りに行ってきました。

    外宮様にお参りしたあと、おかげ横丁で昼食をとり、
    内宮様をお参りして、鳥羽を経由して三重県の先の
    英虞湾のほうまでいってきました。めっちゃ遠かったです。

    驚いたのは、伊勢市内はもちろん、鳥羽や鳥羽に続く幹線道路、
    そして英虞湾の奥の賢島のほうまで、そこかしこの電柱に、
    「伊勢名物 赤福」の広告が掛けられていたことです。

    伊勢のお土産といったら赤福はとても有名だし、
    黙っていても誰でも買うと思われるのですが、
    それでも三重県の隅々にまで広告を張り巡らせているのです。

    帰りの「快速みえ」から見える車窓でも名古屋に近づいたあたりで
    大きな「伊勢名物 赤福」の看板が見えます。
    買い忘れた人が思いだして名古屋駅で買ってくれるのを狙っているのでしょうか。

    三重に行って帰ってくれば、だれでも赤福の文字を100回は見ると思います。
    広告というのはこうあるべきだなと大変感銘を受けました。

    | | コメント (0)

    « 2012年5月 | トップページ | 2012年7月 »