1. 説明
TMP512 (デュアル チャネル) および TMP513 トリプル チャネル) は、リモート センサー、ローカル温度センサー、および Aigh 側電流シャント モニターを含むシステム モニターです。これらのシステムモニターには、リモート温度、オンチップ温度、システムの電圧/電力/電流消費量を測定する機能があります。リモート温度センサーのダイオード接続トランジスタは、通常、低コストの NPN または Pnp タイプのトランジスタまたはダイオードです。校正は必要ありません。
TMP512/513はシステム検出器として使用されます。リモート温度、ローカル温度、電圧、電流を監視できます。
リモート温度センサーに接続されるトランジスタは、通常、低コストの NPN または PNP トランジスタです。また、校正は必要ありません。
2. 代表的な応用回路
上図は代表的なアプリケーション回路図です。
1) DXP1/DXN1 - 3 つのリモート温度センサー
DXP1/DXN1 ~ 3 は、リモート温度センサーの 3 セットの外部インターフェイスで、それぞれ三極管の両端に接続されています。
同時に、一対の直列抵抗 (図 18 を参照) と差動コンデンサ (図 20 を参照) が接続されます。彼によると、次の図はリファレンス接続方法と抵抗値と容量値の要件を示しています | これを行う具体的な理由は気にしません...
2) 温度測定
3 つのリモート温度センサーと 1 つのローカル温度センサーが「ローパス フィルター」を通じて ADC 測定回路に入力され、チップは制御レジスターのパラメーターに従って結果を読み取り専用温度レジスターに送信します。
3) バス電圧
V+ とフィルター C はバス電圧を測定するためにバス測定回路の入力として ADC に送信され、入力電圧範囲は 0 ~ 26V です。
以下の参照と以下の図は、マニュアルで提供されている 3 つの異なる接続構成を示しています。
構成 1 では、V+ と VIN+ が接続されています。V + はサブレギュレータに供給し、サブレギュレータは次に 3 を供給します。フィルタ C ピンと内部ダイに 3V を供給します。V + 電源範囲は 4 です。5V ~ 26V がシャント電圧に接続されている場合、バス電圧範囲はゼロにはならず、4 に制限されます。5V~26V。
構成 2 では、他の接続なしで V+ が副調整器に接続されます。この征服の下で。バス電圧範囲は、構成 1 のように 4.5 に限定されないため、0V ~ 26V の範囲になります。
構成 3 では、サブレギュレータの V+ ピンとフィルタの C ピンが互いに短絡されています。V+ は 3V ~ 5V に制限されます。フィルタ C ピンが内部ダイに電源を供給するため、5V。この電圧範囲を超えることはできません。バス電圧範囲は 4 に制限されていないため、0V ~ 26V の範囲になります。構成と同様に 5V。
4) シャントシャント測定
シャント抵抗の最大抵抗値は 0.5 オームにすることをお勧めします。
ADC は抵抗の両端の電圧と電流を測定し、シャント電圧、電流、電力の値を取得します。
3. レジスタテーブル
00/01 は汎用設定レジスタ、02 はステータス設定レジスタです。
実際の使用において、チップがアラーム状態を出力する必要がない場合は、デフォルト値を使用できます。具体的には、16 ビットのレジスタ値 00 と 01 の各ビットの定義を確認します。
1E と 1F は ID レジスタで、チップが正常に動作しているかどうかを確認するために使用できます。
08 はローカル温度センサーの結果です。理論的には、チップが正常に動作している限り、レジスタ値の変換結果は実際の周囲温度と一致するはずです。
09/0A/0B はリモート温度センサーの結果です。チップが正常で外部接続が正しい限り、結果の値は正常であるはずです。そうでない場合は、外部接続とチップの動作ステータスを確認する必要があります。
04/05 はシャントとバスの電圧で、チップが正常であることと外部接続が正しいことのみが必要です。
05/06 は電流測定値と電力値で、この値にはチップが正常で外部接続が正しいことだけでなく、ソフトウェア構成も必要です。それ以外の場合は、すべて 0 が読み取られます。
それは、「最大電流値に基づいて計算された測定最大値」であるシャント キャリブレーション レジスタ15 レジスタを設定することです。特定の変換ルールについては、マニュアルの「キャリブレーション レジスタとスケーリング」セクションを参照してください。
簡単なキャリブレーション レジスタ設定コードは次のように提供されます。
const int vshunt_max = 8*40; // シャント最大電圧: ミリボルト
const int shunt_uohms = 20000; // シャント抵抗: マイクロオーム
Tmp513.curr_lsb_ua = (vshunt_max*1000*1000/shunt_uohms) *1000/32767;//PGA=8 "/1000"<=>uohms=1000
Tmp513.pwr_lsb_uw = Tmp513.curr_lsb_ua *20;
温度 = Tmp513.curr_lsb_ua/1000;
温度 = (温度==0)?40960:40960/温度;if( Tmp513_Write(TMP513_SHUNT_CAL, Temp) != 0)
goto TMP513_ERROR_INIT;
4. その他
1. この記事は、Easy Mall にある TMP513 のチップ マニュアルを参照しています。
2. github 上の Linux ソースコードのドライバーファイル内の tmp51x.c を参照します。
[v8,2/2] hwmon: Texas Instruments TMP512/513 センサー チップ用のドライバーを追加します。- パッチワーク (kernel.org)
3. I2Cドライバー
通常の I2C ドライバーとまったく同じです。
発生する I2C ドライバーは、次の 3 つのカテゴリに単純に分類されます。
1) レジスタアドレスはなく、データを書き込むだけで済みます。
一般的な IO 拡張チップと同様に、最初にアドレスが書き込まれ、次に 8 ビットのデータが書き込まれ、8 つの IO 出力の High および Low レベルが制御されます。
2) レジスタアドレスがあり、データは 8bit です。
最初に 8 ビット アドレスを書き込み、ACK を受信した後、8 ビット レジスタ アドレスを書き込み、ACK を待ってから 8 ビット データを書き込みます。
3) レジスタアドレスがあり、データは 16 ビットです
TMP513は16bitです。
ACK を受信した後、最初に 8 ビット アドレスを書き込み、次に ACK を待つために 8 ビット レジスタ アドレスを書き込み、次に 8 ビットの上位バイトを書き込み、次に 8 ビットの下位バイトを書き込みます。
//参考プログラム
static uint8_t mI2C_Read_2byte(uint8_t reg, uint16_t *pData)
{ uint8_t byte[2]; if(HAL_I2C_Mem_Read(&hi2c3, TMP513_DEV_ADDR, reg, I2C_MEMADD_SIZE_8BIT, byte, 2, 1000) == 0) { * pData = byte[0]*256+byte[1]; TMP513_OK を返します。 それ 以外の場合は TMP513_ERROR を返します。静的uint8_t mI2C_Write_2byte(uint8_t reg, uint16_t data) { uint8_t byte[2]; バイト[0] = データ>>8; バイト[1] = データ&0x00FF; return HAL_I2C_Mem_Write(&hi2c3, TMP513_DEV_ADDR, reg, I2C_MEMADD_SIZE_8BIT, byte, 2, 1000); }