delta sigma adc psoc 3/5 experiment labmikami.a.la9.jp/meiji/b3/adc_35.pdfanalog...

25
© Renji Mikami – 2012 PSoC 5 / 3 CUA Workshop 1 Renji Mikami [email protected] Σ AD変換演習 Delta Sigma ADC PSoC 3/5 Experiment Lab Delta Sigma ADC for Experiment Course Material 5 V 2.10 June 25th. 2012 ADC_35.PPT (25 Slides) 5 © Renji Mikami – 2012 PSoC 5 / 3 CUA Workshop 5.1

Upload: others

Post on 08-Feb-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Delta Sigma ADC PSoC 3/5 Experiment Labmikami.a.la9.jp/meiji/b3/ADC_35.pdfAnalog Muxコンポーネントを使用することで、ADCに 複数のアナログ入力ピンを接続することが可能

© Renji Mikami – 2012 PSoC 5 / 3 CUA Workshop 1

Renji [email protected]

⊿Σ AD変換演習

Delta Sigma ADC

PSoC 3/5 ExperimentLab

Delta Sigma ADC for Experiment Course Material 5 V 2.10June 25th. 2012ADC_35.PPT (25 Slides)

5

© Renji Mikami – 2012 PSoC 5 / 3 CUA Workshop

5.1

Page 2: Delta Sigma ADC PSoC 3/5 Experiment Labmikami.a.la9.jp/meiji/b3/ADC_35.pdfAnalog Muxコンポーネントを使用することで、ADCに 複数のアナログ入力ピンを接続することが可能

2© Renji Mikami – 2012 PSoC 5 / 3 CUA Workshop

補足:WorkspaceとProjectの関係

演習ファイルと使用文字などの注意事項

各演習プロジェクトを置くための演習用ディレクトリを作成してください。場所と名前は、演習中に指示します。(デフォルトは、C:¥PSoC5_Lab )設計例(正解の例)プロジェクトは、演習で指示する場所のPSoC_Lab_MasterXXXXにあります。使用するファイルのあるディレクトリのパス名に英数字以外の文字が含まれていないことを確認してください。(不可例参照)ファイル名、プログラムのソースには、英数字と構文で許された記号以外は使用しないでください。(不可例参照)WorkspaceとProjectを1対1に対応して作成(次スライド)

不可例:全角文字、日本語文字、半角カナ

Page 3: Delta Sigma ADC PSoC 3/5 Experiment Labmikami.a.la9.jp/meiji/b3/ADC_35.pdfAnalog Muxコンポーネントを使用することで、ADCに 複数のアナログ入力ピンを接続することが可能

3© Renji Mikami – 2012 PSoC 5 / 3 CUA Workshop

演習プロジェクト作成のグランドルール

設計は、プロジェクトをひとつの単位としますが、大規模設計では複数のプロジェクトをまとめて、ひとつのWorkspace内で管理することができます。

複数のプロジェクトを一つのWorkspaceに追加した場合、同じ名前のファイルを開いたときに、どのプロジェクトに含まれるものなのかを毎回確認する必要があります。例えば main.c などです。ワークショップ中は、この混乱をさけるために、一つのWorkspace には一つのプロジェクトしか配置しないように注意して下さい。

この方法は三つあります。

1.新プロジェクトを作成する前に、一度現在のPSoC Creatorを閉じる2.プロジェクト作成する前に、FileメニューからClose Workspaceを実行して現在開いているWorkspaceを閉じる3.新規プロジェクトを作成する時、Advancedオプション内のWorkspaceをCreate New Workspaceに設定する。この方法については次のページに説明があります。

Page 4: Delta Sigma ADC PSoC 3/5 Experiment Labmikami.a.la9.jp/meiji/b3/ADC_35.pdfAnalog Muxコンポーネントを使用することで、ADCに 複数のアナログ入力ピンを接続することが可能

4© Renji Mikami – 2012 PSoC 5 / 3 CUA Workshop

プロジェクト新規作成時の注意事項プロジェクトを既に開いた状態で新規プロジェクトを作成した場合、デフォルトでは、現在開いているWorkspaceに追加されます。ウィザード内のWorkspaceをCurrent New Workspaceに切り替えて下さい。

Advancedオプションをオープンする

Add to Current Workspaceを選択すると現在開いているWorkspace内に新規プロジェクトが作成されます。Create New Workspaceを選択すると、新規Workspaceが作成され、その中に新規プロジェクトが作成されます。

Page 5: Delta Sigma ADC PSoC 3/5 Experiment Labmikami.a.la9.jp/meiji/b3/ADC_35.pdfAnalog Muxコンポーネントを使用することで、ADCに 複数のアナログ入力ピンを接続することが可能

5© Renji Mikami – 2012 PSoC 5 / 3 CUA Workshop

電圧計A/Dで電圧読み込み結果をLCDに表示

Programmable Gain Ampを追加してみよう

LCD

MCU

InVRからの電圧入力

ADC_35ラボの目的• ⊿ΣAD変換器の実装• 入力電圧のLCD表示

Page 6: Delta Sigma ADC PSoC 3/5 Experiment Labmikami.a.la9.jp/meiji/b3/ADC_35.pdfAnalog Muxコンポーネントを使用することで、ADCに 複数のアナログ入力ピンを接続することが可能

6© Renji Mikami – 2012 PSoC 5 / 3 CUA Workshop

Step 1 PSoC Creator Softwareの起動

1.PSoC Createrの起動は、>すべてのプログラム>Cypress>PSoC Creater 2.X> PSoC Createrのクリック。2.この

エリアにファイルがないことを確認すること

前のプロジェクトが表示される場合は、

File>Close Workspaceでクローズする。

Page 7: Delta Sigma ADC PSoC 3/5 Experiment Labmikami.a.la9.jp/meiji/b3/ADC_35.pdfAnalog Muxコンポーネントを使用することで、ADCに 複数のアナログ入力ピンを接続することが可能

7© Renji Mikami – 2012 PSoC 5 / 3 CUA Workshop

Step 2 ADC_35プロジェクトの作成1.File->New->Projectを選択 2.Projectの設定

Page 8: Delta Sigma ADC PSoC 3/5 Experiment Labmikami.a.la9.jp/meiji/b3/ADC_35.pdfAnalog Muxコンポーネントを使用することで、ADCに 複数のアナログ入力ピンを接続することが可能

8© Renji Mikami – 2012 PSoC 5 / 3 CUA Workshop

Step 3 各コンポーネントの追加Delta Sigma ADCCharacter LCDを追加

Analog Pinを追加

Page 9: Delta Sigma ADC PSoC 3/5 Experiment Labmikami.a.la9.jp/meiji/b3/ADC_35.pdfAnalog Muxコンポーネントを使用することで、ADCに 複数のアナログ入力ピンを接続することが可能

9© Renji Mikami – 2012 PSoC 5 / 3 CUA Workshop

Step 3.1 ADCの設定入力レンジの設定

参照電圧の指定

Page 10: Delta Sigma ADC PSoC 3/5 Experiment Labmikami.a.la9.jp/meiji/b3/ADC_35.pdfAnalog Muxコンポーネントを使用することで、ADCに 複数のアナログ入力ピンを接続することが可能

10© Renji Mikami – 2012 PSoC 5 / 3 CUA Workshop

Step 3.2 LCDの設定Horizontalバーグラフをオンにします

Page 11: Delta Sigma ADC PSoC 3/5 Experiment Labmikami.a.la9.jp/meiji/b3/ADC_35.pdfAnalog Muxコンポーネントを使用することで、ADCに 複数のアナログ入力ピンを接続することが可能

11© Renji Mikami – 2012 PSoC 5 / 3 CUA Workshop

Step 3.3 Pinの設定Pin_1 をアナログに設定

Page 12: Delta Sigma ADC PSoC 3/5 Experiment Labmikami.a.la9.jp/meiji/b3/ADC_35.pdfAnalog Muxコンポーネントを使用することで、ADCに 複数のアナログ入力ピンを接続することが可能

12© Renji Mikami – 2012 PSoC 5 / 3 CUA Workshop

Step 4 ワイヤーツールで接続

Analog Pin,ADCを接続

Page 13: Delta Sigma ADC PSoC 3/5 Experiment Labmikami.a.la9.jp/meiji/b3/ADC_35.pdfAnalog Muxコンポーネントを使用することで、ADCに 複数のアナログ入力ピンを接続することが可能

13© Renji Mikami – 2012 PSoC 5 / 3 CUA Workshop

Step 5 ピンアサイン

ここ.cydwrをクリック

ピンを設定

050基板では、VR(の2番ピン)はP6[5]に固定配線されています。ピン設定をP3[5]からP6[5]に変更すると、ジャンパは不要になります。Step 8参照

Page 14: Delta Sigma ADC PSoC 3/5 Experiment Labmikami.a.la9.jp/meiji/b3/ADC_35.pdfAnalog Muxコンポーネントを使用することで、ADCに 複数のアナログ入力ピンを接続することが可能

14© Renji Mikami – 2012 PSoC 5 / 3 CUA Workshop

ADC_DelSigのAPI関数

ADC_DelSig_1_Start();//イニシャライズとADC_Init(), ADC_Enable()呼び出し

ADC_DelSig_1_StartConvert();//変換の開始、停止はADC_DelSig_1_StopConvert();

ADC_DelSig_1_IsEndConversion();//変換の完了時に”ノンゼロ”を返す関数

ADC_DelSig_1_WAIT_FOR_RESULT

ADC_DelSig_1_GetResult16();//右づめで16ビットの変換値を返す関数//数値…8()は8ビット、…32()は32ビット

Page 15: Delta Sigma ADC PSoC 3/5 Experiment Labmikami.a.la9.jp/meiji/b3/ADC_35.pdfAnalog Muxコンポーネントを使用することで、ADCに 複数のアナログ入力ピンを接続することが可能

15© Renji Mikami – 2012 PSoC 5 / 3 CUA Workshop

Step 6 コードの記述

Main.cをクリック

#include <device.h>int16 adcResult = 0;

void main(){

/* Place your initialization/startup code here (e.g. MyInst_Start()) */unsigned char j = 50;

/* CYGlobalIntEnable; */ /* Uncomment this line to enable global interrupts. */LCD_Char_1_Start();

LCD_Char_1_ClearDisplay();LCD_Char_1_PrintString("ADC : ");ADC_DelSig_1_Start();ADC_DelSig_1_StartConvert();for(;;)

{/* Place your application code here. */

if(ADC_DelSig_1_IsEndConversion(ADC_DelSig_1_WAIT_FOR_RESULT)){

LCD_Char_1_Position(0, 6);LCD_Char_1_PrintString(" ");

LCD_Char_1_Position(0, 6);adcResult = ADC_DelSig_1_GetResult16();LCD_Char_1_PrintNumber((uint16)adcResult);CyDelay(j);

}}

}/* [] END OF FILE */

1_IsEnd大文字の”アイ”

大文字の”アイ”

小文字の”エル”

Page 16: Delta Sigma ADC PSoC 3/5 Experiment Labmikami.a.la9.jp/meiji/b3/ADC_35.pdfAnalog Muxコンポーネントを使用することで、ADCに 複数のアナログ入力ピンを接続することが可能

16© Renji Mikami – 2012 PSoC 5 / 3 CUA Workshop

値を表示する関数LCD_Char1_のAPI関数

LCD_Char_1_PrintInt16(); // “I”は大文字の”アイ”//16進(HEX)表示

LCD_Char_1_PrintNumber(); // ()内は、int型//10進(Decimal)表示

Page 17: Delta Sigma ADC PSoC 3/5 Experiment Labmikami.a.la9.jp/meiji/b3/ADC_35.pdfAnalog Muxコンポーネントを使用することで、ADCに 複数のアナログ入力ピンを接続することが可能

17© Renji Mikami – 2012 PSoC 5 / 3 CUA Workshop

Step 7 Build

Build -> Build XX(XXはプロジェクト名)を選択しBuild

エラーが発生したら、Notice List をクリックする赤のXマークのある行をクリックするとエラー発生箇所にジャンプ

Page 18: Delta Sigma ADC PSoC 3/5 Experiment Labmikami.a.la9.jp/meiji/b3/ADC_35.pdfAnalog Muxコンポーネントを使用することで、ADCに 複数のアナログ入力ピンを接続することが可能

18© Renji Mikami – 2012 PSoC 5 / 3 CUA Workshop

Step 8 プログラムを書き込み動作チェックDebug->Programを選択

Debug->Programを選択

050基板では、VR(の2番ピン)はP6[5]に固定配線されています。ピン設定をP3[5]からP6[5]に変更すると、ジャンパ線は不要になります。

J30:POT_PWRにジャンパ設置

VR と P3[5]を接続

VR

P3[5]

050基板

Page 19: Delta Sigma ADC PSoC 3/5 Experiment Labmikami.a.la9.jp/meiji/b3/ADC_35.pdfAnalog Muxコンポーネントを使用することで、ADCに 複数のアナログ入力ピンを接続することが可能

19© Renji Mikami – 2012 PSoC 5 / 3 CUA Workshop

Step 9:終了 プロジェクト/ワークスペースのクローズ

このエリアにファイルがないことを確認すること

1.File > Close Workspaceを実行

プロジェクトをロードして再開する場合は、File>Open>Project/Workspaceを実行プロジェクト/ワークスペースを選択

Page 20: Delta Sigma ADC PSoC 3/5 Experiment Labmikami.a.la9.jp/meiji/b3/ADC_35.pdfAnalog Muxコンポーネントを使用することで、ADCに 複数のアナログ入力ピンを接続することが可能

20© Renji Mikami – 2012 PSoC 5 / 3 CUA Workshop

補足: マルチプレクサを使用する場合

Analog Muxコンポーネントを使用することで、ADCに複数のアナログ入力ピンを接続することが可能

このとき、ADCのConversion Modeは 「1-Multi Sample」もしくは「3-Multi Sample Turbo」に設定

Page 21: Delta Sigma ADC PSoC 3/5 Experiment Labmikami.a.la9.jp/meiji/b3/ADC_35.pdfAnalog Muxコンポーネントを使用することで、ADCに 複数のアナログ入力ピンを接続することが可能

21© Renji Mikami – 2012 PSoC 5 / 3 CUA Workshop

課題演習値を表示する関数LCD_Char1_のAPI関数で10/16進表示せよ電圧をmV表示にせよ、またバーグラフによる表示をせよ

LCD_Char_1_PrintInt16(); // “I”は大文字の”アイ”//16進(HEX)表示

LCD_Char_1_PrintNumber(); // ()内は、int型//10進(Decimal)表示で小数部を含む

ADC_DelSig_1_CountsTo_mVolts() //mVに変換する関数ADC_DelSig_1_CountsTo_uVolts() //uVに変換する関数ADC_DelSig_1_CountsTo_Volts() //浮動小数点Vに変換する関数// バーグラフを表示する関数

LCD_Char_1_DrawHorizontalBG(1, 0, 16, result/819 );LCD_Char_1_Position(0, 10);LCD_Char_1_PrintString("Gain:");

Page 22: Delta Sigma ADC PSoC 3/5 Experiment Labmikami.a.la9.jp/meiji/b3/ADC_35.pdfAnalog Muxコンポーネントを使用することで、ADCに 複数のアナログ入力ピンを接続することが可能

22© Renji Mikami – 2012 PSoC 5 / 3 CUA Workshop

参考コード

int16 mv_result;//Data convert to [mV]

mv_result = ADC_DelSig_1_CountsTo_mVolts(result);

//Write Charcters on LCDLCD_Char_1_Position(0, 0);LCD_Char_1_PrintNumber(mv_result);LCD_Char_1_PrintString("mV ");

//write Bar graphsLCD_Char_1_DrawHorizontalBG(1, 0, 16, result/819 );LCD_Char_1_Position(0, 10);LCD_Char_1_PrintString("Gain:");

Page 23: Delta Sigma ADC PSoC 3/5 Experiment Labmikami.a.la9.jp/meiji/b3/ADC_35.pdfAnalog Muxコンポーネントを使用することで、ADCに 複数のアナログ入力ピンを接続することが可能

23© Renji Mikami – 2012 PSoC 5 / 3 CUA Workshop

ネガティブ・バイアス

VRのPOTを左に一杯回すと、入力電圧は、ほとんどゼロだが、16ビットでは、非常に大きな値を示す。これは、変換値にネガティブ・バイアスがかかっていて、負数表示になり、LSBサインビットが立つためである。POTを少し右に回すと表示がゼロのポイントを通過して、正の値を示す

変換値は、Step3.1で設定したAD設定のInput Range 電圧を変換データ値に対応させて計算する

Page 24: Delta Sigma ADC PSoC 3/5 Experiment Labmikami.a.la9.jp/meiji/b3/ADC_35.pdfAnalog Muxコンポーネントを使用することで、ADCに 複数のアナログ入力ピンを接続することが可能

24© Renji Mikami – 2012 PSoC 5 / 3 CUA Workshop

Lab ADC_35

終了

Page 25: Delta Sigma ADC PSoC 3/5 Experiment Labmikami.a.la9.jp/meiji/b3/ADC_35.pdfAnalog Muxコンポーネントを使用することで、ADCに 複数のアナログ入力ピンを接続することが可能

25© Renji Mikami – 2012 PSoC 5 / 3 CUA Workshop

MemoフォローアップURLhttp://mikamir.web.fc2.com/?/?.htm?に入る文字列は、講義中に示します。本資料は、米国および日本サイプレス社の協力と情報の提供

により作成されおり、著作権は以下に帰属します。

内容は定期的に改訂されます。引用や再使用の場合はご連絡ください。

担当講師ミカミ設計コンサルティング

〒142-0042 東京都品川区豊町 2-17-8

三上廉司(みかみれんじ) [email protected]://homepage3.nifty.com/western/mikamiconsult.htm電話 080-5422-2503(au)