2014年7月15日火曜日

マイコンのADCを知ろう~PSoC5LPのADCを使えるために~

PSoC5LPのADC(アナログデジタル変換器)の使い方を書こうと
思っていたのですが、どうしても普通のマイコンのADCを知らないと

ADCの設定が解らぬ~
とか
ADCが3chしかないの?増やせないの~

と苦しむと思います。
まずは、通常のマイコンで使われているADCを知ることで
こういった事に苦しまずに済みます。

さて、大抵の場合、マイコンに搭載されているADCは
アナログ配線の
切り替え機(アナログマルチプレクサ)が1個 と ADCの本体が1個

の2つによって構成されています。
またADCの本体も1種類であることが多いです。

たぶん
「え?ADCが8chってことはADCが8個あるんじゃないの?」
と思うでしょう。
実はたいていの場合は配線の切り替えを高速にすることによって
8chあるようにしています。
なので、同時に変換しているわけではないのですね。

「え?ADCに種類があるの?」
と思うでしょう。無理もありません
普通こんなところで、この話はまず出てきません…。

さて、ADCには4つの種類があります。
並列型ADC
逐次変換型ADC
サブレンジング型ADC
シグマ・デルタ型ADC

通常のマイコンで搭載しているのは逐次変換型のADCです。
PSoC3,5LPでは2種類でシグマ・デルタ型逐次変換型
2種類が搭載されています。(逐次変換が搭載されていない場合もある)

「シグマ・デルタ型と逐次変換型をどっちがイイの?」
となりそうですが、単純にどっちがイイとは言えません。

デルタシグマ型
メリット:分解能が高い
デメリット:変換スピードが遅い

逐次変換型
メリット:変換スピードが速い
デメリット:分解能が低め

TIの説明ページに図があるので、それでイメージをつかむのが良いでしょう。


PSoCLPでは、設計の必要性に応じて、
変換スピードを優先するかそれとも分解能を優先するか
どちらを優先した方がいいかな?を考えてコンポーネットを選びましょう。

今回はなんで通常のマイコンのADCの話をしたかと言うと
PSoC5LP、PSoC3は強い柔軟性のためにADCと切り替え機が別々になっています。
そのため、通常のマイコンでのADCがどの様な構成なのかを
知る必要性がありました。
別々になっているからと言って、不安になる必要はありません。
相も変わらず、マウスでコンポーネントをポンポン入れれば平気です。

Lチカの次は?

少し前、某掲示板(2chでは無い)の某書き込みに

「LEDチカチカまでは丁寧だけどそれ以降が無い」
「本当に初心者向けなのか?」
「初心者を想定してないんじゃないか?」

と言う書き込みを見ました。

私はこれを見て、ハッとしました。
確かに、作ってみたいなぁ…っと思っても
どこから手を付けていいか判らないという
事のは、不親切だなぁと思いました。

そこで、
内容として取り上げる事はできませんが
どういう風に進めたらいいの?と言うのは書こうと思います

ステップとしては
ステップ1 LEDのチカチカ
      目的:使い方を知る。
ステップ2 スイッチを使う
           目的:入力を知る。数値について知る。if文、switch文を知る。
ステップ3 バーLEDを光らせて、光り方を変える。(左右に振る)
      目的:for文、カウントを知る。
ステップ4 1桁7セグメントLED
           目的:Void()、配列を知る。
ステップ5 サーボモーター
           目的:PWMを知る。
ステップ6 DCモーター
           目的:ドライバーICを知る。
ステップ7 半固定抵抗のアナログ値を読む
           目的:ADCについて知る。
ステップ8 シリアル通信をする。
           目的:UARTを知って、パソコンに文字や数値を出せる。
ここまで出来てしまえば、十分に使いこなせていると思います。

勧めるヒントになったら幸いです。

2014年7月8日火曜日

Capsenseでピアノ。

今回は「こんなの作ったよ」と言うだけ。
とある会社に持っていく用でしたが、「クソ」扱いとなりました。
とは言え作って放置と言うのも、もったいないので
ブログに乗せようと思います。

外見はこんな感じ。

よこと裏はこんな感じ。



白鍵の所に指で触ると、ドレミファの音が出る。
簡単なピアノです。

難しかった所はPWMの設定だったかな?
PWMのピリオド値を操作するAPIを探すのに時間がかかったり
ドレミファの周波数が微妙で、調整に大変でした。
調整が大変だっただけあって、arduinoのトーン関数より
正確な周波数を出力出来るようになりました。

焦った事はとしては
CapsenseがAGND使わないと、ほぼ言う事を聞かなかった事

配線ではアルミテープとワイヤーを接合するには
はんだづけだと部材が溶けたりする可能性があるので
コンダクティブペン(導電インク)をはんだ付けに応用

通常、mbedarduinoで同じことをするにはCapseseのライブラリーを
使うか、もしくは外部のタッチセンサーを使う事ことで実現できる。
ただ、必要以上にライブラリー入れたり外部との通信をしたりする事なく
ワンチップで実現できちゃう所はPSoC5LPの便利なところ。
もし、シビアにタッチセンサーを使ったものを作る場合では
PSoC5LPの方が有利に作れると思います。

~~~~~~
作り方等を聞きたい場合、コメント欄に
「詳しくかけ」等、書いて頂けたらと思います。