Skip to main content

Grove - 2-Channel Inductive Sensor(LDC1612)

note

この文書は AI によって翻訳されています。内容に不正確な点や改善すべき点がございましたら、文書下部のコメント欄または以下の Issue ページにてご報告ください。
https://github.com/Seeed-Studio/wiki-documents/issues

Grove - 2-Channel Inductive Sensorは、Texas Instruments(TI)のLDC1612をベースにした28ビットのインダクタンスからデジタルへのコンバーター(LDC)で、誘導センサーソリューション向けに設計されています。複数のチャンネルとリモートセンシングのサポートにより、LDC1612は誘導センシングの性能と信頼性の利点を最小限のコストと電力で実現します。インダクタンスは、電流を流す導体の磁場が導体に作用することで生じる効果です。そのため、このセンサーはインダクタンスを検知することで、特に近くの金属などの導体の接近を検出することができます。

特徴

  • マッチングされたセンサードライブを持つ2チャンネル
  • 簡単操作:最小限の設定が必要
  • 環境および経年変化補償をサポートする複数チャンネル
  • 20cmのリモートセンサー位置で厳しい環境での動作をサポート

  • コイルパラメータ:直径:16mm / 巻数:20

仕様

項目
供給電圧3.3V / 5V
接合温度-55~150℃
対応センサー周波数範囲1kHz~10MHz
最適検出範囲15mm
インターフェースI2C
I2Cアドレス0x2B(デフォルト)
0x2A(設定可能)
パッケージサイズ長さ: 140mm 幅: 90mm 高さ: 10mm
総重量12g

ADDRピンが低に設定されている場合、LDCのI2Cアドレスは0x2Aです。ADDRピンが高に設定されている場合、LDCのI2Cアドレスは0x2Bです。

主な用途

  • 消費者向け、家電、自動車のノブ
  • 線形および回転エンコーダ
  • 家電、ウェアラブル、製造、自動車のボタン
  • 製造および家電のキーパッド
  • 消費者製品のスライダーボタン
  • 産業および自動車の金属検出
  • POSおよびEPOS
  • 消費者および家電の流量計

ハードウェア概要

ピンアウト

note

1. 提供されているコイルインダクタンスを使用しない場合は、APIを使用してRb(抵抗単位-kom)、L(インダクタンス単位-uH)、C(キャパシタンス単位-pf)を設定してください。センサーの対応する周波数レジスタを計算して設定するために使用されます。

2. センサーボードにはINTパッドがあります。変換が完了すると低レベルに切り替わり、それ以外の場合は高レベルのままですが、センサーの対応するレジスタを設定する必要があります。

動作原理

LDC1612は、PCB銅トレースとコンデンサによって形成されるLCオシレーターのパラメータを測定することで動作します。

LDC1612は、磁気的にLCオシレーターと結合した導電性の物体が近づいたときに、LCオシレーションを維持するために必要なエネルギー量を測定することができます。オシレーター回路の電力損失は導電性物体のインピーダンスに比例し、インピーダンス値は物体の距離によって影響を受けるため、物体とLCオシレーター間の距離を測定するために使用できます。この場合、PCB銅トレースはインピーダンスセンサーとして機能します。

対応プラットフォーム

ArduinoRaspberry Pi
caution

上記で対応していると記載されているプラットフォームは、モジュールのソフトウェアまたは理論的な互換性を示しています。ほとんどの場合、Arduinoプラットフォーム向けのソフトウェアライブラリやコード例のみを提供しています。すべての可能なMCUプラットフォーム向けにソフトウェアライブラリやデモコードを提供することは不可能です。そのため、ユーザーは独自のソフトウェアライブラリを作成する必要があります。

はじめに

Arduinoで遊ぶ

ハードウェア

必要な材料

Seeeduino V4.2Base ShieldGrove - 2-Channel Inductive Sensor
enter image description hereenter image description hereenter image description here
今すぐ購入今すぐ購入今すぐ購入
note

1 USBケーブルを優しく差し込んでください。そうしないとポートが損傷する可能性があります。内部に4本のワイヤーがあるUSBケーブルを使用してください。2本のワイヤーしかないケーブルではデータを転送できません。使用しているケーブルが不明な場合は、こちらをクリックして購入できます。

2 Groveモジュールは購入時にGroveケーブルが付属しています。Groveケーブルを紛失した場合は、こちらをクリックして購入できます。

  • ステップ 1. Grove - 2-Channel Inductive Sensor(LDC1612)をGrove-Base Shieldのポート I^2^C に接続します。

  • ステップ 2. Grove - Base ShieldをSeeeduinoに差し込みます。

  • ステップ 3. USBケーブルを使用してSeeeduinoをPCに接続します。

次に、コインの距離検出コードを実行する方法を示します。他のプログラムを実行する場合も同様の手順です。

ソフトウェア

caution

Arduinoを初めて使用する場合は、開始前にArduinoの使い方を必ずご覧ください。

  • ステップ 1. GithubからGrove-2-Channel_Inductive_Sensor-LDC1612ライブラリをダウンロードします。

  • ステップ 2. ライブラリのインストール方法を参照してArduino用のライブラリをインストールします。

  • ステップ 3. Arduino IDEを再起動します。例を開くには、以下の3つの方法があります:

    1. Arduino IDEで直接開く:File --> Examples -->Seeed Inductive Sensor LDC1612--> coin_test_demoのパスを使用します。

    2. コンピュータで開く:XXXX\Arduino\libraries\examples\coin_test_demo\coin_test_demo.inoフォルダ内のbasic_demo.inoをクリックします。XXXXはArduino IDEをインストールした場所です。

    3. または、コードブロックの右上隅にあるアイコン をクリックして、以下のコードをArduino IDEの新しいスケッチにコピーすることもできます。

コインデモ このプログラムは、コインと銅トレース間の距離を検出することができます。



#include "Seeed_LDC1612.h"

LDC1612 sensor;
const u32 DISTANCE_00=44000000; // 検出なし
const u32 DISTANCE_00_01=60000000; // 距離:<1mm
const u32 DISTANCE_01_05=45000000; // 距離:1mm~5mm
const u32 DISTANCE_05_10=44250000; // 距離:5mm~10mm
const u32 DISTANCE_10_15=44080000; // 距離:10mm~15mm
const u32 DISTANCE_15_20=44020000; // 距離:15mm~20mm

void setup()
{
Serial.begin(115200);
delay(100);
Serial.println("開始!");

sensor.init();

if(sensor.single_channel_config(CHANNEL_0))
{
Serial.println("センサーを検出できません!");
while(1);
}


}


void loop()
{
u32 result_channel1=0;
u32 result_channel2=0;

/* センサーの状態を表示します。 */
//sensor.get_sensor_status();

/* チャンネル0の結果を取得して解析します。 */
sensor.get_channel_result(CHANNEL_0,&result_channel1);

/* コインとセンサー間の距離をテストします。
注意:精度は参考値です。
テスト中はセンサーを吊り下げてください! */
if(0!=result_channel1)
{
if(result_channel1<DISTANCE_00)
{
Serial.println("ここにはコインがありません!");
}

if(result_channel1>=DISTANCE_00_01)
{
Serial.println("コインとの距離は0~1mmです");
}

if(result_channel1<DISTANCE_00_01&&result_channel1>=DISTANCE_01_05)
{
Serial.println("コインとの距離は1~5mmです");
}

if(result_channel1<DISTANCE_01_05&&result_channel1>=DISTANCE_05_10)
{
Serial.println("コインとの距離は5~10mmです");
}

if(result_channel1<DISTANCE_05_10&&result_channel1>=DISTANCE_10_15)
{
Serial.println("コインとの距離は10~15mmです");
}

if(result_channel1<DISTANCE_10_15&&result_channel1>=DISTANCE_15_20)
{
Serial.println("コインとの距離は15~20mmです");
}

if(result_channel1<DISTANCE_15_20&&result_channel1>=DISTANCE_00)
{
Serial.println("コインとの距離は20mm以上です");
}

}

delay(1000);
}


caution

ライブラリファイルが更新される可能性があります。このコードは更新されたライブラリファイルには適用されない場合がありますので、最初の2つの方法を使用することをお勧めします。

success

すべてが正常に動作すれば、以下の結果が表示されます。


コイン間の距離は510mmです
コイン間の距離は510mmです
ここにコインはありません!
コイン間の距離は1015mmです
コイン間の距離は510mmです
コイン間の距離は15mmです
コイン間の距離は510mmです
コイン間の距離は510mmです

基本デモ

basic_demo.ino のコード



#include "Seeed_LDC1612.h"

LDC1612 sensor;


void setup()
{
Serial.begin(115200);
delay(100);
Serial.println("開始!");

sensor.init();

if(sensor.single_channel_config(CHANNEL_0))
{
Serial.println("センサーを検出できません!");
while(1);
}


}


void loop()
{
u32 result_channel1=0;
u32 result_channel2=0;

/*センサーの状態を表示します。*/
//sensor.get_sensor_status();

/*チャンネル0の結果を取得して解析します。*/
sensor.get_channel_result(CHANNEL_0,&result_channel1);

/*センサーの結果値。変化に応じて多くのアプリケーションを作成できます。*/
if(0!=result_channel1)
{
Serial.print("result_channel0 は ");
Serial.println(result_channel1);
}

delay(1000);
}



tip
すべてが正常に動作すれば、以下の結果が表示されます。

開始!
17:06:16.418 -> fsensor =3.74
17:06:16.418 -> result_channel0 は 44387993
result_channel0 は 44387847
result_channel0 は 43476136
result_channel0 は 43799295
result_channel0 は 48988429
result_channel0 は 48828492
result_channel0 は 48682647
result_channel0 は 48845443

マルチチャンネルデモ

この例では、複数のチャンネル測定を示します。LDC1612は2つのチャンネルをサポートしています。

以下のようにコイル1を接続することができます:

muti_channel_demo.ino のコード


#include "Seeed_LDC1612.h"
#include "math.h"

LDC1612 sensor;

void setup()
{
Serial.begin(115200);
delay(100);
Serial.println("開始!");

sensor.init();

/*INT-PINを有効化し、測定完了後に割り込みを発生させます。*/
//sensor.set_ERROR_CONFIG(0x01);

/*複数チャンネルの使用例設定。*/
if(sensor.LDC1612_mutiple_channel_config())
{
Serial.println("センサーを検出できません!");
while(1);
}
}


void loop()
{
u32 result_channel0=0;
u32 result_channel1=0;

/*センサーの状態を表示します。*/
//sensor.get_sensor_status();

/*センサーの結果値。変化に応じて多くのアプリケーションを作成できます。*/
sensor.get_channel_result(0,&result_channel0);
sensor.get_channel_result(1,&result_channel1);

if(0!=result_channel0)
{
Serial.print("result_channel0 は ");
Serial.println(result_channel0);
}
if(0!=result_channel1)
{
Serial.print("result_channel1 は ");
Serial.println(result_channel1);
}
delay(1000);
}



success
    すべてが正常に動作すれば、以下の結果が表示されます。

開始!
17:04:34.063 -> fsensor =3.74
17:04:34.063 -> fsensor =3.74
17:04:34.063 -> result_channel0 は 44399351
17:04:34.063 -> result_channel1 は 43599310
result_channel0 は 44648052
17:04:35.078 -> result_channel1 は 43803483
result_channel0 は 44786926
17:04:36.056 -> result_channel1 は 43990824
result_channel0 は 44266733
17:04:37.069 -> result_channel1 は 43305067
result_channel0 は 44767222
17:04:38.092 -> result_channel1 は 43553768
result_channel0 は 46081099
17:04:39.068 -> result_channel1 は 45089497
result_channel0 は 44681202
17:04:40.083 -> result_channel1 は 43207588
can't detect coil Coil Inductance!!!
17:04:41.098 -> can't detect coil Coil Inductance!!!
can't detect coil Coil Inductance!!!
17:04:42.106 -> result_channel0 は 89478485
can't detect coil Coil Inductance!!!
17:04:43.081 -> result_channel0 は 49469095
result_channel0 は 51374493
17:04:44.113 -> result_channel1 は 49895644
can't detect coil Coil Inductance!!!
17:04:45.090 -> can't detect coil Coil Inductance!!!
can't detect coil Coil Inductance!!!

note

basic_demomuti_channel_demo の例では、各出力がインダクタンスの強度に対応していることを覚えておいてください。出力とインダクタンスの強度の間には機能的な関係があります。さらに詳しい情報に興味がある場合は、Texas Instrument(TI)が提供する LDC1612 データシート を参照してください。

回路図オンラインビューア

リソース

技術サポートと製品ディスカッション

弊社製品をお選びいただきありがとうございます!製品をご利用いただく際にスムーズな体験を提供するため、さまざまなサポートを提供しています。異なる好みやニーズに対応するため、複数のコミュニケーションチャネルをご用意しています。

Loading Comments...