M5Stackでソレノイド検査治具を作ってみた
今流行りのマイコンM5Stackシリーズ。
タカハソレノイドコンテストでも、近年M5Stackを使った発明品が数多く届くようになりました。
そんなM5を今回は、ソレノイドの動作検査治具として使ってみました。
治具を作る背景
タカハで製造販売している自己保持ソレノイド🧲

ネットショップで販売しているタイプは、
- 通電して吸引
- 永久磁石の力で保持
- 逆極性で通電して磁力を打ち消して復帰
というとても便利な仕組みです。

しかし今回検査したいソレノイドは、この自己保持タイプのちょっと特殊版で、二層巻・三線式コイルのタイプです。
下巻が吸引用、上巻が復帰用というように、コイルを二重に巻いているタイプのため、極性反転ではなく、どちらのコイルに電流を流すかで動作が決まります。
回路図はこちら↓

回路図で見ると簡単そうですが、実際の巻線後の状態がこちら↓

いや、絶対間違うやろこれ……。
見た目では判断しづらく、この後3色のリード線を結線する工程があるのですが、それを間違えると動作しません。

タカハのパートさん達は毎回正確に結線してくれますが、とはいえ検査は必須!
上巻と下巻の抵抗が違えば抵抗計で検査できますが、困ったことに今回はなんとどちらも30Ω。
つまり、ソレノイドを組み立ててから、実際に動作させて確認するしかありません(泣)
全数検査なので、組立ラインでスムーズに使える検査治具が必要です。
検査治具の構成
それでは早速治具の制作に取り掛かります。
今回の動作フローはこのように設計しました。

メカ設計
3DCADで治具の絵を描いてみました。

治具を構成する部品はこちら↓
- M5Stack CORE2
- タカハ製 マルチコントローラーA
- DCDCコンバーター(DC24V→5V)
- 検査用スイッチx2(スタート・リセット)
- 動作検出用スイッチ
- ACアダプター(DC24V)

一般的にラインの治具や自動機の制御にはシーケンサを使いますが、今回はあえてM5Stackを選択しました。なぜなら……
- シーケンサよりも安価
- M5本体の画面にOK/NGを表示できる
- M5内蔵スピーカーでブザーが鳴らせる
- コンパクトで組み込みやすい
- Wi-Fi/BLE内蔵で、IoT化・DX化の布石になる
だからです。
今回は、M5シリーズの中でも、タッチパネルや内臓スピーカーがついたM5Stack CORE2を使用します。
作業性重視のため、スタート・リセットは物理スイッチを採用しました。
また、今回動かしたいソレノイドは、DC24V仕様でM5からは直接動かせないため、ドライバーとしてタカハ製マルチコントローラーAを使います。(会社にいっぱいあったので)
ケース等は社内で作成しました。



モデリングマシンで削り出し

配線
次は配線です。
M5にポート拡張モジュールを付けて、すべてGROVE端子で接続できるようにしました。
GPIOの割り当てはこちら↓
| 機能 | 役割 | 接続ポート | GPIO番号 | 入出力 | 備考 |
|---|---|---|---|---|---|
| マルチコントローラーAのCH1制御 | ソレノイド吸引 | GROVE A | GPIO 33 | OUTPUT | HIGH:吸引 |
| マルチコントローラーAのCH2制御 | ソレノイド復帰 | GROVE A | GPIO 32 | OUTPUT | HIGH:復帰 |
| リセットスイッチ | リセット | GROVE C (拡張ユニット) |
GPIO 13 | INPUT_PULLUP | LOW:押下 |
| スタートスイッチ | 検査開始 | GROVE D (拡張ユニット) |
GPIO 22 | INPUT_PULLUP | LOW:押下 |
| 動作検出スイッチ | ソレノイド吸着/復帰の状態確認 | GROVE E (拡張ユニット) |
GPIO 27 | INPUT_PULLUP |
HIGH:吸着状態 LOW:復帰状態 |
配線図はこちら↓

組み立てて……
ハードが完成しました!

プログラム
プログラムを組んでいきます。
今回はVisual Studio CodeとPlatformIOを使用して、Arduino(C/C++)言語で書きました。
<ピン配置>
配線時に割り当てた通り、以下のようになっています。
const int PIN_SOL_RELEASE = 32; // ソレノイド復帰
const int PIN_SOL_PULLIN = 33; // ソレノイド吸引
const int PIN_RESET_SW = 13; // リセットスイッチ
const int PIN_START_SW = 22; // スタートスイッチ
const int PIN_STATE_SW = 27; // 動作検出スイッチ<ソレノイドの動作>
スタートスイッチが押されると、以下の動作を自動で行います。
- 復帰コイルを1秒ON
- 吸引コイルを1秒ON
- 両方OFF
コードは以下の通りです。
if (elapsed < RELEASE_MS) {
setSolenoid(true, false); // 復帰
} else if (elapsed < RELEASE_MS + PULL_MS) {
setSolenoid(false, true); // 吸引
} else {
allOff(); // 終了
}<ソレノイドの動作検出>
検出スイッチのON/OFFを読み取り、二層巻ソレノイドが正しく動作しているかを判定します。
- 最初:ON(吸着状態でセット)
- 復帰:OFF
- 吸引:ON
つまり、「ON→OFF→ON」の動作が検出できれば合格です。
コードでは次のようにフラグで管理しています。
if (!stateOn && prevStateOn) sawOff = true; // ON→OFFを検出
if (stateOn && !prevStateOn && sawOff) sawOnAgain = true; // OFF→ONを検出
<状態表示>
M5の画面に状態を表示します。
わかりやすいように、背景色+文字のみの表示にしました。
- READY(灰)→待機
- TEST(青)→検査中
- OK(緑)→合格
- NG(赤)→異常、RESET ボタンが押されるまで表示維持

また、検査結果は画面だけでなく、ブザーでも知らせるようにしています。
- OKの場合→「ピッ」と短い音
- NGの場合→リセットスイッチを押すまで「ピーーー」となり続ける
完成!
治具が完成しました!

実際に動作させてみました。
動画はこちら↓
この治具があれば、もし結線ミスがあっても一発で分かるので安心です(コラ)
M5Stack CORE2を使ったことで、画面+ブザー+マイコン が1台にまとまり、治具全体がとてもスッキリしました✨
将来的には、検査ログの保存や遠隔監視など、さらに発展させることもできそうです。
M5StackとマルチコントローラーAを組み合わせれば、実はソレノイドの制御って結構簡単にできるんです。
ソレノイドをちょっと動かしてみたいときには、ぜひこの組み合わせを試してみてください。
1月のソレコンにもピッタリかもしれませんよ??
タカハ機工の製品ラインナップにも、M5Stack を使用した新商品が登場する日が来るかも……?😲
今後の展開もぜひお楽しみに!
