迷走の果て・Tiny Objects

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

PSoC1ユーザーモジュールSSDM(Stochastic Signal Density Modulation)を試す。

SSDMはLEDの輝度調整用にと少し前からいじっているのですが、以前の記事でちょっとだけ書いたことがあります。
PRSユーザーモジュールでも同じことが出来ますが、SSDMのほうが設定が簡単になっています。

少し整理しておきます。以下SSDMのデータシートから多数引用します。

SSDMを配置(Plase)すると最初にSSDM Configuration画面が出ます。輝度の分解能をどれくらいにするかを決めてから必要なビット数を選びます。
SSDM_configuration.jpg

SSDMのブロックダイアグラムです。
SSDM_Block_diagram.jpg
Stochastic Counterは1から2^N-1までの擬似乱数を発生します。
ここでNはSSDMのパラメータDimming Resolutionです。
SSDM_parameters.jpg
実験ではDimming Resolution=8としたのでStochastic Counterは1から255までの擬似乱数をクロックごとに発生します。
これとSignal Density Counterとの値を比較してビットストリームを出力します。

比較の方法は二種類あります、Less Than or Equal と Less Thanですが、Less Thanにすると後で述べる予定ですがちょっと不都合が生じます。データシートにもLess Than or EqualをRecommendedしてます。
SSDM_CompareType.jpg
さらにEquation1とEquation2には間違いがあります。
実験で確かめました。

Equation1(比較がLess Than or Equal)は

 SignalDensity/DimmingResolution

Equation2(比較がLess Than)は

 (SignalDensity-1)/DimmingResolution

ここでSignalDensityはSignal Density Registerの値ですが、
DimmingResolutionは上に述べたSSDMのパラメータのDimmingResolutionではなく、
SSDMのパラメータDimming ResolutionをNとしたとき、2^N-1になります(ややこしい)

力尽きました^^;;
とりあえずここまでにします。

スポンサーサイト

アマゾンでお買い物・LM2577Sを使った昇圧コンバータ

アマゾンでLM2577Sを使った昇圧DCDDコンバータを入手。
注文してから一週間で到着。一つにリード線が付いてますが、特性測定のためです。


取り急ぎ測定。5V入力、12V出力での効率です。実験範囲内では出力電圧は12Vで一定でした。
いずれもう少し条件を変えて測定してみます。
lm2577.jpg

やりたかったのは、これ。
使っていないUSBケーブルが多数ありますので、被覆をむいてケーブルを切り、ホットボンドで無理やり固定^^;;
以前買ったモバイルバッテリーにつなぎます。これでテープLED(必要電圧12V)を巻いたルーペを光らせます。
このルーペは40年ほど前に買いました。
以前は手持ちの実験用電源を使っていたのですが、ちょっと面倒でした。これで便利に使えます。
lm2577DCDC_ルーペ2

lm2577DCDC_ルーペ

【追記】
再測定、全測定範囲内で出力電圧は12Vで一定なままでした。
さすがにICは熱くなりますが、さわれないほどではありませんでした。
出力電流:2.5A(最大)と言うことですのでまだ余裕があるようです。
lm2577効率2

PSoC Noise Generator

今月号(2015年10月号)のトランジスタ技術には色々興味ある記事がありました。
その中で122ページの「汎用ロジックICで作るランダム雑音ジェネレータ」を読んでいて、これPSoCで出来るんじゃないかと思い、実験してみました。
PSoCにはPseudo Random Sequence Generator というユーザーモジュールがあります。ここでは32Bit PRSを使いました。
使ったPSoCは秋月で一番安いCY8C24123です。BitStreamは適当なポートにつなぎます、ここではP_0_5につなぎました。
クロックはVC3です。
NoiseGenerator_PSoCBlock.jpg

プログラムはデータシートのサンプルをほとんどそのまま流用しました。

 //----------------------------------------------------------------------------
// PSoC Noise Generator
// 2015/09/14
// edy
// 参考文献 
// トランジスタ技術2015年10月号p.122 汎用ロジックで作るランダム雑音ジェネレータ
//----------------------------------------------------------------------------
#include <m8c.h>        // part specific constants and macros
#include "PSoCAPI.h"    // PSoC API definitions for all User Modules
#include "PRS32.h"
#define  dwPOLY    0xE0000200    // Modular Polynomial = [32,31,30,10]
#define  dwSEED    0xFFFFFFFF    // Seed value
void main(void)
{
// load the PRS polynomial
    PRS32_WritePolynomial(dwPOLY);
    // load the PRS seed
    PRS32_WriteSeed(dwSEED); 
// start the PRS32
    PRS32_Start();  
}


トランジスタ技術の記事ではクロック1MHzですが、スペアナなど持っていませんので、ここではクロック1KHzとしました。
NoiseGenerator_Global_Resources.jpg

この出力を直流カットしてからUSBオーディオインターフェースにつなぎ、WaveSpectaで観測しました。
スペクトラムclock1KHz

トランジスタ技術の記事ではクロック1MHzですので1MHzとその整数倍にディップが見られます、ここではクロック1KHzとしたので1KHzごとにディップが見られます。

クロックを1MHzに変更し、出力に20センチほどの電線をつなぎ、AMラジオに近づけたところ、全帯域(540KHz~1600KHz)にわたってノイズが聞こえます、1000KHz付近では少なくなっています。
どうやらトランジスタ技術の記事と同じことが8pinPSoCで出来たようです。74HC164を買いに行かなくてよかった^^;;

いまさらPSoCでLチカ(6)これで終わり(多分)

百均ライトにはスイッチが付いているので、これを使って全体の点滅周期の変更と消灯が出来るようにプログラムを組みました。
StroboLight回路2

光らせてみてうまく動作しているように見えましたが、前回の例があるのでロジックアナライザで見たら、やはりと言うべきか(汗)予期せぬパルスが出てました。
StroboLight_Analize_abnormal.jpg

全体の周期を決めるPWMのPeriodだけを書き換えていたのですが、この時わざわざ停止させてから書き換えていたのでおかしなことになり、点滅周期を決めるPWMのPeriodも同時に書き換える必要がありました。

停止させる必要は無かったのです、8BitPWMのデータシートによると

Period レジスタは、いつでも新しい値に変更することができます。
PWM が停止している時、Period レジスタにある値を書き込むと、同時に Count レジスタにも同じ値が書き込まれます。
PWM がカウント動作を行っている時、Period レジスタへ値を書き込んでも、Count レジスタは影響を受けず、最終カウントに続いて次のリロードが発生するときに、新しい Period 値が Count レジスタに書き込まれます。


停止させて書き換えたものだから、Countレジスタもすぐに変更されてしまい、点滅周期を決めるPWMとタイミングのずれが生じてしまいました。

何度もプログラムを書き換え、ようやく目的どおりの出力が得られました。
StroboLight_Analize_normal.jpg
これにて終わりです(多分)。
簡単なんだからすぐ出来るだろうと思っていたら、予期せぬ動作にみまわれましたが、勉強になりました。

いまさらPSoCでLチカ(5) またまた内部変更

さてDead Band PWMに変更した回路で、出力をロジックアナライザで調べてみました。
ロジックアナライザ

StroboLight_DBPWM.jpg

Channel 0 が P_0_4 Channel 1 が P_0_3 です。全体の周期は計算どおりなのですが。
PWMDB_timming.jpg

Channel 1に予定していないパルス、Channel 0 も二番目のパルス幅が短い。
PWMDB_timming2.jpg
目で見ている限りわからないので今回の目的には問題ないとはいえ、気に入りません。
どうもDead Band Killのタイミングがよろしくないようで、あれこれやったのですが、どうにもうまくいきません。
デジタルブロックの多いCY8C27143をつかえば、ひょっとしたら何とかなるかも知れませんが(未確認)
もったいない^^;;ので、結局インバータで反転出力を作る以前の方式に戻しました。
PSoC_StroboLight.jpg

これなら問題ないようです。
INV_timming.jpg

INV_timming2.jpg

Dead Band PWMと呼んでいますが正確にはPWM デッドバンド・ジェネレータといいます。
データシートはこちら
勉強しなおしです。

いまさらPSoCでLチカ(4) Dead Band PWMを使う

LEDを日亜の5ミリ・白色に変更、さらに光拡散キャップをつけました。
一個120円也のLEDを二個も百均のライトにつけるという愚行^^;;
電流制限抵抗を270Ωから390Ωに変更、ついでにケミコンを追加、安定化のためですが、ほとんど気休めです。
Strobolight_日亜

点灯方式をDead Band PWMに変更、内部の接続がすっきりしました、この方が後で見たときに理解しやすいでしょう、多分。
StroboLight_DBPWM.jpg

水魚堂さんの回路エディタBSch3V用自作ライブラリの公開

水魚堂さんがBSch3Vの更新を終了されました。
BSch3Vはとても便利でずっと使わせていただいてます。作者の岡田氏にはとても感謝しています。

だからと言うわけではありませんが、BSch3Vの自作ライブラリをGoogleDriveにて公開します。
既に諸先輩方の優れたライブラリがありますし、ほとんど役に立たないものだとは思いますが、
関心がおありの方がいらしたらメールください。ただし対応にはいささか時間を要する場合があります、ご了承ください。


一部を表示しておきます。
myLib.png

【追記】
公開方法が二転三転しました。申し訳ありません。

いまさらPSoCでLチカ(3)

プログラム変更中。
書き込み中

昔に買ったMIYAMAのICテストクリップMJ-026を使った8PinPSoC用のアダプタです。16Pin用なのでちょっと使いづらい場合があります。
8pinPSoC用アダプタ

今なら秋月で8pinのテストクリップが手に入ります。

いまさらPSoCでLチカ(2)

ちょっと前に百均で見つけたLEDフラッシュライトに組み込んでみました。
ユニバーサル基板を削って、もともと付いていた白色LEDを外して付け直しました。
StroboLight内部2

StroboLight内部

回路図です、載せるほどのことはありませんが^^;;
もともと入っているICの接続はそのままにしてあります、LEDを外せばこのICは電流消費はほとんどないだろうと考えたからです。
StroboLight回路
光らせてみると、LEDの間隔はもうちょっと広げたほうがいいようです。それと点灯周期も長くしたほうがいいように思いました。
いまのままだと私にはちょっとせわしないのです。
電池の持ちですが、12時間連続動作させて見ましたがまだ光ってます。
写真を撮るためにバラしてから組みなおして一時間以上ですが、まだ動作してます。

 | 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 たけやん