インパルスハンマーのDIY
その4
はじめに
ハンマリング試験という、対象をたたいて、その反応から物体の固有振動や振動モードを測定する試験がある。
それには振動センサーと、振動を与えるセンサー付きハンマー(=インパルスハンマ―)、
FFTアナライザなどが必要だが、これらはどれも高価である。
やってみれば意外と面白いのだけれど、あまりにもハードルが高い。
最近ではPCで信号処理する環境も整ってきているし、データをとるオシロスコープの性能もよくなってきている。
センサーもスマートフォン向け部品のおかげでMEMSテクノロジーを用いた高品質なものが安価に手に入る。
うまくすれば誰でも作れるDIYインパルスハンマ―ができるのでは、というのがきっかけ。
真似できるよう、たいていのものはAmazonで調達した。部品のリンクはAmazonに飛ぶ。
背景
力センサーの入ったハンマーで対象を加振し,貼り付けた加速度計での測定値と比較する.
このとき、たたくということは、より多くの周波数を含むインパルス状の加振が可能ということになる。
この広帯域の加振に対して、受信側がそれぞれの周波数入力に対してどのくらいの割合で振動したかを求めることで、固有振動を見つける。
一般には、インパルスハンマー側はひずみゲージとか圧電素子による力センサータイプのものが多く,
加速度ピックアップは圧電型やコイル型などがある.
DIYの試みはUniversity of AdelaideのCarl Howardが行っている。
https://www.acoustics.asn.au/journal/2005/2005_33_1_Howard.pdf
国内では、小林による「撥弦楽器におけるうなりを考慮した 弦振動のモデリングに関する研究 」にて作例が付録に記載されている。https://tsukuba.repo.nii.ac.jp/record/32613/files/DA06879.pdf
後者は圧電素子を使用しているものの、一般的なインパルスハンマ―の構成と同じく、
ハンマーチップの直後に力センサとして配置する形式である。
小型のハンマーならよいが素子を破壊しないように大質量のハンマーを製作するのには難度が高いことが予想される。
一方前者は、市販のハンマー後端に加速度ピックアップを付加する方式で、
市販インパルスハンマーと比較し十分な加振が可能であると示している。
しかし、加速度ピックアップやチャージアンプも新品だと十分に高価であるため、
今回はなんとかして安価な素子により構成する。
今回の構成では、一番高いのがデジタルオシロスコープ、2番目がコンピューター、3番目が加速度センサーとなる。
オシロスコープとコンピューターは他のことにも使えるため、安価に自作できる、と主張する。
インパルスハンマ―
インパルスハンマーは、加振周波数帯を変化させたり、対象の質量に応じて加振力を変化させるために、先端のチップや質量を変化させる。
(加振力を変化させるためにたたき方を変えると、複数回の試験間で一定の試験力を保ちにくかったり、
入出力のSN比が悪化するなどの不都合がある。)
本物のインパルスハンマーでは、エクステンダマスという付加質量があるものの、
それで足りない場合は新たに購入しなければならない。
そして、インパルスハンマー自体も思っているよりも高価である。
今回は、
・似た形状で質量が変えられる
・先端チップ交換可能
・安価
から、これらのハンマーを選定した。
小:TRUSCO(トラスコ) マイクロ・コンビハンマー ヘッド交換式 ヘッド4個付 TH-9017
中:アネックス(ANEX) ハンマー 中型 ヘッド交換タイプ 専用ヘッド4種付 265mm No.9008
大:ベッセル(VESSEL) ゴムプラハンマー No.77-10
加速度センサーには自動車エンジン用の非共振型ノックセンサ―を使用する。
セラミックス 42(2007)No. 10、 pp.801-803)によると、
https://www.ceramic.or.jp/museum/contents/contents/pdf/2007_10_05.pdf
ノックセンサーは、ノッキング時に発生する振動を検出するため、圧電セラミックスにより発生した電荷を取り出す部品である。
共振型はエンジンごとのノッキング時の周波数に合わせてつくりこんであるが、
非共振型ではドーナツ状圧電セラミックスが広帯域にフラットな一種の加速度センサとなっていて、
波形処理によってノッキング振動を検出する。
また、NGKのノックセンサの周波数特性によれば、
https://www.ngkntk.co.jp/resource/pdf/product_sensors_plugs_knock_j_03.pdf
低周波数側が分からないが、全体としてまあまあフラットで良さそうであり、重さが気にならなければ使えると判断した。
ハンマーの片側の先端チップを外し、そこに、ノックセンサ―を瞬間接着剤などで接着する。
今回はAmazonで安価に購入できる範囲で以下を使用した。
・Bosch 0261231188 オリジナル装備エンジンノックセンサー
・uxcell エンジンノックセンサー DC 12V 2端子 22060-2Y000 日産用インフィニティに対応
(なお、センサーにケーブルが生えているタイプのものは避けたほうが良いようである。
ケーブルにシールドがなくノイズが入り込む原因となる)
この信号を細めのBNCケーブル(シールドケーブル)で拾ってオシロスコープに入力しても動作すると思われるが、
オシロスコープの電圧レンジが小さくノイズに弱いし、電荷をそのまま入力して正しい波形になるか微妙であるので、
必要ならアンプを挿入する。
今回はアンプを設計している時間がなかったため、
・Youmile DC 3-12VAD620アンプモジュール1.5-1000ゲイン調整可能マイクロボルトミリボルト信号アンプモジュール高精度ヘッダー付き
を使用した(このモジュールの電源部の品質はあまりよくなく、増幅ゲインも搭載アンプ素子の全性能を活かせそうにないのが残念ではある)
配線の根元はたたいた時の振動で切れやすいので、グルーガンで補強するとよい。
これらを組み合わせると、以下のようなハンマーができる。
加速度センサー
MEMSセンサー搭載の3軸加速度センサーとしては、ADXL354Cか、次点としてADXL335のモジュールを選択する。
どちらも1.5kHzまでの比較的低めの周波数をカバーする。
ADXL354のほうが圧倒的にノイズが少ないが、価格も高くなる。
ADXL354Cモジュールはストロベリー・リナックスより、ADXL335モジュールは秋月電子より入手した。
電源はノイズの少ない電池から取るのを推奨する。
センサーからの信号はBNCケーブルなどのシールドケーブルを推奨する。
あまり重くなると軽量な試験対象への取り付けで特性が変わる原因となるが、
加速度ピックアップ向けのような超極細シールドケーブルは接続が難しいし手に入りにくい。
ADXL354Cで最大8G加速度まで対応のため、測定が振動の腹部分では飽和することがある。
その場合はハンマーを軽量なものに変更するか、難しいがハンマリングで調整する。
質量があるため、軽量な測定対象には向かないが、インパルスハンマーで使用したノックセンサ―も単軸センサーとして使用できる。
こちらは高加速度まで飽和しないのが特徴である。
デジタルオシロスコープ
FFTアナライザの記録部分に相当する。
FFTアナライザは本物は高機能ではあるが特に高価である。
・レコード長がそこそこあり、
・できれば記録ビット数が高い(市販FFTアナライザは16~24bit記録)
ほうが良い。
今回のプロジェクトで使用しているのは、初期はRigol DS1054Zを改造したものを、
途中からは最大14bit記録ができるOWON TAO 3000Aシリーズ(TAO3074A)を使用している。
レコード長は長すぎると記録、処理に時間がかかる原因となり試験の円滑な実施に問題が出るため可変できるものが望ましい。
見たい周波数帯にもよるが、100kから1Mのレコード長がよい。
TAO3000Aシリーズはバッテリ駆動できるのも気に入っている。
データ処理用コンピュータ
FFTアナライザの処理部分に相当する。
まあ何でもよい。
Pythonを使用するため、シングルスレッド性能が高いほうが若干だが有利ではある。
試験
複数回、ダブルハンマ(2度たたき)やセンサの軸以外の方向に力がかからないようにたたく。
記録は波形をCSV形式で取得しておく。
コンピュータに保存したCSVを移し、ファイルネームを変更する。
Waveform (n).csv ※nは整数 とする。これはそのあとで使用するプログラムの都合である。
ファイルネームを変更するときは、Windows10以降なら、複数のファイルをまとめて選択して、
右クリックメニューからファイル名の変更、Waveformとだけいれてエンターを押せば、その後ろに連番 (n)が付与される。
データ処理(1)
・header_deleter.py
取得したデータを、処理用データに変換する。
ここでオシロスコープの機種によるデータ形式の違いを吸収することを意図している。
TAO3000Aシリーズでは、4ch(x、y、z、ハンマー) wave保存ファイルを、
後段のハンマリング試験解析用プログラムに対応するデータ形式「時間、X軸、Y軸、Z軸、ハンマー」の並びに変換する。
(今回はTAO3104A/3074A向けにプログラムを書いてある。
他のオシロスコープを使用している場合は、適宜プログラムを変更して、
ヘッダ情報から時間情報を取り出しつつ、ヘッダを削除する必要がある。)
CSVファイルと同じフォルダにプログラムを入れて実行すると、連番のスタート位置と、処理数量の入力を求められる。
その後は自動で変換処理される。
処理したファイルも同フォルダに保存される。
実行にはpandasライブラリが必要である。
データ処理(2)
・to_graph.py
変換したデータを、FFT変換などしてグラフを描画する。
CSVファイルと同じフォルダにプログラムを入れて実行すると、連番のスタート位置と、処理数量の入力を求められる。
その後は自動で処理される。
同じフォルダにグラフがPNG形式で保存される。
実行はSciPy 1.12.0、NumPy 1.26.0ライブラリでで確認している(注:Numpy 2.xに対応していない)。
また、pandas、matplotlibが必要である。
実行例
ハンマーを一番軽いハンマーにノックセンサーを載せたもの、
センサーを1)MEMS3軸加速度センサー、2)ノックセンサーとして、それぞれ4~5回たたいて試験した。
なおこのときは対象は300mmステンレス直尺、たたくのは下端、センサーは150mm位置、レコード長は100kとした。
オシロスコープの入力モードはACにした。(DC入力とするとパワースペクトラムで0Hzが最大となる)
グラフは上から、1)2)の順。
FAQ
・アクセラレンスを出すにしろ、入力データはハンマーが力(N)、センサーが加速度(m/s^2)でなければならないのでは?
⇒まあもちろん厳密にはそう。
そうなのだけれど、それをやるには電圧-加速度校正と、ハンマーはさらに加速度-力校正が必要になり、
それぞれ比較用の「正しい」機器が必要になる。
しかも、そこまでやってもグラフの縦軸単位が正しくなるだけで、
FFTかけて周波数ピークを出す部分にはおそらく影響しないため、無理をしてやる必要があるのか、
というお気持ちで、変換コードだけ書いてコメントアウトしてある。
・平均化ハンマー波形とセンサー波形の縦軸の数値が入っていないのは?
⇒なんかFFTして加算平均したものをIFFTすると振幅が小さくなってしまって、、修正中