直動式の壁掛け時計を作りました。
設計データ・プログラムのリポジトリ(GitHub)
https://github.com/ayumu-bekki/hare_tortoise_clock
設計・行なった検証など
ESP32でステッピングモーターを動かす。
ESP32はPWDが利用できますが、esp-idfにあるledcやmcpwmは、指定したパルス数を出すという仕組みがありません。
そのため、別の方法を検討するためにウェブを彷徨っているとGPIO + nopを組み合わせる方法で組み込んでいる人がいました。しかし、これだとCPUリソースを使い果たしてしまい制御が危ういため却下。
最終的に、General Purpose Timerの割り込みでGPIOをOn/Offする仕組みで実装しました。
今でも設計として適切か否か怪しいと考えていますが、オシロスコープで確認したところ指定した周波数がしっかり出ていることが確認できました。(10khzまで確認済み)
ステッピングモーター制御用クラスはこちら。(C++)
https://github.com/ayumu-bekki/hare_tortoise_clock/blob/master/main/stepper_motor_controller.h
時計制御用のCPUコアとは別のコアかつ非同期でステッピングモーターを動かしたかったので、あらかじめ別コアでタスク(スレッド)を作ってFreeRTOS Queueを待ち受けて動かす仕組みにしていました。
しかし、esp_pthread_set_cfgでスレッド作成時のコアを指定できることが分かったので、std::asyncを利用する方法に変更してコードを簡素にしました。
https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-reference/system/pthread.html
ステッピングモータードライバーと静音性
ステッピングモータードライバーは情報が多いA4988を使いましたが、モーターからの音がうるさく時計用途にステッピングモーターは使えないのではないかと思いました。しかし、3Dプリンターの静音化を試す記事でモータードライバーの変更により静穏化が可能という話を聞き、他のモータードライバーをいくつか仕入れました。
今回は最も静かだったAT2100というモータードライバを採用。ただし情報はあまり無し。
ステッピングモータードライバーの利用方法については以下の記事を参考にしました。 https://howtomechatronics.com/tutorials/arduino/how-to-control-stepper-motor-with-a4988-driver-and-arduino/
ステッピングモーター選定
今回の用途ではトルクがあまり必要ではないので、大きさ(特に薄さ)で決めてしまいました。
https://ja.aliexpress.com/item/4001014382025.html
ステッピングモーター17hs08 1004s配線
1A (A+ Blue)
1B (A- Red)
2B (B- Black)
2A (B+ Grren)
設定をBluetooth Low Energyで行えるようにする。
物理ボタンを設置したくなかったので、Bluetooth Low Energyから設定・制御できるようにしました。
書籍『Bluetooth Low Energyをはじめよう』 (Make:PROJECTS) を購入したが、Webにある記事で十分だった。
Bluetooth Low Energyについては以下記事で学びました。
https://www.musen-connect.co.jp/blog/course/trial-production/ble-beginner-1/
クライアントはBlueJellyを利用。
https://monomonotech.jp/kurage/webbluetooth/getting_started.html https://github.com/electricbaka/bluejelly
機械設計について
サイズを抑えるために、モーターブラケットとアイドラープーリーブラケット・スライドベースは独自に設計しました。
当初はパイプとリニアブッシュの組み合わせで設計を行いましたが、複雑かつサイズがあまり小さくならなかったことから再検討を行いました。ミスミのサイトを巡っていると、リニアガイドがそこまで高くない事が判明したので設計を切り替えました。
アイドラープーリーの固定を真面目に行なっている記事が少なく悩みましたが、ミスミの事例ページで片持ちピンを利用する手法が紹介されていたので、これを採用。 https://jp.misumi-ec.com/ec/incadlibrary/detail/000831.html
金属加工業者
切削パーツはPCBWayに発注。 https://www.pcbway.com
板金パーツは、単純なものは自身で、複雑なものはレーザーで切り出したかったのでMeviyに発注。 https://meviy.misumi-ec.com/
設計で失敗した点
マイクロスイッチの高さがギリギリすぎてONにならない問題があったので、スライドベースにワッシャーを挟んで高さ調整しました。GitHub図面フィードバック済み。
また、外装ケースを作る際に、左右のパーツを入れ替えて接着してしまいました。修正は不可と判断。電源入力の位置が変わるだけなので、配線を変更することで対応。(なので図面と実装物が異なっています)
実装後振り返り
-
ミスミの機械設計ページが役立った
-
ステッピングモーターがうるさい!
- モータードライバーによってかなりの差があった
-
リニアガイドの静粛性について誤算
- 今回、初期はリニアブッシュで設計していたが、コスト面でリニアガイドを利用しても変わらず、設計と実装が簡単になるというメリットがあったので、リニアガイドを採用しました
- リニアガイドは比較的音が出ないパーツではあるが、今回のように音をなるべく出さない用途には向かない
- また、必要推力が思っていたよりも必要だったことも想定外だった
- 動摩擦係数にするとリニアガイドは0.004〜0.006μでリニアブッシュは0.002〜0.003μなので倍違う
- 感覚的にもこの分の差はあると感じている
- このような問題から、可能な限り音を出さないよう挙動を遅く調整することになった
- 機械的にはもっとスピードを出せるが……
-
無理にステッピングモーターを外部から動かすとモータードライバーが死ぬ
- モータードライバとマイコン 1枚が犠牲になりました。蓄積ダメージもありそう
-
厚めの堅木をトリマーであられ組加工するのは無謀
- 軟木で10mm厚以下なら気合でなんとかなるが、堅木で厚さがある場合は精度を出さないと木が割れる
- 昇降盤・コーナーロッキングマシン・CNCいずれかの利用を検討すべき
- トリマーでテストを行い実装できる自信が持てず、その場で設計を変更して対応
-
金属切削加工業者について
- 今回、PCBWayに発注したが別に納期もコストも優れているという感じではなかった。(物によると思います)
- PCBWayは春節付近だったためか、手元に来るまで16日ほどかかりました
- これだと、Meviyの20日納期の方が安くなる
- ただ、スライダーのパーツはMeviyだと自動見積もりが取れないタイプだったので、良し悪しはある。
- ただし自動見積もりが取れないタイプは設計が怪しい場合があるので、ちゃんと判定してくれるMeviyの方が安心
- PCBWayは関税が思ったよりも高くついたのがコストに響いた。
- そのため、今回のスライダーのパーツは一体成形でやらずに、モーターベルト固定と嵩上げの箇所に汎用品を使うようにするべきだった。
- Meviyでも発注できるので
- そのため、今回のスライダーのパーツは一体成形でやらずに、モーターベルト固定と嵩上げの箇所に汎用品を使うようにするべきだった。
-
設定をBluetooth経由でできるようにしたのは良かった
- 部品・実装のコストが減少し、機械設計の自由度が上がった。
-
レーザーカッターは楽しい