*

C言語でEV3開発(27)-EV3にヒステリシス処理を実装してみた

公開日: : 最終更新日:2018/03/19 C言語, マインドストーム/EV3, 開発

どもです。
今回は、モーターから読み出した値に対するヒステリシス・フィルター処理です。

0.ヒステリシスとは
そもそも論です。
ヒステリシスとは、「加える力を最初の状態のときと同じに戻しても、状態が完全には戻らないこと」を示します。
えー…コレだけではさっぱり分かりません。
しかし、詳細な理論や計算方法については、今回のエントリーの目的・意図からずれますので、ココでは記載しません。
書籍やネットの記事を調べてみてください。

しかし、それでは少し無責任なので、少~し噛み砕いた言い方をしてみると…

「値の変化の方向によって、状態が変化する境界値が異なる。
「行き道と帰り道が違う」

といったとこでしょうか。

-2018/03/19 追記
「ヒステリシスの説明」で記載した説明を、図にしてみました。
hysteresis_base
図にも記載されていますが、状態の変化の方向によって、その変化の境界値が異なっています。
これが、ヒステリシスの簡単な説明/図解になります。

1.フィルタの対象
ヒステリシスを用いてフィルターしたいのは、モーターの出力です。
(Ev3の)モーターでは、出力値を一定にしていても、取得できる値は一定ではありません。
即ち、現在値、目標値から次の出力値を算出する際に参照する値が一定になりません。
そのため、モーターの動作を一定にすることができず、結果的に動作が安定しなくなる、という問題が発生します。
これを解消するために、モーター出力に対してヒステリシス処理を実施します。

2.フィルタの実装
実装は、下記の通りです。

3.実装/実行結果
上記の実装を施した上でモーターを動作させた結果を、下記に示します。
・青線 → 現在のモーター出力
・オレンジ線 → フィルター後のモーター出力
hysteresis_left
hysteresis_right
同時に、フィルター処理を実装した後のモーター出力の目標値のグラフも示します。
こちらは、フィルター後の動作値と目標値の2つを示します。
hysteresis_left_output
hysteresis_right_output

4.結果について
モーターから読み出す現在値は、基本的に一定にならず常に振動していることが分かります。
また、モーター目標値についても振動しなくなっていることが分かります。
即ち、今回実装したフィルターにより、モーターの動作を安定させることができている、ということが読み取れます。
よって、今回実装したフィルター処理により、モーター出力が安定してないという問題を解決できていることが分かります。

関連記事

toppers

C言語でEV3開発(19)-コマンド通信処理でEchoBackしてみた

どもです。 前回は、Bluetoothの接続状態の変化に伴う、状態遷移について書きました。 今回

記事を読む

raspberry-pi

QtでRaspberryPi/GUI開発(9)-SPI通信をしてみた

どもです。 えー。 「Qtで…」とか書いておきながら、今回はQtは出てきません。 今回のエ

記事を読む

no image

C言語でEV3開発(9)-opOUTPUT_SPEEDコマンド

どもです。 今回のエントリーでは、前回に引き続きEV3のモーターを動かしていきます。 ただし、単

記事を読む

MY_MFC_LOGO

MFCプログラミング(1):CFileまたはCStdioFileクラスを使用してファイル出力

どもです。 突然ですが、仕事でMFCを使用することになりました。 MFCはこれまで触ったことがな

記事を読む

Arduino_DHT11

温度(湿度)センサを使ってみた(1)-ArduinoでDHT11

どもです。 今回は、久しぶりにセンサーを購入して使ってみたので、それについて記載します。 1.使

記事を読む

toppers

C言語でEV3開発(26)-EV3で機械学習(1)-QLearningをC#に委譲してみた

どもです。 前回の投稿では、Q-LearningをEV3本体に実装してみたら、メモリが足りなくて動

記事を読む

OpenCvLogo

OpenCvによる画像サイズ変更

どもです。 最近、カメラの動画をOpenCvで加工する、ということに挑戦し始めました。 しか

記事を読む

raspberry-pi

libpigpioでのRaspberryPi3とArduinoのSPI通信

どもです。 今回は、libpigpioを使用してRaspberryPi3とArduinoでSPI通

記事を読む

eclipse_oxygen

Eclipse/CrossCompile環境でプロジェクトをクリーンできない

どもです。 今回は、Eclipseでクロスコンパイル環境を作成した場合、を実行すると「指定されたフ

記事を読む

no image

C言語でEV3開発(8)-opOUTPUT_POWERコマンド

どもです。 今回のエントリーでは、EV3でモーターを動かします。 なお、今回のエントリーでも

記事を読む

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA


次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">

iot_raspberrypi_gateway_001_eye_catch
IoT開発(12)
RaspberryPiをIoTゲートウェイにする(V)
nginxとuWSGIの連携

どもです。このエントリは、以下のエントリの続きです。 IoT開発(6

iot_at_home_eye_catch
IoT開発(11)
ESP-WROOM-02を長時間駆動させた

どもです。この記事は、下記の記事の続き、「測定可能な期間」の結果発表で

iot_raspberrypi_gateway_001_eye_catch
IoT開発(10)
RaspberryPiをIoTゲートウェイにする(IV)
Appサーバーのセットアップ

この記事は、下記の記事の続きです。 IoT開発(6) Raspb

iot_raspberrypi_gateway_001_eye_catch
IoT開発(9)
RaspberryPiをIoTゲートウェイにする(III)
MariaDBのセットアップ

どもです。今回のエントリは、以下のエントリの続きです。 IoT開発(

iot_raspberrypi_gateway_001_eye_catch
IoT開発(8)
RaspberryPiをIoTゲートウェイにする(II)-ex
MariaDBにPHPからアクセス

どもです。 このエントリは、前回のエントリの追加項目です。 前

→もっと見る

PAGE TOP ↑