迷走の果て・Tiny Objects

迷走する日々の覚え書きです。自分で分かってることは省略してますので、念のため。

AD9833 DDSモジュールを試す(12) デバッグ

自作したAD9833シグナルジェネレーターはロータリーエンコーダによって出力周波数を変えます。
ロータリーエンコーダをゆっくり回している時は問題ないのですが、勢いよく回すと表示周波数と周波数カウンタで測定した周波数が一致しなくなるという大問題があることがわかりました。
基板むき出しのままで実験している時には気付きませんでした。

ロータリーエンコーダ入力は割り込みによって処理しています。ここら辺に問題がありそうです。

スケッチはAD9833 Waveform Generatorのを一部修正して使わせてもらってます。
スケッチを調べなおしたところ loop() 内に問題があることがわかりました。
オリジナルのloop() の最後は以下のようになってます。(コメントは省略しました)

if (freq != freqOld) {
AD9833setFrequency(freq, waveType);
updateDisplay();
freqOld = freq;
}


freq はグローバル変数でロータリーエンコーダ割り込みによって値が変わります。
AD9833setFrequency(freq, waveType) によって AD9833 の周波数を変え、
updateDisplay() によって表示を変えます。(updateDisplay() は内部で freq を見ています)
AD9833setFrequency(freq, waveType) の処理中にロータリーエンコーダ割り込みで freq の値が変わってしまうと
次の updateDisplay() で表示が一致しなくなることになります。

そこで次のように一時変数 temp を入れて対処しました。そのため updateDisplay() は引数を渡せるように書き換えました。

long temp = freq;
if (temp != freqOld) {
AD9833setFrequency(temp, waveType);
updateDisplay(temp);
freqOld = temp;
}


これで出力周波数と表示周波数の不一致という問題はなくなりました。

割り込みは苦手です、昔も今も。
スポンサーサイト

充電式ツインファンをアマゾンで買いました。

仕事中に欲しいので買ってみました。充電式のツインファン

ビジネス街にある某スーパーに勤めているのですが、昼のとっても忙しい時間にはレジの補助に入ることがあります。
私が担当するのは出入口一番近くのレジ、お昼はお客様がひっきりなしに来店されるので出入口はほぼ開いたままになります。
これからの時期は熱気が流れこんでとても暑いのです。そこでレジに置ける小さな扇風機を探していました。
ネットで探せばいろいろあるのですが、ファンがひとつだけがほとんど、二人でレジ作業をするので私一人涼しい思いをするわけにはいきません。

レジ用扇風機買ったままではレジ作業では使いにくいので改造しました。
かなり昔に買って使わなくなっていたgootのルーペ付き作業台ST-62に結束バンドで縛り付けました、ルーペは外してます。
ちなみにST-62は古いのでもう売ってません、新型はST-92です。

各ファンはある程度角度を変えられます。
これでかなり快適になりました。


電池を内蔵しておりUSBケーブルで充電できます。
風量は弱・中・強の三段階切り替え式です。
スイッチを二秒ほど長押しすると弱でファンが回り出します。もう一度押す(この場合は長押しは必要ありません)と中、更にもう一回押すと強、もう一度押して停止です。
面白いのはスイッチをダブルクリックすると左側が周り、次にダブルクリックで右側が周り、次のダブルクリックで停止します。

問題は耐久性ですが、買ったばかりなのでまだわかりません。
レジ補助は長くても一時間以内なのでまあ大丈夫でしょうが、しばらく様子見です。

AD9833 DDSモジュールを試す(11) どうにかケースに納めた

百均のケースにどうにか納めました。
右側の白いのはダイソーの500円(税別)モバイルバッテリーです。
AD9833SG初号機

AD9833SG初号機裏出力はRCAです。
BNCにしたいところですが、まだアンプを実装しておらず、これからあれこれ試してから金属ケースで作り直すつもりですので、これでいいでしょう。


あれこれ試していると早速バグ発見。
さて楽しいデバッグの始まりです^^;;

AD9833 DDSモジュールを試す(10) ロータリーエンコーダの変更

先の記事の続きです。
スケッチに手を入れたので多少ですが操作性がよくなりました。
百均でスチロール樹脂製のクリアケース見つけたのでこれに組み込んでみることにしました。外寸 155×101×54mm。
これならLCDの角穴を開けずにすみますから^^;;
ついでにロータリーエンコーダを変更することにしました。
ロータリーエンコーダ二つとプッシュスイッチ二つが必要なのですが、以前にデジットでスイッチ付きのロータリーエンコーダを買っていたので、これを使うことにしました。
ところが念のため試してみると、2クリックごとに設定値がアップ/ダウンするようになってしまいました。今までは1クリックごとだったのですが。

デジットスイッチ付きロータリーエンコーダ今までのロータリーエンコーダは秋月のこれ
クリック数:24
パルス数:24
です。

デジットのロータリーエンコーダの説明書を見ると
デテントポジション:30step
15パルス/1回転
となっています。1回転のパルス数がデテントポジションの半分です。

このままではかえって使いにくくなります。

どうしたものかとあれこれやっているうちに「パチッ」っと音がしてArduino NANO互換機とAD9833DDSモジュールのLEDが一瞬消えてしまいました、どうやらVCCとGNDをショートさせてしまったようです。
LCDの表示が消えたままです、輝度調整ボリュームをまわし切るとかろうじて表示されてます。
この状態でも一応スケッチの書き込みはできるし、DDS出力も正常です。

まさかと思って調べるとVCCが約3.3Vしかありません。どうやらNANO互換機の電源周りをおかしくしたようです。
でも約3.3Vはどこから?
Arduino NANO の回路図を読んでもどこをどうしてしまったのかわかりません。
もっとも私のはNANO互換機でUSBシリアルチップがFT232ではなくCH340ですが。
リセッタブルフューズがおかしくなったのか?
今のところ外部から5V電源をつないで動作しているとはいえ、交換したほうがよさそうですね。

さて先の2クリック問題ですが。
ロータリーエンコーダを使うためにRotary Encoder Arduino Libraryを使っているのですが、よく読むと解決方法が載ってました。
引用します。

It's also possible to use 'half-step' mode. This just emits an event at both the 0-0 and 1-1 positions. This might be useful for some encoders where you want to detect all positions. In rotary.h, uncomment #define HALF_STEP to enable half-step mode.


書いてあるとおりに rotary.h の #define HALF_STEP をアンコメントすると1クリックごとに設定値がアップ/ダウンするようになりました。

思わぬ回り道をしてしまいました、一晩棒に振りました(涙

簡易交流電圧計の実験(7)アナログパネルメーターを付けてみる(2)アンプ追加

これ以上ダイオードブリッジ・アナログメーター式ではやらないと書いたのですが、せっかくなのでもう少し続けます。

回路を変更、U1bにゲインを持たせ、10mVrms入力でフルスケール(100μA)になるようにしてみました。

ACmeter5.png(←クリックで拡大)
U1bのゲインは15.7倍で微調整が必要なのでしょうが、今回たまたま10mVrms入力でほぼフルスケールになりましたので省略しました。

U1b出力に-50mVほどのオフセットが出ました。LME49720のバイアス電流は10nA(typ)です。
バイアス電流の影響はU1b・5pinにある220KΩが支配的で、計算上は220KΩ*10nA*15.7=34mVとなります。
オフセット電圧は0.1mV(typ)ですので0.1mV*15.7=1.57mV、バイアス電流によるオフセットと合わせて約36mVとなりオーダーとしては合ってます。
直流カットのためC2を追加しました。10μFでは小さすぎますが、手持ちに無極性のキャパシタがこれしかなかったためです。いずれ大きくします。
R4を3KΩから1KΩにしてここでもゲインを稼ぎます。


LME49720_10mVrms.png(←クリックで拡大)
10mVrms入力と5mVrms入力での周波数特性です。

どのぐらいまでを”フラット”とみなすかですが、5%落ち(-0.44dB)とすれば400KHzぐらいまではありそうです。


デジタルメーターと違ってアナログメーターは読み取りに注意が必要で、正面から読むようにします。
置き方にも注意が必要で、今回のアナログパネルメーターは鉛直にします。

日置100μA印写真の赤丸で囲んでいるのが置き方の記号です。
詳しいことは次のサイトにあります。

計器の種類と計器に表示されている記号

アナログパネルメーターの置き方
(上記サイトから引用)


でも机の上に鉛直においたメーターを正面から読むのは結構やっかいです、上から見下ろすことになるので。
目の高さにまで上げるのも面倒、そこで45度に傾けた鏡をメーターに前において読み取りました。反転するのでかえって読むのが大変でしたが。
できるだけ正確にと思ったからですが、そこまで気にせずに水平に置いても良かったのかな。

さてここまで来たら、入力部にアッテネーターをつけて10mV、100mV、1V、10Vの4レンジ切り替えぐらいできるようにしたいですね。

簡易交流電圧計の実験(6)アナログパネルメーターを付けてみる。

手持ちに100μAのアナログパネルメーターがあったのでつけてみました。

日置100μA(←クリックで拡大)
かなり古いです、おそらくは30年以上前に買ったものです。
何のために買ったのか記憶にありませんが、アマチュア無線をやってたころにディップメーターでも作ろうとしたのかもしれません。

日置製です、日置は創業80年以上になるんですね。

ちなみに内部抵抗は1KΩでした。


実験の様子(←クリックで拡大)
恥ずかしながらの実験の様子。
メーターの上の交流電圧計基板は9V電池二個で動かしてます。



一応回路図です。以前の記事とほとんど同じです。R3は値の変更が必要なはずですが、とりあえずこのまま。
ACmeter4.png

1400Hz電流計フルスケール(←クリックで拡大)
メーターがフルスケール(100μA)になるように入力を調整した時の、入力とU1aの1pin出力波形です。周波数は1.4KHz。
このときの入力は1.3Vp-pと読めますので0.46Vrmsとなります。
入力100mVrmsの時にフルスケールにするにはR3の値を小さくする必要がありますが、まだやってません。

頭の丸い方形波みたいなのが1pin出力ですが、一気に1Vほどジャンプしてます。
これはショットキーバリアダイオードの順方向電圧降下の4倍です。



500KHz電流計フルスケール(←クリックで拡大)
同じく500KHzの時の波形、ピンボケなのはカメラマンがヘボだからです(汗)
このぐらいの周波数になると位相遅れが見えます。


さて気になる周波数特性ですが、1.4KHzで100μAになるように入力レベルを調整後、周波数を変えてみましたが800KHz 400KHz位までほぼフラットで、1.3MHzで94μAとなりました。
あれこれ入力レベルを変えて調べてみましたが、前の実験にあった100KHz位での持ち上がりはありませんでした。見つけられなかっただけかもしれません。

急ぎの実験なのでちゃんと特性グラフを取ってませんが、周波数特性は前よりよくなっているようです。
と言うことは、前の実験に何か問題があったということでしょう。

出力回路
前の回路ではデジタルテスターを直接R4に繋ぐと影響が出たので、R5とR6をいれて抑えるようにしたのですが、まだ不足だったのかも。

もうちょっと続けます。



【追記】
↑の回路でR5,R6にそれぞれ470Kオームを直列に追加して再測定しました。
100KHzぐらいで見られた特性の盛り上がりはなくなったようです。
最初からこれぐらいにしておけばよかった。
ただ合計1.14MΩの抵抗とデジタルテスターの入力抵抗(多分10MΩ)で分圧されるので表示は小さくなってしまいます。
新たに入力0.1Vp-p(35mVrms)で測定、100KHzぐらいまではほぼフラット。

LME49720_抵抗追加

今のところ入力部は単なるボルテージフォロワですが、ゲインを持たせれば10mVrms入力でも測定可能になるかと思います。
ただ実験ですのでこれ以上この回路でする気はありません。
ダイオード二つの別回路での実験を予定してます。まぁ予定は未定で決定にあらず、ですが。

簡易交流電圧計の実験(5)ショットキーバリアダイオードに変更

ダイオードをショットキーバリアダイオードに変更しました。
使ったのは秋月で購入した1SS154です。
後で知ったのですが秋月にはHSMS-2822というSOT23にショットキーバリアダイオードが二個直列に入ったものがあります。
中身はこうなってます。(データシートより引用。)

HSMS-2822.png
この方が今回の目的には丁度いいんですが、今のところ買い足す気はありません。

OPA2604での周波数特性です。シリコンダイオードを使った時より周波数特性は改善されていますが、思ったほどでありません。
0.2Vp-p入力時、100KHzぐらいでの特性の持ち上がりはピークで約1.06倍、前が約1.08倍でしたから多少の改善はあるようですが。
OPA2604ショットキー

次にオペアンプをLME49720に変更しました。
OPA2604はスルー・レート25V/μs、GB積20MHzですが、LME49720はスルー・レートは20V/μsですがGB積が55MHと3倍近く広くなっています。
LME49720.jpg

入力2Vp-p正規化グラフで比較してみると450KHz時、OPA2604は0.93ですが、LME49720では0.97と改善されています。
また入力0.2Vp-p正規化グラフでは1MHzでOPA2604は0.7ですが、LME49720では0.82となっています。
ただ100KHz付近の持ち上がりは依然としてあります。
理由がわかりません。

今回新たに入力4Vp-pでも測定してみましたが、2Vp-pよりも若干特性が悪くなっています。
スルー・レートの影響かと思ってますが、ちゃんと検討したわけではありません。

ダイオードブリッジ式で交流電圧計の実験をしましたが、交流の各半サイクルでダイオードが二個つながっているので特性面では不利だと考えます。
別回路を計画中です、といってもその方がおそらくは一般的でしょうけど。

簡易交流電圧計の実験(4)周波数特性

正弦波で測定したいので、以前ちょっと作ったままで放置していたCG-202R3を使った発振回路を引っ張り出してきました。
中身はウィーンブリッジ発振回路で振幅制御はFETで行われているようです。
周波数を可変とするためには二連ボリュームが必要ですが、ウィーンブリッジ発振回路では二連ボリュームの連動誤差が大きいと振幅制御がうまくいかないことがあります。
安い二連ボリュームを使ったためか、ボリュームの位置によっては発振が不安定気味になることがあり、放置したままでしたが、なんとかなだめすかして(^^;;)使ってみました。

まずはLF412からです。前の実験で基板に刺さったままでしたので・・・。
2Vp-p入力と0.2Vp-p入力、更に一番低い周波数の値で正規化したグラフも載せました。
上記の発振回路は1.4KHzが下限です。


次はOPA2604です。
0.2Vp-p入力では100KHzあたりで持ち上がってます、理由がわかりません。
そこで0.6Vp-p入力でも測ってみましたが、やはり若干持ち上がってます。
入力信号はオシロスコープで観測していてレベルの変動がほとんどないのは確認しています。
OPA2604.jpg

これがなければ100KHzぐらいまでは使えそうなのですが・・・。しばらく悩みます。

そろそろダイオードをシリコンからショットキーバリアーに変えるか。

簡易交流電圧計の実験(3)パルスジェネレーターで周波数特性を測ってみる。やり直し

回路変更、というか抵抗を二本追加しました。R5、R6です。
ACmeter3.png


前の記事で、入力0.5Vp-pの時に周波数特性がほぼフラットになっているのがわかりませんでした。

下の写真はU1a出力です。入力は100KHz、50mVp-pの方形波。
デジタルテスターに触るとこのようなノイズが乗ったような波形が出ます。この時はデジタルテスターはR4に直接繋いでいました。
ACmeterノイズ
R4の両端電圧は(ほぼ)直流ですが、R4の各端子電圧は回路のグランドに対しては入力信号によって変動しています。
デジタルテスターのリード線は約40センチほどあります、それをフィードバックループ内のR4に直接繋いだら影響が出て当然なのですが、考えが及びませんでした。
そこで影響を低減するためにR5、R6を入れてみました.。
100KΩは特に根拠ありません、とりあえず入れてみたわけですが、結果は良好です、ただこれでもデジタルテスターを強く握ったりすると若干のノイズ(発振?)が出ます。R5、R6はもっと大きいほうがいいのかもしれませんが、とりあえずこのままで続けます。

周波数特性です。
方形波入力で5Vp-p、0.5Vp-p、0.05Vp-p。
それぞれ0.1KHzで正規化したグラフも載せたので見にくくなってますが、5Vp-p、0.5Vp-pの正規化グラフはほぼ一致しています。
0.05Vp-pの場合は100KHz位で若干のピークを持ち、その後大きく落ち込んでます、原因は不明ですが、ダイオードがシリコンだからかもしれません。

ACmeter周波数特性方形波入力

前の記事ではスルーレートやオープンループゲインを持ち出して高域での低下を計算してみましたが、今回の結果はそれよりさらに落ち込んでます。前の実験はなんだったのか^^;;
当然スルーレートやオープンループゲインが高域で影響するはずですが、それ以外にも原因があるようです、ダイオードかな?
それと方形波ではなく正弦波で測定すべきでしょうね。

今回の結果を見る限り、100KHz位まではフラットのようです、高域補正にはR3にキャパシタを並列に入れる方法も考えられます。ただ電源に±15Vを要するのは面倒です、電池動作にしたいです。
あとダイオードをショットキーバリアに変更してみたいところです。

とりあえず、ここまで。

【追記2018/04/07】
オペアンプをLF412に変えて特性を測ってみました。
GB積3MHz、スルーレート10V/μsですから特性は落ちると思ってましたが、予想通りでした。
縦軸は対数目盛だとわかりにくいので直線目盛にしてあります。
ACmeter周波数特性方形波入力LF412

簡易交流電圧計の実験(2)パルスジェネレーターで周波数特性を測ってみる。

自作のパルスジェネレーターを使って周波数特性を測ってみました。
パルスジェネレーター出力に可変抵抗器をつなぎ、振幅を変えて測定した結果です。
ACmeter実験グラフ方形波入力2
入力5Vp-pでは高域での落ち込みが目立ちますが、オペアンプのスルー・レートの影響が支配的になります。
使ったOPA2604のスルー・レートは25V/μsですから5Vスイングするのに0.2μsを要します。
周波数1MHzすなわち周期1μsでは立ち上がりに0.2μs、立ち下がりに0.2μsの台形波となり、これはスルー・レートの影響を無視できる低域に比べて出力は単純計算で0.8倍になります。
さらにオペアンプのオープンループゲインの低下も影響します。OPA2604の1MHzにおけるオープンループゲインは25dBすなわち約18倍ですので、仕上がりゲインは計算上のゲインより18/19倍になります。オペアンプを2つ使っているので(18/19)^2となり、先のスルー・レートの影響と合わせて
(18/19)^2*0.8=0.72
となります。
実測値は100Hzで2.70V、1MHzで1.88Vでした。
2.70*0.72=1.94ですので、ほぼ合っていると言えます。
同様に入力5Vp-pで100KHzの場合も同様に計算してほぼ一致します。
あくまで単純計算です。

と、ここまで書いておきながら、入力0.5Vp-pの時はほぼフラットになってます。
私の頭ではちょっと説明がつきません。
もう一度測定しなおしです。

ダイオードはシリコンを使ってますが、ショットキーバリアーダイオードのほうがいいんでしょうね。
休日の課題です。

ところで昔々のトラ技で、オペアンプに方形波なんか入れたら出力が変なことになるからダメ、みないな記事を読んだ覚えがあるんですが・・・。
記憶違いかも・・・。

 | HOME |  古い日記に行く »

文字サイズの変更

プロフィール

edy

最新記事一覧(サムネイル画像付き)

AD9833 DDSモジュールを試す(12) デバッグ 2018/05/20
充電式ツインファンをアマゾンで買いました。 2018/05/19
AD9833 DDSモジュールを試す(11) どうにかケースに納めた 2018/05/15
AD9833 DDSモジュールを試す(10) ロータリーエンコーダの変更 2018/05/13
久々のArduinoなのにOld Bootloader?? 2018/05/06
簡易交流電圧計の実験(7)アナログパネルメーターを付けてみる(2)アンプ追加 2018/04/27
簡易交流電圧計の実験(6)アナログパネルメーターを付けてみる。 2018/04/22
簡易交流電圧計の実験(5)ショットキーバリアダイオードに変更 2018/04/21
簡易交流電圧計の実験(4)周波数特性 2018/04/14
簡易交流電圧計の実験(3)パルスジェネレーターで周波数特性を測ってみる。やり直し 2018/04/06

全記事表示リンク

全ての記事を表示する

リンク

このブログをリンクに追加する

月別アーカイブ

05  04  03  02  01  12  11  10  09  08  07  06  05  04  03  02  01  12  11  10  09  08  07  06  05  04  03  02  01  12  11  10  09  08  07  06  05  04  03  02  01  12  11  10  09  08  07  06  05  04  03  02  12  11  10  09  07  05  04  03  04  03  01  12  11  10  08  07  06  05  03  02  01  12  11  10  09  08  07  06  05  04  03  02  01  12  11  10  09  08  07  06  05  04  02  01  12  10  09  08  07  06  05  04  03  02  01  12  11  10  09  08  07  06  05  03  02  01  12  11  10  09  08  07  06  05  04  03  02  01  12  10  09  08  07  06  05  04  03  02  01 

カテゴリ

プログラミング (0)
freescale (1)
AVR (3)
テルミン (16)
緊急警報放送 (3)
78K (1)
PSoC (295)
地上デジタル放送 (2)
電子工作 (448)
HX711 (2)
ACS712 (6)
DDS (3)
数学 (6)
パソコン (12)
PLC (14)
未分類 (39)
ブログ関係 (20)
スカイプ (37)
ロボット (1)
LTSpice (8)
OCXO (0)
arduino (33)
maxima (1)
フランクリン発振回路 (3)
GPS (3)
DTMF (1)
Linux (1)
KOMAINO (7)
Android (1)

タグリスト

最近のコメント

最近のトラックバック

メールフォーム

名前:
メール:
件名:
本文:

検索フォーム

アクセス

RSSリンクの表示

ブログリンク

FC2Ad

まとめ

Template by たけやん