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

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


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

2013年4月24日水曜日

micro DRSSTC 動作確認

2次コイルをΦ0.11mmで巻き直したmicro DRSSTCですが、バラックで動作させてみると6cmほど放電しました。

今回は2次側のアースから位相信号を取り出しています。こちらのほうが上手く動くようです。

アースは簡易的に25cm×20cmの生基板を使用しました。このアース板は、大地に繋がってるアース線と繋ぐと放電距離が短くなるようです。。イロイロ謎ですが

とりあえず写真とか(つべのスクショ
共振周波数が1MHzと高いため、放電に触れても痛くないですね。
あと、ゲートドライバICの電源電圧を高くしたほうが放電距離が伸びるんですが、定格ギリギリで使用していると煙が出てきてパッケージが割れましたw
電源電圧は12V程度にして、GDTの巻数比を変更するほうがよさそうです。

動画はつべに上げておきました。

--- メモ ---

2次側フィードバック方式
バス電圧: 220[V] (ZVS driver)
共振周波数: 約1[MHz]
2次コイル巻線直径: 0.11[mm]
2次コイルまきとり高さ: 10[cm]
2次コイル直径: 32[mm]
トロイド: 缶ビールの底
トロイド直径: 66[mm]
共振コンデンサ: 0.01[uF] 3[kV]
1次コイル巻き数: 3ターン
1次コイル直径: 58[mm]
スイッチング素子: IRFP260 * 2

制御基板と受光素子、スイッチング素子を1枚の基板に再構築しようとしたんですが、部品が足らないのでまとめはもうちょっと先かな(飽きてるかも)

2013年4月23日火曜日

伝送線路の特性インピーダンスの測定 その1(適当)

最近、授業で特性インピーダンスの話が出てきたのでなんだか実験をしたくなりまして、、

高周波回路について詳しくないので、伝送線路の特性インピーダンス測定方法についていろいろ調べていると、簡易的に調べる方法が載っているサイトがあったので、そこを参考に自分でも試してみました。

難しい話は置いといて、、
まず、伝送線路の一般的な等価回路は下のようになっています。
なぜこのような等価回路に置き換えられるかは、おおよそ想像できると思います。
Rは線路の直列抵抗、Lはインダクタンス、Gはコンダクタンス、Cはキャパシタンスです。

超伝導で無い限り直列抵抗がありますし、電流が流れる線路には磁界が生じますのでインダクタンス成分もあります。
コンダクタンスは線路間の漏れ電流から、キャパシタンスは同じく線路間の静電容量から生じます。
といってもこのまま特性インピーダンスの式で表すと

Zo = √((R+jωL)/(G+jωC)) [Ω]

となって計算がややこしいので上記の回路を簡略化します。
具体的には、等価回路の抵抗RとコンダクタンスGを無視して以下の様な回路(無損失の場合)として考えます。
とてもシンプルになりました。
RとGが消えたことで上記の式は以下のようになります。

Zo = √(L/C) [Ω]

これだとLとCの値を測って代入するだけなので、とても簡単になりますねー
L、Cの測り方は上記サイトのを参考にします。

測定に使うLCRメータはDE-5000で、測定対象は外径1.1mm FEP同軸ケーブル 50Ωです。
微小なLCを測定するので測定前にはあらかじめキャリブレーションをしておきます。

まず、同軸ケーブルの終端を開放してCを測定します。
C = 672.5[pF]。

次に終端を短絡してLを測定します。

L = 2.178[uH]です。
さて、電卓で計算してみると、、

Zo = 56.9[Ω]

と出ました。
誤差にしては大きいですね。

次に一般家庭でもよく使われている75Ωの同軸ケーブル。
C = 270.4[pF]。
L = 1.708[uH]です。

こちらは

Zo = 79.5[Ω]

です。 なんか大きめにでるなー
LCRメータがアレなので微小な値の誤差が大きいのでしょうか?
次はもうちょっと正確に測定できる方法を試してみますw


話が変わりますが、某氏からΦ0.11mmのUEW線を格安で頂きました。ありがとうございます。
これで小型TCの製作がはかどりますねーw

こいつはコイルの巻取り高さが10cmのチビDRSSTCです。巻線がΦ0.18mmだったので巻き直しました。
巻き直す前の二次コイル共振周波数が約2MHzだったのが、1MHz程度まで下がりました。
上手く動くといいですが・・・

2013年4月18日木曜日

オシロ到着。

eBayで購入したディジタルオシロSDS7102Vが本日届きました。
文章打つのが面倒なので画像メインで。(毎回だけど

この状態で届いた。
思ったより梱包されてないが、箱は大丈夫。

くぱぁ。

角がちょっと潰れてる。

同梱品一式。

おまけでワニ口とICクリップの付いたケーブルが入ってたが、作りがめちゃくちゃ安っぽい()
これはあまり使わないかな。。

本体の大きさは前のと同じくらいだが、薄さは半分くらい。

やっぱり液晶が見やすい!流石TFT


追跡画面のスクショ。

手持ちの水晶発振器の出力波形を観測してみた。

画面のスクリーンショットをUSBメモリにビットマップ形式で保存できる。
4MHz

8MHz

32MHz

 48MHz

もう少し行けそうなので、NS73Mを使用したトランスミッタの出力を見てみた。
周波数85MHz、出力電力2mWです。

綺麗な正弦波。。

FFT解析も出来るようです。


他の方が沢山レビュー書いてるので詳しいことはそちらで、、

今後の工作ネタとして蛍光灯インバータ、12V mini DRSSTCのユニット化、TCガン等を考えてます。。

記事が雑になって来ましたが気のせいです。
以上で終わります。