生成された関数はadc.cファイル内に格納されます。これらの関数には、既定値の初期化 に加えてアクイジションを開始する簡単な関数のADC_StartConversion() (チャンネル 選択と適切な(設定可能な)アク イ ジション タ イミ ングを含む)、終了を チェック する ADC_IsConversionDone()、結果をフェッチするADC_GetConversionResult()が含 まれます。
または、ADC_GetConversion()を呼び出すと、1回のブロッキング コールでシーケンス 全体を取得できます。
MLA – Microchip アプリケーション用ライブラリ – タッチライブラリ
Microchipアプリケーション用ライブラリは、PIC16F1アーキテクチャおよびXC8コンパイ
ラと互換性があり、包括的なタッチセンシング フレームワークを提供しています。
例
以下の例は、約10行のコードでmTouchフレームワーク(MLAの一部)を使って8つの静 電容量式ボタンを読み出し、デバイスのPortDに接続された8つのLEDのうちの1つを 有効化する方法を示しています。デバウンス、トグル、単一/複数選択パラメータは
mTouchConfig.hファイルで簡単に設定できます(ここでは記載していません)。
/*
* Project: mTouch Demo * Device: PIC16F1937
* Board: mTouch eval kit, 8-buttons daughter
* Requires: MLA (version 12-15-2013) mTouch Framework
*/
#include "mTouch.h"
void ADC_ISR(void) {
mTouch_Scan(); // mTouch timer interrupt }
void main(void) {
int8_t i;
SYSTEM_Initialize(); // init the I/Os
mTouch_Init(); // mTouch Initialization INTERRUPT_GlobalInterruptEnable();
while(1) {
if (mTouch_isDataReady()) // Button Pressed {
mTouch_Service(); // Decoding for( i=0, LATD=0xFF; i<8; i++)
if ( mTouch_GetButtonState( i) >= MTOUCH_PRESSED) LATD ^= (1<<i); // PORTD pins are connected to LEDs }
} } // main
ピン配置
全てのPIC16F1マイクロコントローラは、ADCモジュールへのアナログ入力チャンネルと
して設定できるピンを多数備えています。
Vref+(とVref-)の位置は固定されています。PIC16F1513を使った例は、図7.5を参照し てください。
ホームワーク
• A/Dコンバータの精度と分解能の定義を比較してみましょう。分解能が高くなれ ば精度も上がるか考えてみましょう。そうでない場合、理由を考えてみましょう。
図7.5: Pin Managerのアナログ入力選択
• マイクロコントローラがスリープ中でもADC機能が動作可能であり、計測完了時 にコアを復帰させられるなら、どんな事ができる可能性があるか検討してみましょ う。
オンライン リソース
『AN1478 - mTouch™センシング ソリューションのアクイジション手法: 静電容量式分圧 器』
『AN1492 - マイクロチップ社の静電容量式近接検出設計ガイド』
『AN1334 - 堅牢なタッチセンシングの設計手法』
『AN1325 - mTouch™ Metal Over Capテクノロジ』
『AN1334 - 堅牢なタッチセンシングの設計手法』
『AN1152 - Achieving Higher ADC Resolution Using Oversampling』
『AN1560 - Glucose Meter Reference Design』
『AN1626 - Implementing Metal Over Capacitive Touch Sensors』
『AN693 - Understanding A/D Converter Performance Specifications』
『AN699 - Anti-Aliasing, Analog Filters for Data Acquisition Systems』
温度インジケータ
概要
温度インジケータも、全てのPIC16F1が内蔵するシンプルなアナログ モジュールです。こ のモジュールは温度しきい値の近似検出を備えていますが、正確な計測には校正が必 要です。このため、「センサ」ではなく控えめに「インジケータ」と呼ばれているのでしょう。
図7.6: 温度インジケータのブロック図
動作原理
図7.6に示した通り、定電流源が直列に並んだ4つの接合部に接続されています。出力 はADCチャンネルの1つへ直接入力されています。
4つの結合部のうちの2つは、3.6 V未満で動作するアプリケーションに短絡できるだけ でなく、結果の計測値から、Vddからの依存性を除外する方法としても使えます。
アプリケーション
計測値はマイクロコントローラ周囲温度であり、適切に配置された場合、監視対象の組み 込みアプリケーションの他の部分(モータ、パワーデバイス等)の温度の近似値と想定でき ます。
制限事項
Vddからの計測値に直接依存するため、最終製品組み立ておよびテストラインで2点校 正手順を実施しない限り、温度インジケータは比較的低精度(+/-5˚C)しか達成できません。
MCC が生成する API
温度インジケータは制御レジスタを固定参照電圧と共有しているため、MCCではFVR設 定ダイアログ ウィンドウに温度インジケータの有効化オプションが含まれています(図7.7 参照)。このため、生成される既定値のFVR_Initialize()関数に選択内容が反映され ます。
ピン配置
温度インジケータは内部的にADCモジュールに直接接続されています。デバイスピンに はアクセスできません。
図7.7: 温度インジケータ
ホームワーク
• 内蔵温度センサと外部(アナログまたはデジタル)センサとで利便性を比較してみ ましょう。その際、デバイス パッケージの熱抵抗とターゲットからの距離による影 響も考慮してみましょう。
• 未校正の精度(通常±10˚C)と外部デバイス(MCP9800とMCP9700ファミリ等)の 予測精度を比較してみましょう。
オンライン リソース
『AN1333 - 内部温度インジケータの使用と校正』
『AN1001 - IC Temperature Sensor Accuracy Compensation』