2014年1月23日木曜日

接地抵抗の測定実験

今回は接地抵抗の測定ネタです。

~ 経緯 ~
自室のデスクトップパソコンとオーディオコンポをUSBケーブルで接続して使用しているのですが、数日前に掃除をしていた時、一旦外していたUSBケーブルをコンポ側のコネクタに挿すときに小さな火花が散っているのを発見しました。
気のせいかな?と思ってUSBコネクタのシールド部分とコンポの差込口金属部を両手で触れてみると、少しビリビリ来たのでテスターで電圧を測定してみるとAC70V程度ありました。おそらくPC側のノイズフィルタから来ているものだと思います。
この状況はあまりよろしくないので「接地をしよう!」と思ったわけです。
といっても、部屋のコンセントはエアコンのコンセントを含めて接地端子は付いていません。
来ているのはDRSSTCのテストに使っていたアース線くらいです。ここに接続するのも気持ち悪いので新たにアース棒を埋めることにしました。
~ 経緯終わり ~

ホームセンターで購入してきたアース棒は、断面がS字になっている物で長さは60cmです。
これを部屋からすぐ近くの庭に埋めました。
地表から約30cm掘り下げたところに打ち込んでいます。




頭が隠れるまで打ち込んだあと、じょうろで水を掛けてから土を戻しました。
念のため地表10cmのところに「アース棒が埋まっていますよ~」って分かるようにラベルを入れておきましたw。

ちなみにアース棒に付いている銅線と黒色の線は、はんだ付けした後にビニルテープで保護してあります。本当は緑色の線を使いたかったのですがこの電線がたくさんあったので、、、
1.25sq HKIV耐熱電線です。

とりあえず埋め終わったのですが、接地抵抗がどの程度なのか知りたくなりますよね?

D種接地は漏電遮断機が付いている場合は500Ω以下と決められていますが、そのくらいはあるだろうなー と予想していました。
(今回はD種接地の規定に沿っているわけではないが。)

で、接地抵抗の測定方法をいろいろ調べていますと、主となる接地棒の他に測定用の補助接地棒を2本打ち込んで測定する「電圧降下法」ってのがよく使われていることがわかりました。
詳しく知りたい方は、「接地抵抗測定方法」とかで検索するといくらでも分かりやすい説明が出てきますが、ここでも簡単に説明してみます。

まずはこの図を見て下さい。

図中でEと書かれているものが主となる接地棒です。P、Cは測定時に必要となる補助接地棒です。
各接地棒の間隔を大きく取るのは、接地棒付近では導体と土との間で接触抵抗が大きく、それにともなって電圧勾配も大きいためです。
この電圧勾配がほぼ水平になったところに補助接地棒Pを打ち込まないと正確に測定できません。
電圧降下法ではE-C間に一定の交流電流を流して、その時にE-P間に生じる電圧を測定することで接地抵抗を求めます。

理解しやすいように各接地棒に生じる接地抵抗をRe, Rp, Rcで表記したのが以下の図です。

まず、接地棒E-C間に3mA程度の交流定電流を流します。
この時、ReとRcによって電圧降下が発生しますが、定電流源を接続しているので各抵抗に流れる電流は変わりません。

次に交流定電流を流したまま接地棒E-P間の電圧を測定します。
ここで用いる電圧計の内部抵抗はRpに比べて無視できるほど十分大きいものでなければいけません。
内部抵抗が十分に大きければRpにはほとんど電流が流れず、Rpの電圧降下を無視することができます。つまり、Rpを短絡したと考えてOKです。
そうすると電圧計はRe両端の電圧を測定していることになります。

よってオームの法則よりRe = V / I と求めることができました。

これが電圧降下法の測定原理です。


市販の測定器には交流定電流源と電圧計が内蔵されていますが、交流定電流を作るのが面倒なのでオシロスコープで電流値と電圧値を測定してそこから接地抵抗を求めることにします。
各機器の接続を以下に示します。

↓実験の様子


まず、PC上でWaveGaneというソフトウェアを使って820Hzの正弦波を出力させます。
820Hzという周波数は市販されている接地抵抗計で使われていたのでそれを真似ています。

この信号をオーディオアンプで増幅し、さらに1次と2次を逆接続した電源トランスで昇圧して絶縁された高電圧の正弦波交流を得ます。

この電圧をE-C間に印加しますが、Eに近い側に10Ωの抵抗を入れて、ch1のプローブに入力し電圧降下より電流を計算します。

補助接地棒Pはch2に入力します。

観測された波形を次に示します。

割ときれいな正弦波が出ています。
ch1の電圧が39.15mVrmsなので流れている電流は3.915mAとなります。
ch2の電圧は2.407Vrmsなので、接地棒Eの接地抵抗Reは2.407 / (3.915*10^-3)より614.8Ωと求まりました。

予想していたよりも大きな値でちょっと残念。
100Ω以下にするには結構大変なことが分かります。

電圧降下法による測定は以上です。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

次にLCR METER DE-5000を使って同じく接地抵抗を測定してみます。
こちらも測定対象に交流電圧を印加して抵抗値を求めます。測定周波数は1kHzとしました。

方法は単純で、接地棒E-P、P-C、C-E間の抵抗を測定し、連立方程式を解いて各抵抗値を求めます。

各接地棒は電圧降下法で実験した時と同じ位置に打ち込んであります。
精度よく測定するには、各接地棒を正三角形の頂点に位置するように打ち込み、間を10m程度ずつ離すのが理想です。
今回は簡易的な測定のため、直線上に打ち込んでいます。

↓測定の様子

結果は、
E-P間 1.434kΩ
P-C間 2.023kΩ
C-E間 1.855kΩ
となりました。

これより、接地棒Eの接地抵抗Reは (1.434+1.855-2.023)/2 = 0.633 → 633Ωと求まりました。
同じように計算してRp = 801Ω、Rc = 1222Ωとなります。

上で行った電圧降下法の結果とだいたい一致しています。

いちいちオシロスコープを持ち出すのは億劫なのでこの方法で十分でしょう。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

こうして庭に埋めた接地棒から線を部屋まで引き込み、端子台に接続しました。

PC本体とモニタ、コンポのアース線をここに接続しています。

後日、アース棒をもう一本打ち込んで接地抵抗を330Ωまで下げました。

接地後は異常電圧はなくなりました。 
あと、コンポでFMを聞いている時のノイズが小さくなったような気がします・・・。

アースは大切ですね!??

~ おわり ~

2014年1月4日土曜日

Tiny10を使ったサーボテスタ

明けましておめでとうございます(・ω<)

最近ブラシレス関連に興味がありまして、、
海外の安いESCを買ってみて分解して回路構成なんかを勉強していました。
というか、海外のESCが安すぎて自作する意味があまり無いようなwww

そのESCを動かすにはサーボ信号などと呼ばれるパルス信号が必要です。
パルス信号は周期約20ms、パルス幅1~2msとなっています。
重要なのはパルス幅で、周期はアバウトでも大丈夫みたいです。

このパルスはタイマIC555などを用いて簡単に発生させることが出来ますが、今回は米粒AVRであるTiny10を使ってみました。

Tiny10は、小さい割にA/D、16bitタイマ、アナログコンパレータ、内蔵クロックなどが搭載されていて素晴らしですが、EEPROMが非搭載なのが残念ですね。。

製作したサーボテスタは恒例のフリスクケースに収めてみました。

可変抵抗の厚みで蓋が若干浮くのでネジで固定しています。

内部は結構スカスカです。
ピンヘッダや基板は瞬間接着剤で固定しています。

Tiny10周辺の拡大

小さすぎて扱いにくいので変換基板に実装

マイコンを用いたので周辺回路はとてもコンパクトになりました。
手描きでナンですが、回路図です。

2014/03/07追記 保護用のポリスイッチなど抜けてたところを書き足しました。

※可変抵抗からの信号を入力するポートには、周辺ノイズの影響を抑えるために0.1uF程度のコンデンサをGNDとの間に挿入したほうが良いです。 
今回はプログラム書き換えの都合上省いていますが、特に問題になっていません(゜ε゜)

プログラムの開発環境はAVR Studio5を使用しました。

~動作の説明~
動作モードは5つあり、以下のようになっています。
1 ・・・ マニュアル(可変抵抗の角度に応じて出力パルス幅が決まる。スイッチを押すとパルス幅が1500usになる。)
2 ・・・ オート、三角波状にパルス幅変化
3 ・・・ オート、ノコギリ波状にパルス幅変化
4 ・・・ オート、逆ノコギリ波状にパルス幅変化
5 ・・・ 停止(パルス幅は直前のままで固定)

オートモード(モード2,3,4)では可変抵抗を回すとパルス幅の変化のスピードが変わります。

スイッチを押さずに電源に接続すると、モード1で起動してモードは固定です。
スイッチを押しながら電源に接続すると、モード2で起動します。再度スイッチを押すごとに、モード3→4→5→2→3... と切り替わります。

パルス幅は内蔵クロックの精度に依存し、周辺温度で結構変化するみたいです。
可変抵抗の角度読み取りの分解能は、内蔵A/Dの都合上8bitになっています。
2014/01/04時点の最新のファームウェアはコレです↓
https://www.dropbox.com/s/l4nyqr6aumg3p2f/tiny10%20analog%20to%20servo.hex?dl=0
MD5: 523CD4EC39FE797A6192AA287000510A

動作の様子です。(文字が見えにくいような..



2013年10月23日水曜日

パルス幅制限回路

インタラプタが暴走しても大切なテスラコイルを壊さないために、パルス幅制限回路があると便利。
そこで、74HC14と抵抗、コンデンサ、ダイオードで簡単な回路を組んでみた。
上手く動いているようなのでメモっておく。


↑ 実験した回路


インバータとRC直列回路を組み合わせたシンプルな回路。


パルスが入力されていないときはCtは充電されており、反転された電位が右側のダイオードにかかるが、逆方向なので電流は流れない。

正のパルスが入力されるとインバータで負のパルスに変えられ、コンデンサCtの電圧がRtCtの時定数で下がっていく。
電圧が更に下がってシュミットトリガのしきい値電圧に達すると、右側のダイオードが導通し出力がLになる。
パルスの立下りでは左側のダイオードでRtが短絡されるので、Ctはすぐに充電されて次のパルスに備えることが出来る。

Ctに使うコンデンサは小さい容量のものを使わないと74HC14の負担が増えるので注意。

この回路で制限されるパルス幅はおおよそ RtCt[s] になる。

いくつかの組み合わせで測定してみると、おおよそ理論値になっていた。
ダイオードの電圧降下やシュミットトリガのしきい値電圧のバラつきでずれているのだと思う。

測定結果↓

現在製作途中のMIDIインタラプタは、前回のように555によるパルス幅調整回路が無いので、マイコンが暴走した時のためにこの制限回路を付加しようと思う。

動作の様子↓



以上。

2013年9月8日日曜日

MIDIインタラプタ v2.1まとめ

なんか中途半端なとこから書いてますが。

◆出来ること
・MIDI信号を受信して、6和音までの固定パルス幅の信号を出力。
・ノート番号(音の高さ)によって出力ポートを振り分けられる。
・MIDIチャンネルによって       "

◆出来ないこと
・ベロシティに対応してパルス幅を可変させる。
・ピッチベンドでうにょ~~~んする。


DRSSTCの制御用として開発しましたが、パルス幅は外部のタイマICで固定されるのであまりよろしくないです。マイコンからは約9.6usのワンショット用信号を出しているだけです。
図1. よく分かる図

つまり、周波数が高くなったり和音数が増えると、デューティが大きくなりすぎて音が汚くなったり渦電流でヒューズが飛んだりするということです。

hex、説明書、回路図は下記URLからどうぞ
クロックは20MHz、8分周無しです。

バグなどあればコメントに書いていただけば修正するかもです。

【2018/03/16 追記】
パルス信号は、LMC555などのトリガとして使用しやすいようにHigh/Lowが反転した状態で出力されます。
つまり、図1に記載の”マイコンから出力される波形”は誤りです。脳内でHigh/Lowを入れ替えて下さい。近いうちに修正版をリリース予定です。

2013年8月12日月曜日

WINSTAR WEH001602ALPP5N00001 初期化メモ

シリコンハウスで購入したOLED(有機EL)キャラクタディスプレイ、WEH001602ALPP5N00001を動かしてみたので初期化方法を忘れないようにまとめておく。

普段、マイコンとキャラクタディスプレイを接続するときには、配線数の少ない4-bit modeを採用しているので、4-bit modeでの初期化方法を書く。 8-bit modeでも2回に分けているのを1回で送信するだけでほとんど同じだが。。。

まず、このOLEDディスプレイを使うにあたって、一般のバックライト付きキャラクタディスプレイよりも電源ラインのノイズが多いことに注意しないといけない。ディスプレイの裏面を見ると昇圧用のDC-DCっぽいものが見える。ここでDC12V程度を発生させている。

電源ラインにはこのDC-DCからのノイズが混入してくるので、ディスプレイ基板のVss-Vdd間に追加で10uFのコンデンサを入れておいた。
Eピンはプルダウンしておいたほうがよいかも(内部でプルダウンされている?)

マイコンにはATtiny2313を使用し、ディスプレイの端子割り当ては以下のようになってる。
<LCD: AVR>
Vss: GND
Vdd: +5V
RS: PB5
R/W: GND
E: PB4
DB0-DB3: NC
DB4: PB0
DB5: PB1
DB6: PB2
DB7: PB3

ディスプレイにデータ、コマンドを送信するときは、DB4-DB7にデータをセットしてからEを立ちあげ250ns以上待ってからEを下げる。下げた後も250ns以上待つ。
データシートのRead/Write Characteristicsを見ると、Eの立下りエッジでDB0-DB7が読み込まれるようだ。
RSピンは文字データを送受信するときは1、コマンドを送信するときは0にする。
コマンドによっては実行するのに10ms近く掛かるものもあるので、ビジーフラグを使わない場合は注意する必要がある。

4-bit mode初期化手順は以下のとおり。
この中で幾つか記号が出てくるが、意味は次のようになっている。
N: 表示行数の設定。 0を設定すると1行、1を設定すると2行になる。今回は2行なので1。
F: 文字フォント設定。 通常は0にしておくらしい。。
FT1, FT0: フォントテーブルを選択する。 今回は00にした。
D: ディスプレイ表示のON/OFF設定。 1で表示ON、0で表示OFF。 1を設定。
C: カーソル設定。 1でカーソル表示あり、0でカーソル表示なし。 0を設定。
B: ブリンク設定。 1でカーソル点滅あり、0でカーソル点滅なし。 0を設定。
I/D: 文字の表示方向を設定。 1で左から右、0で右から左。 1を設定。
S/H: 文字書き込み時のシフト設定。 1でシフトあり、0でシフトなし。 0を設定。


マイコンの代わりにスイッチで初期化してみる動画を撮った。
バスの状態が目に見えるので分かりやすいかな?




以上。


2013年6月30日日曜日

秋月 小型I2C液晶 AQM0802A-RN-GBW  駆動方法

小型のI2C液晶を動かしてみたので忘れないうちにメモ。(調べると沢山情報が出てきますがw

まず配線。液晶のピン番号はデータシートに書いてあるように左から1,2,3,...,9
接続例も載ってあるのでそのように繋げばおk

私はチップコンデンサを直接ピンに実装したが、あまり長く加熱してるとICのモールド部分が焦げるので短時間ではんだ付け。汚いけど問題ない。
このようにピンの名前を書いておくと間違わなくて良。

電源電圧が3.3Vであることに注意。3.3Vで動作させているときはコントラスト調整が最小でもちょうどいいくらい。

次に制御プログラム。
今回はMikroElektronika社のPIC用Cコンパイラ、mikroC for PICを使用した。知らない間にVer 6.0.0が出ていたが、、、目立った変化はない感じ。ライブラリが豊富で良いんだけど、エディタに若干バグがあるのが残念。試用版では2Kワードまですべての機能を使うことが出来る。
マイコンはPIC12F683を使用し、内蔵クロック4MHzで動作させた。

I2C通信はこのLCDの場合は書き込みのみなので割とシンプル。
データバイトを1つだけ送信する場合は、

1.スタートコンディション発行
2.スレーブアドレス送信(このLCDだと0x7c)
3.コントロールバイトを送信
4.データバイトを送信
5.ストップコンディションを発行

という流れになってる。
この中の「コントロールバイトを送信」ってのが、次に送るデータバイトが「コマンド」であるか「データ」であるかを識別するために重要。

コントロールバイトの構成は2進数で
[Co][RS][0][0] [0][0][0][0]
となっており、下位6ビットは0で変わらない。コマンドを送りたいときは[RS]を0に、データを送りたいときは[RS]を1にする。
[Co]は連続してデータを送るか指定する為に用いる。
[Co]に0を指定すると、そのコントロールバイトの後に続けて複数のデータバイトを送信することができる。つまり、

1.スタートコンディション発行
2.スレーブアドレス送信(このLCDだと0x7c)
3.コントロールバイトを送信[Co] = 0
4.データバイトを送信
  データバイトを送信
  データバイトを送信
  .
  .
  データバイトを送信
5.ストップコンディションを発行

となる。
逆に言えば、途中でコントロールバイトは変更できないので、文字を幾つか送信してその後にコマンドを送信ってのはおそらく出来ない。一度ストップコンディションを発行して終了させる必要がある。

[Co]に1を指定した場合はコントロールバイト、データバイトの二組を続けて送信しないといけない(データを2つ以上連続して送れない)。
つまり、

1.スタートコンディション発行
2.スレーブアドレス送信(このLCDだと0x7c)
3.コントロールバイトを送信[Co] = 1
4.データバイトを送信
  コントロールバイトを送信[Co] = 1
  データバイトを送信
  コントロールバイトを送信[Co] = 1
  .
  .
  コントロールバイトを送信[Co] = 1
  データバイトを送信
5.ストップコンディションを発行

となる。最後のコントロールバイトも1にしておく。途中でコマンドとデータが別れる場合に便利。
秋月のデータシートを見ると、「データを複数送る場合Co=1で、最終データはCo=1です。」と書かれてあるが、データを複数送る場合は[Co] = 0の間違いではなかろうか..? 

以上を踏まえて液晶に「Hello World!」と表示するプログラムをベタで書くとこんな感じになる。

液晶1行目の「Hello」は[Co] = 1としてコントロールバイトとデータを1組づつ送っている。
液晶2行目の「World!」は[Co] = 0としてデータを連続で送っている。
実際に動かすとこのように表示される。

以上が文字表示時のデータ送信手順。

LCD初期化はデータシートの通りにやれば問題ない。
コードはこんな感じ。

液晶にコマンドを1つ送るための関数(i2c_lcd_cmd)はこうなってる。


あとは文字を一文字送信する関数、文字列を送信する関数などを作っておくと便利。

とりあえずメモは以上。

マイコンとは2線で繋ぐだけだからポート数も余裕があるしデバッグが捗るね。

2013年4月28日日曜日

伝送線路の特性インピーダンスの測定 その2(簡易TDR法)

---
性能を向上させた治具の作製記事を書きました(2021/8/8)
---

その1に続いて特性インピーダンス測定ネタです。

今回は、TDR(Time-Domain Reflectometry : 時間領域反射)法を使って測定してみます。

TDR法とは、負荷からの反射波形を測定することで、伝送線路のインピーダンスを測定するものです。時間軸でインピーダンスの変化を見ることができるので、伝送線路の長さを測定したり、伝送線路上のどの位置に異常があるか等を調べることができます。

具体的な仕組みは、伝送線路に抵抗を通して立ち上がりが非常に早いパルスを与えて、線路間の電圧を測定するというものです。
市販のものでは立ち上がりが数十[ps]という高性能なものもあります。このような機器を使えば数[mm]単位で不具合箇所を特定することも可能です。

といっても趣味の電子工作でここまで早い立ち上がり信号を作ることは難しいので、今回はロジックICを使って簡単に作ってみました。

これが今回作ったTDR測定用パルス発生器です。
主に74HC14と2SC1815で構成されています。
参考までに回路図です。定数は結構適当だったりします。画像の中のON時間と基板上に書いてあるON時間が違いますね。基板写真に記載の6.8usが正しいです。電源電圧によってもビミョーに変化します。
まぁ立ち上がり時間が短いのが重要なわけで、パルス幅とか周波数とかは適当で問題ありません。
無負荷時の波形です。立ち上がりは5[ns]といったところでしょうか・・・
負荷によって波形が変わると書いていましたが、具体的な波形の例は以下の様な感じです。
終端を開放すると100%反射されて元の波に上乗せされます。短絡だと位相が反転したものが100%反射して返ってきます。
これは高校物理で出てくる固定端反射、自由端反射と同じイメージです。
終端短絡は片方が壁に括りつけられた紐(固定端反射)の波に、終端開放がプールの壁にあたって跳ね返ってきた波(自由端反射)に相当します。

伝送線路の特性インピーダンスと負荷インピーダンスが等しいと、反射波が帰ってこないので、観測される波形が平らになります。

つまり、特性インピーダンスの不明なケーブルの終端に可変抵抗を付けて、反射波が帰ってこない様な値に調整すると、その抵抗値が特性インピーダンスと等しくなっているわけです。

とりあえずやってみましょう~
こんな感じに同軸ケーブルを取り付けて測定します。
Φ1.1[mm] FEP同軸 50[Ω]です。
まずは、終端開放です。反射波が観測されているのがわかりますね。
ケーブルの長さは7.1[m]で、反射波が帰ってくるのにおおよそ68[ns]掛かっています。
光の早さは約3*10^8[m/s]なので7.1[m]のケーブルを往復するのには(7.1*2) / (3*10^8) = 47.3[ns]掛かるはずです。
しかし、実測した値はこれよりも長くなっています。
これは、ケーブルの誘電体の影響で伝播速度が遅くなっているからです。

この、光の速度に対して伝送速度がいくらか?という値は、伝播速度係数や波長短縮率[k=v(伝送路での伝播速度)/c(光速)]としてケーブルのデータシートなどに書いてあると思います。
この例ですと、47.3 / 68 = 0.695ですね。
次に終端短絡です。
DC抵抗があるので0になりきってないですがそれっぽい波形が見えています。
最後に終端に可変抵抗を取り付けて、波形が平らになるように調節したものです。
右側のカーソル付近での反射波が消えています。
可変抵抗の値を測定してみましょう。
51.29[Ω]と出ました。
規格である50[Ω]に近いですねー


次にTVのアンテナ線としてよく使われている75[Ω]の同軸ケーブルで測定してみました。
ケーブルの長さは3.9[m]です。
反射波が帰ってくるのに39.5[ns]掛かっています。
光の速度で伝播すると 7.8 / (3*10^8) = 26[ns]掛かります。
伝播速度係数は0.658ですね。
可変抵抗の値は73.51[Ω]でした。
75[Ω]に近いです。


お次はダ○ソーで売られていたRCAケーブル。
長さは2.04[m]です。
反射波が帰ってくるのに27.2[ns]掛かっています。
光の速度で伝播すると 4.08 / (3*10^8) = 13.6[ns]掛かります。
伝播速度係数は0.5ですね。小さいです。
インピーダンスは29.19[Ω]でした。


最後に秋月で売られているRCAケーブル。
75[Ω]同軸が使用されていて、無酸素銅が使われるなど高級っぽいです。
反射波が帰ってくるのに33.2[ns]掛かっています。
光の速度で伝播すると 6 / (3*10^8) = 20[ns]掛かります。
伝播速度係数は0.602ですね。
実際は接続用のオスRCAの分だけ長くなりますが、、、、
インピーダンスは74.65[Ω]でした。
ほぼ75[Ω]に一致しています。

ということで、前回の簡易測定よりも正確に測定できているのが分かります。

300[Ω]のフィーダー線も測定してみたかったのですが、持ってませんでした。
一台あるとイロイロ使えて便利だと思います。

計算式、測定方法等間違ってるかも知れません。
コメント欄で指摘していただけるとありがたいです。


画像ばっかりの記事になってしまいましたが以上で終わります。