phyphoxで洗濯機の振動の加速度スペクトルを計測

phyphox(Physical Phone Experiments)で洗濯機の振動の加速度スペクトルを計測しました。

phyphoxを使った実験のデモ動画でも洗濯機の振動の加速度スペクトルの計測は見かけたことがあります。振動の加速度スペクトルはオーディオスペクトルや磁力スペクトルに比べ、身の周りのものの動きと対応付けてイメージし易いように感じられます。

こちらの洗濯機の脱水の振動を計測しました。

1. 下の図はphyphoxで加速度スペクトルを記録し、記録したデータをExcelファイルに保存してメール添付で送信する手順の例になります。下の図の緑の枠内のボタンを順に押し、最後の緑の枠の欄にExcelデータ送信先のメールアドレスを入力してメールを送信します。

2番目の画像で▶ボタンを押してから3番目の画像で停止ボタンを押すまでの加速度スペクトルのデータが記録されます。

洗濯機が「脱水」をして振動しているときに洗濯機の蓋の上にスマートフォンを置き、振動の加速度スペクトルを計測しました。

2. 下の図は洗濯機が「すすぎ」の中の「脱水」処理で一番回転数が大きくなったときに記録したデータです。スマートフォンのスクリーンショット画像を並べました。

1番目の画像は加速度スペクトルで、横軸は周波数、縦軸は横軸の周波数成分の大きさです。この図の縦軸は対数表示されていて、周波数が14.28Hzの周波数成分は他の周波数成分と比べ4倍以上大きな値となっています。計測したときの洗濯機の脱水の回転数が1秒間に約14回だったため、洗濯機の蓋の上に置いたスマートフォンの加速度の周波数成分が約14Hzで大きな値をとったと考えられます。

加速度センサーのデータは0.01秒強の時間間隔(99Hz)で計測しています。計測可能な振動の最大周波数はセンサーデータのサンプリングレート(99Hz)の半分の49Hzとなっています(ナイキスト周波数)。

使用サンプル数は256、サンプリング(データ取得)の時間間隔は約0.01秒なので動作時間は2.59 s(秒)と表示されています。過去約2.59秒の256サンプルのデータを入力として、FFT(高速フーリエ変換)のアルゴリズムで各周波数成分の大きさを計算しています。

2番目の画像の中央の図は各周波数成分の大きさの履歴を表示しています。縦軸は測定開始からの経過秒数で、横軸に対応する周波数成分の大きさを色で表しています。大きな周波数成分は白で、小さな周波数成分は黒で表されています。この図の結果は測定開始後35秒から50秒ほどの間の結果を表しています。周波数が約14Hzの成分が他の周波数成分より大きな値をとっています。
2番目の画像の下の図はピーク周波数の時間変化を表しています。測定開始から5秒ほどの時点ではピーク周波数は約10Hzですが、その後、脱水の回転数が増加して30秒後以降のピーク周波数は約14Hzとなっています。

3番目の画像のようにFFT(高速フーリエ変換)で利用するデータのサンプル数を変更することもできます。サンプル数を大きくすると周波数分解能を改善すること(横軸の周波数の間隔を細かくすること)ができますが、データの取得と更新により多くの時間を要するようになります。

4番目の画像は計測された3軸加速度センサーの値です。

3. phyphoxからエクスポートしたExcelデータをGoogle Chartsでプロットしました。

下の図の横軸は周波数、縦軸はFFTで計算した各周波数成分の大きさです。2.の1番目の図とは異なり対数を取らずにプロットしています。洗濯機の脱水の周波数14.28Hzの周波数成分が他の周波数成分より大きな値となっています。

下の図の横軸は測定開始からの経過時間、縦軸はピーク周波数です。測定開始から5秒の時点では脱水の振動のピーク周波数は約10Hzですが、徐々に脱水の回転数が増加し、30秒後以降では約14Hzとなっています。

下記のJavaScriptを使用して3.の二つの図をプロットしました。

<script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script>
<script type="text/javascript">

google.charts.load('current', {packages:['corechart']});
google.charts.setOnLoadCallback(Spreadsheet);

function Spreadsheet() {
    const query = new google.visualization.Query('https://docs.google.com/spreadsheets/d/1uJai_2ZgZIkwJCBb2YSHFrjIjQxkhKpI1IsPx7SGMzc/edit?usp=sharing');
    query.send(drawChartFFTSpectrum);

    const query_peak_history = new google.visualization.Query('https://docs.google.com/spreadsheets/d/1uJai_2ZgZIkwJCBb2YSHFrjIjQxkhKpI1IsPx7SGMzc/edit?usp=sharing&gid=176809578');
    query_peak_history.send(drawChartPeakHistory);
}

function drawChartFFTSpectrum(response) {
    const data = response.getDataTable();

    // acceleration spectrum
    const options = {title: 'phyphox acceleration spectrum',
                     hAxis: {title: 'Frequency [Hz]'},
                     vAxis: {title: 'FFT Magnitude'}};
    const chart = new google.visualization.LineChart(document.getElementById('acceleration_spectrum'));
    chart.draw(data, options);
}

function drawChartPeakHistory(response) {
    const data = response.getDataTable();

    // Peak History
    const options = {title: 'phyphox peak history',
                     hAxis: {title: 'Time [s]'},
                     vAxis: {title: 'Peak Frequency [Hz]'}};
    const chart = new google.visualization.LineChart(document.getElementById('peak_history'));
    chart.draw(data, options);
}
</script>
補足:
phyphoxからエクスポートしたExcelデータはこちらのBlogと同じ方法でGoogle Sheetsにアップロードし、誰でも閲覧できるようにしました。
Peak Historyのグラフをプロットする際、シートURLの末尾に&gid=176809578のようにgidパラメータを付加し、1枚目のシート以外のシートを参照するようにしました(こちらのページを参考にしました)。

Leave a Reply