はじめに
Raspberry Piなどを使ったロボットカーの製作にミニ四駆のキットを使っています。
カスタムパーツが豊富で、近所のお店で手軽に入手できるので便利です。
しかしながら、ミニ四駆はめっちゃスピードが速いため、低速域での速度制御が難しいところがあります。
そこで、3Dプリンタを使って6Tピニオンギアを自作し、ギア比の変更を試みました。
造形したピニオンギアの強度には課題もあっため、形状の改良をおこないました。
ここでは、MATLABによるFEM構造解析を試みてみます。
3Dプリンタを使った6Tピニオンギアの試作
ミニ四駆のギア比
カウンターギアとスパーギアの組み合わせでギア比を変更できるようになっています。
ギア比 | カウンターギア | スパーギア |
---|---|---|
3.5:1 | 水色 | イエロー |
3.7:1 | みどり | イエロー |
4:1 | ブラック | うす茶 |
4.2:1 | レッド | うす茶 |
5:1 | ブルー | きみどり |
参考 【ミニ四駆】ギア比徹底解説
ミニ四駆標準の8Tピニオンギアを使った場合、最も低速なギア比は5:1ですが、6Tピニオンギアを使った場合、5*(8/6):1 ≒ 6.7:1となります。
3Dモデル
左側の形状では、回転中の負荷でギアの溝が割れることがありました。
光造形による3Dプリント
スペーサー
ギアがかみ合うようにするため、8Tピニオンギアよりも直径を少し小さくしています。
かみ合わせをよくするため、ワッシャーをマスキングテープで張り付けてスペースを調整しています。
試作したピニオンギアの回転動作
MATLABを使った6Tピニオンギアの構造解析
使用したツール
- MATLAB 2021A (MATLAB Home)
- Partial Differential Equation Toolbox
デモファイル
作成したライブスクリプトデモをGitHubに公開しています。
解析用テーブルの定義
%Analysis Table
tmp = {
'Title' 'StlFile' 'YoungsModulus' 'PoissonsRatio' 'FixedFaceNo' 'LoadFaceNo' 'Preassure' ;
'Type1 Teeth' 'pinion_gear_6t_1.stl' 1e9 0.3 [70 69] [41 41] 1.5e7 ;
'Type2 Teeth' 'pinion_gear_6t_2.stl' 1e9 0.3 [105 77] [41 41] 1.5e7 ;
'Type1 Hole' 'pinion_gear_6t_1.stl' 1e9 0.3 [54] [53] 1e7 ;
'Type2 Hole' 'pinion_gear_6t_2.stl' 1e9 0.3 [54] [55] 1e7 ;
};
AnalysisTable = cell2table(tmp(2:end,:));
AnalysisTable.Properties.VariableNames = tmp(1,:);
AnalysisNo = [1:4]; %Analysis No
N=length(AnalysisNo);
Tbl = AnalysisTable(AnalysisNo,:)
解析モデルの作成
for i=1:N
model(i) = createpde('structural','static-solid');
importGeometry(model(i),Tbl.StlFile{i});
generateMesh(model(i));
end
3Dモデルにフェースラベルを表示
[s,tbl_i]=unique(Tbl.StlFile);
for i=[tbl_i]'
figure;
pdegplot(model(i),'FaceLabels','on','FaceAlpha',0.5);
title(Tbl.Title(i));
view(30,30);
end
マテリアルの構造特性と負荷の設定
for i=1:N
structuralProperties(model(i),'YoungsModulus',Tbl.YoungsModulus(i), ...
'PoissonsRatio',Tbl.PoissonsRatio(i));
structuralBC(model(i),'Face',Tbl.FixedFaceNo{i},'Constraint','fixed');
structuralBoundaryLoad (model(i),'Face',Tbl.LoadFaceNo{i},'Pressure',Tbl.Preassure(i));
end
解析実行
for i=1:N
result(i) = solve(model(i));
end
コンポーネントの変位をプロット
figure;
PlotCol=2;
for i=1:N
subplot(ceil(N/PlotCol),PlotCol,i);
pdeplot3D(model(i),'ColorMapData',result(i).Displacement.ux);
title([Tbl.Title(i) " X-displacement"]);
colormap('jet');
caxis([0 1e-4]);
end
コンポーネントのストレスをプロット
figure;
for i=1:N
subplot(ceil(N/PlotCol),PlotCol,i);
pdeplot3D(model(i),'ColorMapData',result(i).VonMisesStress);
title([Tbl.Title(i) " Stress"]);
colormap('jet');
caxis([0 5e7]);
end
参考
さいごに
AutoDesk Fusion360のようなホビー用途で使えるCADにもCAEの解析機能があります。MATLABのスクリプトでは、いろいろなパターンをまとめて解析するような使い方でメリットがありそうです。