無線ブログ集
メイン | 簡易ヘッドライン |
MODEL 1200FXローテーターその11 (2022/5/3 16:39:53)
エモトの1200FXをLogger32にて使用できるインターフェースが大体形になってきました。Logger32のローテーター制御時のインターフェース回路からのシリアル送出データ(マップ上で向けたい場所をクリックした後のLogger32へ送るデータ)をロジックアナライザーで確認してみました。停止位置角度1°からマウスで59°をクリックし動き始めてから止まるまでのLogger32への全送出データです。
D0はLogger32から送られてくるシリアルデータです。(ESP32DevKitCのシリアル受信信号)
D1はESP32DevKitCからのシリアル送出データです。
最初のLogger32からの角度リクエストコマンド”C”を受けてESP32側からの現在の角度シリアルデータを返送後にLogger32のマップ上でクリックしたタイミング時のLogger32のプリセットデータの送出があります。
丁度2番めのD0の少し長いデータです。
このLogger32のマップ上でクリックした位置角度情報がESP32へ送出されます。
詳しくは下記のデータになります。(マウスでMAPをクリックした状態の位置角度59°でした)
Logger32からは下記のデータが送出されます。
S[0D]X2[0D]M059[0D]
S :ローテーター回転ストップコマンド
X2 :ローテーターのスピード設定 2は中速
M059 :プリセット角度59°まで回転動作開始
0D
:デリミタ(コマンドやデータの区切りまたは終了箇所を表します。)
つまりLogger32からマップ上をクリックした時に送出されるシリアルデータのコマンドは、ローテーターを一端停止コマンドで止めて、ローテーターの回転速度設定を中速にして、プリセット(マップのクリックした位置角度)角度までローテーターを回転開始せよ!というプリセット角度への回転動作開始命令です。
後はLogger32からのこの" SX2M059
"コマンドを受けてESP32DevKitCは1200FXローテーターをプリセット値まで回転をさせ始めます。後はLogger32からのローテーター位置角度リクエストコマンド送出に対しESP32DevKitCから現状のローテーター位置角度をLogger32へ送出します。同時にプリセット値になったかの確認を行ない、プリセット値と現状位置角度差がプリセット値近傍の±1になるとパルス微動収束動作に切り替え、位置角度差が完全に0になるまでのこの収束動作を続けます。
ESP32DevKitCではシリアル受信したこの一連コマンド ” SX2M059 "
をデリミタ毎に解析しそれぞれをString変数に入れてます。(String変数を使ったのはコマンドから数値を抜き出しが容易なためです。)後は文字処理の抜き出し関数で角度の部分を抜き出し
整数化(059→59)
してESP32DevKitCのプリセット角度変数へ代入すればMコマンドを受けているので、自動でプリセット位置角度まで動き始めます。
なお、スピードコマンドに関してですが、1200FXでもコントローラーにはSPEEDボリュームがありますが、今の時点ではボリューム位置をセンターにしてあります。(1200FXはこのスピードで動くと決めた状態)SPEEDのボリューム設定で右回転最大でHI、また左回転で最小のLOWもありますが、HIの場合、オーバーランも大きくなるのでHI位置へボリュームは設定していません。なので”X2”のSPEED設定用コマンドは読み飛ばしです。元々1200FXはアナログ式のスピード設定でデジタル的には工夫しないと対応出来ないと思っています。(対応を考える場合は勿論、動作方法や仕組みは見ないといけません)
スケッチでは現在の角度を常時取り込んでいますので動き始めた角度とプリセット角度との差が0になるまで回転を続けます。0では止まる様にしていますが、オーバーランもあるので、近辺のプラスマイナス1の位置となった場合の処理を付けて0に収束するまで通常の回転信号オンの”H”ではなく、パルス出力にて微回転させて収束動作を差分が0になるまで出力し続ける収束動作をするようにしています。停止はプラスマイナス1でも止まるように見えていますが実は止まっているのではなくて差分0になるまでの収束動作中ということです。0にならない間は収束用パルス出力は出続けます。完全に差分が0になると収束用パルスは完全に止まります。この収束動作中であることは余り実用上問題はありません。プリセット位置での誤差±1°での停止に見えます。Hi!
Loggee32でのロジックアナライザーでの停止位置角度2°時に59°をマップクリックした場合の
ESP32DevKitCからの現在位置角度情報は、以下の送出がされていました。
停止位置角度 2°
コマンド"SX2M059"後 のコマンド”C”を受けての現在位置角度
2°、3°、6°、10°、15°、21°、26°、31°、36°、43°、48°、55°、60°、60°、60°、60°、60°、60°
最後の60°は差分が+1°時の収束動作中で、途中で止めましたが、もう少し時間が経つと59°になり完全に差分が0°なり収束動作が停止します。見た目は59°のプリセット設定値に対して+1°なので収束動作中ですが止まった状態に見えます。
Logger32からのマッププリセット時のプリセットコマンドとこのコマンドに対してのESP32DevKitCからのプリセットでの停止状態となるまでの位置角度情報の実際値でした。
スマフォのを使った場合も位置角度プリセット動作は全く同じです。コマンドもアプリ設定のアスキーデータ" M090 "という具合にLoggerから送られる " SX2M090
" コマンドの位置角度部分は全く同じです。
またスマフォの場合は、0の完全停止またはプラスマイナス1の収束動作時だけCW、CCWの方向回転が出来ない(プリセット動作コマンドと角度位置が差分が0、または±1)のをリセットするボタンを付けてあります。このリセットボタンは、本当の意味でのリセットではなく現状の角度とプリセット値を変えてやる事で差分が0または±1でなくなる事で回転が出来るようにしているだけです。このリセットを行なっただけでは回転はしません。回転開始はスマフォアプリ設定ボタンのコマンドの”
M
”を送出して始めてプリセット位置角度までの回転がスタートします。なおリセットに関しては0°から180°の停止状態の場合は、360°にプリセット、180°より大きく360°時の停止状態の場合は0°にプリセットです。この任意の停止時には+15°、またはー15°ずつのステップボタンでプリセット値を変更出来ます。更に細かな+1°、−1°のステップボタンもあるので、基本は1°から360°まですべての角度のプリセットが出来ます。
つづく?
execution time : 0.020 sec