覚え書きなページ

ATOMS: Arduino detailsのページにあるチュートリアルをやってみよう。
このページにはScilabを使ってArduinoにつながったLEDを点滅させるいわゆるLチカと、きれいなGUIまで作って温度センサの値を読み取り表示するという二つのチュートリアルが掲載されている。残念ながら温度センサは手元にないので、LEDを点滅させるというチュートリアルで動作確認する。

Installation & Setup

先のページのPDF(Scilab_Arduino_Blinking_LED_Tutorial.pdfは少し古いものをそのまま載せているらしく、読めばわかるけどちょっと違う。
  • ここに載っているサイトの内容は正しいけど、少し古いファイルベースになっている。
  • 最新版はATOMS: Arduino detailsのページのtoolbox_arduino_v5.inoなので、これをダウンロード。
  • ArduinoとLEDの実態配線図なのだが、これでもSciab側をちゃんと設定すればいいのだが、なぜかこのままチュートリアルを進むとPin13をオン、オフさせているので、LEDのアノード側(いわゆるプラス側で足の長いほう)はPin13と接続する。

あとはPDFにしたがって順次行えばOK。

Configuration blocks

Arduinoに先にダウンロードしたtoolbox_arduino_v5.inoを書き込む。試しにコンパイルしてみると、Warningが出るがclass MPU6050に含まれるWarningらしい。なにかコンパイルスイッチでもあるかと覗いてみたが、そういうものはなさそう。今回MPU6050を使う予定もないし、これを追いかけると自分では途方もなく疲れそうだから、もしかしてそのうちバージョンアップされるのを待とう。他力本願。
とりあえず、コンパイルは通るのでそのまま書き込む。誰か解決していたら、ぜひ教えてほしいです。超他力本願。

いよいよScilabのXcosの出番。まずはArduinoが接続されたシリアルポートを調べよう。既に接続していればPDFのように右下にシリアルポートが表示されている。初めて接続する場合は画像のように「ツール」⇒「シリアルポート」で、Windowsで正常に接続(認識)されたArduinoのポートが表示されている。ああ、よく考えたら、一度ファーム(toolbox_arduino_v5.ino)を書き込んでるから、初めて接続ってことはないか。


ScilabからXcosを開き新規ダイアログとパレットブラウザを表示させる。Scilabの準備がうまくいっていれば画像のようにArduinoが表示されているはず。このArduinoをダブルクリックすると、使えるパレットが表示される。
どんなパレットがあるかはチュートリアルとはずれるものもあるので、Scilabで使用できるArduino用パレットに載せる。

まずはConfigurationからARDUINO_SETUPとTIME_SAMPLEを拾ってきた。

うちはシリアルポート4(COM4)なので、Board1を4にする。

TIME_SAMPLEはチュートリアルに合わせる。というかデフォルトだった。最初は何も書かれていないが、ダブルクリックして設定ダイアログを埋めてOKすると表示される。

双方設定後。


これでArduinoと通信できるようになったはずなので、試しにこのふたつだけで実行してみた。
Serial port COM4 opened SUCCESSFULLY.

  "communication with card 1 on com 4 is ok"

  "Version arduino_v5-x.ino found."

  "End pre-simulation arduino"

  "Acquisition in progress ..."
Serial port closed SUCCESSFULLY.

  "Close serial port ok"

  "End post-simulation"
-->
コンソールにこう表示されれば正常につながったといえるだろう。

Xcos model

次にLEDを点滅させるための指令?を準備する。Xcosのパルス発振モデルだ。Scilabの純正のモデルなので、特に説明はいれない。
設定値もチュートリアル通りデフォルトのままにする。Amplitudeの説明でscicos typesと書かれているが、scicosはXcosの旧名?なので、それくらい古くからArduinoとの連携を作ってきてくれたってことかな。

Digital input of the Arduino board

Arduinoにパルスを出力するピンを設定するわけだが、ここではPin13を指定している。Installation & SetupでPin5に接続されていた図をPin13に変更したのはこのためだ。
Arduinoのデジタル出力用モデルはパレットプラザのArduinoのDigitalにある。


Behavior visualization

最後に出力されている波形を観測するためのSCOPEを用意する。パレットブラウザのArduino-Configurationから持ってくる。
Xcosには通常のモデルもあるが、チュートリアルのPDFによればこのARDUINO_SCOPEは黒億の入力が不要で、自動で気にTIME_SAMPLEど同期してくれるという便利機能がついているらしい。

Simulation/Acquisition of the signal

パルス発振モデルからデジタル出力とスコープへ線をつなげば準備完了。Xcosを実行させればOK。


パソコンの画面と実機を同時に撮影した結果がこちら。右上はオシロスコープの画面のキャプチャだが、通信の関係かリアルタイム処理は厳しく遅れている。
動画ファイルへのリンク
XcosのSCOPE実際のパルス出力
このように結果はXcosのSCOPEの画像では、等間隔に同じパルス幅で出力されているが、実際の出力では初めのほうの出力の幅に若干ばらつきがあるのが確認された。これはSampling periodを0.1sにしているのが原因ではないかと推測し、0.01sにしてみた。
動画ファイルへのリンク
XcosのSCOPE実際のパルス出力
この結果、ほぼ等間隔で同じ幅のパルス出力が確認できた。Sampling periodが0.1sと0.01sのXcosのSCOPEを比較すると、立上がり、立下りもより垂直になっている。

次に、パルス幅を周期の30%から70%に変更してみた。
動画ファイルへのリンク
XcosのSCOPE実際のパルス出力
動画でもわかるように、LEDが点灯している時間が30%の場合よりも長いことが確認できる。また、XcosのSCOPE、実際のパルス出力ともに出力パルス幅が変化している。

以上で、チュートリアルの実験を終了する。
なのだが、Scilabのコンソールを見ると、警告が表示されていた。これはScilabのArduinoモジュールに起因するものと思われるので、今後のバージョンアップに期待する。飽くまで他力本願。
警告: 関数 get_figure_handle は廃れました。
警告: 代わりに findobj("figure_id", n) を使用してください.
警告: この関数は Scilab 6.1.x  以降では削除される予定です.
タグ

コメントをかく


「http://」を含む投稿は禁止されています。

利用規約をご確認のうえご記入下さい

管理人/副管理人のみ編集できます