光速世界 - mbed

制御できるものとして、マイクロ秒、ナノ秒の世界が広がっているのが、このプロジェクトで個人的に面白いところ。普通にコンピューターを使ってるんじゃあ、逆にそこまでの精度にはたどりつけない。
光の速さは、秒速299,792,458m。1ミリ秒あたり299,792m、そして1マイクロ秒では299mって、光の速度がリアルに感じられるところまで降りてきてるんだよ!

そんな風にツールによって、新しい視点を得ること、感覚が拡張されていくこと。これはプログラミングを学ぶこととも同じ。プログラミングを学べば、途端にいろんな現象から、その骨組みが透けて見えるようになってくる。物理という現実世界のSpecification。その仕様に沿ったpre-programmedなものとして世界を眺めることができる。順列都市

__

Arduinoでの高速パルスは結局、これ http://code.google.com/p/digitalwritefast/ を使ってみたわけだけど、それで2tick、125ns。
Timerは http://www.pjrc.com/teensy/td_libs_MsTimer2.html このFlexiTimer2を使った。

ACモーターはやっぱり誤差があって、レーザーとシンクできないので、ステッピングモーターの世界。使っているステッピングモーターの分解能、500分割を1500rpm(25rps)で回そうと思うと、12.5kHzのパルスが必要。いきなり、その速度では、脱調してしまって回らない。ちゃんと加速のカーブを描いてあげなきゃいけないのだけど、そこまでやってると、Arduinoではもうセクシー過ぎてデレデレになってる。

__

かくして、mbed発注、そしてこの高速世界を観測するのにやっぱりオシロスコープは必要だろうと、 http://www.seeedstudio.com/depot/dso-nano-v2-p-681.html?cPath=174 こちらのDSO nano(の一個バージョン古いやつ)も一緒に発注。日本だとSwitch Science http://www.switch-science.com/products/detail.php?product_id=466 で買えます。

mbedのonline editerのUIがださい、とかいろいろ問題はあるけれど、mbed、速い。あっさり250kHzくらいのパルスがハック無しででる。digitalOutのスイッチング速度、上がり下がりそれぞれ2usくらい。ArduinoにおけるdigitalWriteFastがあるみたいに、mbedでもFastIO http://mbed.org/users/igorsk/programs/FastIO/5zey5 があるので、これをうまく利用すれば、ステッピングモーター用のパルスの処理をしつつ、レーザーを細かく刻むにも充分なはず。

DSO nanoも安い&コンパクトな割にきっちり動いて非常にナイス。

そして改めてステッピングモーターと戦うわけだけど、mbedの標準のSDKではdelayやTimer(Ticker)が、us単位でしか刻めないので、前述のステッピングモーターの加速のカーブが速くなればなるだけ、階段状に上がっていくのが目立ってしまう。そして、6kHzを超えた辺りで、その壁を超えられず脱調。。。パルスのスピードとしてはまだまだ全然出るはずだから、結局、wait_usをハックしてもっと滑らかな加速のカーブを描かないと、、、

てか、こんなニッチなノウハウ、書いてもしょうがないか、、、普通にやる分にはArduinoでFlexiTimer2、もしくはMsTimer2を知ってると非常に便利ですよー、といった具合か。