【Octave? Python?】物理シミュレーション タイヤバランサーのモデルってないかな?【Rotation balance】

スポンサーリンク
広告

タイヤバランサーの論文

ぜんぜん違うもの調べてたら。。出てきたので思い付きでまた調べてしまったシリーズ(笑)

オープンアクセスの論文を少しみてたら。。こんな論文が。。

Design and Development of Wheel Balancing Machine Experimental Setup – IJERT
Design and Development of Wheel Balancing Machine Experimental Setup - written by P. R. Salave , A. K. Chouhan , J. D. Bagate published on 2019/06/13 download f...

この論文では、ArduinoでDynamic balanceをGセンサで取って推定するってことやってて。。どこにおもりをつけるといいのか??までは解いていなかった(笑)

で。。そういや。。タイヤバランサーの仕組みってどうなってたんだっけ??って。。 Solidなものだと、たぶん解析的に解けるはずで。。軸につけて回転させて、軸の振動(力)のX・Y・Z軸から求まるんじゃないかな?? って思ったけど。。

どうやるんだっけ??(笑)

本とか、論文っていまだにいろいろ出ている分野なんですね。。とか思ったり。。

クリックしてBalancing.pdfにアクセス

Dynamic Motor Balancing - With Sugru and an IPhone!
Dynamic Motor Balancing - With Sugru and an IPhone!: Many shop or machine tools have big motors, and many big motors VIBRATE. In some cases this is a good thing...
https://scholarsmine.mst.edu/cgi/viewcontent.cgi?article=5896&context=masters_theses

BASICのプログラムで作られてた~ なんか懐かしいです。

クリックして17-227.pdfにアクセス

古くに解かれている問題だから。。Gnu Octave や Matlabでサンプル落ちてるんじゃないのかな?って見てみると

Analysis of Balancing of Unbalanced Rotors and Long Shafts using GUI MATLAB
Open access peer-reviewed chapter
https://www.researchgate.net/publication/343083277_Investigating_aids_for_teaching_the_balancing_of_rotating_masses
https://web.archive.org/web/20210716193823id_/https://dergipark.org.tr/en/download/article-file/1486475

ありましたが。。プログラム自体はなかった(笑)

Wikiだと、この

Balancing of rotating masses - Wikipedia
Balancing of Rotating Masses Introduction

Python でタイヤ振動かくと。。

# おもりの重さの異なる複数のケースに対する遠心力を計算する関数
def calculate_centrifugal_force(mass_weight):
# 重心の計算
x_center_mass = (mass_weight * (radius_wheel - thickness_wheel)) / total_mass

# 遠心力の計算(三次元成分)
centrifugal_force_x = total_mass * (angular_velocity ** 2) * x_center_mass * np.cos(angular_velocity * t)
centrifugal_force_y = total_mass * (angular_velocity ** 2) * x_center_mass * np.sin(angular_velocity * t)
centrifugal_force_z = total_mass * (angular_velocity ** 2) * x_center_mass * np.sin(phi)

return np.sqrt(centrifugal_force_x**2 + centrifugal_force_y**2 + centrifugal_force_z**2)

# z方向の角度(仮定)
phi = np.pi / 4 # 45度

# 重さの異なるおもりに対する遠心力を計算
weights = [2 / 1000, 3 / 1000, 4 / 1000, 5 / 1000] # kg
forces = [calculate_centrifugal_force(weight) for weight in weights]

# グラフのプロット
for force, weight in zip(forces, weights):
plt.plot(t, force, label=f'{weight * 1000}g')

plt.xlabel('Time (s)')
plt.ylabel('Centrifugal Force (N)')
plt.title('Centrifugal Force over Time for Different Weights')
plt.legend()
plt.grid(True)
plt.show()

# おもりの重さを変化させた場合の各RPMでの遠心力を計算し、プロットする関数
def plot_force_rpm_different_weights(rpms, weights):
plt.figure(figsize=(10, 6))

for weight in weights:
forces_rpm = [calculate_force_rpm(rpm, weight / 1000) for rpm in rpms] # 重さをkgに変換
plt.plot(rpms, forces_rpm, label=f'{weight}g')

plt.xlabel('Rotation Speed (RPM)')
plt.ylabel('Centrifugal Force (N)')
plt.title('Centrifugal Force vs. Rotation Speed for Different Weights')
plt.legend()
plt.grid(True)
plt.show()

# おもりの重さのリスト(2g, 3g, 4g, 5g)
weights = [2, 3, 4, 5]

# RPMの範囲を設定
rpms = np.linspace(1, 1000, 100) # 1 RPM から 1000 RPM

# おもりの重さを変えてグラフをプロット
plot_force_rpm_different_weights(rpms, weights)

こんな感じか??

回転が上がると、偏りの重さが思いほど力がかかるので、重さを特定するのはこれの逆するのかな?

# 2gのおもりをホイールの軸から0°、10°、20°の位置にずらした場合のX軸・Y軸の遠心力を計算する関数
def plot_force_xy_time_different_angles(t, weight, angles):
plt.figure(figsize=(12, 6))

# おもりの重さ(kg)
mass_weight = weight / 1000

for angle in angles:
# 角度をラジアンに変換
angle_rad = np.radians(angle)

# 重心の計算
x_center_mass = mass_weight * (radius_wheel - thickness_wheel) * np.cos(angle_rad) / total_mass
y_center_mass = mass_weight * (radius_wheel - thickness_wheel) * np.sin(angle_rad) / total_mass

# X方向とY方向の遠心力の計算
centrifugal_force_x = total_mass * (angular_velocity ** 2) * x_center_mass * np.cos(angular_velocity * t)
centrifugal_force_y = total_mass * (angular_velocity ** 2) * y_center_mass * np.sin(angular_velocity * t)

# グラフにプロット
plt.plot(t, centrifugal_force_x, label=f'X-axis {angle}°')
plt.plot(t, centrifugal_force_y, '--', label=f'Y-axis {angle}°')

plt.xlabel('Time (s)')
plt.ylabel('Centrifugal Force (N)')
plt.title('X-axis and Y-axis Centrifugal Forces for Different Angles')
plt.legend()
plt.grid(True)
plt.show()

# おもりの角度のリスト(0°, 10°, 20°)
angles = [0, 10, 20]

# X軸・Y軸の力を時間に対してプロット(2gのおもり)
plot_force_xy_time_different_angles(t, 2, angles)

この位相で場所を特定するのかな??

って。。これを調べてたんじゃない(笑)

コメントを残していただけるとありがたいです

Loading Facebook Comments ...