[ PSoC5 ] 試食。
by cronos on 1月.19, 2013, under PSoC
今までAVRを使ってきたのだけど、firmwareが不自由なcronosさんは
RAMを使いすぎてカツカツで、ツラい開発に疲れました。
昔、PSoC1の頃に紹介して貰って、デバイス色々見て回った結果AVRを
選択していた訳なんだけども、最近また、MFTの時にPSoCイイヨって
オススメされたので、ちょっと調べてみた。
PSoCも世代が進んでいたようで、PSoC3(M8Cコア,8bit) , PSoC5(Cortex-M3,32bit)
なるものが出ている事に気がついて。 Cortex-M3はちょっと気になっていたので
PSoC5を味見してみようかなって事に。
デバイスは、Digikeyでも買えるんだけど、Cypress本家のHPから買う方が安くて
しかも送料無料(現時点)。 これは使わない手は無いよね。
で、デバイス買った直後にCypressがPSoC5LPをMPにしおった。
スピードも速くて同規模が安い。Cypressめ…。
デバッガ(MiniProg3)もCypress本家から調達したんだけど、こっちは送料掛かった。まぁ良いけど。
という事で味見ボードを作ってみている。
何しろリソースが潤沢なので、あれこれ載せてみたくなって、こうなった。
まだデバイス載せただけで配線はこれから。
QFNパッケージのデバイスは、ピンピッチ0.4mm。
・追記 13/01/19 23:58
電源配線を途中まで進めている。
0.4mmピッチの手半田は久々だけど、まぁ何とかなるもんだ。
・追記 13/01/29 23:54
取り敢えず全配線が終わった。 電源も載せたのでテキトーな電源でも開発okだ。
[ 電子負荷 ] FW更新
by cronos on 1月.15, 2013, under Virtual_Load
現在配布しております電子負荷のファームウェアにあった不具合を
Fixしたファームウェアを作成致しましたので、以下にて公開致します。
変更内容は…
1. 電流キャリブレーション機能の修正
電流キャリブレーション中に途中で中断した場合に、中断後も
キャリブレーション時の電流が出続けてしまう不具合を修正しました。
2. bコマンドの不具合改修(再)
bコマンドで表示される経過時間が、32767秒を超過すると
時間表示が負になってしまう不具合を修正しました。
修正後は、4,294,967,295秒まで拡張されています。
適用の程宜しくお願い致します。
リリースノート(Ver1.4)
ファームウェア(HEX)
ファームウェア(ソース、AVR Studio5.0_Project, 130115時点)
[ PSoC Creator ] 初めて触ったよ。(clockの追加)
by cronos on 12月.29, 2012, under PSoC
実はAVRのRAMが手狭だなと思っていたの。
SPIを関数で吐き出すのも遅いしね。
そこで、所謂PLDが混載されたマイコン(PSoCx)をお勧めされて
いっちょ触ってみようか、となった訳。
PSoCと言っても色々シリーズがあるよね。
PSoC1,3,5,5LP とある中で、今回は5,5LPを対象にしたい。
5,5LPはCortex-M3コアなの。
ChaNさんのレポートを見るに、バイナリの効率も倍くらい見込めそうなので
Flashは額面の実質倍。 RAMもAVRの頃の64倍とか確保出来そうだ。
ただ。
IDEの作りが、ホント独特で
まず事始めに何をしたら良いのか皆目検討が付かなかった。
内蔵OSCが色々選べるようなのだけど、UARTを使おうとすると
内蔵OSCでは精度が足りないらしい というのを何処かで読んだので
学習も兼ねて、取り敢えずXTAL端子(XI/XO)端子から
クロックを与えたいかなと思ったりした。
PSoC使いの方にTLで教えて貰ったところ、MHz_XI端子に
水晶発振”器”(レゾネータではなく、オシレータ)を接続し
接続モードをECO(External Crystal Oscillator)にすると
動作が不安定になるらしく。
R*とか、AVRとかじゃ考えられない事なんだけど、PSoCってのは
汎用のGPIOピンに専用の機能(UARTとか、タイマとかね)が予め
割り当てられている一般のマイコンと違って、どのピンに何の
機能を割り当てるのか。 そこに割と自由度が有るみたいなんだな。
外部オシレータの接続先も同様で、IDEの上で定義が出来る。
が、オプションの階層が深かったり、定義出来る手段が多く
(PLDの回路図入力CADみたいな画面と、Cのソースと、あとクロック定義の画面。)
それぞれがどう関連付いてるのか分からん。
見てると眠くなっちゃうんだけど、何とか定義が出来たみたい。
方法は以下の通り。
1. TopDesign タブを開けて、Component Catalogから
Cypress Component Catalog -> Ports and Pins -> Digital Input Pin [v1.80]
というのを選び、TopDesignタブの方眼エリアにドラッグする。
2. ドラッグしたDigital Input Pinをダブルクリックし
Typeタブ-> Digital Input と、その下階層のHW Connection にチェックを入れる。
3. 同じ子ウィンドウの中にあるName に好きな信号名を定義する。 (ここでは”sysclkとした。)
4. 次にピン定義。 *.cydwr というのを探し、ダブルクリックして
その中にあるPinsタブを選ぶ。
5. デバイスの絵が出てくるので、絵の右側にあるネット名一覧(?)にある
先ほど定義した”sysclk”が有るので、PortのエリアでGPIOピンを指定する。
Pinのエリアで、ピン番号での指定も出来るみたい。
6. *.cydwr内の、今度はClocksタブを選ぶ。
クロックの系統図みたいなのが出てくるので、右側にある”Digital Signal”の
チェックを付け、有効化する。
Nameの右側に[…]みたいなのが有るので、そこからさっき定義したっぽい
clockに関連があるネットを選ぶのだけど、ここでハマった。
定義したはずのピン名だったり、ネット名らしきものが出てこない。
Show un-named signals ってのにチェックを入れたらNet_2みたいのが出てきて
無事選ぶ事が出来た。
7. 当然、外部供給の周波数なんて未知なので、Signal Frequency: のエリアに
突っ込む予定の周波数を書いておく。
これで定義出来たらしいんだけども、分からない事だらけだ。
Digital Signalとして登録した、新たに定義したsysclk と、
Net_2という信号との間にどういう関連があるのか。
そもそも、この方法で合っているのか。
もしダメで失敗した途端に内部コアと音信不通になったら、やだな。
Cypress本家から、PSoC5(LPではない)のデバイスを調達したのと
miniPROG3をゲットしたので、実際に動かしてみる用の評価ボードを
作って動作確認してみようと思う。
[ 電子負荷 ] FW更新
by cronos on 11月.12, 2012, under Virtual_Load
@honet さんに電子負荷用のGUIを作っていただきました。
@honetさんありがとう!><
https://launchpad.net/vloadctl
現在配布しております電子負荷のファームウェアにあった不具合を
Fixしたファームウェアを作成致しましたので、以下にて公開致します。
変更内容は…
1. アボート機能の追加
ご要望頂いていた、bコマンド・Pコマンドへのアボート機能を追加致しました。
測定中に”q” or “Q”を入力する事により、測定を途中終了する事が出来ます。
2. bコマンドの不具合改修
bコマンドで表示される経過時間が、32767秒を超過すると
時間表示が負になってしまう不具合を修正しました。
修正後は、4,294,967,295秒まで拡張されています。
3. bコマンドへ累積消費容量表示を追加
測定時間間隔と、消費している電流から
消費された容量を計算、mAh単位で表示します。
適用の程宜しくお願い致します。
リリースノート(Ver1.3)
ファームウェア(HEX)
ファームウェア(ソース,AVR Studio5.0 project,121111時点)
ボトムパッド付きQFN部品。
by cronos on 9月.02, 2012, under 未分類
最近頒布しているボードに、やたら小さい部品が載っているじゃない?
あれ、QFN(Quad Flatpack No Lead)というパッケージなのだけど
eagleでライブラリを作ったり、実際に実装するにあたって
cronosさんが気にしている所を纏めておこうと思いました。
取り敢えず、eagleのライブラリ作りについて纏めたので下に置いておきます。
#追記 (120913_0020) 手半田でのデバイス実装手順を掲載しました。
QFN部品のEagleライブラリ登録 & 部品実装のしかた
[ 電子負荷 ] FW更新
by cronos on 8月.05, 2012, under Virtual_Load
現在配布しております電子負荷のファームウェアにあった不具合を
Fixしたファームウェアを作成致しましたので、以下にて公開致します。
変更内容は、電流キャリブレーションのデータを参照するブロックで
電流指示値からD/Aコンバータへのデータに変換する処理において
設定電流値全域で、5mA~25mAのキャリブレーションデータのみを
使用していた不具合のFixとなります。
設定精度に関わる変更となります、適用の程宜しくお願い致します。
リリースノート(Ver1.1)
ファームウェア(HEX)
ファームウェア(ソース,AVR Studio5.0 project,120805時点)
[ 電子負荷 ] 最終仕様
by cronos on 7月.22, 2012, under Virtual_Load
先日、無事FPGA-Cafeさんに電子負荷4セットを納入させていただきました。
TLの中で触れた最終仕様をblogの方にも掲載しておこうと思います。
耐圧:30V
電流0~5A(1mA Step, 設定確度約0.1%)
電圧モニタ(0~30V, 1mV Step, 確度約0.1%)
電流モニタ(0~5A, 1mA Step, 確度約0.1%)
※設定・モニタ確度はキャリブレーションの精度に依ります。
定電流出力モード
バッテリ放電特性測定モード
電源出力電流-垂下電圧測定モード
PCとの通信:USB経由。(I/Fは電気的に絶縁されています!)
・添付の組み立てマニュアル
http://bit.ly/P6oiDC
・セット内容物
1. 電子負荷ボード (x1ヶ)
2. パワーFET (x3ヶ)
3. 熱伝導シート (x3ヶ)
4. 330Ω抵抗 (x3ヶ)
5. ヒートシンク (穴加工済み x1ヶ)
6. 組み立てマニュアルカード (x1ヶ)
[ 電子負荷 ] 完成
by cronos on 5月.15, 2012, under Virtual_Load
今までに見つかった全ての問題に対応し、基板の改版を行った。
完成した電子負荷を使った測定例を以下に示す。
電子負荷の利用例(1): 秋月パワーLEDの順方向電圧-順方向電流特性。
電流は最小分解能の1mAステップで変化、電圧は1mVステップで記録しています。
http://bit.ly/JMMOat
電子負荷の利用例(2): 実験用可変電源の負荷電流-出力電圧特性測定。
http://bit.ly/J3KkWh
電子負荷の利用例(3): Li-ionバッテリの放電特性測定。
…ダメバッテリの例 http://bit.ly/KfpwHM
ボードとFETのセットを、FPGA-Cafe Fablab Tsukubaで頒布する予定です。
価格・時期は追ってご連絡します。
http://www.fpga-cafe.com/
回路図・ソースコードは全て公開します。
ソースについては、機能拡張等を行われた場合フィードバックを頂けますと助かります。
回路図
ソースコード (AVR Studio5.0 project,120515時点)
[ 電子負荷 ] 困った問題。
by cronos on 4月.30, 2012, under 未分類
困った。
精度高く電流制御が出来て、電流モニタも出来たまでは良かったのだけど
端子電圧の測定値に誤差が出てしまう問題がなかなか解決出来ない。
分かっているのは電流0の時は値がよく安定している事と
電子負荷に電流を喰わせると、喰わせている電流値に比例して
測定電圧に誤差が出てくる事。
電圧測定端子の電圧をテスタで測っても想定通りの電圧で
モニタ電圧のように誤差は出ていない。
結果的に、GNDの電位差が誤差を引き起こしていた模様。
今回の電子負荷は、大電流が流れる定電流回路のリターン側を
制御回路のGNDと同一電位として構成していたのだけども
電流が流れると、配線抵抗x電流で発生する電圧分だけ
全く電流が流れていないGNDとの間で電位差が出ちゃうわけ。
悪いことに、大電流側をボード上のGNDにしてしまっていたために
電位が高い側のGNDがボード上の基準となってしまい
それよりも(電圧降下分だけ)低い電圧をADCが正しく受けられなかったみたい。
その証拠に、電位差が出ているGND間をショートしてやると
電圧計のマイナス側がしっかり測定範囲に入ったため
テスタの指示値とモニタ値が一致した。
何の事だか分からないと思うけど、結局はADCの入力範囲を
超えた入力を(結果的に)しちゃってたって事。
そりゃ正しく測れないわな。
原因が分かれば修正は簡単。
ボードのGND接続点を変更、電流を最大で流しても問題ない事が確認出来た。