グラフィック気圧計の完成と、腕時計自動巻き機の制作
今年始めから手がけてきたSTM32F107と2.4インチTFT液晶を使ったグラフィック気圧計(天気予報計になる予定)が、やっと想定した気圧の推移を画面に描き始めた。いやいや、完成までえらい時間がかかった。これから最後のソフト開発について報告するのだが、実はこのプロジェクトと並行して全く別の工作を続けていた。この話を先にご紹介することにする。
その工作とは、以前、動作確認だけやって放置していたステッピングモーターの応用で、機械式自動巻き腕時計の自動巻き機(ややこしい)を作る工作である。
自動巻き腕時計は、使わないときの管理の方が面倒である(5/6/2012)
所長は、いわゆる時計マニアではない。しかし、そこは機械好きのこと、随分昔になるが有名ブランドの自動巻きの腕時計をボーナスをはたいて手に入れている。以来これを愛用している。
自動巻き時計は、正確さということではクオーツの足元にも及ばないが、電池切れの心配を全くしないで良いし、機械だけでこれだけの精度(日差数秒)を保つ堅固な精密品を持っているという満足感が心を豊かにしてくれる。
ところが、最近は腕時計でありながら電波時計で、しかもソーラー電池で電池交換不要という正確で全くメンテナンスフリーの時計が、ずいぶん安くなってきた。GPSを受信して世界中で時差の調整不要な最新式の時計にも食指は動くが、スポーツ用の安物のクォーツ腕時計が壊れたのを機に、物欲を押さえることができなくなり、セイコーの電波ソーラー腕時計を衝動買いしてしまった。
買ってみて軽くて具合が良いので、仕事にもつけて歩こうとしたが、心配なのは自動巻きの腕時計の方である。機械式の自動巻き腕時計は、毎日、腕に巻いていないと、2日ほどで止まってしまう。長時間時計を止めておくことは、時計にとって良いことではないし、使うときには、竜頭を起こして時刻合わせをしなければならず、これを続ければ防水性も損なう。
世間にはこういうときのために、はずした腕時計をぐるぐる機械でまわして自動的にネジを巻いてくれる自動巻き機というのが用意されている。時計マニアの中には、ここに3つも4つも腕時計を入れて管理しているのをみかける。一方向だけ廻るのでなく、休みをとりながら回転方向を変える。こった機械になると、手の動きのようにスイングして巻くものもある。
値段も中華製なら¥3000くらいからあり、そう高いものではない。でもカタログをウェブで見ているうちに思いついた。そうだ、何も買うことはない。当研究所には、モーターがごろごろしているではないか。これを利用しない手はない。
腕時計をぐるぐるまわすだけの機械である。こんなものは電子工作ではないと叱られそうだ。確かに、ただ回すだけなら面白みがないが、一定期間まわしたあと休みをとりまた動かすという操作は、マイコンにとっておあつらえ向きの仕事である。既製品と違ってどんな回し方にもできる。自作の強みだ。
当研究所にとっては、マイコンのソフトやモータードライバーの部分はともかく(あとでいくらでも変えられる)、機械部分をどう作るかが一番の課題である。色々考えた末、千石のロボット部品館で、ステッピングモーターのシャフトに部品をつけるジョイント(継ぎ手とでも呼ぶのか)を買ってきた。
手持ちのステッピングモーターの速さとトルクから、減速する必要はなく直結で十分だという判断である。ただ、このジョイント、先が6ミリネジで、もう一方がシャフトを入れるハウジングがあるだけのものだが¥500もする。モーターの半分の価格である。ロボット用部品はどうも高すぎる。
シャフトの太さをあらかじめ測って、内径6.0ミリのジョイントを買って帰ったきたのだが微妙に入らない。スペックを見ると、このモーター(ST-42BYG0506H)のシャフト径は、なんと6.2ミリであった。
どちらかを削らなければ入らない。シャフトを削るのはモーターを傷めそうなので、ジョイントの内側を削ることにする。しかし、めくら穴をやすりで削るのは容易ではない。そのうちルーターの小さい丸砥石で削ることを思いついた。早速やってみる。うむ、手でやっているよりはかどる。少しづつ削って、何とか全部入るようになった。
時計を入れるケースは、このあいだハンズから買ってある。腕時計をまいた形でクッションをかませて入る大きさのアクリル円筒、要するにコップである。円筒の真ん中に穴を開ける。3ミリの下穴から慎重に開けたつもりだが、やっぱり、ヒビが入ってしまう。まあ¥190の部品だ、試作ということで許してもらおう。
ブレッドボードに残してあったステッピングモーターのFETドライバーで早速まわしてみる。うむ、回転を遅くすると、モーターはうなりが大きくなるが、予想通り、この程度の負荷は全く問題なく力強く廻る。あとは、この組み立てである。ただ、音がゴーゴーと騒がしい。
アクリル曲げ器の最初の実用品(5/10/2012)
すんさん掲示板のばんとさんの記事に刺激されて自作したアクリル曲げ器で始めて実用品を作る機会が訪れた。自動巻き機のフレームをアクリル板を曲げて作る。手持ちの厚さ2ミリと3 ミリのアクリル板を検討して、3ミリの方を選ぶ。2ミリの方が工作しやすいが、振動が心配だ。
形は単純で、50度ほどの角度で板を曲げるだけである。斜め方向にモーターをセットし、円筒を傾けながら回す。ただ、3ミリのアクリル板がうまく綺麗に曲がるかが問題だ。板を曲げる前にモーターの取り付け穴を定規で測ってアクリル板の養生紙の上に描く。
この前買ったドリルスタンドで、直径22ミリのステッピングモーターの出っ張り部を3ミリドリルを連続的にあけて切り出す。アクリル板でも厚さ3ミリ程度になると、ちょっと緊張するが順調に22ミリ径の内側に失敗もなく連続穴が開いた。切り取った後をやすりで整形する。
4隅の取り付け孔は、ひび割れを心配してセンターポンチを使うのをさぼったため、正確に開けられなかった。丸やすりで調整する。まあ、ここはネジで隠れるので、あまり神経質になる必要はない。とりあえず組み立ててみる。よーし、全部ネジ穴が揃った。
モーターの取り付け孔の工作はうまくいった。モーターをアクリル板から取り外し、いよいよアクリルを曲げる工程に入る。久しぶりにアクリル曲げ器に電源を入れ、温度を230℃に設定する。順調に7セグLEDの温度が230℃に上がり、±10℃で安定する。外部はこれで150℃近辺になるはずだ。
慎重にアクリル板の目印に引いた線に曲げ器のパイプを当てる。アクリル板が3ミリと相当厚いので本当はいけないのかもしれないが(曲げたところが一直線にならない)、不安なので両側をあてて加熱した。暫くするとユリゲラーのスプーン曲げのように、アクリル板は、突然、柔らかく曲がり始める。
アクリル板はあっけなく90度以上簡単に曲がり、予定したフレームが完成した。早速モーターを取り付けなおし、円筒をシャフトにつけて試運転する。モーター音が大きく、振動するのでアクリル板の底部には何かの滑り止めが必要かもしれない。マイコン基板は、台の上にセットすれば良いだろう。
暫く、ブレッドボードのモータードライバーで時計を回してテストする。このモータードライバーはUARTで正転・逆転や速度の制御が出来るので、PCキーボードで指示しながら曲げ器の運転をシミュレートする。30分も回せば、一日、時計は止まらないことがわかった。ただ、音がうるさい。ステッピングモーターには、色々な制御方法があるが、音が静かになるというマイクロステップ制御を試したくなってきた。
マイクロステップ制御はお手本が少ない(5/12/2012)
正転、逆転、休止などのモーターの運転制御は、マイコンなので、どんな複雑な動きにも対応できる。運転プログラムをどういう形で作るか、あれこれ考える。EEPROMに基本スケジュールをあらかじめ作ってしまっておき、UARTでその修正をするというのが、一番素直なようだ。
それより、マイクロステップ制御である。今ブレッドボードにあるマイコンは、ATTiny2313だが、8ピンAVRを使ってみたい気もする。ただ、マイクロステップ制御はPWMなので8ピンAVRがどれくらいPWMチャネルを持っているか調べてみた。
マイクロステップ制御は、4チャンネルのPWMが必要だ。残念ながら、手持ちの最安価のTiny13は、PWM出力を2つしか取り出せず、Tiny45以上が必要のようである。Tiny85ならDigiKeyで買ってある。
ウェブを漁るが、ステッピングモーターを静音で動かせるマイクロステップ制御については意外にも資料が少ない。前のPID制御のときと同じだ。理論的な話や基礎的な話は、いくらでもあるが、では実際にどういうクロックで、どんな波形でやるのが良いのか参考になるサンプルが極めて少ない。
特許のページがいやに目に付く。このへんの工夫やしかけはソフトと違って特許で守れるので、それで具体的な話が少ないのだろうか。大体この秋月で買った¥1000のモーター(ST-42BYG0506H)でPWMのマイクロステップができるかどうかもわからない。
最初、3角波で良いかと思ったが、正弦波が良さそうだという話もあり、別のサイトでは台形波を勧めている。 ハードは揃ったが、ソフトの準備が思いのほか手間取りそうだ。まあ、このあたりは電子工作でも、一番楽しいところだ。存分に悩んでみよう。
グラフィック気圧計の完成近づく(5/11/2012)
STM32のソフト開発の方である。このあいだTFT液晶で枠線を引くことが出来て、最後の仕上げ、グラフ描画のソフト開発の段階まで来た。
日付線や、時刻の表示など補助的なグラフィックは、ダイナミック表示(グラフが時間とともに移動していく)のため、とても面倒だったが、これは擬似コードをかなり周到にやって見通しがついた。あとはこれをC言語ソースに替えれば良いだけになっている。
擬似コーディングから実際のCコードに落とす作業は、擬似コードのレベルにもよるが、単純作業に近くなるので進捗は早い。オリジナルのプログラムを大幅に変えて本来のグラフ描画に絞った関数を残し、FatFS関係を削除する。こちらのほうが大変である。
FatFS関係だけ削れば良いと思っていたら、グラフィックのファイラー部分は、FatFSの関数を呼ぶところが各所に散在し、いたるところをコメントアウトしていかねばならない。画面描画の部分も残っているので、全部なくすわけにもいかないのだ。
それに、あまりフラッシュが小さくならない。どうしてだろう。フォントファイルが大きいためなのか。日本語フォントは今のところ使うつもりがないが全部消してしまうとあとから復活させるのが大変なので残しておきたい。それにこの部分だけの削除はもっと大ごとだ。
なんとか整形して、テストを始める。うーむ、動かなくなった。グラフは一部出ているので、どこか途中で暴走している。テストステートメントを挟んで、慎重に暴走地点を探す。ふむふむ、EEPROMから気圧データを読み出すところでハングしている。
EEPROMに蓄積する日付と気圧データは、視認性を高めるためと、今後のデータの編集を考慮して、キャラクターになっている。グラフ描画のときは、このキャラクターデータをバイナリーに戻す作業にChaNさんのxatoiを使わせてもらっている。これがどうもうまく動かず暴走しているようだ。
この関数は強力だが、アドレス、ポインターを多用しているためちょっとでも間違えると、一瞬にしてハングアップしたりリセットしたりする気難しい関数だ。いつもは威力を発揮するprintfデバッグだが、STM32のUART出力はバッファーを使っているらしく、こういうポインター間違いで一気に暴走するバグには無力である。結果をUARTに出す前にハングアップしてしまう。
いくら調べても原因を究明できない。そのうちじれてきて早く結果が見たいので、xatoiを使わず、自前のルーチンでキャラクタからバイナリに戻すステップを急遽追加する。20桁近い文字の変換だが、この際きれいごとは言ってはいられない。
気圧計が動いた。やっぱり文字が小さすぎるな(5/14/2012)
この改修で、やっと、プログラムは正常に気圧を出すところまで進んだ(10分間隔)。画面の下に、赤い気圧点が見える。うーむ、このTFTの赤は暗いのでこれでは見難い。1ピクセルではなく、2X2のレクタングルにしてやる。うはあ、画面が赤線だらけになった。画面関数の引数を間違えたようだ。
利用させてもらって文句を言うのは気まずいのだが、この描画関数群は、引数の座標の順番が微妙に少しづつ違っているので用心しないといけない。XとYが逆になっている関数もある。今度の関数の引数は、XYの順番にはなっているが、X1,Y1 X2,Y2ではなく、X1,X2 Y1,Y2だった。
指定どおりに引数を直して、無事、少し濃い赤点がでた。暫く放置してグラフになっていることを確かめる。よーし、これでグラフィック気圧計は正常に動き始めた。いやあ、それにしても時間がかかったな。ほぼ4ヶ月かかった。グラフ全体が時間とともに動くという仕掛けが、ソフト開発では特に手間どった。
半日ほど動かして、グラフの横軸(気圧)のスケーリングが大きすぎて、殆ど気圧の変化が見えないことがわかった。大幅にスケーリングを見直す。最初は、950hPaから、1150hPaという、MPL115気圧センサーの測定可能範囲にしていたが、これを980から1030という狭い範囲にする。
これで、やっと気圧の変化がはっきりするようになった。すんさんの気圧計のグラフの範囲も、970と1030になっていた。何だ、始めからこれを参考にすれば良かったのだ。へそ曲がりで人のものを参考にしたがらない性格がこういうときに損をする。
水色で枠をつけてグラフが引き締まり、気圧計らしくなった。下側に、細かく目盛りをつけたりして悦にいる。ただ、時刻と気圧を表示する文字がやっぱり小さすぎる。それに天気予報の機能はまだ何も考えていない。
今後の計画は、まだ具体的には決めていない。天気の予報をしなくても、グラフの気圧変化を見ているだけで、この先の天気が雨模様になるのか、回復するのかは大体のことがわかる。あらためて数値解析をして予報を出す必要があるか悩ましいところだ。ま、これも暫く悩んでみることにしよう。
ソースコードの公開は、このブログの容量制限(1MB)を越えるため、今のところ出来ません。いずれ、別のサイトからでも引けるようにしようと考えております。もし、ロジックだけでも知りたいという方がおられれば、このサイトに部分的に置くことにします。コメントをお寄せください。
| 固定リンク
「電子工作」カテゴリの記事
- 生存証明2(2022.10.19)
- 生存証明(2022.01.23)
- パソコン連動テーブルタップの修理を諦めて自作(2021.02.16)
- 半年ぶりのブログ更新に漕ぎつけた(2019.09.19)
- 研究所活動は停滞したままでCCDカメラ顕微鏡導入など(2019.02.08)
「ARM」カテゴリの記事
- 心電計プロジェクト:スケールが出ると心電計らしくなる(2015.01.08)
- 心電計プロジェクト:TFT液晶に念願の心電波形が出た(2014.12.18)
- 心電計プロジェクト:STM32F103の心電波形表示で悪戦苦闘(2014.12.03)
- 心電計プロジェクト:CooCoxでARMの表示系ソフトを開発する(2014.10.16)
- 心電計プロジェクト:表示部のARM基板の開発環境を一新する(2014.09.19)
コメント
>それならば、コモンを使わずに
なるほどね。ただ、バイポーラは、逆転のフェーズを入れなければならないので、
マイコン側の手間はあまり変わりませんね。
現在は、4つPWMが使えるTiny2313でお手本どおりユニポーラ駆動を
やろうと準備しています。また、何かあったら教えてください。
投稿: がた老 | 2012年5月19日 (土) 13時36分
いつも楽しみに拝見させていただいております。ARMフリー開発環境でCooCoxなるものがあります。デバッガサポートおよびRTOSまでついているようです。もし興味がありましたらお試しあれ。今後もブログ楽しみにしています。
投稿: 通りすがり | 2012年5月18日 (金) 21時54分
> ユニポーラ
普通は、4つのコイルは、2組に分かれており、2個のコイルのコモンがあるので、6本ワイヤーが出ていると思います、それならば、コモンを使わずにユニポーラのモーターと同等に扱えると思います。
※定格電流に必要な電圧が二倍必要になります。
※高速に回さないのであれば低い電圧でも大丈夫でしょう。
>PWMでがガタつきは抑えられるものなのでしょうか?
理論的には、完全なsinとcosで励磁すれば、振動は無くなり、同期モーターやブラシレスモーターと同等になります。
PWMの周波数はコイルのインダクタンスと加える電圧に関係しますが、sin、cosの周波数より十分高くしなければなりません。
難しいのは、コイルに流れる電流の比を厳密に制御しなければならないので、流れる電流をフィードバックして制御する必要があります。
投稿: hira | 2012年5月18日 (金) 12時39分
ばんとさん、hiraさん、コメントありがとうございます。
>PWMでがガタつきは抑えられるものなのでしょうか?
理論上は、滑らかになるはずですが、やってみないとわかりませんね。
PWMはパルスなのでかえってうるさくなるかも。まあ、これも楽しみのうちです。
>4相コイルを、2相で励磁して、フルブリッジ2組で動作させるのが判りやすいと思います、(PWMは2組で良い)
フルブリッジ2組(PWMも2組)で動かすのは、バイポーラモーターではなかったでしょうか。残念ながら、この秋月のステッピングモーターは、ユニポーラで、これをPWM2チャンネルで動かせるのなら、嬉しいのですが。
投稿: がた老 | 2012年5月18日 (金) 01時14分
いつも楽しく読ませて頂いてます~
マイクロステップですが、4相コイルを、2相で励磁して、フルブリッジ2組で動作させるのが判りやすいと思います、(PWMは2組で良い)内部2組のコイルに発生する磁力の比が、90度に直行するベクトルX、Yの合成なので、sinとcosの関係で、流れる電流を制御すれば(電圧では無い)良いと思います。
WEBで探せば(東芝とか)、マイクロステップ動作を行うICもあるので参考になると思います。
投稿: hira | 2012年5月17日 (木) 19時23分
ぱっと見たステッピングモータの写真ではなんだか分からなかった
のですが、じっくり本文を読んで了解しました。8(^_^)8
ボクは動くものが好きなので、モータの電子工作をやってます。
最近作ったステッピングモータ使った倒立振子ロボットは、すこ
しガタつきます。
ステッピングモータの動きは、どうしてもガタつきますョね。
PWMでがガタつきは抑えられるものなのでしょうか?
倒立振子ロボットを現行のPICからmbedにリプレイスする予定
なので、PWMで制御してみようかな…
勉強させてもらいます。今後ともよろしく。
投稿: ばんと | 2012年5月17日 (木) 18時59分
>次のプロジェクトに、気圧計を持ってこようかな?
それはそれは、O-Familyさんも喜ぶでしょう。
立ち上がりは気にすることはありません。私だって
買ってから、作り始めたのは、半年以上たってからです。
どうせ、気圧センサー買うのなら、我々のMPL115でなく、
BMP085で、高度計を作るなんておしゃれですよ。
ブログにも書きましたが、ちょっと高い(\2000)けれど、
1mの高度差まで余裕で実測可能なようです。
投稿: がた老 | 2012年5月17日 (木) 15時43分
がた老さん、お疲れ様です。
ステッピングモーターもやられていたのですね。
モーター系もやってみたいのですが、中々手が回りません。
因みに私が使用している時計は、カシオのG-shockで、
正に、「電波時計で、しかもソーラー電池で電池交換不要」
ってものです(汗;)。バンドが壊れたら、駄目っぽいで
すが・・。
O-Familyさんのところにもちょっと書きましたが、次の
プロジェクトに、気圧計を持ってこようかな?
と、思っています。
マイコンを何にするか?から考えていますので、ちょっと
立上がりは、遅いかも知れませんが、宜しくお願いします。
投稿: shuji009 | 2012年5月17日 (木) 01時24分