ミニ四駆用6Tピニオンギアの試作とMATLAB を使ったFEM構造解析

# はじめに
Raspberry Piなどを使ったロボットカーの製作にミニ四駆のキットを使っています。
カスタムパーツが豊富で、近所のお店で手軽に入手できるので便利です。
しかしながら、ミニ四駆はめっちゃスピードが速いため、低速域での速度制御が難しいところがあります。
そこで、3Dプリンタを使って6Tピニオンギアを自作し、ギア比の変更を試みました。:sunglasses:
造形したピニオンギアの強度には課題もあっため、形状の改良をおこないました。
ここでは、MATLABによるFEM構造解析を試みてみます。


# 3Dプリンタを使った6Tピニオンギアの試作

## ミニ四駆のギア比
カウンターギアとスパーギアの組み合わせでギア比を変更できるようになっています。

| ギア比| カウンターギア | スパーギア |
|:-----------:|:------------:|:------------:|
| 3.5:1       | 水色        | イエロー         |
| 3.7:1       | みどり        | イエロー         |
| 4:1       | ブラック        | うす茶         |
| 4.2:1       | レッド       | うす茶         |
| 5:1       | ブルー        |きみどり         |

参考 【ミニ四駆】ギア比徹底解説
<iframe width="560" height="315" src="https://www.youtube.com/embed/V4el5rBQORg" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>


ミニ四駆標準の8Tピニオンギアを使った場合、最も低速なギア比は5:1ですが、6Tピニオンギアを使った場合、5*(8/6):1 ≒ 6.7:1となります。

## 3Dモデル
左側の形状では、回転中の負荷でギアの溝が割れることがありました。

- 改良前（左）[STLファイル](https://github.com/covao/FEM_PinionGear_MATLAB/blob/main/pinion_gear_6t_1.stl)
- 改良後（右）  [STLファイル](https://github.com/covao/FEM_PinionGear_MATLAB/blob/main/pinion_gear_6t_2.stl)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/329764/ad0e3c13-96aa-aed0-3784-2bf075a459d6.png)

## 光造形による3Dプリント
材質　[ELEGOO 光造形3Dプリンター用水洗いレジン](https://www.amazon.co.jp/dp/B07Y1QVMB2)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/329764/28a59d09-716f-f49b-e2b8-5e48e022fe8b.png)

## スペーサー
ギアがかみ合うようにするため、8Tピニオンギアよりも直径を少し小さくしています。
かみ合わせをよくするため、ワッシャーをマスキングテープで張り付けてスペースを調整しています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/329764/fed2a336-7108-bedb-a859-09eaf1eae17d.png)


## 試作したピニオンギアの回転動作

![IMG_3887.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/329764/043d9c6f-7d49-9783-e465-2ce3f85097ef.gif)



# MATLABを使った6Tピニオンギアの構造解析

## 使用したツール
- MATLAB 2021A (MATLAB Home)
- [Partial Differential Equation Toolbox](https://mathworks.com/products/pde.html)

## デモファイル
作成したライブスクリプトデモを[GitHub](https://github.com/covao/FEM_PinionGear_MATLAB)に公開しています。

## 解析用テーブルの定義
```matlab
%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,:) 

```

## 解析モデルの作成
```matlab
for i=1:N 
    model(i) = createpde('structural','static-solid');
    importGeometry(model(i),Tbl.StlFile{i});
    generateMesh(model(i));
end

```

## 3Dモデルにフェースラベルを表示
```matlab
[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

```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/329764/e8f30545-be79-6934-7c42-4ed730669b8e.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/329764/c3739f82-38d1-ac09-1b50-1e5bf5a590df.png)

## マテリアルの構造特性と負荷の設定
```matlab
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

```

## 解析実行
```matlab
for i=1:N
    result(i) = solve(model(i));
end

```

## コンポーネントの変位をプロット
```matlab
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

```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/329764/d0739a27-1eae-96d8-1970-c9a10e3be509.png)

## コンポーネントのストレスをプロット
```matlab
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

```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/329764/59142063-8cfa-e66f-aeaf-6a1d5bb6d78a.png)

# 参考
- MathWorks社ドキュメント [Partial Differential Equation Toolbox Example > Deflection Analysis of Bracket](https://mathworks.com/help/pde/ug/deflection-analysis-of-a-bracket.html)

# さいごに
AutoDesk Fusion360のようなホビー用途で使えるCADにもCAEの解析機能があります。MATLABのスクリプトでは、いろいろなパターンをまとめて解析するような使い方でメリットがありそうです。