迷走の果て・Tiny Objects

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

カスタマフォーラム

Cypressのカスタマフォーラム(右下に入り口があります)に参加してみました。
早速PSoC Support Forumを読んでるんですが、全部英語(汗
スポンサーサイト

リンカー、テイラー、ソルジャー、スパイ

psoc060529_1Global ResourcesでAGndBypassをEnableにしてビルドすると

psoc060529_2こんなエラーがでました。

指定されたファイル:PSpC Designer→tools→Overlap.txtを開くと

This linker error implies there is a memory area conflict. This is typically seen when
an absolute code area has grown into a relocatable memory area. The most common symptom for this error comes from the growth of the boot code, due to global parameter changes, encroaching into the start of relocatable code. In this case, you can increase the start of the relocatable start address by changing the value of the address in the Project >> Settings... >> Linker dialog.


グローバルパラメータが変わってブートコードが大きくなったのでメモリコンフリクトが生じたということらしい。
psoc060529_3リンカーダイアログを開くと150だったので152にしてみるとエラーがなくなった。
やれやれ。

PSoCアプリケーションノート

PSoCDeveloperに新しくBeta Application Note Systemが出来てました。
アプリケーションノート探しがこれでらくになる(かも)
それにしてもBetaって(汗

続・キャパシタンスメータ

cmeter050628_1キャパシタンスメータの作り直し。
スイッチをHC4053からHC4066に変更した。
スイッチが切り替わる際にショートせずに切り替わっているかどうか解らなかったため。
HC4066をオーバーラップしない二相クロックでスイッチする。
そのためのクロックをPSoCで作り出す。DeadBandPWMを使えばいい。

cmeter060528_2.jpg双信のキャパシタ。0.25%!!

cmeter050623_3下の8PinはCY8C27143-24PI

続きを読む »

動かん・続き

やはりここで使ってるロータリーエンコーダは秋月のとは違うようだ。
The Sillicon Walletのソースファイルの一つ"quadrature_encoder.c"を読んでいたら

signed char quadrature_encoder_get( void )
{
signed char retval;

//note that the effective count is halved respect the teoretical
//count because the encoder used has detents that engage only
//when A=B=0 or A=B=1
//therefore return count/2 and leave the remainder in the counter
//also, disable interrupts during operation because count is changed by an ISR
M8C_DisableGInt;
retval = count/2;
count %= 2;
M8C_EnableGInt;

return retval;
}


とある。コメントにあるようにdetent(昨日の記事では停止位置と表現した)はA=B=0またはA=B=1の時らしい。これだとcountは停止位置から次の停止位置まで2増減する。
私が使った秋月のロータリーエンコーダはA=B=1のみが停止位置だからcountの値が違ってくる、増減は4となる。そこで

retval = count/2;
count %= 2;


の2を4に変えたらいいはずだ、と思ってやったんだけど、だめでした(泣

やけになってロータリーエンコーダを回しているとLCDの二行目にENTER CODEと一瞬表示されるのを見つえた。

ソースファイルのcombination_lock.cで

LCD_Position( 0,0 );
LCD_PrCString("ENTER CODE:");


とあるように"ENTER CODE:"は一行目に表示されるはずなんだけど(悩)

行き詰ったぁ、取り合えず報知、じゃなかった放置(汗

The Sillicon Wallet動いてるよ!って方がいましたら教えてください。

動かん(;´Д`A ```

PSoC High Integration Challenge 2004The Silicon Walletに手を出してしまった。
面白そうなことにはとりあえず首をつっこめというのが我が家の家訓である(嘘

これが動かない。ヽ(`Д´)ノ

回路を見ると簡単そうだった、CY8C27443、LCD、フォトトランジスタ、ロータリーエンコーダに押しボタンスイッチ、ほとんど手持ちにあるじゃないか!。
パーツボックスにTPS601を見つけたので早速取り組んでみた。
まずはフォトトランジスタのテスト。ところがどうにも感度が悪すぎる。古いから劣化したのか??

あれこれと悩むこと数十分・・・・、はいコレクタとエミッタをまちがえておりました(恥)

とりあえず問題は解決したのでビルドして27443に流し込みPower ON。
ENTER CODE
とLCDに表示された、がそこからだめ、先に進まない。

続きを読む »

ユーザーモジュールLEDについての追記

前の記事でLEDの出力をDevice EditorでstrongやらOpen Drain Highやらと、いろいろ変えて実験してみた。
さて、そのプロジェクトを再度開いてみると全部strongにもどってしまってる、ありゃま、である。
無理もないかな、これは。
レジスタを直接いじればいいのかもしれないけど、間違うと危険だし。
出来ればUser Module ParamatersでStrongやらStrong Slowやらに設定できるとありがたいんだけどね。


I2Cアナライザ(嘘)

RTC-8564のアプリケーションマニュアルには次のような注意書きがある。

注意:本デバイスへのアクセスは、STARTコンディションの送信からアクセス終了後のSTOPコンディション送信までの一連の送信を1秒以内に終了してください。
1秒以上の時間がかかった場合は、内部の監視タイマーによりRTCのI2Cバスインターフェースがリセットされます。


STARTコンディションやSTOPコンディションはPSoCのAPIが自動的に処理しているはずだし、今回の実験では一度に100ビット程度やりとりするだけだから1mS程度で終了するはずだ。
とはいえ実際にどうなっているのかは気になるところである。
psoc050624_1そこで作ったのがI2Cアナライザ(大袈裟^^;)
STARTコンディションはSCLがHの時にSDAがH→Lと変化。
STOPコンディションはSCLがHの時にSDAがL→Hと変化。
これをD-FFで検出している。未使用端子の処理は省略してあるので注意が必要である。

psoc050624_2上がSTARTコンディション、下がSTOPコンディション
いずれも信号の立ち上がり時が各コンディションを示す。
なお画面は0.2mS/divなので最初のSTARTコンディションからSTOPコンディションまで約1.3mS、予想通りである。


psoc050624_3実験の様子、なお回路図では74HC04となっているが実際に使ったのは74HC00である。(どうでもいいことだけど)

電気二重層キャパシタ

psoc060524_1LCDを外したところ。
1Fの電気二重層キャパシタが見える。右横にはショットキーバリアダイオード、手持ちの関係で整流用を使ったけど、逆方向漏れ電流が意外に大きいみたいだ。
電気二重層キャパシタの電圧が半日で0.2Vほど低下している。
非アクセス時のRTC-8564の電流は最大でも800nA。
1Fのキャパシタを800nAで定電流放電したとして、24時間での電圧降下は約70mV。半日で0.2Vとなるとどこかで漏れてるのかなぁ。
キャパシタ自体の漏れかなぁ。

ジャンクションFETをダイオード接続すると非常に逆方向の漏れ電流の少ないダイオードになるそうなので試してみよう、2SK30なら手持ちにあるし。


リアルタイムクロック

psoc060523_1リアルタイムクロックを接続してみた。
テスト段階なので時間合わせ等はまだ出来ない。
写真がちょっとピンぼけ(汗
上の行は時分秒、コントロールレジスタ1、コントロールレジスタ2
下の行は年月日、曜日(日曜が0、月曜が1、・・・)


続きを読む »

ハンダメッキ線

degit060522以前から細かな配線にはラッピングワイヤを使用してきたけど、どうにも使い勝手が悪い。
被覆を剥くのに苦労するし、ハンダメッキしないといけないし。
そんな時デジットで見つけたのがこれ。
物は試しと使ってみたら、手持ちのワイヤーストリッパですんなり被覆が剥けるし、ハンダメッキしてるしすごくいい。
問題なのは価格、これだけで840円也。
ボビンに巻いたのも売ってたけど値段を見てびっくり、6300円也。
高いなぁ、でも使いやすいから欲しいなぁ。

でもこれ、鉛フリーハンダかな?

PSoc Designer 4.3 Beta

ベータ版なのでちょっと心配だけど、趣味でやってるんだから気にすることもない、というわけでインストールしてみた。

起動が早くなった。
User ModulesにLED、LED7SEGが追加された。
このうちLEDについてちょっと実験してみた。
データシートから一部引用する。

Features and Overview
•Support for both Active High and Active Low circuits
•Works with system shadow registers
•Functions (Switch, Invert, and GetState )

The LED User Module is just a couple simple functions to control an LED or any simple device that is controlled by on and off.


単にLEDを光らせるだけではなく1ビットの出力ポートとして使える。
ポートをLEDに設定すると出力は自動的にStongになる。
Device Editorで他の設定(たとえばStrong Slow)にしてもいいのだろうか?
そこで実験。
LED_1からLED_4を設定し、それぞれの出力をDevice EditorでStrong,Strong Slow,Open Drain Low,Open Drain Highとしておく。
次のプログラムを走らせて、出力をオシロで見てみる。

void main()
{
LED_1_Start(); // Active High,Strong
LED_2_Start(); // Active High,Strong Slow
LED_3_Start(); // Active High,Open Drain Low
LED_4_Start(); // Active High,Open Drain High

LED_1_Switch(1);
LED_2_Switch(1);
LED_3_Switch(1);
LED_4_Switch(1);

while(1) {
LED_1_Invert();
LED_2_Invert();
LED_3_Invert();
LED_4_Invert();
}

}

続きを読む »

一応完成

psoc050620思い違いがあったり、途中であれこれ追加したりしたので出来るなら作り直したいところだ。
LCD左下のコネクタはport1とport2のどちらにでも付けられるように急遽追加した、必要があるかどうかは別として。
DIPスイッチを追加した。
左下の黒くて丸いのは可変抵抗器でADCへの入力電圧を作り出す、これはMiniEvalと同じ。
LCD下にはMAX232CとDsup9pinを配置した。
リアルタイムクロックはバックアップ用のバッテリが必要だと今になって気付いたので延期。
空いたスペースに押し込むのは可能だろうけど。
電気二重層キャパシタを入手してみよう。

psoc050620_2はじめてのPSoCマイコンのオシレータを動かしているところ。

製作途中ですが

psoc050612_1MiniEvalでは使いにくいので実験用ボードの製作中。
スイッチ付近のCRはチャタリングキャンセル用。
LCDの下にはRS232C用のICを入れる予定。



psoc050619_2これだけピンを出しておけば実験は楽になると思う(多分)
秋月電子でI2C接続のリアルタイムクロックを買ったのでそれも載せるかも。

手前に見えるショートピンは8ピンPSoCの電源用

キャパシタンスメータの原理

以前載せたキャパシタンスメータの原理

cap060515スイッチがS2にありCxは放電しきっているものとする。
S1に入れると十分な時間の後、CxはVまで充電される。このときの電荷はq=Cx*Vである。次にS2にいれ放電させる。
これを一秒間にf回繰り返すと、充電(または放電)電流は
I=f*Cx*V
となり、キャパシタCxの容量に比例する。
ようするにスイッチトキャパシタなんだけど、どうやって電流を測定するかあれこれ考えてたどり着いたのがTL431を使う方法。

cap_meter

CxはTL431により約2.5ボルトに充電される。
R2には充電電流に比例した電圧が得られる。
スイッチには74HC4053を使った。クロックにはSPG8640BNを使った、残念ながら製造中止らしい。
f=500KHz、v=2.5V、Cx=200pFとすれば
250μA流れるのでR2=800ΩとすればR2の両端電圧は200mVとなる。
f=500KHzの時、どれぐらいの容量まで測れるかはアナログスイッチの内部抵抗等によって制限される(これについては後日)
大きい容量を測る場合はクロックを下げる必要があるがSPG8640BNは簡単に周波数を変更できるのでありがたい。

ちょっとまとまりがないけどとりあえず記す。

Challenge

PSoC Design Challenge 2002

PSoC High Integration Challenge 2004
Third Prize: Measuring Large Capacitance. The PSoC Way
大容量キャパシタンスメータが面白そう、回路が簡単だし。
早速ダウンロードして調べてみよう。

パルスジェネレータ・続き

psoc060513_1PSoCの出力にはStrongとStrong Slowがあるので、波形を比較してみた。4.8MHzの出力、上がStrong Slow、下がStrong。
psoc050613_2手持ちにフェライトビーズがあったのでStrong出力に入れてみた。 かなりきれいな波形となる。
psoc060513_3これが使ったフェライトビーズ、確かアミドン製だったと思うがかなり以前に買った物なので詳細は不明。

PSoCでパルスジェネレータ

psoc060512_1psoc060512_2

要はPWMの周期とパルス幅を変えてやればパルスジェネレータになるというわけである。
周波数はどれぐらいまで上げられるのか実験してみた。
PWMのデータシートによると

If the output is routed via the global buses, then the frequency is constrained to a maximum of 12 MHz.

外部に出力するにはグローバルバスを通すから最大でも12MHzだろうと思って、まずVC1の分周比を1にしておきPWMのクロックをVC1にしたが、だめだった。12MHzが出ない。
VC3がSysClk*2と出来るのに目をつけた。これでVC3は48MHzになる。これを三分周して16MHzを得る。これをPWMのクロックとしたところ、8MHzの出力が得られた。

psoc060512_38MHz出力。リンキングがひどいが、MiniEvalで試したので無理もないかもしれない。
後はPWMの周期とパルス幅を変えてやれば周波数は可変出来るが、この場合8MHzの整数分の一の周波数しか出せない。
8MHz,4MHz,2.66MHz,2MHz,1.6MHz,1.33MHz,1.14MHz,1MHz・・・といった具合である。
そこで今度はVC3の分周比を変えることを思いついた。
分周比を4にすれば6MHzの整数分の一、5にすれば4.8MHzの整数分の一の周波数が得られる。

psoc060512_5回路図、というほどのことはない。電源などは省略してある。
周波数を変化させるのは可変抵抗器の出力をAD変換することによって行う。可変抵抗器を回すので周波数を連続可変出来るように思うが、実際は離散的にしか変化しない。

続きを読む »

どうにか完成

psoc060509_2PSoC( CY8C27143-24PI)を使ってワンサイクル・ゼロクロススイッチング式のコントローラ、どうにか完成した。
電流波形を見るとワンサイクル単位でちゃんとゼロクロススイッチングしている。

psoc060509_3覚え書きのため回路図を残しておく。手持ちの部品を使ったので定数はいい加減である。
PSoCの出力でSSRと動作確認用のLEDを駆動しているが回路図には載せていない。
プロジェクトファイルもアップロードしたいんだけど、ここのブログはzipファイルを受け付けない(涙)

psoc060509_1前に作ったのを出来るだけ流用したので、本来は不要な部品が乗ってる。
SSRとLED駆動用にトランジスタを使っているが、PSoCで直接ドライブできるはずである。


続きを読む »

作り直し

current060507_1自作の電流計を新しいケースに入れ替えた。
要は秋月の電圧計キットで1Ωの抵抗に発生する電圧を読んでいるだけである。
前のはVHS-C(古)テープケースに詰め込んでいたのだが、デジットで手頃な大きさのケースを見つけたので入れ替えた。
これだけゆったりしていると製作は楽である。



current060507_2小数点を表示させるのにインバータが必要なのでここではシングルゲートNANDを使ってみた。
以前買った変換基板にハンダ付け。

PICカウンタ

piccounter060503以前出てきた秋月のPICカウンタをケースに収めて完成。
AとBのアナログ入力があるが、A入力は電池の電圧を表示するようにした、092という表示は9.2Vのことである。

暑い

今日はえらく暑い。
だからというわけではないが、前に作った低抵抗計/温度・湿度計を引っ張り出してきた。
消費電流を測定するためである。
低抵抗計 約77mA
温度/湿度計 約12mA
低抵抗計では11個使っているユーザーモジュールの内、パワー設定できるモジュールは4個でいずれもハイパワーで動かしているのに対し、
温度/湿度計では4個のユーザーモジュールを使い、そのうちパワー設定できるモジュール2個はローパワーで動かしている。

アクセス解析

4月のアクセス解析
投稿数 20
visit 1006
page view 2902
コメント 1

先月より多いけど、コメントがほとんどないのは無理もないか。
もうちょっと細かいところまで書いた方がいいのかなぁ。

 | HOME | 

文字サイズの変更

プロフィール

edy

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

脈拍センサーMAX30100を試す(5) May 20, 2017
MT3608モジュールを使ったDSO Shell用電源 May 16, 2017
脈拍センサー MAX30100を試す(4)MAX30100_Registers.h を調べる。 May 13, 2017
脈拍センサー MAX30100を試す(3)正常動作?? May 12, 2017
脈拍センサー MAX30100を試す(2)スケッチとライブラリー May 10, 2017
脈拍センサー MAX30100を試す(1) May 08, 2017
Studuino用電池ボックスを作る(2) May 06, 2017
Studuino用電池ボックスを作る May 05, 2017
MT3608モジュールのテスト Apr 30, 2017
BME280モジュールを使った温度・湿度・気圧計(2)DSO Shellを使って動作電流を測る Apr 23, 2017

全記事表示リンク

全ての記事を表示する

ブログリンク

リンク

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

月別アーカイブ

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

タグリスト

最近のコメント

最近のトラックバック

メールフォーム

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

検索フォーム

アクセス

RSSリンクの表示

フリーエリア

FC2Ad

まとめ

Template by たけやん