« 2013年7月 | トップページ | 2013年9月 »

2013年8月

2013年8月25日 (日)

Aruduinoで作るオシロスコープ(3)

九工大さんの簡易オシロスコープ Kyutech Arduino Scope で相変わらず遊んでます。GR-SAKURAで生成した矩形波だけ見ていても、トリガーが理解できないのでちょっと違う波形を見てみたいと。真っ先に思いつくのは正弦波だけど、どうやってArduinoに入力しよう。。。と探していたら、やはり世の中には素晴らしい人が。efuさんという方がテスト信号発生ソフトの WaveGeneというものを作って公開してくださっていました。こちらからダウンロードさせていただきました。Windows上のアプリから内蔵スピーカやヘッドフォン端子から様々な波形を出力することができるものです。

起動するとこんな感じです。 

Wavegenesin100hz
ここでは、100Hzの正弦波をLチャンネルから出力しています。
PCのヘッドフォン端子の3.5mmステレオミニジャックにケーブルを挿してステレオミニプラグケーブル経由で Arduino に信号を入れます。プラグの根本からGND,R,Lですので、根本のGNDをブレッドボード上で Arduino のGNDと接続し、先端のLに Kyutech Arduino Scope の CH1のプローブを接続します。
そして見えたのはこんな感じ。

Scopesin100hznobias

がーん!
正弦波の上半分しか見えていません。。。。Arduinoのアナログ入力は、0Vからプラス5Vなのでこなるんですね。
それはそうとトリガーとは何?の方をもう少し追求。

Scopesin100hznobiasnormal254v

これ↑は、TRIG mode を normal に変更したところ。「waiting」のまま動かず。WaveGeneはちゃんと正弦波出してます。やっとトリガーの秘密に近づいたか?
これって、トリガーが引かれなくて「waiting」してるってことですよね?ということは、TRIG level 2.54Vというのが気になります。slop 「rising」ともあるし。これって、電圧が2.54Vを下から上に届いたらトリガーを引く、測定するってことでは?
ということで、TRIG level を変えてみました↓。

Scopesin100hznobiasnormal030v

振幅が、0.4V-0.5V程度なので、TRIG level = 0.30Vにしてみたところです。「running」になって波形が表示されました。電圧が、下から上がってきて(slope=rising)0.30Vになったときにトリガーが引かれて測定が開始されたみたいですね。risingの意味を確かめるために slope=fallingに変えてみます↓。電圧が上から下へ落ちてきて0.30Vになったときに測定が開始されると期待。

Scopesin100hznobiasnormal030vfallin

期待どおりのようです。
ちょっとここで、振幅が小さくて波形がみすぼらしいので調整。CH1のvolts/divを 1.0V/div から 0.1V/div へ変更します。ついでに TRIG level も 0.12Vに変えてみます。slopeはrisingです。

Scopesin100hznobiasnormal012vscalin

見やすくなりました。上の画像では、0.12Vから描画されていませんが、実際の画面では、0.12Vから描画されたり上の画面のように遅れたりを交互に繰り返しています。原因はよくわからず。わかったのは、normal では、完全に波形を止めて観察しているわけではなくて、継続的にTRIG level と TRIG slopeを満たすと描画が開始されるようです。それで、「running」なんですね。
スペースキーを押すと、測定が止まり表示される波形も固定されます↓。

Scopesin100hznobiasnormal012vscal_2

止めると、TRIG levelの 0.12Vで(始まる波形で)止まるようです。
さて、ここで100Hzっていうのもなんだな~ということでWaveGeneで生成する正弦波の周波数を1KHzにしてみます↓。

Wavegenesin1000hz

上は、wavegenのスクリーンショットです。

Scopesin1000hznobiasnormal012vscali

じぇじぇ。凄いノイズですね。下側のグラフは、FFTしたものですがなんか凄いことになってます。正の電圧しか測れないArduinoのアナログ入力に0Vを中心とした交流信号を送り込むのはこの辺でやめておきましょう。

ということで、こんな↓回路を組んで入力交流信号に直流電圧の下駄を履かせることに。

Biascircuittrim

LTSpiceで作った回路図です。V1は、Arduino の5V端子を使います。V2が信号源でPCのヘッドフォン端子のLチェンネル。単純な抵抗分圧回路で5Vから2.5Vを作って入力がマイナスにならないようにします。先程のKyutech Arduino Scopeの測定だと、正弦波の上半分で振幅は0.5Vないくらい。全部見えても1V程度と推定。ちなみに、PCの音量は最大が50のところを40で出力しています。コンデンサは、直流成分がPCへ流れ込まないように。こういうときの静電容量の決め方がわからないので、LTSpiceでシミュレーションしてみました。

Biascircuitsim

これは、0.1μFのときの波形。これより小さくすると振幅が小さくなり、これより大きくても変わらないで、0.1μFに決定。こういう決め方は邪道な気もするけどとりあえずっと。
それが測定結果です↓。

Scopesin1000hzbiasnormal254vauto

うまくいったみたいです。正弦波が見えています。
これは、TRIG mode=autoです。autoだと波形がどんどん流れていってるみたいですが正弦波だと規則的なので確信持てず。
他の波形を試す前に、TRIG mode=normal にしてみます↓。

Scopesin1000hzbiasnormal254vnormal

前と同じようにTRIG levelのあたりで繰り返し表示しているようです。
TRIG mode=singleにしています↓。TRIG level も 2.60Vに変更しました。

Scopesin1000hzbiasnormal260vsinglew

これは、まだwavegeneから正弦波を入れていない状態です。waitingとなっています。TRIG level に達していないので測定が開始されていないんですね。
wavegenから正弦波を入力します↓。

Scopesin1000hzbiasnormal260vsingles

ただちに stopped となって波形が表示されました。TRIG level=2.60Vとslope=risingの条件が整ったので波形を止めて表示しているんですね。
CH1のvolts/divとpositionを調整して見やすくするとこんな感じです↓。

Scopesin1000hzbiassingle266vstopped

ということで今日わかったことは
  • Arduino のアナログ入力はプラスの電圧のみなのでマイナスに振れる場合は工夫が必要。
  • TRIG mode = normal は、TRIG level、TRIG slope の条件を満たすと画面左から描画し、その後も描画し続け、また、条件に合致すると画面左から再描画するということを繰り返しているらしい。
  • TRIG mode = single は、TRIG level、TRIG slope の条件を満たすと一画面分だけサンプルを取り、画面左から描画して停止する。次に条件を満たす波形が来ても再描画することはない。最初に条件を満たした波形だけを表示しているらしい。
  • TRIG mode = auto は、よくわからないが トリガーと関係なくひたすらAD変換した値を描画し続けているような感じがする。
ということでした。

今日は、ここまで。

2013年8月13日 (火)

宇宙そのものよりも年老いた星?

The Huffington Postの記事(Astronomers Find Ancient Star 'Methuselah' Which Appears To Be Older Than The Universe )によると我々の天の川銀河系に属するMethuselah(メトセラ:969歳まで生きたとされる旧約聖書の登場人物にちなんで名付けられた)という恒星は、140億歳から150億歳とみられ、宇宙の年齢(138億歳)よりも古い天体かもしれない!?。

この星は天秤座にあり、太陽系からわずか190光年に位置している。

Photo

メトセラの現在の位置 (©The Huffington Post UK)

今まで知られている中で最も古い天体である。

もっとも、ペンシルベニア大学と宇宙望遠鏡科学研究所によれば、この年齢の推計値は約8億年の誤差を含んでいる。

この誤差は、観測の精度が上がれば、この星の年齢が宇宙の年齢よりも若いと証明されるに十分な誤差。

2013年8月11日 (日)

Aruduinoで作るオシロスコープ(2)

Aruduinoで作るオシロスコープ(1)でセットアップした九工大さんの簡易オシロスコープ、Kyutech Aruduino Scope でちょっと遊んでみた。オシロスコープのトリガーというものが、全くわかっていないのでちょっといたずらしてみることに。何かわかるかな?

トリガー回路(ここの「Aruduinoの回路」に描いてある回路です )の結線を抜いて、どうなるのか見てみることに。
前回同様に、GR-SAKURAの13番ピンを10m秒毎にHigh/Lowと変化させて、これをチャネル1で測定。


すべて結線(GR-SAKURAの電源投入前)
「サンプリングモードとトリガーの効き」欄(画面左上):real freerun
トリガーレベル:trig /- 2.54V(画面左及び右のTRIG、level欄)
D6(A0)点の電圧:2.30V(テスタで測定したR,Cの中間点の電圧値)


すべて結線(GR-SAKURAの電源投入後)
「サンプリングモードとトリガーの効き」欄(画面左上):real triggered
トリガーレベル:trig /- 2.54V
Highの電圧:3.30V(マウスカーソルを合わせて表示させた)
D6(A0)点の電圧:2.30V(テスタで測定したR,Cの中間点の電圧値)
時間軸の設定を50ms以上とすると、波形表示部の先頭がHighだったりLowだったりと不安定に入れ替わる。


A0(のみを)を抜いた時
「サンプリングモードとトリガーの効き」欄(画面左上):real triggered
トリガーレベル:trig /- 3.23V(time/div = 2ms/div デフォルトのとき)で安定
  • 時間軸の設定を50ms/divとすると、0V~3.5Vの間を不安定(激しく)変化する(100ms以上も同様)
  • 時間軸の設定を20ms/divとすると、3.16Vで安定
  • 時間軸の設定を10ms/divとすると、3.19Vで安定
  • 時間軸の設定を5ms/divとすると、3.16Vで安定
  • 時間軸の設定を1ms/divとすると、0.73V~2.46Vの間を不安定に変化する
  • 時間軸の設定を500us/divとすると、0.50V~2.46Vの間を不安定に変化する(電圧が低い状態にある確率が高い)
  • 時間軸の設定を200us/divとすると、0.32V~2.46Vの間を不安定に変化する(電圧が低い状態にある確率がいっそう高い)
Highの電圧:3.23V(マウスカーソルを合わせて表示させた)
D6(A0)点の電圧:2.30V(テスタで測定したR,Cの中間点の電圧値)
時間軸の設定を50ms以上とすると、波形表示部の先頭がHighだったりLowだったりと不安定に入れ替わる。


D6(のみ)を抜いた時
「サンプリングモードとトリガーの効き」欄(画面左上):real triggered
トリガーレベル:trig /- 2.32V(時間軸の設定の影響無し)
Highの電圧:3.30V(マウスカーソルを合わせて表示させた)
D6(A0)点の電圧:2.30V(テスタで測定したR,Cの中間点の電圧値)
時間軸の設定を50ms以上とすると、波形表示部の先頭がHighだったりLowだったりと不安定に入れ替わる。


A0、D6両方を抜いた時
「サンプリングモードとトリガーの効き」欄(画面左上):real triggered
トリガーレベル:trig /- 3.23V(time/div = 2ms/div デフォルトのとき)で安定
  • 時間軸の設定を50ms/divとすると、0V~4.2Vの間を不安定(激しく)変化する(100ms以上も同様)
  • 時間軸の設定を20ms/divとすると、3.14Vで安定
  • 時間軸の設定を10ms/divとすると、3.21Vで安定
  • 時間軸の設定を5ms/divとすると、3.16Vで安定
  • 時間軸の設定を1ms/divとすると、0.71V~2.46Vの間を不安定に変化する
  • 時間軸の設定を500us/divとすると、0.50V~2.46Vの間を不安定に変化する(電圧が低い状態にある確率が高い)
  • 時間軸の設定を200us/divとすると、0.34V~2.46Vの間を不安定に変化する(電圧が低い状態にある確率がいっそう高い)
Highの電圧:3.30V(マウスカーソルを合わせて表示させた)
D6(A0)点の電圧:2.30V
時間軸の設定を50ms以上とすると、波形表示部の先頭がHighだったりLowだったりと不安定に入れ替わる。

ここまでにわかったこと
  • D6は今回のような測定対象、測定の仕方では結線してあってもなくても違いがわからない。今のところ役割がよくわからない。
  • A0は、結線しないとトリガーレベルが不安定になる。結線してないんだからA0はノイズを拾っているだけだが、A0の値=「トリガーレベル」なのかどうなのか今ひとつわからない。A0を結線しているときにトリガー回路のR,Cの中間点の電圧と等しければ、A0の値がトリガーレベルで、結線してないときは不定だけれど不安定さが条件によって変わるとも言えそうだが、RC中間点のテスタの測定値はA0結線時のトリガーレベルと微妙に違っている。
さて、どうしよう。
これまで、D6(A0)点の電圧は、R,Cの中間点の電圧値をテスタで測っていたけれど、ここを自分自身で測定したらどうなるか。
こうなりました。

Kyutechscopeself

おー、2.54Vでトリガーレベルと同じではありませんか。どうやら、A0の測定値が「トリガーレベル」らしいですね~。しかし、相変わらず「トリガー」は理解できないままに。

名案が浮かばないので、とりあえず、これまでは10ミリ秒毎にHigh/Lowが交代する波形をGR-SAKURAで出してましたが、スピードを速めて遊んでみることに。

100μ秒までは、どうやらちゃんと追随できるらしく面白い展開はなし。そして、10μ秒でついに測定波形が乱れる↓

Kyutechscope10micro

測られれいるGR-SAKURAの方が高速なので、これは、Arduino Uno のせい?
それに、今気が付いたけど左上の「サンプリングモードとトリガーの効き」欄が「real triggered」ではなくて「equiv triggered」になっている。。。これは何?時間軸のtime/divを1ms/div以下にするとequiv になって、2ms以上だとrealみたい。real freerun,real triggered,equiv triggered で3つめ。ひょっとして、10ms交代のときも途中で変わってたのかな?ということで、10ミリ秒交代に戻ってみると↓

Kyutechscope10ms

変わってました。それも同じ1ms/divで。信号の性質とは関係ないんだ。。。

実験開始前より深みにはまった模様。スケッチを読んだりGoogleに聞くとか、教科書読むっていうカンニングをする前にできることをまた考えよう。

(追記)

忘れていた。トリガ回路のRCは、R x C が 0.1秒程度になるように選ばれている。ということは、自分自身の RC の中間点を測定しているときに0.1秒あたりの時間スケールでみてみると何か見えるのだろうか?ということでやってみたが、波形上は特に変わったことはなく、常の2.54Vのままだった。。。しかし、「サンプリングモードとトリガーの効き」欄にまた新たな仲間が。。。。「scan freerun」だそうな↓

Kyutechscopeselfscanfreerun_2

4つめです。これは何でしょう?おまけに。scan freerun になると FFT の signal 欄でチャネルが選べるようになりました。。。さらに深みへ。

次回は、RCの値でも変えてみるかな。。。でも違いが見えない可能性が高い気が。。。

ところで、R x C が秒というも驚きなので簡単次元解析。

R は、R = E/I はオームの法則なのでくつしたねこも覚えている。えーと、Cはというとファラドだけど、これはちゃんと覚えてない。。。けれど、1ボルトあたりに溜め込める電荷というくらい感じだったと思うので、電流の時間積分 ÷ 電圧 ということに。で、

R x C = (E / I) x (I x 秒 / E) = 秒

ということですか。

(追記の追記)

次はこんなことしてみようか。

  • R,Cの値を変える
  • 外にRCの回路を作ってパルスを入れて測ってみる
  • EXTトリガを使ってみる
  • 正弦波とか他の変な波を入れてみる(どうやって作ろうか)
  • 主題とはずれるけど tone()を使って矩形波をつくる
  • analogwrite()のanalogってどんな?ということでanalogwrite()の波形も見よう

フロアスタンド修理

7年くらい前に買ったフロアスタンドが故障した。電源が入らない。

高いものではなけれど天井のライトとお揃いなのでできれば修理したいが保証期間外だし、LED対応じゃないのに強引にLED挿してるし、修理に出したら修理費用の方が買い替えより高そうだし。。。。

ということで、とりあえずフタを開けてみることに。

で、こじ開けてみて唖然。

ケーブルが6本もプリント基板からはずれている。。。。

1本は太い青いケーブルでいかにも自分は大電力担当ですと言いたげな感じ。残りは、赤、黒、緑取り合わせで5本の細いケーブル。

どこにつながっていたかは不明だけど、「com」とプリントのある場所にハンダが引きちぎられた跡が。。。そして、リモコンのチャンネル設定用のプッシュボタンの2つの端子にも引きちぎられたハンダが。。。

そして、これが一番困る。。。14ピンのコネクタに赤いケーブルが1本だけ残っていて、どうやら残りの13ピンのどこかに、残りの3本が刺さっていたらしい。

プリント基板上の部品を眺めるとサイリスタが2個(電球2個タイプだからか)と、どうやらリモコンのデコードとサイリスタを制御して調光を担当しているらしき IC が1個。型番らしき印字があるが Google でヒットせず。

取り敢えず、青い電源系らしきケーブルから。「com」はGNDのことなので、きっとここだな。サイリスタにもつながっているし。ということで、まずは、青を「com」へハンダ付け。テスタでショートしてないことだけ確認して(100Vが入っている基盤なので通電状態でテスタあてるの怖くて。。。)、試しに電源投入。

点灯!!

青は正解だった模様。リモコンは全く効かず、on/offも調光もできないが主電源でon/offだけはできるようになった。

さて、ICのデータシートも見つからないので、とりあえずプリント基板の配線パターンを追跡。

リモコン切り替え用のケーブル群のいるべき場所は比較的簡単に特定できた。。。が、リモコンセンサーから来ているらしき緑と黒のケーブルを14ピンコネクタの残り11ピンのどこへ挿せば。。。というところでしばし格闘。プリントパターンが細かい上にハンダが載っていて遠視(あえて)のくつしたねこには厳しい。テスタあてたりルーペで拡大したりしてやっと2箇所を特定。しかし、緑と黒、どっちをどっちへ?というところまではわからず。

1つはGNDなので、黒だろうと決めつけて、他方へ緑をつないで電源投入。

がーん、リモコン作動せず。困った。。。

試しに黒と緑を逆にしてみるか、これでだめならリモコンは諦めるか。。。ということでやってみる。

おー、生き返りました。リモコンでon/off、調光もできるようになった!

これで、終了と思いきやリモコンのチャンネル切り替えスイッチをテスタで調べてみると壊れている。。。押しても導通しない。。。

近場のビバホームへGo!

ありました、ありました。完全に同タイプのプッシュボタン。色違いですがよしとしましょう。

やっと、元通りに。結局半日がかりとなってしまったけど、結構楽しかった!


2013年8月 5日 (月)

しゃべる人型ロボット宇宙飛行士 Kirobo 旅立つ!

こうのとり4号機が無事H2Bロケットにより打ち上げられました

Photo

こうのとり4号機を載せたH2Bロケット©JAXA

しゃべる人型ロボット KIROBO が搭載されていることが注目されているみたいですね。「希望」と「ロボット」から命名されたみたい。

Phys.Orgの記事(Talking humanoid robot launches on Japan rocket )。

打ち上げ前の記事ですが、日刊工業新聞社さんロボナブルの記事(対話ロボット宇宙へ、8月にH2Bロケットで打ち上げ、ISSに滞在 )。

えーと、電通と東京大学先端科学技術研究センター、ロボ・ガレージ、トヨタ自動車。え?「電通」?広告会社の?

2013年8月 4日 (日)

Arduinoで作るオシロスコープ(1)

九州工業大学さんがすばらしいものを公開してくださっています。Arduino簡易オシロスコープ(Kyuteck Arduino Scope) 。コンデンサひとつと抵抗4つの簡単な回路をブレッドボード等に組んで、九工大さんが公開しているArduinoスケッチとProcessingのGUIをダウンロードすれば、くつしたねこのような素人には十分なオシロスコープが完成。

回路の方はこんな感じです。

Kyutechscopecircuit

下に伸びている2本のジャンパー線がプローブ代わり。
次はプログラムです。

九工大さんのサイト からダウンロードして、Arduinoのスケッチをビルド、Arduinoに転送。次に、GUIのProcessingのスケッチを起動すれば無事......あっ、起動しない.....こんなエラーメッセージがでました。

serial does not run in 64-bit mode.

processing.app.SketchException: serial is only compatible with the  32-bit download of Processing.

なんと、Processing は、64bit版ではシリアル通信に対応してないんですね。ということで、Processingダウンロードサイト へ行って、Windowsの32bit版をダウンロードしました。WindowsとLinuxの場合は、32bit版をインストールする必要があるようです。確かめていませんがmac版はProcessinの設定でどちらを使うか指定できるようです(こちら )。

32bit版を入れたら無事起動しました!

Kyutechscope

この画像は、GR-SAKURAの13番ピンを10ミリ秒毎にHigh/Lowを交互に繰り返して出力したところを測定したものです。GR-SAKURAのスケッチは、こんな感じです。

/*GR-SAKURA Sketch Template Version: V1.07*/

#include <rxduino.h>

#define INTERVAL 10

void setup()

{

    pinMode(PIN_LED0,OUTPUT);

    pinMode(13,OUTPUT);

}

void loop()

{

    digitalWrite(13, HIGH);

    digitalWrite(PIN_LED0, HIGH);

    delay(INTERVAL);

    digitalWrite(13, LOW);

    digitalWrite(PIN_LED0, LOW);

    delay(INTERVAL);

}

Kyutech Arduino Scope右上にある「HORZ」の「time/div」(左のグラフの水平目盛の単位)を10msに設定しています。クリックして矢印キーで設定変更することができます。GR-SAKURAのスケッチで10ms毎にHigh/Lowを交代させて、Kyutech Arduino Scopeに綺麗に10ms毎の波形が出ています。楽し~

九工大さん、ありがとうございますm(__)m

さて、これからの課題は、高速な GR-SAKURA を低速なArduino Uno R3で測定しているのは少し間抜けなのでは.....ということと、そもそも、くつしたねこはオシロスコープの使い方を知らないということ

2013年8月 1日 (木)

アンドロメダ銀河

すばる望遠鏡の超広視野主焦点カメラ Hyper Suprime-Cam (ハイパー・シュプリーム・カム, HSC) が捉えたアンドロメダ銀河 がすごく綺麗


Fig1j_s_1

画像出典:HSC Project / 国立天文台

すばる望遠鏡のサイト、なんだか重いですね。寝ます。

« 2013年7月 | トップページ | 2013年9月 »