2013年08月19日 | 公開。 |
Arduinoで色々な周辺機器を制御している時に、ロジックアナライザやオシロスコープで信号を観察したいことがよくあります。その際にいつも困るのが信号の取り方です。特にたくさんの信号線をロジックアナライザで観察する時は、プローブをどのように取り付けるかに困ってしまいます。今回はそのような時に役に立つ、電圧観察用のヘッダを備えたシールドを製作しました。
下の写真で分かるように、リードの長いピンソケットでArduinoの信号をシールド裏面から表面に中継し、ピンソケットの近くに配置したピンヘッダに信号を分岐させることで、ピンヘッダにロジックアナライザやオシロスコープのプローブを取り付けられるようにしただけの物です。あまりにも回路構成が自明なので、今回は回路図は省略します。
部品表を次に示します。
数量 | 品名 | 型番/仕様 | 備考 | 参考単価 |
---|---|---|---|---|
1 | ユニバーサル基板 | MK-88 (70mmX50mm) | 販売:マルツ | 47円 |
1 | ピンソケット 8P | FH105-1x8SG/RH | リードが長いもの 販売:秋月電子 | 40円 |
2 | ピンソケット 6P | FH105-1x6SG/RH | リードが長いもの 販売:秋月電子 | 30円 |
1 | ピンソケット 8P | Arduino用ズレてるピンソケット | 販売:スイッチサイエンス | 137円 |
1 | ピンヘッダ 40P | 2.54mmピッチ、1×40 | 必要なピン数にカットして使用 販売:秋月電子 | 40円 |
1 | テストピン | SST-1-1 | 販売:マルツ | 16円 |
作り方については、写真の通り、ピンソケットの信号を、ロジックアナライザなどで観察できるように、内側の列のピンヘッダに引き出すだけです。金色の2本のテストピンは、オシロスコープで波形を見るときに使うGND端子です。
とても直感的で作りやすい基板なのですが、8~13番のピン、GNDピン、およびAREFピンが出ている8ピンのピンソケットにスイッチサイエンスで販売しているArduino用ズレてるピンソケットを使う事に注意が必要です。
次にArduino用ズレてるピンソケットの写真を示します。足のピンが曲がっている様子が分かると思います。
これは有名な話なので、ご存知の方も多いでしょうが、Arduinoのピンソケットの配置が、0.1インチ(2.54mm)のグリッド(格子)に乗っていない部分があるので、0.1インチの格子状に穴の空いたユニバーサル基板に単純に足の長いピンソケットを実装したのでは、Arduinoのソケットに刺さらないんですね。その対策として、上の写真のような、へんてこなピンソケットが販売されているんです。
ここで、Arduino Unoのピンソケットの配置を確認してみましょう。
上の図のように、左上のピンヘッダが0.1インチ間隔の格子から0.04インチずれているのが分かります。
ところで、なぜピンヘッダが一つだけ格子から0.04インチずれているかの理由なんですが、「誤ってシールドを反対方向に挿入するのを防ぐため」とか、「設計時のミス」とか色々言われています。真相はどうであれ、このズレが、ユニバーサル基板で工作する人たちを苦しめてきた事は確かです。
ヘッダシールドとオシロスコープで、Arduinoのピンの電圧波形を観察する方法を、簡単な例を挙げて説明します。
1kΩの抵抗と直径3mmの赤色LEDをそれぞれ2個ずつ用意し、下の図のように結線すると、2つのLEDをArduinoの3番ピンと5番ピンで制御できるようになります。(ピンをHIGHにすると対応するLEDが点灯し、ピンをLOWにすると対応するLEDが消灯する) なお、この回路は、電源電圧が5VのArduino(Uno、Mega 2560、Leonardo)などを前提に抵抗値を決めてあります。
もし、Arduinoに次の様なスケッチを書き込むと、2つのLEDが共に1Hzで点滅します。また2つのLEDの点滅には90度の位相ずれ(タイミングのずれ)があります。
void setup()
{
pinMode(3,OUTPUT);
pinMode(5,OUTPUT);
}
void loop()
{
digitalWrite(3,HIGH);
delay(250);
digitalWrite(5,HIGH);
delay(250);
digitalWrite(3,LOW );
delay(250);
digitalWrite(5,LOW );
delay(250);
}
点滅の周波数を1Hzと低く設定しているため、2つのLEDの点滅のタイミングがずれていることが目でも確かめられますが、オシロスコープで3番ピンと5番ピンの電圧波形を観察すると、その様子がより明瞭に確認できます。この際に今回作ったヘッダシールドを使うと信号の観察が容易になります。
実験回路の写真を次に示します。
3番ピンと5番ピンの信号観察用ヘッダにそれぞれオシロスコープのプローブを付けています。ブレッドボード上の抵抗などの部品のリードにプローブを付けてもいいのですが、プローブに引っ張られて部品がブレッドボードから抜けてしまうことが良くあります。ヘッダシールドを使う方が観察がしやすいです。
次に、上の写真の回路を使って観測した電圧波形を示します。
黄色の線が3番ピンの波形で、水色の線が5番ピンの波形です。縦軸は両チャンネルとも2V/DIVで、横軸は250ms/DIVです。この波形をみると、点滅周波数が1Hzで、黄色の波形の方が90度位相が進んでいる様子がよく分かります。
ちなみに、私は私はインステックのGDS-1062というオシロスコープを使っています。(オシロスコープをデータロガーとして使うという記事で詳しく紹介しています) 今のデジタルオシロスコープは、たいていSDカードかUSBメモリ(私のオシロスコープの場合はSDカード)で波形が記録できるため、実験結果を残すのが簡単になりました。
さらに余談になりますが、私のArduino Unoには、次の写真のようにゴム足が付けてあります。こうすることによって、USBケーブルやオシロスコープのプローブなどに引っ張られてArduinoが動いてしまう事が減ります。見た目は悪くなりますが、少し大きめのゴム足を付ける事によって、かなり滑りにくくなりますので、私の様に見た目よりも使いやすさを優先する人にはお勧めです。
私の場合、同じスケッチが種類の違うArduinoでも同様に動作するかを試験する事が頻繁にあります。Arduinoにつながっている回路がシールドの形で組まれている場合はいいのですが、ブレッドボードに試作してある場合は、Arduinoの全てのピンからジャンパ線を外し、別の種類のArduinoに交換してから、再配線する手間が掛かります。こんな時にヘッダシールドを使えば、Arduinoを交換する際の手間が省けます。
例として、先ほどのLED2個の回路を、Arduino UnoからArduino Mega 2560に付け替える方法を、写真を使って説明します。
このように、配線済みのヘッダシールドを別のArduinoに付け替えるだけで、ブレッドボード上の試作回路が別のArduinoに配線できます。上の例ではブレッドボードとArduinoの間の配線が3本しかなかったので、ヘッダシールドを使わずに配線をし直してもたいした手間ではありませんが、下の写真のように、グラフィックLCDモジュールを含む回路の試作をする場合は、配線が20本近くになりますので、ヘッダシールドの効果は絶大になります。
また、1種類のArduinoしか使っていない場合でも、複数のプロジェクトを平行して進めていると、Arduinoがたくさん欲しくなる時があります。そんな時、とりあえずヘッダシールドを使って配線しておくと、Arduinoを取り外して一時的に別のプロジェクトに流用する事ができます。ヘッダシールドはArduinoよりはるかに安価ですから、Arduinoをたくさん用意するよりもヘッダシールドをたくさん用意する方が経済的です。
次のページでは、はロジックアナライザを使った測定にヘッダシールドを利用する方法を紹介します。