Wolfram SystemModelerコンポーネントとしてArduinoを使用する

Leonardo Laguna RuizとJohan Rhodinによる投稿の翻訳「 SystemModelerコンポーネントとしてArduinosを使用する 」。

こちらの投稿説明したモデルを含むファイルをダウンロードしてください

翻訳に協力してくれたキリル・グゼンコに深く感謝します。
Wolfram SystemModeler用の新しい無料のModelPlugライブラリを使用すると、 SystemModelerでモデリングするためにArduinoを接続できます。 Arduinoは入力および出力コンポーネントと簡単に合致するため、電球、センサー、スイッチ、起動サーボなどを制御するためにSystemModelerモデルに安全に含めることができます。 ModelPlugライブラリを使用すると、モデリングでソフトウェアコンポーネントとハードウェアコンポーネントを自由に組み合わせて、Arduinoをデータ収集ボードとして使用できます。



Set of icons



SystemModeler Library Storeからライブラリをダウンロードした後、インストールする必要があります。 必要なのは、パッケージをダブルクリックして、ライセンス契約に同意することだけです。 このライブラリを使用すると、Firmata互換のボードをSystemModelerに接続できます。 つまり、すべてのArduinoボードです。



この投稿では、Arduino Unoを使用しました。 最も簡単な例は、ボード上のLEDの点滅です。



Arduino board

内蔵のArduino Uno LEDは赤で強調表示されます



これを行うために、LEDに対応する13番目のピンにロジック信号が送信される単純なモデルを作成しました。 LEDの点滅周波数は、信号の周波数に対応しています。



Blinking an LED

ModelPlugコンポーネントを使用するSystemModelerのモデル-デジタルコンタクトとArduino



次に、ブレッドボードにLEDを配置して、Arduinoの9番目のピンに接続します。



Placing LED on breadboard

外部LEDを9番ピンのArduino Unoに接続する回路



正弦波をボードのアナログ出力に接続すると、実際の値からの信号は電圧に変換され、LED接点に印加する必要があります。



Dimming LED

LED入力としての正弦波



LEDが完全な明るさでどのように光るのか、そしてまったく光らないのかを見て、正弦波の明るさを変えることができます。 そして、これはすべて「Arduinoのコーディング」を必要としません。



下の画像は4つの異なるオプションを示しています:最初はシミュレーション入力をシミュレーション出力に接続し、2番目はモデルからの信号をハードウェアに接続し(前の2つの例に示すように)、3番目にハードウェアからの信号をモデルに接続し、4番目に-すべてのコンポーネントはハードウェアです。



Simulated vs. real



以下の表では、4つのオプションを示しています。



Grid

ModelPlugライブラリは、各オプションに非常に役立ちます。



入力と出力がモデルの場合の最初のオプションは、 SystemModelerのインストール直後に適用でき、ほとんどの場合、これで十分です。 それが私がテーブルでそれを選択しなかった理由です。 入力および出力にハードウェアコンポーネントがある場合は、 SystemModelerを介して信号を制御および処理/フィルタリングできます。 私の意見では、最も興味深いオプションは、一部のコンポーネントがシミュレートされ、他のコンポーネントが物理的な実施形態で表される場合です。 コンポーネントがシミュレートされ、データが物理デバイスから取得されるいくつかの例を見てみましょう。



Input devices and simulated model



次に、14番ピンからデータを読み取るようにUnoボードをセットアップしました。 照明を決定する感光性抵抗器を接続しました。



Light-dependent resistor

アナログ入力に接続されたフォト抵抗付きのUnoボード



SystemModelerのモデルではこのアナログ信号を14番目のピンから別のコンポーネントに接続します。



アナログ信号を別のコンポーネントに接続します



このコンポーネントは、感光性抵抗器から値を受け取り、それらをしきい値と比較します。 値が0.02より大きく、シミュレーション時間が5秒を超える場合、シミュレーションは終了します。



terminateSimulation

照明値としきい値の比較、結果は質問に対する答えです-シミュレーションは終了しますか?



感光性抵抗器を手で短く閉じると、光の受光が停止し、値が0.02未満になり、シミュレーションが終了します。



物理デバイスが入力と出力にある場合の例を次に示します。感光性抵抗器からの信号を使用してシミュレーションを完了する代わりに、 SystemModelerのローパスフィルターを使用できます。 次に、サーボが-90°〜90°の範囲で回転できるようにスケーリングする必要があります。 手で感光性抵抗器を閉じると、一方向に回転し、そうでない場合はもう一方の方向に回転します。



Inputs and outputs are hardware

ソフトウェアコンポーネントを介してサーボドライブに供給されるアナログ信号







前の例では、一部のハードウェアシステム間だけでなく、ModelPlugを介した通信を実装できることを示しました。モデルの形式で定義されたコンポーネントを使用できます。 抵抗とコンデンサを接続して低周波をフィルタリングする代わりに、または信号をフィルタリングするプログラムを作成する代わりに、フィルターモデルを使用します。 これにより、プロトタイピングが大幅に高速化されます。



さらに説明的な例を考えてみましょう。 より大きなソフトウェアモデルを使用して、アナログ入力に接続します。 トロリーで転がる倒立振子のモデルを使用します。 このシステムは、エンジン、メカニズム、振り子とトロリーの3次元コンポーネントで構成され、それらはすべてソフトウェアコンポーネントです。 Arduinoに接続されている加速度計からの信号をこのモデルに接続します。 以下のモデルでは、アナログ信号は左に送られます。 最初のハイパスフィルターは信号の定常値をフィルター処理し、ローパスフィルターは信号を平滑化します。



Inverted pendulum system with filters



振り子の上部に、アナログ信号を振り子の上部に加えられる力に変換するパワーコンポーネントを配置します。



Mechanical system with force attached

力が加えられた機械システム



そして最後に、加速度計をアナログピンに接続します。



Accelerometer connected to inverted pendulum

倒立振子に接続された加速度計



さて、加速度計を素早く前後に動かすと干渉が発生し、振り子制御システムは適応を試みる必要があります。 振り子をとても速く動かして裏返すことが可能になるのだろうか?







ModelPlugライブラリは無料で、 SystemModeler Library Storeからダウンロードできます。 Mac、Windows、Linuxで動作します。



SystemModeler試用版を試すことができます。 学生用または家庭用のライセンスを持つオプションもあります。 この記事で紹介するすべての機器は、50ドルの予算に収まります。



All Articles