迷走の果て・Tiny Objects

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

PSoC1でスポットオシレーターを作る

PSoC1を使った200Hz 1KHz 5KHz 切り替え式のオシレーターを作りました。
1KHzだけのを作ったことがあるのですが、ちと面白くないので作り直しました。
百均で売ってる3個100円也(税別)のケースに押し込みました。
Spot_OSC_外部


恥ずかしながらの内部。
Spot_OSC_内部

回路図。
この描き方には違和感を覚えます。入力は左、出力は右というのが回路図を描くときの原則だからです。
でもこの場合、部品配置とほぼ一致するのでこれでよしとしました。
Spot_OSC_回路図
以前のスポットオシレーターは単三を4本も使っていたので、2本にして秋月のDCDCコンバータを使いました。
ただスイッチングノイズが70mVp-pほどあり、出力波形を悪化させるのでLCによるフィルタを入れてあります。
部品はほとんど手持ちで間に合わせました。適当かどうかまでは検討してません。
P[0]3からサイン波が出るのですが、スイッチトキャパシタを使ってるので階段状になります。
そのためCRによる簡単なフィルタを入れてあります。
P[0]2 と P[0]4 はオープンドレインにしてあります。これをオンオフして出力周波数によってフィルタのカットオフ周波数を変えてます。
出力にバッファを付け、もう少しまともな金属ケースに入れたいところですが、ちょっとした実験には充分です。

5KHz出力、オシロで見る限りは綺麗です。
ちなみにこのオシロは三代目(^^;;)オークションで手に入れました。
Spot_OSC_5KHz



スポンサーサイト

広帯域パルスジェネレータの実験(4)回路図とプロジェクトファイルは見つかりましたが・・・

パルスジェネレータの概略です。
LTC1799を使った発振回路をPSoCで分周します。周波数を測り、周期を求めて表示します。
LTC1799とPSoCを使ったオシレータ概略

回路図です。テンキーを使うつもりはなかったのですが、ジャンクボックスで見つけて急遽変更した記憶があります^^;;
LTC1799とPSoCを使ったオシレータテンキー版

プロジェクトファイルを見つけて読んでますが、何をやってるのかよくわからん^^;;
読んでいるうちにあれこれ思い出してはきましたが、細かいところが・・・。
ちゃんとコメントを書いておくべきでしたね、後の祭りですが。

広帯域パルスジェネレータの実験(3)

広帯域パルスジェネレータの実験
広帯域パルスジェネレータの実験(2)

二年近く前に実験していて若干の改造もしたのですが、例によって(汗)放置してました。
9レンジあり、下は7.2mHz(周期138秒)から上は13MHzまで。
最高レンジ以外はデューティ比を5%から95%まで5%刻みで設定可能。低いレンジだともっと細かく設定できるのですが、面倒なのでやめた記憶があります。
どこかにバグがあるようで、周波数表示が一瞬ですがまれにおかしくなるときがあり、わからないままでいつの間にか放置^^;;
テンキーはレンジ切り替えとデューティ比のアップダウン用、周波数を直接設定できるわけではありません。
百均のはがきケースに押し込んでます、いずれまともなケースに入れるつもりなんですが、いつになることやら。
PSoCWideBandPG表


PSoCWideBandPG裏

二月末に体調を崩して以来、調子が悪いままなのですがリハビリ(?)兼ねてデバッグしようかと引っ張り出してきました。
問題なのはプロジェクトファイルが見当たらないこと(汗)

PSoC1 MiniProg電流計(2)回路図等

ジャンパピンを追加しました。ターゲットボードの PSoC1 ではなく、この電流計の PSoC1 にプログラムを書き込むときに使います。

表示を変更しました。左側は電流値(mA)ですが、右側はVcc電圧です、486は4.86と小数点を入れたいのですが、電流値表示とのあいだに空白がなくなって見づらくなるのでやむを得ず小数点を省略しました。自分でわかっていればいいのでそれで良しとします。
写真は100Ωの抵抗を負荷として測ってます。
MiniProg電流計改動作

回路図です。ハイサイド電流センサ回路はあれこれと考えたのですが、今回の場合はこれが一番シンプルです。
これは以前使った回路です。
ハイサイド電流センサ回路についてあれこれ考えたり調べた事はいずれ整理して書くつもりです。(あくまでつもりです^^;;)
MiniProg電流計MCP3425_2

PSoC1 MiniProg電流計(1)

とりあえず完成。
PSoC CY8C24123A を使い、電流測定用のADコンバータには MCP3425 を使いました。Vcc電圧測定には PSoC のユーザーモジュール ADCINCVR を使いました。
MiniProg電流計表

基板裏、デジット8桁14セグメントLCDとの接続のため大きな穴をあけてあります。
MiniProg電流計裏

ターゲットボードにつないで測定中。表示の左が電流(mA)、右がVcc電圧(V)。
ターゲットボードとの接続用のケーブルはまだ作ってません。ケーブルが出来ればプログラムしながら電流が測れるようになります。
実験中にちょっと思いついたことがあるので、もうちょっといじってみます。
MiniProg電流計動作


PSoC1 MiniProg電流計(製作中)

PSoC1 ばっかり使ってますが、MiniProg をつないだままでターゲットボードの電流を知りたいことがあります。
最近ではターゲットボードの電源端子に 1Ωの抵抗を入れ両端電圧を測るようにしていますが、昔に作ったものにはそんなことをしていません。そこで考えたのがこれ。
MiniProg とターゲットボードの間に咬まして電流を測ろうと言う魂胆です。
デジットの8桁14セグメントLCDにだいぶ慣れてきたので作ることにしました、ただいま製作中。
MiniProg電流計製作中

これで三つ目、老眼にはつらい半田付けですが、だいぶ慣れました。
digit8桁14セグメントLCD裏

PSoC抵抗計

実験していた抵抗計を仮組みしました。LCDの大きさに合わせたかったので電池一本で動かします。
電源には以前に何個か買っていた秋月の5VDC-DCコンバータを使いました。

スイッチが不用意に大きいですが、手持ちを使ったためです、他の部品も全部手持ちを使いました。
手持ちの100Ω~100KΩ 1% 抵抗をいくつか測定してみましたが、1%以内に収まってました。
抵抗計組み上げ

抵抗計組み上げ裏

DC-DCコンバータの特性を測ってみました。
出力電圧は 5.1V 出力電流はほぼ 9.8mA でしたので消費電力は 50mW となります。
電池一本だと効率が悪くなります。
秋月DCDC

【追記】
回路図(と言うほどのものではありませんが^^;;)をのせておきます。
Digit14segLCD抵抗計2

PSoC抵抗計・ADCINC14に変更

ユーザーモジュールThermistor をやめ、前の記事で書いた「はじめてのPSoCマイコン」115ページにある「抵抗測定の基本テクニックとサーミスタ温度計の製作」で述べられている方法をADCINC14 を使ってやってみました。詳しくは AN2107 に載ってます。

やってることは同じだから当然同じ結果だろうと思っていたら、手持ちの 15KΩ 0.1% 抵抗が 14.98K と低く表示されてしまいました。
前はちゃんと 15.00K と出たんですが。
基準抵抗は同じ 15KΩ 0.1% なので入れ替えてみましたが変わらず。

ユーザーモジュールThermistor のデータシートを読んでると気になる箇所がありました。

Thermistor_Start.jpg

サンプルレートによってパワー設定が変わるようになっています。なぜ変える必要があるの私の頭ではわかりません。

今回のプロジェクトではPGA_1、PGA_2 及び ADCINC14 はすべて HIGHPOWER に設定していました。

PGA_1_Start(PGA_1_HIGHPOWER);
PGA_2_Start(PGA_2_HIGHPOWER);
ADCINC14_Start(ADCINC14_HIGHPOWER);

これをすべて LOWPOWER に変更したところ 15KΩ 0.1% 抵抗は 15.00K となりました、やれやれ。

でもパワー設定で変わってしまうのは何故か、繰り返しますがわかりません。

手持ちの 62KΩ 1% 金属皮膜抵抗を測っているところ。手持ちのテスターでは 61.7K でした。
基板左側の抵抗と半固定抵抗は無関係です、電圧計の実験をしていたときの名残りです。
表示が4桁になるように丸め処理をしてます。3桁で充分なんでしょうけど、それではちょっとさびしいので。

抵抗計4桁表示

PSoC抵抗計であれこれ測ってみた。

先の記事で作った抵抗計で手持ちの抵抗を測ってみました。
読みが 10KΩ以上の場合は小数点以下2桁に丸めるようにプログラムしてます。

15KΩ 0.1% 抵抗は2個買っておいたので、まずはこれから。
結果は 15.00(KΩ) となりました、これで違ってたら 0.1% の意味ありません。

下の表は手持ちの金属皮膜抵抗をいくつか測ったものです、すべて 1% です。

PSoC抵抗計・測定結果
公称値(KΩ)読み(KΩ)誤差(%)
0.010.00911.111
10.9990.100
4.74.704-0.085
9.19.121-0.230
109.9890.110
1514.970.200
2019.970.150
3332.950.152
9190.800.220
100100.87-0.862
390388.500.386
 


10Ω(0.01KΩ)では誤差が大きくなります、また 390KΩでは表示がばたつきました。
これは原理上の問題です。再度のせますが
Rref と Thermistor をつないだ点の電圧を Vx とすると
Thermistor(の抵抗値) = Rref * ( Vx - VrefLo ) / ( VrefHi - Vx )
で計算します。式の中に引き算が入っているので値が近い場合、桁落ちが起きるためです。
Thermistor_原理

Rrefを切り替えるなどすればいいのでしょうが、複雑になるので今回はやめておきます。

デジット8桁14セグメントLCDを試す(4)抵抗計/ユーザーモジュールThermistorを試す

先の回路を変更して抵抗計を試してみました。
写真は手持ちの 10KΩ 1% を測っているところです。まだゼロサプレスはプログラムしてません。
基板左側の抵抗と半固定抵抗は前の回路でアッテネータとして使ったもので、今回は外してあります。
抵抗計_写真

回路図です、簡単です。
Digit14segLCD抵抗計

PSoC Designer 5.4 SP1 には Thermistor というユーザーモジュールがあります。
ところで引用したサイプレスのサイトでは(今現在)バージョン2.00となっていますが、ここで使ったユーザーモジュールのバージョンは 2.10 です。サイプレスはやる気あるんでしょうか?
サイプレスにとってPSoC1はとっくに終わってるデバイスなんでしょうね。
Thermistor_Parameters.jpg

サーミスタは温度で抵抗値が変化します、まず抵抗値を測定し、サーミスタの特性から温度を求めます。
今回は抵抗測定だけにしました。

「はじめてのPSoCマイコン」115ページにある「抵抗測定の基本テクニックとサーミスタ温度計の製作」で述べられている原理をユーザーモジュール化したものですのでプログラムが簡単になります。
読み出しルーチンです、温度は読まないのでコメントアウトしてあります。

while (!(Thermistor_fIsDataAvailable())); /* Loop until value ready */
//Temperature = Thermistor_iGetTemperature();/* get temperature */
Thermistor_GetResistance(&Resistance); /* get resistance */


原理ですが、下図のようにRref と直列に Thermistor を接続、VrefHi と VrefLo をつないで三点の電圧を測ります。Mux はアナログマルチプレクサです。
Rref と Thermistor をつないだ点の電圧を Vx とすると
Thermistor(の抵抗値) = Rref * ( Vx - VrefLo ) / ( VrefHi - Vx )
で求まります、これによって PGA や ADC のオフセットやゲインエラーがキャンセルできるというのですが、三点を同時に測っているわけはありませんので、測定中にオフセットやゲインが大幅に変化してしまうと誤差になりますが、通常はまず問題にならないでしょう。

Thermistor_原理


うっかりハマッてしまったこと(汗)がありましたので、書いておきます。
Ref Mux は (Vdd/2)+/-BandGap としておきます。他の設定にしてしまうとおかしなことになりました。
抵抗計Global_Resources

ここで使う Rref は基準になる抵抗ですから高精度なものが必要です。デジットで誤差±0.1% の抵抗が140円で売っていたのを覚えていたので買いに行ったのですが、お目当ての10KΩ 0.1% が売り切れ。もう入荷は無いとのことです。他メーカーのなら250円でありましたが、ためらってしまって15KΩにしました。
抵抗値は Thermistor Wizard で設定できますのであまり極端な値でなければ問題ないでしょう。
Thermistor_Wizard.jpg

表示の関係で 1MΩ 以上は測れませんし、レンジ固定なので低抵抗では有効数字が少なくなりますが、よく使う数百オームから数十キロオームの抵抗値を調べるなら充分使えます。

 | HOME |  古い日記に行く »

文字サイズの変更

プロフィール

edy

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

店の電飾(2)回路の変更とスケッチ Jun 25, 2017
店の電飾 Jun 18, 2017
Arduino Pro Microを試す。(3)HIDとして使う(2) Jun 15, 2017
Arduino Pro Microを試す。(2)HIDとして使う Jun 04, 2017
Arduino Pro Microを試す。(1) Jun 03, 2017
脈拍センサー MAX30102を試す(2)MAX30100と比較 May 29, 2017
脈拍センサーMAX30102を試す(1) May 25, 2017
脈拍センサーMAX30100を試す(5) May 20, 2017
MT3608モジュールを使ったDSO Shell用電源 May 16, 2017
脈拍センサー MAX30100を試す(4)MAX30100_Registers.h を調べる。 May 13, 2017

全記事表示リンク

全ての記事を表示する

ブログリンク

リンク

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

月別アーカイブ

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

タグリスト

最近のコメント

最近のトラックバック

メールフォーム

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

検索フォーム

アクセス

RSSリンクの表示

フリーエリア

FC2Ad

まとめ

Template by たけやん