PIC 24FJ64GB002使用の温度ロガー

投稿日 2016/09/24

Microchip社のPIC 24FJ64GB002-I/SPを使用して温度ロガーを作ってみました。

温度ロガー1.jpg

PIC 24FJ64GB002使用 温度ロガー回路図

 

24FJ64GB002-I/SPは、PICの16ビットCPUで、プログラム・フラッシュメモリ64KB、SRAM 8KB、USB内蔵、28ピンDIPパッケージというデバイスです。

 

28ピンDIPパッケージなので使いやすいのですが、何分このピン数のデバイスはメモリ容量が64KBくらいまでですから、あまり大きなプログラムには使えません。64KBは、インストラクション・ワードでの容量にすると22KWくらいです。

 

今回の温度ロガーは、NTCサーミスターで計測した温度を表示するとともに、SDカードに記録するものです。

 

NTCサーミスターを使用した理由は、電子部品等の局所的な温度を計測したいという理由です。写真のようにサーミスタに何ら保護処置はせず、CPUチップなどにシリコングリスで熱結合させて使うためです。NTCサーミスターの出力は、16ビットADコンバータでデジタルに変換しています。

 

関連記事: NTCサーミスタ + MCP3425で温度を計測

 

SDカードに記録したデータは、USBケーブルでパソコンに接続するだけで外部記憶装置(MSD)として働く、いわゆるUSBメモリ機能も組み込みたかったのですが、残念ながら64KB(22KW)のメモリ容量では不足しました。

 

このため今回は計測したデータをSDカードに記録するだけのプログラムとなっています。パソコンに持っていくには、SDカードを抜いてリーダで読み込む必要があります。USBメモリ機能(MSD)のプログラムは別途PICに書き込んでやればよいのですが、わざわざそうするまでもないでしょう。

 

関連記事: PICをUSBメモリにするためのMSDクラスを使ってみる

温度ロガー2.jpg

PIC 24FJ64GB002使用の温度ロガー

NTCサーミスタ + 16bit ΔΣADCで計測した温度データをSDカードに記録

この写真では計測インターバル1s、計測期間10m(10分)

145カウント目 24% 25.1度

下段の25.4度はHDC1000で計測した温度

アルミケースは加工が面倒なので透明アクリルケースに組み込みました。

 

使用例:  LT1170使用の昇圧コンバータ

 

 

温度ロガーの主な仕様

電源: DC 4.0 - 12V (内部で3.3Vに変換)

温度センサー1: NTCサーミスター 10KΩ/25℃

温度センサー2: HDC1000高精度温湿度センサー(校正用)

計測インターバル: 1s, 5s, 10s, 30s, 1m, 5m, 10m から選択

計測期間: 10s, 1m, 10m, 1h, 3, 6h, 12h, 1d, 3d, 1w から選択

SDカード: FAT32でフォーマット

ファイル名: DATA0001.csvからDATA0005.csvを選択 削除可能

ファイル形式: テキストCSV形式

記録項目: カウント値,YY/MM/DD, HH/MM/SS, HDC1000温度,HDC1000湿度,サーミスター温度

サーミスタB定数指定: 標準3380, 3431, 3452, 3280, 3180, 3080 から選択

温度補正: サーミスターで計測した温度とHDC1000で計測した温度の差(10回の平均)を計算し、サーミスターの補正値とする。

RTC: 計測日時記録用、計測インターバル用インターバルタイマとして使用

 

開発環境

Microchip MPLAB X IDE v3.40

MLA v2016.08.08 Fileio、SD SPI Driver

XC16コンパイラー v.1.21

PICKIT3

 

計測例

LT1170_09.jpg

LT1170 昇圧DC-DCコンバータの発熱の様子

出力電流1Aと2Aの場合

40分間計測

 

これはLT1170を使用した昇圧型DC-DCコンバータ動作時のチップの温度変化を本機で計測したものです。

 

 

プログラミング

 

コードの掲載は省略します。

 

開発環境のMPLAB X IDEは非常によくできたIDEです。至れり尽くせりです。さすがMicrochip社の細やかさがうがえます。が、難点はコンパイルエラーが分かりにくいことでしょうか。

温度ロガー3.jpg

核となるFILEIOは MLA(Microchip Library Application)を使用しました。

 

SDカードはSPIで接続し、これもMLAのSd SPIドライバを使用しました。

 

これらの関連ファイルはMLAをコンパイラから参照するのではなく、ファイルをコピーしてIDEのディレクトリに入れました。

 

fileio.c

fileio.h

sd_spi.c

sd_spi.h

drv_spi_16bit.c

system.c (MLAの24FJ256GB110のものを改造)

system.h

fileio_config.h

 

RTC(リアルタイム・クロック)はMLAのbspを使用することもできますが、今回は以前自作したものを流用しました。 

 

system.cはベースとして24FJ256GB110のものを使用しましたが、24FJ64GB002に合わせて変更する必要があります。

 

コンフィグワード

システムイニシャライズ(クロック設定、IOポート、I2C初期化など)

SDカードの使用IOポートの定義など

 

上の写真のようにプログラムメモリがすでに86%なので、これにMSDを組み込むとオーバーします。メモリが128KB以上でUSBサポートのPIC(24FJ128GC006など)を使用する必要があります。

 

このようなロガーを作っておくと何かと便利です。

 

参考文献: 技術評論社 改訂新版 PICで楽しむUSB機器自作のすすめ 後閑哲也氏著

 

 

 

 

 

(JF1VRR)