yusufuのアイコン画像
yusufu 2020年04月28日作成 (2020年04月29日更新)
セットアップや使用方法 セットアップや使用方法 閲覧数 2933
yusufu 2020年04月28日作成 (2020年04月29日更新) セットアップや使用方法 セットアップや使用方法 閲覧数 2933

PSoC4で抵抗計を作る話

PSoCとは

一言でいうと「パソコン内でリアルにはんだ付けできるIC」です。パソコンの画面上で設計した回路がそのままICの中に作りこまれて動作します。
IC内にはオペアンプやコンパレータ、ADコンバータなどのアナログコンポーネントが内蔵されており、回路を設計するだけで、内部で結線されIC内で動き出します。まさに自分だけのアナログICです。

回路構成

12bitのADコンバータの入力の前段にバッファ回路を挟み、電圧を読み取ります。このようにすることで入力ピンのインピーダンスが大きくなり、測定対象の回路に影響なく電圧を図ることができます。またPSoCのADコンバータの入力インピーダンスが小さいので、正確にデジタル変換するためにはこのようにする必要があります。
DAコンバータで既知の電流を出力し、抵抗で生じた電圧を読み取ることで抵抗値を読み取ることができます。ADコンバータの部分だけで使えば電圧計としても使えます。
電圧計として使用する場合はこのオペアンプのGBWが数MHzなので、数MHzくらいまでの信号を正確に読むことができます。
AD変換からのカウント数はUARTのTXを用いてPCに送信しています。
キャプションを入力できます

使用するコンポーネント

  • オペアンプ(詳しい説明
    オペアンプはModeでフォロワーを選択するとボルテージフォロワ(バッファ回路)の配線に自動で変化します。もちろんオペアンプモードのまま自分でボルテージフォロワを組んでも大丈夫です。今回はバッファ回路として利用するのでフォロワを選択します。
    またOutputではオペアンプ出力をピンに出力する場合はOutput to pinを選択し、ピンに出力しない場合はInternal onlyを選択します。今回はピンに出力しないのでInternal onlyを選択します。

キャプションを入力できます

  • ADコンバータ
    より正確にするためには平均化するといいと思います。

キャプションを入力できます
キャプションを入力できます

  • DAコンバータ
    今回は153.6μAの定電流源としています。
    キャプションを入力できます
  • UART
    PCのUSBを通して信号を送信するにはUARTを使用します。送信する際はTXを使用するのでDirectionをTXonlyとしてそのほかのパラメータは画像のように設定します。
    キャプションを入力できます

プログラム

main.c

/* ======================================== * * Copyright YOUR COMPANY, THE YEAR * All Rights Reserved * UNPUBLISHED, LICENSED SOFTWARE. * * CONFIDENTIAL AND PROPRIETARY INFORMATION * WHICH IS THE PROPERTY OF your company. * * ======================================== */ #include "project.h" #include <stdlib.h> int main(void) { CyGlobalIntEnable; /* Enable global interrupts. */ /* Place your initialization/startup code here (e.g. MyInst_Start()) */ uint32 adc = 100000; int16 ai0 = 0; char aistr[] = " "; char *aiout; aiout = aistr; //各コンポーネントをスタートさせる ADC_SAR_Seq_1_Start(); UART_1_Start(); ADC_SAR_Seq_1_IRQ_Enable(); ADC_SAR_Seq_1_StartConvert(); IDAC7_1_Start(); Opamp_1_Start(); for(;;) { //adcが0になるたびにPCに結果を出力 adc--; if (adc == 0){ ai0=ADC_SAR_Seq_1_GetResult16(0);//ADCのカウント数をsignedで取得 utoa(ai0,aiout,10);//カウント数を文字列に変換 //文字列をPCに送信 UART_1_UartPutString("Count::"); UART_1_UartPutString(aiout); UART_1_UartPutCRLF(1); adc = 100000; } /* Place your application code here. */ } } /* [] END OF FILE */

PC側の設定

TXからくる信号はTeraTermを使用しました。TeraTermでPSoCのCOMを選択し、設定→シリアルポートの設定をUARTと同じにすると文字化けせず表示することができます。
キャプションを入力できます

1
1
ログインしてコメントを投稿する