ノウサギとリクガメの時計

直動式の壁掛け時計を作りました。

IMG_0355.jpg

設計データ・プログラムはこちら。 https://github.com/ayumu-bekki/hare_tortoise_clock hare_tortoise_clock_drawing_preview.png

設計・行なった検証など

  • 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というモータードライバを採用。ただし情報はあまり無し。 motor_drivers.jpg ステッピングモータードライバーの利用方法については以下の記事を参考にしました。 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から設定・制御できるようにしました。 clock_control_panel.png

書籍『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

  • 機械設計について サイズを抑えるために、モーターブラケットとアイドラープーリーブラケット・スライドベースは独自に設計しました。 setup_parts.jpg setup_motor.jpg 当初はパイプとリニアブッシュの組み合わせで設計を行いましたが、複雑かつサイズがあまり小さくならなかったことから再検討を行いました。ミスミのサイトを巡っていると、リニアガイドがそこまで高くない事が判明したので設計を切り替えました。

アイドラープーリーの固定を真面目に行なっている記事が少なく悩みましたが、ミスミの事例ページで片持ちピンを利用する手法が紹介されていたので、これを採用。 https://jp.misumi-ec.com/ec/incadlibrary/detail/000831.html idler_pulley.jpg

  • 金属加工業者 切削パーツはPCBWayに発注。 https://www.pcbway.com 板金パーツは、単純なものは自身で、複雑なものはレーザーで切り出したかったのでMeviyに発注。 https://meviy.misumi-ec.com/ cnc_parts.jpg

  • 実装でやらかした問題 マイクロスイッチの高さがギリギリすぎてONにならない問題があったので、スライドベースにワッシャーを挟んで高さ調整。問題点はその程度(GitHub図面フィードバック済み)

外部のケースを作る際に、左右のパーツを入れ替えて接着してしまいました。修正は不可と判断。電源入力の位置が変わるだけなので、配線を変更することで対応。(なので図面と実装物が異なっています) case.jpg

実装後振り返り

  • ミスミの機械設計ページが役立った https://jp.misumi-ec.com/tech-info/

  • ステッピングモーターの静音化対策 モーターとモータードライバーの組み合わせ速度次第。

  • リニアガイドの静粛性について誤算 今回、初期はリニアブッシュで設計していたが、コスト面でリニアガイドを利用しても変わらず、設計と実装が簡単になるというメリットがあったので、リニアガイドを採用しました。 リニアガイドは比較的音が出ないパーツではあるが、今回のように音をなるべく出さない用途には向かない。 また、リニアガイドの必要推力が思っていたよりも必要だったことも想定が外れていました。 動摩擦係数にするとリニアガイドは0.004〜0.006μでリニアブッシュは0.002〜0.003μなので倍違うことになると思いますが、感覚的にもこの分の差はあると感じています。(更に動摩擦係数が低いリニアブッシュも存在します)

このような問題から、可能な限り音を出さないよう挙動を遅く調整することになった。(機械的にはもっとスピードを出せるが…)

  • 無理にステッピングモーターを外部から動かすとモータードライバーが死ぬ モータードライバとマイコン 1枚が犠牲になりました。蓄積ダメージもありそう。

  • 厚めの堅木をトリマーであられ組加工するのは無謀。 軟木で10mm厚以下なら気合でなんとかなるが、堅木で厚さがある場合は精度を出さないと木が割れる。 昇降盤・コーナーロッキングマシン・CNCいずれかの利用を検討すべき。 トリマーでテストを行い実装できる自信が持てず、その場で設計を変更して対応。

  • 金属切削加工業者について 今回、PCBWayに発注したが別に納期もコストも優れているという感じではなかった。(物によると思います) PCBWayは春節付近だったためか、手元に来るまで16日ほどかかりました。これだと、Meviyの20日納期の方が安くなる。ただ、スライダーのパーツはMeviyだと自動見積もりが取れないタイプだったので、良し悪しはある。(ただし自動見積もりが取れないタイプは設計が怪しい場合があるので、ちゃんと判定してくれるMeviyの方が安心) 更に、PCBWayは関税が思ったよりも高くついたのがコストに響いた。 そのため、今回のスライダーのパーツは一体成形でやらずに、モーターベルト固定と嵩上げの箇所に汎用品を使うようにするべきだった。(Meviyでも発注できるので)

  • 設定をBluetooth経由でできるようにしたのは良かった 部品・実装のコストが減少し、機械設計の自由度が上がった。

  • レーザーカッターは楽しい laser_cut.jpg

この記事へのコメント