Transistor Gijutsu, October 2014, Special Features Chapter 8,Software of the thermistor thermometer of 0.001 ° resolution, トランジスタ技術2014年10月号 特集第8章のソフトウェア 0.001℃分解能で気配もキャッチ「超敏感肌温度計」
Information
tg_201410s8_AD7714 トランジスタ技術 2014年 10月号 第8章のソフトウェア
Program for Section 8 in October. 2014 issue of the Transistor Gijutsu
(Japanese electronics magazine)
概要
このプログラムは、サーミスタの抵抗値変化をAD7714(24bitADC)で測定し、抵抗値を温度値に変換することで、0.001℃程度の分解能で温度変化を測定します。
ファイル
このソフトウエアは、次のファイルから構成されています。
- AD7714.cpp - AD7714の内部レジスタを設定
- Thermistor.cpp - サーミスタの抵抗値から温度値に変換
- ExpAvr.cpp - 指数平均によるソフトウエアLPF
- main.cpp - main()関数
詳細については、10月号の記事および上記ファイル中のコメントを参照してください。
AD7714/AD7714.h@0:de885a6da962, 2014-08-29 (annotated)
- Committer:
- Dance
- Date:
- Fri Aug 29 08:38:36 2014 +0000
- Revision:
- 0:de885a6da962
Transistor Gijutsu, October 2014, Special Features Chapter 8; ????????2014?10??????8????????
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Dance | 0:de885a6da962 | 1 | #ifndef AD7714_H |
Dance | 0:de885a6da962 | 2 | #define AD7714_H |
Dance | 0:de885a6da962 | 3 | #include "mbed.h" |
Dance | 0:de885a6da962 | 4 | |
Dance | 0:de885a6da962 | 5 | /** |
Dance | 0:de885a6da962 | 6 | * AD7714クラス |
Dance | 0:de885a6da962 | 7 | * |
Dance | 0:de885a6da962 | 8 | * AD7714の設定し運用する |
Dance | 0:de885a6da962 | 9 | * サーミスタ温度計に必要な機能を実装したものなので |
Dance | 0:de885a6da962 | 10 | * AD7714のすべての機能を制御することはできない |
Dance | 0:de885a6da962 | 11 | */ |
Dance | 0:de885a6da962 | 12 | class AD7714{ |
Dance | 0:de885a6da962 | 13 | private: |
Dance | 0:de885a6da962 | 14 | |
Dance | 0:de885a6da962 | 15 | static const int CmdRead = 0x08; |
Dance | 0:de885a6da962 | 16 | static const int CmdWrite = 0x00; |
Dance | 0:de885a6da962 | 17 | |
Dance | 0:de885a6da962 | 18 | int channel; |
Dance | 0:de885a6da962 | 19 | int data; |
Dance | 0:de885a6da962 | 20 | |
Dance | 0:de885a6da962 | 21 | SPI *spi; ///< SPI通信のインスタンス |
Dance | 0:de885a6da962 | 22 | |
Dance | 0:de885a6da962 | 23 | |
Dance | 0:de885a6da962 | 24 | public: |
Dance | 0:de885a6da962 | 25 | static const int FclkIn = 1000000; ///< AD7714へのクロック 1MHz |
Dance | 0:de885a6da962 | 26 | static const int bits = 24; ///< 変換ビット長 |
Dance | 0:de885a6da962 | 27 | /// 内部レジスタを選択するための数値 |
Dance | 0:de885a6da962 | 28 | static struct CRegister { |
Dance | 0:de885a6da962 | 29 | static const int Comun = 0x00; ///< コミュニケーションレジスタ |
Dance | 0:de885a6da962 | 30 | static const int Mode = 0x10; ///< モードレジスタ |
Dance | 0:de885a6da962 | 31 | static const int FltHi = 0x20; ///< フィルタ上位レジスタ |
Dance | 0:de885a6da962 | 32 | static const int FltLo = 0x30; ///< フィルタ下位レジスタ |
Dance | 0:de885a6da962 | 33 | static const int Test = 0x40; ///< 動作テスト、使用禁止 |
Dance | 0:de885a6da962 | 34 | static const int Data = 0x50; ///< データレジスタ |
Dance | 0:de885a6da962 | 35 | static const int ZeroCal = 0x60; ///< ゼロキャリブレーションレジスタ |
Dance | 0:de885a6da962 | 36 | static const int FullCal = 0x70; ///< フルスケールキャリブレーションレジスタ |
Dance | 0:de885a6da962 | 37 | } Reg; ///< レジスタを指定するための構造体 |
Dance | 0:de885a6da962 | 38 | /// 入力チャネルの指定 |
Dance | 0:de885a6da962 | 39 | static struct CCh { |
Dance | 0:de885a6da962 | 40 | static const int A1A6 = 0; ///< 擬似差動入力 ch1 - ch6 |
Dance | 0:de885a6da962 | 41 | static const int A2A6 = 1; ///< 擬似差動入力 ch2 - ch6 |
Dance | 0:de885a6da962 | 42 | static const int A3A6 = 2; ///< 擬似差動入力 ch3 - ch6 |
Dance | 0:de885a6da962 | 43 | static const int A4A6 = 3; ///< 擬似差動入力 ch4 - ch6 |
Dance | 0:de885a6da962 | 44 | static const int A1A2 = 4; ///< 差動入力 ch1 - ch2 |
Dance | 0:de885a6da962 | 45 | static const int A3A4 = 5; ///< 差動入力 ch3 - ch4 |
Dance | 0:de885a6da962 | 46 | static const int A5A6 = 6; ///< 差動入力 ch5 - ch6 |
Dance | 0:de885a6da962 | 47 | static const int A6A6 = 7; ///< テスト入力 ch6 - ch6 |
Dance | 0:de885a6da962 | 48 | } Ch; ///< 入力チャネルを指定するための構造体 |
Dance | 0:de885a6da962 | 49 | |
Dance | 0:de885a6da962 | 50 | |
Dance | 0:de885a6da962 | 51 | /// 内部レジスタに値を書き込む |
Dance | 0:de885a6da962 | 52 | void write(int reg, int data); |
Dance | 0:de885a6da962 | 53 | /// レジスタを読む |
Dance | 0:de885a6da962 | 54 | int read(int reg); |
Dance | 0:de885a6da962 | 55 | /// バイトデータを書き込む |
Dance | 0:de885a6da962 | 56 | int writeByte(int txd); |
Dance | 0:de885a6da962 | 57 | |
Dance | 0:de885a6da962 | 58 | /// コンストラクタ |
Dance | 0:de885a6da962 | 59 | AD7714(); |
Dance | 0:de885a6da962 | 60 | /// リセット |
Dance | 0:de885a6da962 | 61 | void reset(void); |
Dance | 0:de885a6da962 | 62 | /// ゼロとフルスケールのキャリブレーション |
Dance | 0:de885a6da962 | 63 | void calib(void); |
Dance | 0:de885a6da962 | 64 | /// 変換中かどうかの判定 @return ture 変換中 |
Dance | 0:de885a6da962 | 65 | bool isBusy(); |
Dance | 0:de885a6da962 | 66 | /// 入力チャネルを指定する |
Dance | 0:de885a6da962 | 67 | void setCh(int ch){channel = ch;}; |
Dance | 0:de885a6da962 | 68 | /// デジタルフィルタを設定する |
Dance | 0:de885a6da962 | 69 | void setFilter(int filter); |
Dance | 0:de885a6da962 | 70 | /// 変換値を読み出す |
Dance | 0:de885a6da962 | 71 | int getValue(){return read(CRegister::Data);}; |
Dance | 0:de885a6da962 | 72 | }; |
Dance | 0:de885a6da962 | 73 | |
Dance | 0:de885a6da962 | 74 | /// AD7714によるレシオメトリックにより抵抗値を測定するADCクラス |
Dance | 0:de885a6da962 | 75 | /// AD7714クラスから派生 |
Dance | 0:de885a6da962 | 76 | class RatioMetric7714 : public AD7714 { |
Dance | 0:de885a6da962 | 77 | private: |
Dance | 0:de885a6da962 | 78 | double af; |
Dance | 0:de885a6da962 | 79 | double rpu; |
Dance | 0:de885a6da962 | 80 | double rmu; |
Dance | 0:de885a6da962 | 81 | double rml; |
Dance | 0:de885a6da962 | 82 | double rru; |
Dance | 0:de885a6da962 | 83 | double rrl; |
Dance | 0:de885a6da962 | 84 | public: |
Dance | 0:de885a6da962 | 85 | /** |
Dance | 0:de885a6da962 | 86 | * コンストラクタ |
Dance | 0:de885a6da962 | 87 | */ |
Dance | 0:de885a6da962 | 88 | RatioMetric7714(double Rpu, double Rmu, double Rml, double Rru, double Rrl); |
Dance | 0:de885a6da962 | 89 | /// 指定されたAD値を抵抗値に変換 |
Dance | 0:de885a6da962 | 90 | double toResistorValue(int adcVal); |
Dance | 0:de885a6da962 | 91 | /// 現在のAD値を抵抗値に変換して返す |
Dance | 0:de885a6da962 | 92 | double getResistorValue(void); |
Dance | 0:de885a6da962 | 93 | }; |
Dance | 0:de885a6da962 | 94 | |
Dance | 0:de885a6da962 | 95 | |
Dance | 0:de885a6da962 | 96 | |
Dance | 0:de885a6da962 | 97 | |
Dance | 0:de885a6da962 | 98 | #endif |