yusufu が 2020年04月29日19時30分57秒 に編集
コメント無し
本文の変更
# PSoCとは 一言でいうと「パソコン内でリアルにはんだ付けできるIC」です。パソコンの画面上で設計した回路がそのままICの中に作りこまれて動作します。 IC内にはオペアンプやコンパレータ、ADコンバータなどのアナログコンポーネントが内蔵されており、回路を設計するだけで、内部で結線されIC内で動き出します。まさに自分だけのアナログICです。 - [PSoCについて](https://elchika.com/article/ba2c51ef-4a54-4fa9-bb44-53a42ac316c2/) # 回路構成 12bitのADコンバータの入力の前段にバッファ回路を挟み、電圧を読み取ります。このようにすることで入力ピンのインピーダンスが大きくなり、測定対象の回路に影響なく電圧を図ることができます。またPSoCのADコンバータの入力インピーダンスが小さいので、正確にデジタル変換するためにはこのようにする必要があります。 DAコンバータで既知の電流を出力し、抵抗で生じた電圧を読み取ることで抵抗値を読み取ることができます。ADコンバータの部分だけで使えば電圧計としても使えます。 AD変換からのカウント数はUARTのTXを用いてPCに送信しています。  # 使用するコンポーネント
- オペアンプ
- オペアンプ([詳しい説明](https://elchika.com/article/1fb4ca86-9113-46dd-8b8e-2d58deb8b25f/))
オペアンプは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と同じにすると文字化けせず表示することができます。 