phyphoxで岐阜バスの振動の加速度スペクトルを計測

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

測定方法は、洗濯機の振動の加速度スペクトルを計測したこちらのブログと同様です。

岐阜バスの一番後ろの右端の座席に座り、窓のすぐ内側のスペースにスマートフォンを置いてバスの振動を測定しました。バスがエンジンをかけたまま停止しているときと、停止したり走行したりしているときの振動を計測しました。

1. バスがエンジンをかけたまま停止しているときの振動

加速度の大きさのスペクトルをプロットしたのが次のグラフになります。約27.45Hzの周波数に鋭いピークがあります。

ピーク周波数の時間変化をプロットしたのが次のグラフになります。加速度センサーのデータは0.01秒強の時間間隔で計測しています。過去約2.56秒強の256サンプルのデータを入力として、FFT(高速フーリエ変換)のアルゴリズムで各時刻の各周波数成分の大きさを計算しています。そのため、計測開始から2.56秒強の間のピーク周波数は振動のスペクトルが一定でも安定せず、約2.56秒後以降に一定の値、約27.45Hzに収束しています。

2. バスがエンジンをかけたまま停止したり走ったりしているときの振動

バスが走っているときの加速度スペクトルの例が次のグラフになります。様々な周波数成分が大きな値を取っており、エンジンをかけたまま停止しているときに比べ、低い周波数成分が大きな値を取っています。

バスがエンジンをかけたまま停止したり走ったりしているときのピーク周波数の時間変化をプロットしたのが次のグラフになります。バスがエンジンをかけたまま停止しているときのピーク周波数は約27.5Hz、走っているときのピーク周波数は時間とともに変化し、様々な値を取っています。

3. 次のJavaScriptを使用して、このページの4つのグラフをプロットしました。

<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 GifuBusStopSheetData = 'https://docs.google.com/spreadsheets/d/1nMpT-E7blwZbKdjadxAosHLKI-GkiyV1feIwl6LEG5o/edit?usp=sharing';
    const GifuBusRunStopSheetData = 'https://docs.google.com/spreadsheets/d/1yA8P-bEHiixNhG4VkuKgMOurZaCBry5hEOoUZ1WTJqw/edit?usp=sharing';

    const QueryStopFFT = new google.visualization.Query(GifuBusStopSheetData);
    drawFFTSpectrumWithSpecifiedId(QueryStopFFT, 'GifuBusStopFFT');

    const QueryStopPeakHistory = new google.visualization.Query(GifuBusStopSheetData + '&gid=1061560665');
    drawChartPeakHistoryWithSpecifiedId(QueryStopPeakHistory, 'GifuBusStopPeakHistory');

    const QueryRunStopFFT = new google.visualization.Query(GifuBusRunStopSheetData);
    drawFFTSpectrumWithSpecifiedId(QueryRunStopFFT, 'GifuBusRunStopFFT');

    const QueryRunStopPeakHistory = new google.visualization.Query(GifuBusRunStopSheetData + '&gid=833447991&range=A1:B800');
    drawChartPeakHistoryWithSpecifiedId(QueryRunStopPeakHistory, 'GifuBusRunStopPeakHistory');
}

function drawFFTSpectrumWithSpecifiedId(query, graph_id) {

    query.send( function(response) {
        const data = response.getDataTable();

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

function drawChartPeakHistoryWithSpecifiedId(query, graph_id) {

    query.send( function(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(graph_id));
        chart.draw(data, options);
    });
}
</script>

返信を残す

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

CAPTCHA