スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

PSoCマイコン・スタートアップ #5

久しぶりのPSoC。
実は動画をUPし忘れていただけ。

第9章の「CapSenseを使ったMIDI対応音楽キーボードの製作」で作ったものです。

PWMで鳴らす
まずは、PWMで直接スピーカーを鳴らしています。
音量が小さいです。



MIDIで鳴らす
同じハードにちょいと変更を加えて、MIDI音源とアクティブスピーカーを接続しています。
先ほどと比べるとリッチな感じ。

多重押しやピッチベンドも可能です。



詳細な仕組み、回路図や実際のコーディング方法など知りたい人は、本「PSoCマイコン・スタートアップ」を買って見ましょう
スポンサーサイト

PSoCマイコン・スタートアップ #4

あまりの猛暑でブログの更新が止まってました。
今回はPSoCの静電容量センサCSDのパラメータの備忘録です。


Raw Data
まさに「生のデータ」
ノイズや環境による影響値も混じっている


Baseline
「ノイズや環境による影響値」を計算して作った予想データ
Raw Dataが小さい値(<=Noise Threshold)で変化しているときは、「ノイズや環境による影響だ」と判断し、バケット(=容器)にその変化値を加えてゆく。バケットが満杯になったらBaselineを更新する仕組み。


Signal
本書では「Different Count値」と呼んでいる。
Different Count = Raw Data - Baseline
ただし、Different Count <= Noise Threshold の場合は0とみなす

(10_08_29) CSD用語


Finger Threshold
この値を閾値として、タッチなのか非タッチなのかを判断。


Noise Threshold
Signal(Different Count)の判断に使われている


BaselineUpdata Threshold
Baselineのバケットの大きさ
この値を小さくすれば、バケットはすぐに満杯になるので、Baselineの更新は早くなる


Sensors Autoreset
Enableになっていると、タッチ状態のときにもBaselineがじわじわ追いかけてくる。
なので、ずっと押しっぱにしていると、そのうちOFF判定になる(=これをオートでリセットがかかることとしているっぽい)
これは、水などをこぼして、ONのままの状態になったことを想定している
特に、BaselineUpdata Threshold が小さいとすぐに追いついてしまい、長押しとして使いものにならないので注意


Hysteresis
タッチ/非タッチの判定をFinger Thresholdだけで決めてしまうと、Finger Threshold付近でノイズがあるとタッチ/非タッチを繰り返す電圧振幅のチャタリングが発生してしまうので、ヒステリシス幅をもたせている


Debounce
Finger Thresholdの時間的なチャタ防止
ある程度の時間 タッチ状態を保っていない場合は、タッチとみなさない
逆に、この時間を長くしすぎると、短押しに反応しなくなってしまう


NegativeNoiseThreshold
LowBaselineReset
この2つはセットで、タッチ⇒非タッチ時のBaselineを正常に戻すための仕掛けに使うパラメータだと思われる
この仕掛けがないと、タッチ⇒非タッチ時にBaselineが上にずっと張り付いたままになってしまう
Raw Count - Baselineが負のときに、
NegativeNoiseThreshold より大きい値 かつ その状態が LowBaselineReset 回 連続して続いたら、BaselineをReset(一気にRow Dataと同じレベルに)してしまう


以上、自分用にわかりやすくまとめました。

PSoCマイコン・スタートアップ #3

久しぶりにPSoCです。 今回は8章。

CapSenseをチューニングするということで、「USB-I2Cブリッジ・ボード CY3240-I2SUSB」が紹介されています。しかし、このキット 8,000円するのでちょっと悩みましたが、8章のAppendixを見てみると、他の方法でのチューニングが紹介されています。
それがUARTを使って行う方法です。

この方法であれば、安価なシステムで実現できます。
PC側でシリアルデータを受信してグラフを表示するフリーのアプリがCypressで用意されてますので、後は、PSoCからのUART出力を何らかの方法でPCのCOMポートへ入力できればOK。

(10_07_11) CapSense with RS232C-USB

エレバカは、手持ちにあったレベル変換IC「ADM3202」と「Dサブコネクタ9pinメス」と「USB・シリアル変換ケーブル」を使って実現しました。元々UART-RS232C変換基板(写真右側)は、汎用的によく使うので作ってあったものです。裏面にICが居ます。
いずれも秋月電子で手に入ります。

早速、接続。
ちなみに、LEDと抵抗は前回の名残りで機能していません。
タッチセンサは一番右に立っている線材です。


グラフが3本ありますが、赤がナマの近接センサ値そのもの。青は環境の変化を考慮した値。
そして下の緑が最終的な近接センサ値で、赤と青の差分です。(ただし、ある閾値以下はゼロ)
反応が遅いのはUARTや変換しているせいではなく、アプリ側の描画処理時間かと思います。

現在の設定では、手が近付いただけでは最終的な近接センサはOFFのままで、手が接触してONになっているのがわかります。
そこで、閾値を下げれば近接だけでも反応するようになりますが、誤認識も多くなってしまいます。
感度を高めようとすると誤動作率が上がり、誤動作率を下げようとすると感度が低くなる、というトレードオフの関係です。
これを見える化して調整しやすくしてるのが、このツールの目的ですね。
とりあえず今日はここまで。

備忘録
秋月の「USB・シリアル変換ケーブル」をWindows7で使う場合、付属しているCDのドライバでは対応してないようです。
こちらの最新のドライバをインストールしたらOKでした。

PSoCマイコン・スタートアップ #2

今回は、第4章の「イルミネーション付きフォト・スタンド」の製作です。
フォト・スタンドは、本に付録として付いている厚紙を切ったり両面テープでとめたりして作るのですが、
メンドーなのでフォトスタンド無しの「イルミネーション」です。



しかし、単なるイルミネーションではなく、近接センサを用いたモノになっています。


概要
ハードは付録基板以外に、LEDと抵抗、適当な線材などを用い、空中配線しました。
電源はレギュレートされたモノが本当は良いですが、今回はエネループ(公称電圧1.2V)を4本使って、テスターで測ったら約5Vだったので、この構成にしました。
ソフトは、本に書いてある通りの動きです。
センサ部(ワイヤーのところ)に手を近付けると、LED全てが同時にじわじわ点灯します。
手を離すとじわじわ消灯し、LEDが順番にじわじわ点灯・じわじわ消灯をしてゆくプログラムになっています。


静電容量式タッチセンサ
PSoCの静電容量タッチセンサには2つ方式があるようです。
・CSA(CapSense Successive Approximation)方式
・CSD(CapSense Sigma-Delta)方式

今回は、後者の方です。
通常の接触or非接触を判定するタッチセンサではなく、数cmの離れた位置でも検知できる近接センサです。
通常のタッチセンサの感度を大きく上げることによって実現可能となります。
といっても、PSoC Designerから「Proximiity - CSD」デバイスを選択して、ちょっと設定してやるだけで簡単に利用できます。


ソフト設計
前回のようにデバイスアイコンを並べて、ルックアップテーブルを作るのは同じですが、
今回は様々な遷移状態があるため、その状態遷移をプログラムしてやる必要があります。
通常のコーディングのように、if then else やswitch caseなどで記述もできますが、PSoC Designerでは、下図のようにステート遷移図をマウスで書くだけでいけます。
(10_06_24) ステート遷移図




備忘録
今回のProximity - CSD デバイスを使うとき、PSoCの端子を3つ使います。
①センサー端子
②「modulation capacitor」と「feedback resistor」の両方に繋がる端子
③「feedback resistor」に繋がる端子

①に関してはどこでも配置可能ですが、②と③については配置可能なピンが限られています。
本に付属している基板「CY3240A Target20 Board」では、「modulation capacitor」と「feedback resistor」が実装されているので、それを利用します。
そうすると、②は「P03」、③は「P31」に繋ぐということになります。



※詳細な仕組み、回路図や実際のコーディング方法など知りたい人は、本を買って見ましょう

PSoCマイコン・スタートアップ

Cypressから6月7日に、「PSoC 5」のスタータ・キットとファミリプロセッサモジュールキットが発売されましたが、今回はそれではありません。

CQ出版より昨年末に発売されている本「PSoCマイコン・スタートアップ」を買いました。
この本には、PSoCが実装された基板とライター付で、すぐに始められるとのことだったので、思わず衝動買いしました。
カテゴリ的には「PSoC 1」です。

(10_06_10) PSoCマイコン・スタートアップ
左上がライター「PSoC MiniProg」、左下がPSoC付の基板「CY3240 Target20」です。
PSoCは、「CY8C21434」が搭載されています。CPUコアは「M8C」の8bitワンチップマイコンです。

環境準備
本に付属しているCD-ROMに入っている開発ソフトと「PSoC Designer 5.0」と書き込み用ソフト「PSoC Programmer 3.06」をインストールします。
PCの推奨環境はWindowsXPですが、Windows7でも32bitのProgram Files(x86)にインストールして問題なく動作しました。

設計
まずは、基板についているLEDをチカチカさせるモノの設計です。
本に従って進めました。流れは以下の通りです。
・PSoC Designerを立ち上げて、新規プロジェクト作成
・Timerを設定
・LEDを選択・設定
・テーブルルックアップという表でドラック&ドロップにて動作条件を決定
・マイコンの型番とピン配を決定してビルド
・PSoC Programmerで書き込む

下図はPSoC Disignerの1部の画面です。
(10_06_20) PSoC Designer
アイコンで「Timer」と「LED」を配置して、それが線で結ばれています。
右側は「Timer」の設定画面で、時間間隔を1500msecに設定していることがわかると思います。
このように、全くコーディングせずに、ほぼドラック&ドロップだけで設計できてしまいました。
もちろんC言語を使ってコーディングも可能です。

注意点
おそらくWindows XPの場合は、問題なく進むと思いますが、Windows 7の場合は最初ドライバ「PSoC MiniProg」の認識に失敗しました。その後、マニュアルでPSoCをインストールしたフォルダを指定してドライバのインストールをすると、インストールはされるのですが「デジタル署名がうんぬん・・・」などのエラーが出て、やはりダメでした。
解決方法は、最新のPSoC Programmerをインストールすることです。
エレバカは、2010/6/19の時点での最新バージョン、「PSoC Programmer 3.12Beata」をインストールして解決しました。
このとき、既にインストールしたPSoC Programmer 3.06はアンインストールしなくても、両方共存できるようです。

実行結果
チカチカっぷりを動画で、しかも無駄にフルHDで撮影しました。
単純にチカチカさせているだけではなく、LEDが消灯するときに、じわじわ消えてゆくように設定しています。

普通、これをやろうとするとPWMを使ってコーディングして結構大変なのですが、PSoCの場合、LEDを選択する場合に何種類か選べて、「with Decay」という素子を選んで、設定にてDecay Timeを適当に決めてやれば簡単にできました。
他にも例えば「Decay on/off」という素子を選べば、点灯するときもじわじわ点灯するようになります。

感想
まだ、本の一部をやっただけですが、PSoCはかなり色々なことが簡単にできそうです。
特にPICマイコンをそこそこやってきた人には、かなり使いやすいと思います。
逆に電子工作初心者にとっては、色々なことが出来過ぎて、開発画面にちょっと面を喰らうかもしれません。
この手の本を買うとなかなか最後まで進みませんが、今回はがんばってマスターしたいと思います。

PSoC3とかPSoC5とか #3

PSoC Creator 1.0Betaを実行してみました。


プロジェクト新規作成
まずProjectを新規作成します。
そうすると、PSoC3かPSoC5のどちらにするか選択する画面がでてきましたので、PSoC3を選択。
(10_04_10) PSoC(3or5)


回路ブロック作成
「.cysch」という拡張子のファイルが勝手にできるので、ここで回路を作成します。
(10_04_10) PSoC(circuit0)


右のウィンドウにあるComponentから反転増幅回路をドラッグ&ドロップしてみました。
ちなみにComponentを選択すると右下のウィンドウにデータシートのリンクが表示されるため、すぐに部品の情報を見られます。
(10_04_10) PSoC(circuit1)


反転増幅回路のゲイン設定は簡単で、プルダウンメニューで選択するだけです。
(10_04_10) PSoC(pull-down)



アナログpinとGND pin、ADCを置いてみました。
後は、ちょちょいと結線するだけです。
(10_04_10) PSoC(circuit2)


ピンアサイン
「.cydwr」ファイルにて、ピンアサインを行います。
自分がさっき作ったピンに対して、マイコンのどのポートに割り当てるかをプルダウンメニューで選択するだけ。
また、割り当てたピンを変更するのは、マイコンのイメージ図上でドラッグ&ドロップで簡単に変更できて便利。
(10_04_10) PSoC(ピンアサイン)


マイコンソフト作成
Header Fileの「device.h」とSource Fileの「main.c」が既にあり、プログラムの雛型もデフォルトで出来てます。
(10_04_10) PSoC(Programひな形)


反転増幅回路を使うためのコードは、先ほどの回路図からPDFを閲覧すれば、サンプルコードが書いてあります。
(10_04_10) PSoC(PDF)


シンプルにコーディングできるようにAPIとして用意されているようで、先ほどの雛型に1行書き加えるだけ。
これだけだと実際のマイコンでは何のOutputも出てきませんが、とりあえず、これでビルドしてみました。
(10_04_10) PSoC(Program)


約2分程度でビルド成功。
(10_04_10) PSoC(Buid  Succeeded)


今、PSoCマイコンや書き込みツールは持っていないので、ここまでですが、非常に簡単に開発できることが体験できました。
ハイスペックマシンでなくても、問題なく動作できました。


PSoC3とかPSoC5とか #2

「PSoC Creator」をインストールして実行してみました。
そのメモです。

(10_04_10) image


要求スペック
「PSoC Creator」はフリーでインストールできます。最新版は2010年4月現在、ver1.0Betaです。
ハイスペックを要求していますが、僕のノートPC(CPU:1.6GHz、Memory:752MB)でもインストール&実行可能でした。

(10_04_10) PSoC(spec)


インストール場所
CypressのHPからダウンロードできます。
ダウンロード場所がいまいちわかりずらいです。
Order のDownload Softwareという所をクリックすると出てきます。
http://www.cypress.com/?rID=39551


他に必要なソフト
インストーラーを実行すると、以下のような画面が出てきます。
「PSoC Creator」をインストールする前に「.NET Framework 2.0」「PSoC Programmer」「Keil Compiler」「Acrobat Reader」が必要なようです。

(10_04_10) PSoC(wizard)


インストール
僕のノートPCには「.NET Framework 2.0」と「Acrobat Reader」はインストールされているので、他の2つをインストール。
まずは、「PSoC Programmer」

(10_04_10) PSoC(Programmer3.10)



続いて「Keil Compiler」

(10_04_10) PSoC(keil compiler)



これでようやく、「PSoC Creator」がインストールできるようになりました。

(10_04_10) PSoC(install OK)



「PSoC Creator」をインストール

(10_04_10) PSoC(download)


これで完了。
特に、難しい設定などなく簡単にインストールできました。
次回は、実際ソフトを実行したメモをUPします。

PSoC3とかPSoC5とか

今月、無料で行われていたPSoCセミナーに参加してきました。
Cypressは2009年9月に、従来のPSoCに加え「PSoC3」と「PSoC5」ファミリを追加することを発表しています。


Photo by shokai

PSoCとは?
PSoCとは、Cypress社が開発したProgrammableなSoC(System on Chip)です。
いわゆるPICやAVRなどの8bitマイコンの仲間です。
しかし、それらのマイコンとは一線を画す特徴を持っています。
それは、再配置可能なアナログ回路やデジタル回路が1つのチップの中に内蔵されている点です。
イメージ的に、デジタルのFPGAとアナログのFPGAがマイコンの中に入った感じ。


FPGAとは?
Field Programmable Gate Arrayの略です。
簡単にいうと、簡単に書き換え可能なLSIで、PLD(Programmable Logic Device)のうちの1つです。
PLDには、「FPGA」と「CPLD(Complex PLD」の2種類があります。
FPGAは中~大規模の集積度用。メモリはSRAMなので、電源起動時に専用のROMからデータを転送する必要があります。
CPLDは小規模の集積度。メモリはFlashやEEPROMなので、回路データの書き換えが可能。
http://www.nahitech.com/nahitafu/mame/mame4/cpld.html
FPGA/CPLDは、XilinxとAlteraの2社が有名です。


強みはアナログ回路
PSoCの一番の強みは、チップの中にプログラマブルなアナログ回路が内蔵されている点です。
オペアンプやコンパレーター、ADC(ΔΣ型、SAR型)、DACなど。
プルダウンメニューで、簡単にGainや素子の定数を選択できます。


従来のPSoCから変わった点は?
従来のPSoCは「PSoC1」というファミリになりました。これは8bitで4MIPSでした。
「PSoC3」は8bitですが、33MIPSまで向上させることが可能。
「PSoC5」はARMのCortex-M3を搭載した32bitで、100DMIPSが可能。
PSoC5については、2010年末に量産予定のようです。
また、開発環境ツールが新しくなりました。


PSoC Creatorの特徴
「PSoc Creator」とは、新しくなった開発環境ツールです。
従来の「PSoC Designer」に比べ、回路図の配線がシンプルになり、すっきりしています。
また、従来からあったかは不明ですが、IP(intellectual property)と呼ばれるモジュールがあります。
これは、ある機能を実現するために複数の回路素子が集まったブロックを
1まとめにする考えで、既にあるものを利用したり自分で作成したりと再利用できます。



セミナーでは、PSoC3/5の紹介、PSoC Creator機能の紹介、そしてシステム設計の実演を行っていました。
最後の実演は、90分でゼロから「ポータブル電圧&電流計」をPSoC Creatorを使って作っていました。
(※ハードは既に用意されたモノです)
GUIを使ったドラッグ&ドロップにプルダウンメニュー、APIを使った簡単なコーディングと、本当に開発しやすそうな印象を受けました。
どうやら「PSoC Creator」は無料でダウンロードできるようなので、次回ちょっと試してみたいと思います。
03 | 2017/04 | 05
Su Mo Tu We Th Fr Sa
- - - - - - 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 - - - - - -
プロフィール

エレクトリックバカ

Author:エレクトリックバカ

ポケコンでプログラミングに目覚め、PICマイコンで電子工作に希望を抱き、来たるべきUGDの時代を夢見て眠る。
そんな うだつが上がらないサラリーメン。
先生、電子工作はおやつに入りますか?




Electric Baka

最新記事
カテゴリ
月別アーカイブ
最新コメント
最新トラックバック
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QRコード
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。