GR-SAKURA

ルネサスエレクトロニクスの「がじぇっとるねさす」プロジェクトのレファレンスボードGR-SAKURAで遊んだ記録

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()の波形も見よう

2013年7月28日 (日)

GR-SAKURA:おら3.3Vで動くだ!

さて、1週間放置されていたGR-SAKURA。Aruduino Uno R3 が5Vなのに対して、搭載するマイクロコントローラのルネサスRX63Nが3.3V動作らしい。本当かなということで、テスタで測ってAruduino Uno R3と較べてみることに。

テスト環境はこんな雑な感じで

Testenv_2

左上の桜色がGR-SAKURAで、左下が Aruduino Uno R3。テスターは十数年使っているもので精度だめなんじゃない?と思っていたら3.30Vジャストで表示されました。互いの誤差が打ち消し合ってるかもしれませんが

クラウドWebコンパイラ上で書いてみたスケッチはこんな感じです。

/*GR-SAKURA Sketch Template Version: V1.07*/
#include <rxduino.h>

void setup()

{
 //Arduino互換ピンのデジタル0-13をすべて出力モードに設定
 int i;
 for(i=0;i<=13;i++) {
 pinMode(i,OUTPUT);
 }
 //LED0を出力モードに設定
 pinMode(PIN_LED0,OUTPUT);

}

void loop()
{
 //Arduino互換ピンのデジタル0-13をすべてHIGHに設定
 int i;
 for(i=0;i<=13;i++) {
 digitalWrite(i, HIGH);
 }
 //LED0を点灯して準備完了の合図
 digitalWrite(PIN_LED0,HIGH);
}

このスケッチをビルドして、GR-SAKURAにコピーするとLED0が点灯して準備完了。Aruduino互換のデジタル入出力ピン0番から13番がHIGHに設定されたはずです。

測ってみると。。。

Pin0

最初の画像でも見えちゃってますが、ぴったり3.3V。ピン0から13全部同じでした。本当に3.3Vでした(あたりまえか)

次の画像は、VINピンを測ってみたものです。

Vin

GR-SAKURAのVINピンは、0.00Vになっています。では、Aruduino Uno R3はどうでしょう?

Arvin

4.52Vでした。

そうそう、Aruduino のスケッチはこんなです。後でデジタルピン測りますので。

void setup()
{
    //Arduino互換ピンのデジタル0-13をすべて出力モードに設定
    int i;
    for(i=0;i<=13;i++) {
        pinMode(i,OUTPUT);
    }
}
void loop()
{
    //Arduino互換ピンのデジタル0-13をすべてHIGHに設定
    int i;
    for(i=0;i<=13;i++) {
        digitalWrite(i, HIGH);
    }
}
GR-SAKURAには、LED0 - LED3 の4つの青色LEDがありましたので、LED0を準備完了通知に使いましたが、Aruduino にはありませんので該当するコードは削除しています。Aruduino Uno は、PIN 13にオンボードのオレンジ色のLEDが接続されていますので、これが点灯したら準備完了とみなすことにします。コード上もちゃんと最後にPIN 13がHIGHになり、LEDも点灯するはずですので。

さて、今回は電源をUSBから取っていました。では、ACアダプタをつないだらどうなるでしょう。


Arvin9v

9VのACアダプタをAruduino Uno R3につないだところです。今度は、VINは 8.23Vになりました。Aruduino Uno は、VINは電源に直結されていて、GR-SAKURAは結線させていないようです。GR-SAKURAのハードウェア仕様 によればジャンパーのJ3をつなぐと接続されるようですが「危険」とのコメントがありますね。ちなみに、GR-SAKURAの入力電圧は、5Vですので、Aruduinoから来た方は手持ちの9VのACアダプタをつなぐのは控えた方がいいかもです。

次は、5Vピン。まずは、GR-SAKURAです。

5v

0Vですね。こちらもジャンパーのJ2をつなぐと5Vが供給されるようです(GR-SAKURAのハードウェア仕様 )。Aruduino 用のシールド等を使うときのはJ2が役立ちそうです。

一応、Aruduino Uno の5V ピンも測っておきましょう。

Ar5v

5.04Vでした。ちゃんと5Vかかってますね。

次は、3.3Vピンです。まずは、GR-SAKURAから。

3v

3.30Vですね。こちらはデフォルトでも当然供給されています。

ついでに、Aruduino Unoはというと。

Ar3v

3.29Vということで、こちらもちゃんと3.3V給電されています。

GR-SAKURAのアナログピンとRESETも測ってみましたが全部 0.0 Vでした。
最後に順番が前後しますが、Aruduino Uno のデジタルピンです。

Ardigital

0から13番ピンまで全部測ってみましたが、5.04V でした。

テスター当てまくったらなんとなく意味なく安心な気分になったので今日はここまで

2013年7月21日 (日)

がじぇるねのクラウドコンパイラを使ってみました!

「がじぇるね」はWebでマイコンプログラム開発ができます。スマホからもできるらしいです(スマホ持ってないから試せない)。

クラウドコンパイラの入り口はこちら(クラウドWebコンパイラ)。

Aruduinoではプログラムのことをスケッチといいます。なので、「がじぇるね」GR-SAKURAでもAruduinoライクなプログラムのことをスケッチと呼んでよさそうです。で、スケッチの作り方はここからかな(SAKURAスケッチレファレンス ) 。

用意されているサンプルのスケッチをビルドした直後のスクリーンショットです

Photo

AruduinoをローカルのノートPCでビルドしたときよりもビルド速い気がします。

ビルドに成功したらsketch.binというファイルができています。スケッチのバイナリです。これを右クリックでダウンロードして、USBメモリとして認識されている GR-SAKURA へコピーすればスケッチが動き出します。USBメモリとして認識されていないときは、GR-SAKURAの右の方にある赤い(茶?)ボタンを押してGR-SAKURAをリセットすると認識されるはずです。

上の画像のサンプルスケッチはオンボードの4つのLEDを順に点灯するものです。おー動いた動いた。なかなか綺麗。

Aruduino言語は、ほぼC/C++のようで Processing とも区別つかないくらいですし、そして、Processing は、ほぼ Java 。ということで、GR-SAKURAのスケッチもほとんどC/C++/Javaな感じですね。スケッチのファイル名の拡張子は、cppなんでC++ですね。

上の画像のスケッチを覗いてみると setup() と loop() というメソッドがあります。setup は、スケッチ起動時に必ず1度だけ呼び出されるメソッドです。用意されている上のサンプルではLED(がつながっているPIN)の初期化をしています。pinMode(PIN_LED0,OUTPUT);というとことですね。

最初の引数は、PIN番号です。ヘッダーファイルのどこかに定義されているはずですね。後で探さなくちゃ。ピン配置とマクロ定義はこちらにわかりやすくまとめられていました(RXDUINOマニュアル )。「がじぇるねプロジェクト」のAruduino互換環境「桜ライブラリ」は、特殊電子回路株式会社さんのRXduino なんですね。自分で互換ボードを作る場合等は、GR-SAKURA用桜ライブラリのライセンス を読んでおく必要がありますね。

サンプルスケッチに戻るとpinMode()の2番目の引数は、入出力モードです。INPUTかOUTPUTを指定します。LEDなので出力でOUTPUTですね。センサー等から読み取るときはINPUTになります。

ヘッダーファイルの digitalio.h を見ると INPUT_PULLUP といのも定義されていますが「未実装」と書かれていますね。でも、レファレンスマニュアル には、注意書き無しで「INPUT_PULLUP(プルアップをして入力)」とあります。実装されてるんでしょうか。

機能はというと、入力ピンは回路がつながってなかったり(例えばPINの先にタクトスイッチがあって、これがOFFだったり)すると値が不定(LOWかHIGHか決まっていない状態)になりますが、この指定は、内蔵のプルアップ抵抗をONにしてデフォルトの読み出し値をHIGHにするということのようです。

Aruduinoでも試したことないので今度プルアップ、プルダウンしないで宙ぶらりんにして、INPUT_PULLUPにしたときのAruduinoと未実装なGR-SAKURAの振る舞いの違いを見てみよっと。

loop()は、GR-SAKURAが動いている間は繰り返し呼び出されて実行されるメソッドです。つまり、最初の行から実行されていって最後まで実行を終わると、また最初から実行されます。

サンプルの例では、まずdigitalWrite(PIN_LED0, 1);で PIN_LED0 に値"1"(HIGH)を書き込んでいます。これで LED0 に電圧がかかり点灯します。

次の行のdelay(INTERVAL);は、INTERVALミリ秒だけ何もしないで待てという指示です。INTERVALは、上の方で#define INTERVAL 100と定義されていますので、GR-SAKURAはここで100ミリ秒待ちます。そして、また digitalWrite で次のLEDを点灯して delay で待ち....と処理が続きます。これで、4つのLEDが順番に点灯されて、次に順番に消灯されます。loop()は繰り返し呼び出されるので、この順番に点灯、順番に消灯が電源が切られるか、リセットボタンが押されるまで繰り返されます。

ところで、スケッチのバイナリをUSBメモリとしてマウントされているGR-SAKURAにコピーするとスケッチが自動的に動き出しますが、同時にUSBメモリとしてのマウントが解除されます。修正したスケッチをGR-SAKURAへ送り込みたいときはGR-SAKURAの赤い(茶色い?)リセットボタンを押すと、また、マウントされます。マウントが解除されるのは、マウントしたままだとUSB接続をシリアル通信とかで使えなくなるからかな(?)。

2013年7月20日 (土)

GR-SAKURAがやってきた!

Arduino互換ボードの GR-SAKUARA (-FULL)を入手しました。初心者からハードユーザーまで手軽にマイコンを使った電子工作ができる環境を提供しようというルネサスの「がじぇるねプロジェクト」のレファレンスボードです。イーサネットのRJ45コネクタ、USBホスト機能、microSDカードソケットがあって、XBeeまでオンボードに実装できるという優れもの。おまけに開発環境をPCにインストールせずにWeb上でクラウドベースで開発することができます。このあたりはmbed的です(mbedさわったことないですが...)。Web上で開発してbuildしたバイナリプログラムをUSBメモリとして認識されているGR-SAKURAへコピーしてあげるとすぐにプログラムが動き出します。

GR-SAKURAは、若松通商さんアールエスコンポーネンツさんで販売されています。今回はカードが使えるのでアールエスコンポーネンツさんから購入しました。若松さんだと無色透明や桜色透明のケース等も販売されています。

Grsakuraaruduinouno_3

上の写真の下の段中央がGR-SAKURA、右がAruduino Uno。同じくらいの大きさですね。

Grsakuraup

アップにするとこんな感じです。色がなかなか。左上の銀色の物体はイーサネットのRJ-45コネクタです。

1307200030

↑こちらは、Aruduino Uno。左上の銀色はUSBコネクタ。イーサではありません。

Grsakurarj45

↑こちらは、GR-SAKURAを横から。左がイーサのRJ-45。中央の銀色は mini USBコネクタ。PCからプログラムの転送はここを使います。ちなみに、スマホによくある micro USBでもAruduino Uno の USB Type Bでもないです。

それから、USBホスト機能を使う場合はボードの裏側(表のmini USBの真下)にUSB Type Aのコネクタを自分ではんだ付けします。コネクタは、GR-SAKURA-FULLに添付されています。

ちなみにADK勉強会さん編著のGR-SAKURAでHello ADK
の情報によると中継コネクタを使えばType Aのコネクタをはんだ付けしなくてもminiUSBでUSBホスト機能を使うこともできるようです。いつの日かAndroid端末買ったら試してみよう。ちなみに、端末選びにはADK対応端末確認 が参考になるのかな。

その他のカテゴリー