無線コントローラを使って倒立振子へ速度目標値vdを与えるために,XBeeを用いました。XBeeは,多機能で安価な無線モジュール製品群です。 AD変換やI/Oの入力,調歩同期式のシリアルデータ等を入力する機能を併せ持ち,それらのデータを定められたデータ列で無線送受信できます。 また,1 : 1の通信をはじめ,1 : n ,メッシュ状のネットワークをも構築できる機能を持ちます。これらの機能の選択と設定はPC上のソフトウェア(X-CTU)から行い, 必要な設定を行った後に個別の回路へ実装することで,所望の機能を実現できます。
XBeeには様々な製品型番が存在しますが,今回利用したのはSeries 2の通常版(2mW出力)です。価格は一個\1,700程度,通信距離は30[m]程度であり,今回の用途に相応であると考えました。
無線コントローラ(送信側)のXBeeには,AD変換器を利用してAD変換データを送信させました。XBeeの詳しい設定方法やデータ列の詳しい仕様は他の情報源に割愛しますが, 今回設定した通信では図10.3に示す24byteのデータ列が速度9600[bps],75[ms]の間隔で送受信される設定です。75[ms]は今回の用途においてXBeeに設定できる最短のサンプリング時間です。
この回路の目的は,XBeeにジョイスティックからの電圧を入力し,AD変換値を無線送信させることにあります。
XBeeのAD変換器は上限電圧が1.2[V]に制限されています。そのため,ジョイスティックの可変抵抗へ22[kΩ]を直列に挿入しました。AD変換器は10bitの分解能をもつので,1bitあたりの電圧値は
この回路の目的は,無線コントローラからのシリアルデータを受信し,SH/7125へ入力することにあります。
SH/7125は5V系,XBeeは3.3V系です。そこで,両者の間には信号のレベルを合わせる回路を実装しました。挿入されているダイオード(SD103A)は,電源が非定常時に両者の端子を保護する役割を持ちます。
図10.3で示したとおり,無線コントローラからは24byteで一組のシリアルデータを送信します。これらの受信処理には,SCI(Serilal Communication Interface)の割り込み機能を用いました。 シリアルデータを1byte受信するごとに割り込み処理が起動するので,左右一組のAD変換値を受信するのに24回のSCI処理が起動する仕様です。 データ列の最後尾である24byte目にはCheckSumが付加されています(図10.3)。受信データ列に誤りがあるか確認するため,24回目のSCI処理ではこのCheckSumと受信データ列から計算した値を比較する処理を設けています。 計算に誤りが無ければ,20byte目から23byte目で送信されるAD変換値を採用します。
また,SCI処理よりも長い周期TWDTでWDT(Watch Dog Timer)による割り込み処理を実行させています。このWDT処理では,SCI処理が起動しているかどうかを常に監視しています(図10.8?)。 これを実行する理由は,無線コントローラからのデータ受信が無い場合,速度目標値vd を常時ゼロに更新する必要があるからです。WDT処理が無い場合,倒立振子が暴走する危険があります。
当初は,連続的に得られるAD変換値を用いてvdを連続的に変化させ,倒立振子の速度を無線コントローラによって可変できる仕組み考えていました。無線コントローラにスイッチではなくジョイスティックを利用したのはそのためですが, 結果としてスイッチのように利用することになりました。その理由は,製作した倒立振子がvd を中心に振動して操縦者が思うように操縦できず,速度を可変できるような段階に至らなかったからです。(図10.10)。
■振動を抑えるには?