2019年8月11日日曜日

M5StickC バランスロボ


M5StickC には加速度計、ジャイロスコープ、電池、などが入っており、 モーターとドライバを追加するだけで、倒立振子を作ることができました。
 8月2日のM5Stackユーザーグループミーティングと8月3日4日のメーカーフェア東京で展示しました。

 全体像です。左から、M5StickC、モータードライバ、モーターです。
白い粘着テープは転倒したときの衝撃防止用です。


モータードライバは、共立エレショップのKP-DRV8830。
i2cのプルアップに4.7kΩの抵抗を使っています。
モーターも、共立エレショップのRM0TV0009AWZZ。
軸には、内径0.8mmの熱収縮チューブをかぶせています。
モーターや、基板の固定は両面テープで、かなりいい加減です。



裏側です。


MPU6886対応版はこちら。

2019年5月6日月曜日

ESP32で古時計の精度改善

これまではCPUとしてESP8266を使っていましたが、今回はその上位バージョンであるESP32とOLEDディスプレイが合体したボードを使って、機能と性能の向上を図りました。
モジュールの写真です。


時計と組み合わせた写真です。左が普通の振り子時計(以下重力振り子時計と呼びます)、右は回転振り子時計です。



動作原理を説明します。
振り子に取り付けられた磁石の磁力線を磁気センサーが検出して振り子のタイミングを認識し、時計のギヤ比を使って時計が指している時刻を算出します。一方正確な時刻は、WiFiを通してNTPサーバーから取得します。これらを比較して、時計が遅れている場合は振り子の周期が短くなるように、進んでいる場合は振り子の周期が長くなるように、調整します。

重力振り子の場合は、振り子に取り付けた磁石に対して、電磁コイルで上下方向の力を加えます。これは重力加速度が変化したのと同等の効果があるので、振り子の周期が変化します。下の写真の黒い楕円がコイル、振り子の下端についている円柱状のものが磁石、その直下にホールセンサーが黄色いワイヤーでコイルに固定されています。


回転振り子の場合は、振り子に取り付けた磁石に対して、電磁コイルで水平方向の力を加えます。これは振り子を吊っているワイヤの捻じりばね係数が変化したのと同等の効果があるので、回転振り子の周期が変化します。下の写真は回転振り子に取り付けた正方形の磁石。
下の写真は、ベースプレートの裏に取り付けた、コイルとデジタルコンパスです。



ディスプレイには、現在時刻、誤差、コイル電流に加え、誤差とコイル電流のグラフも表示されます。下は回転振り子時計の例です。2行目の-0000.04が0.04秒の遅れを示しており、113はコイル電流です(範囲は-1023から1023で、最大電流は100mA程度)。
グラフのX軸の範囲は約5時間、Y軸の誤差は+/-0.5秒の範囲を表示しています。


Webサーバーの機能も備えているので、WiFi経由でブラウザからアクセスできます。下の例はパラメータの設定画面です。


重力振り子時計の実験結果です。青が誤差で縦軸は左側、赤がコイル電流で縦軸は右側です。約1週間の測定でほぼ+/-0.1秒以内に収まっています。左の大きな変動は、時計を動かしたためのもの、右側の変動は周囲に置いたものによる影響と思われます。


重力振り子時計用の回路図です。
磁気センサーはデジタル出力のホール素子です。


回転振り子時計用の回路図です。
磁気センサーはi2c接続のデジタルコンパスです。



ソースコードは後日アップロードする予定です。








2019年4月18日木曜日

Auto tuner for anniversary clock

An anniversary clock is a mechanical clock which has a time keeping mechanism called torsion pendulum, where  a horizontally rotating pendulum is suspended by a thin wire called torsion spring.  Anniversary clocks run much longer (up to one year before winding is required) than ordinary pendulum clocks because the rotating speed is very slow.  The name "anniversary" came from  the fact that winding is required once every year.  Anniversary clocks are less accurate than ordinary pendulum clocks.


The method of tuning torsion pendulum vibrating frequency is similar to the method for tuning ordinary pendulum (see this page).  Instead of applying vertical force to the pendulum, the tuning device applies horizontal force to imitate changing the elasticity of the torsion spring.  When the magnetic force pushes back the pendulum, that is equivalent to strengthening the torsion spring which shortens the pendulum period.  Below is the overall photo.


Here is the back of the base plate where you can see a coil to generate magnetic flux and a magnetic sensor (digital compass, HMC5883) to detect pendulum position.


Here is the magnet attached to the pendulum (flat silver square below white ball).


The external tuning device comprises ESP32 with OLED display (WEMOS LOLIN32 OLED), H bridge driver (L9110).


The display shows the time from internet and the clock accuracy, along with graphs of accuracy and coil current alternating every 5 seconds.  In contrast with the tuning device last year whose resolution was 1 second, this device calculates the accuracy to the resolution of 0.01 seconds.  The photo below shows accuracy of -0.04 seconds and relative current of 113.  The graph is showing the last 5 hours of accuracy trend.


Here is the accuracy (blue, left scale in second) and coil current (red, right scale in relative quantity -1023 to 1023) for 24 hours.  You can see the accuracy is within one second.


Here is the same graph with about one month of data.  During this period, clock location was changed, sensor position was changed, main spring was winded up, etc.  Because of these activities, you see the big jump in accuracy and output, but the accuracy came back to within 1 second.


Here is the schematic diagram.


Source code is here.


2018年7月28日土曜日

棒テンプ時計の精度アップ Ver3

メーカーフェア東京2018に出展しました。ご来場の皆様ありがとうございました。


Ver2(リンクはこちら)では糸の長さ調整をリニアサーボで行っていましたが、動作音が大きいのと、故障しやすいことから、ステップモーターに変更しました。

写真です。ステップモーターのねじのストロークは約17mmです。



ステップモーターのドライバーとしては、TIのDRV8834を載せたPololuのボードを使用しました。電流制限があまり小電流にならないので、ENABLE端子をSTEP端子と接続して、パルスの無いときは電流を流さないようにしています。
回路図です。



3日ほど連続で動かして、誤差は+/-10秒に入っています。下の写真が直近8時間のデータで、青い線が誤差(左目盛り、単位秒)、赤い線が制御出力の相対値のグラフです。



2018年7月14日土曜日

サーボを使った超簡単倒立振子

連続回転型サーボを使って簡単に作れる倒立振子の実験をしてみました。赤外線リモコンで操縦できます。


全体像です。


基本は3つのモジュール。これらを両面提テープで貼り付けてあります。


ブレッドボードです。ジャイロセンサーは、GR-KURUMIの使っていないピンの部分に装着しています。


車輪は、サーボホーンに自己融着テープを巻き付けています。


回路図です。赤外線センサーと圧電スピーカーは無くても倒立はします。



ソースコードはこちら

2018年6月13日水曜日

振り子時計の精度改善 - その2

メーカフェアプラハでMAKER of MERIT賞をいただきました。
メーカーフェア東京2018にご来場の皆様、ありがとうございました。




以前実験に使った振り子時計(リンク)は、大きすぎてメーカーフェアに持って行けないので、小型の振り子時計を入手しました。高さ50cm程度のものです。



ドアを開けたところ。



調整デバイスはWROOM-02-DEVを使って作り直しました。



遅れ進みのデータをブラウザでグラフ表示(青線)できるようにしました。正が進み、負が遅れです。+2/-1秒以内に収まっています。赤線は正が振り子を上方向に押し上げる方向、負が振り子を下に引っ張る方向の磁力線の強さを表します。



振り子を350秒ほど止めた後の復帰の状況です。約4時間で誤差がなくなっています。(上はスマホの画面ですが、こちらはタブレット)。



回路図です。



ソースコードはこちら(Source Code)


2018年5月19日土曜日

錘式時計の自動巻き上げ機構

写真の棒テンプ時計は、1日に2回ほど錘を巻き上げる必要があり、結構面倒なので、これを自動化する機構を考えました。錘の紐をループにして、ゆっくり回るモーターで引っ張ります。





モータはAC100Vで1分間に1回転する仕様のものです。これに木製のプーリーを取り付け、紐をかけます。下にぶら下がっているボトルが錘の代用で、330㏄の水が入っています。この重さで紐とプーリーの摩擦を適度に調整します。



下の写真で木製プーリーは反時計方向に回転します。小さいアイドラは紐の引っ張り力を一定に保つ効果を持たせるために付けいています。なんらかの理由で引っ張り力が強くなると、モーターが時計回りに傾くので、モーターケースに固定されているアイドラが紐を右側押して、紐とプーリーの接触の長さが短くなり、引っ張り力が小さくなるという仕掛けです。アイドラの有り無しでの違いは検証してませんが、とにかく、1日2回の巻き上げをしなくて済むようになり、快適です。