グラフは常にデータを視覚化するのに役立ち、傾向やパターンを見ると非常に簡単に見つけることができます。入力値に基づいてグラフをプロットするために利用できるソフトウェアはたくさんありますが、今日は、MATLABを使用してLM35センサーからの温度データに基づいてグラフをプロットします。このチュートリアルでは、MATLABを使用してリアルタイムグラフをプロットする方法についての基本的な考え方を説明します。Arduino Unoは、LM35温度センサーから温度データを取得するためにここで使用されます。
先に進む前に、MATLABを初めて使用する場合は、以前のMATLABチュートリアルをチェックして、よりわかりやすく説明することができます。
- MATLAB入門:簡単な紹介
- ArduinoとMATLABのインターフェース-LEDの点滅
- MATLABとArduino間のシリアル通信
- MATLABとArduinoを使用したDCモーター制御
- MATLABとArduinoを使用したステッピングモーター制御
グラフをプロットするためのMATLABグラフィカルユーザーインターフェイスの作成
まず、温度データを使用してグラフをプロットするためのGUI(グラフィカルユーザーインターフェイス)を構築する必要があります。GUIを起動するには、 コマンドウィンドウに 次のコマンドを 入力します
ガイド
ポップアップウィンドウが開き、下の画像に示すように、新しい 空白のGUI を選択します。
ここで、MATLABグラフィカルインターフェイス用に1つのプッシュボタン、2つの軸、および1つのテキストボックスを選択する必要があります。プッシュボタンは温度検知を開始するために使用され、グラフをプロットするための2つの軸と、温度の現在の値を表示するためのテキストボックスが使用されます。
ボタン、軸、またはテキストの編集ボタンのサイズを変更したり、形状を変更したりするには、ボタンをクリックするだけで、ボタンの角をドラッグできます。これらのいずれかをダブルクリックすると、その特定のボタンの色、文字列、タグを変更できます。カスタマイズ後は次のようになります
あなたはあなたの選択に従ってボタンをカスタマイズすることができます。これを保存すると、MATLABの エディターウィンドウ にコードが生成され ます 。Arduinoでプロジェクトに関連する特定のタスクを実行するには、常にこの生成されたコードを編集する必要があります。以下では、MATLABコードを編集しました。コマンドウィンドウ、エディターウィンドウなどの詳細については、MATLABチュートリアルの開始を参照してください。
グラフをプロットするためのMATLABコード
LM35とArduinoを使用して温度計を設計するための完全なMATLABコードは、このプロジェクトの最後にあります。さらに、ここにダウンロード用のGUIファイル(.fig)とコードファイル(.m)が含まれています。これらを使用して、要件に応じてボタンまたは軸のサイズをカスタマイズできます。以下に説明するように、生成されたコードを編集しました。
以下のコードをコピーして、行番号に貼り付けます。74 mファイル を実行するたびに、ArduinoがMATLABと通信していることを確認し ます 。
すべてクリア; グローバルa; a = arduino ();
下にスクロールすると、GUIで プッシュボタン と テキストの編集 用に作成された2つの関数があり、軸用の関数は作成されないことがわかります。次に、実行するタスクに応じて、プッシュボタン(スタートボタン)関数にコードを記述します。
では スタート ボタンの機能、コピーおよび温度検出を開始するだけの機能を終了する前に、コードの下に貼り付けます。温度を継続的に検知、表示、およびグラフィカルにプロットするために、 whileループ を使用 しています 。反復ごとに1秒の 一時停止 を提供しているため、温度値は1秒ごとに更新されます。
x = 0; go = true; グローバルa; while go value = readVoltage(a、 'A1'); temp =(値* 100); disp(temp); x =; plot(handles.axes1、x); グリッドオン; xlabel( 'Time(seconds)')ylabel( 'Temperature(°C)'); title( 'リアルタイム温度グラフ'); drawow set(handles.edit1、 'String'、num2str(temp)); 一時停止(1); 終わり
それでは、コードがどのように機能しているかを見てみましょう。以下の3行の行では、「 x 」の初期値をゼロに設定し、「 go 」をtrueとして定義して while ループを開始し、関数でArduinoを呼び出すための「 グローバルa」 を宣言しています。
x = 0; go = true; グローバルa;
以下のコード行は、LM35温度センサーの「OUT」ピンに接続されているArduinoのアナログピンA1からの電圧値を検出するために使用されます。出力はアナログ値ではなく電圧値になります。
値= readVoltage(a、 'A1');
ここでは、電圧値に10を掛けることにより、電圧値を温度値(摂氏)に直接変換できます。
temp =(値* 100);
ここで、グラフをプロットするために 「plot(handles.axes1、x)」 関数が使用されます。ここで、 axes1 はグラフ領域の参照または名前です。したがって、複数のグラフをプロットする場合は、軸の名前を変更するだけです。 たとえば、 別のグラフを プロット する場合は、 plot(handles.axes2、x) 'と 記述できます。
「グリッドオン」 は、グラフのグリッドビューで使用されます 。「xlabel」、「ylabel」 、および「 title 」は、x軸、y軸、およびタイトルの命名に使用されます。
plot(handles.axes1、x); グリッドオン; xlabel ( 'Time(seconds)') ylabel ( 'Temperature(°C)'); title( 'リアルタイム温度グラフ');
「 Drawnow」 は、グラフィカル表現をリアルタイムで更新するために使用されます。
ドローノウ
以下のコマンドを使用して、毎秒 編集テキストボックスに 温度の値 を表示するには、
set(handles.edit1、 'String'、num2str(temp));
必要な材料
- MATLABがインストールされたラップトップ(設定:R2016a以降のバージョン)
- Arduino UNO
- LM35 –温度センサー
- 接続線
- ブレッドボード
回路図
MATLABでグラフをプロットする
回路図に従ってハードウェアを設定した後、実行ボタンをクリックするだけで、編集したコードを.mファイルで実行できます。
MATLABは応答するのに数秒かかる場合があります。以下に示すように、MATLABが左下隅にビジーメッセージを表示するまで、GUIボタンをクリックしないでください。
すべての準備ができたら、開始ボタンをクリックすると、グラフィック領域と[テキスト の 編集]ボックス で温度データの取得が開始され ます 。値は1秒ごとに自動的に更新されます。この1秒の間隔は、MATLABコードで適宜変更できます。
出力は以下の画像のようになります。
これは、MATLABを使用してArduinoからの入力値のグラフをプロットする方法です。
正しく理解するには、以下のデモビデオを確認してください。