迷走の果て・Tiny Objects

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

8pin PSoCとLTC1799オシレータモジュールでテストオシレータ

はじめてのPSoCマイコン(残念ながら絶版)のテストオシレータを8pinPSoC CY8C27143-24PXIに移植(汗)してみた。
矩形波は基本周波数とその整数倍の高調波から成るのでBPFで基本波だけ抜き出せば正弦波が得られるというわけだ。書籍の回路ではPSoCのクロックを分周したものをBPFに入れているが、ここでは先の記事で実験したLTC1799オシレータモジュールの出力を使うことにした。
Psoc2KHz.jpg
横軸は0.1ms/divなので周波数は約2KHz。
PSoCのBPFはスイッチドキャパシタを使っているので写真の通り波形は階段状になる。

Psoc20KHz.jpg
横軸は10μs/div、周波数は約20KHz。

周波数の下限は試していないが1Hzでもちゃんとでる。
デュアルOPamp、LTC1799オシレータモジュールそして8pinPSoCでテストオシレータが出来る。
振幅も一定。
一番の問題は波形が階段状ということか。
スポンサーサイト

LTC1799を使ったオシレータの実験2

LTC1799_1_20091130122238.jpg
以前に書いた電流反転回路を使って秋月のLTC1799オシレータモジュールを動作させてみた。

LTC1799_2_20091130122238.jpg
写真ではちょっと解りにくいがオシレータモジュール上の3.3Kはショートしておく。

20090912134210116_20091130123541.jpg
ところが発振しない、VRを一旦GNDに回しきると発振が始まる。
OPampの各ピンの電圧を測っているうちに原因が推定できた。
この回路はLTC1799の3pinへ電流を流し込むのが目的なのだが、逆に電流が流れ出てしまっている。
そのため電流反転回路によってOPampの7ピンからトランジスタのベースコレクタを通って電流が流れている。回路の左半分は吸い込み型定電流回路なのだが逆に流れ出しているのだ。
電源立ち上がり時に条件によってはこうなってしまうようだ。
対策として下図の様にダイオードを追加した。
これで正常動作するようになった。
LTC1799用定電流回路3

並列共振回路によるLmeterの実験

元ネタは「トランジスタ技術」1996年6月号370ページ、山下紀幸氏の「簡易インダクタンス・メータの製作と実験」である。
記事中の図7・並列共振法の実験回路を作ってみた。
並列共振式Lmeter

オリジナルではC-MOSインバータによる発振出力をトランジスタによるバッファで受けてLCの並列共振回路と抵抗の直列回路に入れ、さらにバッファを入れて整流しメーターを振らせている。
発振周波数が共振周波数と一致するとメーターの振れがディップする。共振周波数がわかればLの値は計算で出せる。

ここではトランジスタは使わず74HCU04だけで済ませている。回路定数は手持ちの部品を使ったため適当である。

並列共振Lmeter1

並列共振Lmeter2
Lxに100μHのインダクタを繋いだところ、共振周波数は512KHzだった、C=1000pFなので
Lx=96.63μHと計算できる。
こういう計算にはLCR並列共振周波数 と Q値 計算 ツールが便利である。

手持ちの関係でVR1に1MΩを使ったのでディップ点を探すのに苦労する。発振周波数はVRの回転角度の逆数に比例するので、周波数が高いところではわずかに動かしただけで周波数が大幅に変わってしまう。
ここらを何とかしないと。

GICによる電子インダクタの実験・続き

GIC3.jpg

C4=0.1μF
R2=R3=R5=1KΩ
としておきR1を1KΩから4KΩまでかえて自作のLmeterで測定してみた。(ちなみにすべて1%精度のものを使った)
発振周波数というのは自作Lmeterにつないだときの発振周波数である。

抵抗値
(KΩ)
理論値
(mH)
実測値
(mH)
実測値÷理論値
発振周波数(KHz)
11001081.0815.1
22002091.0510.8
33003101.038.9
44004121.037.7

発振周波数が低いと実測値÷理論値が一定値に近づいているようだ。
発振周波数が高いとOPアンプのオープンループゲインの低下により動作に影響しているようだ。
今回はLF412を使ったが、もっと広帯域のOPアンプを使えばいいのかもしれない。

どうやら自作L meterは3%ほど高く表示されるようなので、ソフトで補正しておいた。

これでホントに完成・・・・かな?

PSoC Lmeter・まだまだ続き

以前作ったPSoC Lmeterだが、途中で計測方法を換えてしまったためちょっと表示が落ち着かなくなってる。
発振周波数を測るのにPSoC内蔵オシレータを分周してゲートタイムを作っていたのだが、設計を変えたためこれが問題になってしまった。
CPUクロックを外付けすればいいんだけど、使った基板がLCDをポート1につなぐようになってる。
外付けクロックはポート1_4につながないといけないのだがこれが出来ない。
やむなくゲートタイム用のクロックを外部から入れることにした。

spg8651A.jpg

手持ちにSPG8651Aがあったのでこれを使った。

Lmeter.jpg

空きスペースに両面テープで固定、不必要なピンはすべてカット。
これで表示が安定した。

やっと、完成か?

PSoCでprintfを使う・まだまだ続き

void main(void)
{
LCD_1_Start();
pos(0,0);
cprintf("%5.2f",20.0);
pos(1,0);
cprintf("%#5.2f",20.0);
}

とすると、表示は
   20
20.00
となる。
下の書式だと、小数点の位置を固定できる。
上の書式だと
   20
 20.1
20.11
等と数値によって小数点が移動してしまい、見苦しい場合がある。

PSoCでprintfを使う・続き

昨日の続き。

cprintf("%e",999999.0); は 9.99999e5 と表示される。
cprintf("%E",999999.0); なら 9.99999E5。

cprintf("%d",1234567); は -10617 となってしまう。
1234567は16進数で 12D687
-10617は符号付き2バイトで D687

cprintf("%u",1234567); は 54919 となる、これは符号無し2バイトで D687
う~む、%d は int しか扱えないのか? long は無理なのか?

cprintf("%f",(float)1234567); とキャストすれば1234567と表示される。
cprintf("%f",1234567); では0になってしまった。

PSoCでprintfを使う

mattyさんから、PSoC Designer V5.0 SP6でprintf()が使えることを教えて頂きました。
またprintfでfloatが使えない不具合の回避策も教えて頂きました。
早速試してみました。

続きを読む »

GICによる電子インダクタの実験

GIC2.jpgGenerated Immitance Converter、Z1~Z5に抵抗やキャパシタ、インダクタをつなぐと回路の等価インピーダンスをいろいろと換えられる。
Z=(Z1*Z3*Z5)/(Z2*Z4)
となる。
くわしくはこちら、かなりスクロールしないとGICの解説にたどり着けないけど。



GIC3.jpg左図のように接続するとインダクタと等価になる。
Z=jω(R1*R3*R5*C4)/R2
インダクタLのインピーダンスはjωLだから
L=(R1*R3*R5*C4)/R2


GIC.jpg

R1=R2=R3=R5=1KΩ
C4=0.1μFとしてみた、計算上100mHのインダクタと等価になるはずである。
自作のLmeterで測定したところ109mHとなった。
さらにC4に0.47μFをパラってみた、すなわち0.57μFである。570mHと等価になるはず。
このときの測定値は615mHであった。
109/100=1.09
615/570=1.08
動作は正常なようだ。

欲張ってR2=200Ωにしてさらに大きな等価インダクタを作ろうとしたが、動作不安定となった。
OPampの出力を観ると高い周波数で発振している。
あまり欲張らない方がいいようだ。
極端な例だが
R1=R2=R3=R5=1MΩ
C4=1pF
とすると計算上は1Hとなるが、多分まともに動作しないだろう。
この回路の動作解析しないと・・・。



 | HOME | 

文字サイズの変更

プロフィール

edy

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

ブリッジドT発振回路(3)光るランプ Oct 16, 2017
ダイソーのかぼちゃで電飾 Oct 08, 2017
ブリッジドT発振回路(2)オペアンプとっかえひっかえ Oct 07, 2017
ブリッジドT発振回路(1) Oct 02, 2017
AD587を使った基準電源【追加有り】 Oct 01, 2017
DABPを使った発振回路(5)ランプの特性、分圧抵抗を変更、コンデンサを変更。 Sep 24, 2017
DABPを使った発振回路(4)ランプ変更(修正版) Sep 18, 2017
DABPを使った発振回路(3)LEDからランプ制御へ Sep 09, 2017
DABPを使った発振回路(2) Sep 03, 2017
DABPを使った発振回路 Aug 27, 2017

全記事表示リンク

全ての記事を表示する

ブログリンク

リンク

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

月別アーカイブ

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)
電子工作 (420)
HX711 (2)
ACS712 (6)
数学 (6)
パソコン (12)
PLC (14)
未分類 (39)
ブログ関係 (20)
スカイプ (37)
ロボット (1)
LTSpice (8)
OCXO (0)
arduino (32)
maxima (1)
フランクリン発振回路 (3)
GPS (3)
DTMF (1)
Linux (1)
KOMAINO (7)

タグリスト

最近のコメント

最近のトラックバック

メールフォーム

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

検索フォーム

アクセス

RSSリンクの表示

フリーエリア

FC2Ad

まとめ

Template by たけやん