近接スイッチ
近接スイッチ、またはセンサーは、その近くにオブジェクトの存在を検出できる非接触スイッチです。これらのセンサーは、オブジェクトがセンサーの前に位置する場合、またはオブジェクトが削除された場合に、線形アクチュエーターに移動または停止するように指示するために使用できます。また、最も近いオブジェクトがどれだけ離れているかを決定するために使用することもでき、線形アクチュエータを制御するためのフィードバックを提供するために使用できます。一般的に、SUVでのタッチレスハンドドライヤーやハンズフリーのテールゲートなど、ハンズフリーまたはタッチレスデバイスで使用される近接センサーが表示されますが、幅広い産業用途でも使用されています。で使用するため 線形アクチュエーター、近接センサーは、タッチレスコントロールやオブジェクト検出フィードバックなど、さまざまな状況で使用できます。
近接センサーは一般に、電磁界、光、または音のいずれかを使用して、オブジェクトの存在を検出します[1]。線形アクチュエータがオブジェクトが存在するかどうかを検出する方法は、近接センサーのタイプに依存します。近接センサーには4つの一般的なタイプがあります。
- 帰納的:磁場を使用して鉄物質を検出します
- 容量性:静電容量の変更を使用して、オブジェクトを検出します
- 光電:オブジェクトが存在するかどうかを検出するためにライトを使用します
- 超音波:音を使用して、オブジェクトが存在するかどうかを検出します
タイプの選択は、アプリケーションと検出する材料[1]によって異なります。また、検出範囲、応答時間、スイッチング周波数、動作温度、出力信号を含む、適切な近接センサーを選択する際に考慮する必要がある他の多くの仕様があります。適切な近接センサーを選択するには、アプリケーションのニーズ、センサーの種類、上記の仕様を考慮し、詳細についてはセンサーのデータシートを参照する必要があります。
近接センサーとモーション検出器の違いは何ですか?
近接センサーは、動きではなくオブジェクトの近接を検出するため、モーション検出器ではありません。 モーション検出器、彼らの名前が示唆するように、オブジェクトや人の親密さではなく、動きを感知します。機能的には、近接センサーは、オブジェクトが移動しているかどうかにかかわらず、センサーにオブジェクトの近くであることを伝えることができます。モーション検出器は、オブジェクトがどれだけ近いかに関係なく、動きがある場合にのみトリガーされます。
タッチレスコントロール
タッチレスコントロールのために、シンプルなプッシュボタンのような近接センサーを利用します。これを行うには、より短い検出範囲を持つ近接センサーを選択するため、スイッチを誤ってトリガーすることはなく、手、足、または検出しようとしているものを検出するセンサーを選択する必要があります。これに適したオプションは、検出範囲が短く、広範囲の材料を検出できるため、静電容量の近接センサーですが、超音波および一部の光電気近接センサーは、検出範囲が短い限り機能します[1]。近接センサーをマイクロコントローラーに接続する必要があります。 Arduino、センサーの出力を読み取ります。近接センサーをマイクロコントローラーに接続する方法は、センサーの選択に依存しますが、ほとんどの場合、マイクロコントローラーはデジタル変換されたアナログ値を受信するか、アナログ信号をデジタル値に変換する必要があります。
近接センサーは、このアプリケーションの単一のプッシュボタンのように機能するため、線形アクチュエーターの制御が制限されます。マイクロコントローラーを利用して、センサーがトリガーされたときに拡張と格納を切り替えるコードを書き込み、線形アクチュエーターの内部制限スイッチを使用して、完全に拡張された位置または引き込み位置に達するとアクチュエータを停止します。また、完全に拡張または撤回されるのではなく、他の位置を利用できる内部フィードバックまたは外部リミットスイッチを使用することもできますが、2つの位置に制限されます。マイクロコントローラーのファームウェアでこれを行うには、近接センサーがトリガーされるたびにフラグ変数を切り替える必要があります。以下のコードサンプルは、Flag SensorFlagを使用してArduino IDEコードのメインループを示して、どの方向を決定するかを示しています 線形アクチュエータを駆動します、aによって駆動されます モータードライバー.
void loop() { | |
if(sensorFlag == 0){ | |
// Retract Linear Actuator | |
analogWrite(10, 0); | |
analogWrite(11, 255); | |
}else if(sensorFlag == 1){ | |
// Extend Linear Actuator | |
analogWrite(10, 255); | |
analogWrite(11, 0); | |
} | |
} |
このフラグを切り替えるには、近接センサーの値を読む必要があります。センサーがいつトリガーされるかわからないため、コードのメインループでセンサーを常に読み取る必要があるか、内部タイマー割り込みを利用してセンサーを定期的に読み取ることができます。後者は、特にマイクロコントローラーを使用して並列タスクをプリフォームする場合、センサーが常に正確な期間にわたって読み取られるようにするため、ベストプラクティスと見なされます。 Arduinoを使用して以下のコードサンプルは、毎秒トリガーされる内部タイマー割り込みをセットアップする方法を示しています。 Arduinoの場合、これは外部割り込みよりも少し複雑であり、いくつかを行う必要があるかもしれません 追加の読書 アプリケーションの割り込みをセットアップする方法を学ぶため。
void setup() { | |
// Set Timer1 Interrupt to Trigger Every Second | |
TCCR1A = 0; // Set TCCR1A Register to 0 | |
TCCR1B = 0; // Set TCCR1B Register to 0 | |
TCNT1 = 0; // Initialize counter | |
// Set compare match register for 1hz increments | |
OCR1A = 15624; // = (16*10^6) / (1*1024) - 1 (must be <65536) | |
// Turn On CTC Mode | |
TCCR1B |= (1 << WGM12); | |
// Set CS10 and CS12 Bits for 1024 prescaler | |
TCCR1B |= (1 << CS12) | (1 << CS10); | |
// Enable Timer Compare Interrupt | |
TIMSK1 |= (1 << OCIE1A); | |
// Setup Pins | |
pinMode(A1, INPUT); // Input For Analog Signal From Proximity Sensor | |
pinMode(10, OUTPUT); // Configure pin 10 as an Output to Motor Driver | |
pinMode(11, OUTPUT); // Configure pin 11 as an Output to Motor Driver | |
} | |
SIGNAL(TIMER1_COMPA_vect) { | |
sensorValue = analogRead(A1); | |
if(sensorValue < thresholdValue & pressedFlag == 0){ | |
sensorFlag = !sensorFlag; | |
pressedFlag = 1; | |
} else if(sensorValue > thresholdValue){ | |
pressedFlag = 0; | |
} | |
} |
上記のコードのシングル関数は、割り込みがトリガーされるたびに実行されるタイマー割り込みの割り込みサービスルーチンであり、近接センサーから値を1秒ごとに更新します。センサーから読み取られた値がしきい値よりも小さい場合、センサーを「押した」と考え、SensorFlagを切り替えます。センサーをテストすることにより、このしきい値を事前に決定し、「押された」と考えたい出力値を決定する必要があります。センサーの切り替えをセンサーの「押し」で1回だけ制限するために、センサー値がしきい値よりも小さくなくなるまでリセットされない別のフラグがあります。
障害物検出
近接センサーを使用して、前の最も近いオブジェクトがどれだけ近いかを測定することもできます。これは、アクチュエーターの前の障害物を検出し、下のビデオのようにオブジェクトに近すぎる場合はアクチュエータを停止するためにフィードバックをコントローラーに送り返すための線形アクチュエーターを使用するアプリケーションで特に役立ちます。同様の方法で近接センサーを使用するには、検出範囲が大きく、さまざまな種類の材料を検出できる近接センサーを選択する必要があります。超音波センサーは、広いセンシングフィールドを持つことができるため、これに適していますが、センサーの盲点に注意する必要があります。
このアプリケーションの近接センサーのセットアップは、タッチレスコントロールと非常に似ています。マイクロコントローラーを使用してセンサーの出力を読み取る必要があるため、内部タイマー割り込みを使用してセンサーの値を定期的に読み取る必要があります。ただし、センサーはアクチュエーターの前に配置されて、その前の障害物を検出します。センサーからの出力は、センサーの前の最も近いオブジェクトの距離に関連しているため、最小安全距離に基づくしきい値を決定できます。このしきい値は、選択されたセンサーによって異なります。以下のコードサンプルでは、割り込みサービスルーチンである信号関数がミリ秒ごとに事前に形成され、センサーの出力を測定し、しきい値と比較します。測定値がしきい値よりも小さい場合、Flag SensorFlagは1に設定され、メインループで線形アクチュエータを停止するために使用されます。測定値はしきい値よりも小さくなりますが、コードは、測定値がしきい値値より大きくなり、フラグが0にリセットされるまで、アクチュエータをさらに拡張することを許可しません。アクチュエーターを撤回している間、アクチュエーターを撤回します。
void setup() { | |
// Set Timer1 Interrupt to Trigger Every Millisecond | |
TCCR1A = 0; // Set TCCR1A Register to 0 | |
TCCR1B = 0; // Set TCCR1B Register to 0 | |
TCNT1 = 0; // Initialize counter | |
// Set compare match register for 1000hz increments | |
OCR1A = 15; // = (16*10^6) / (1*1024) - 1 (must be <65536) | |
// Turn On CTC Mode | |
TCCR1B |= (1 << WGM12); | |
// Set CS10 and CS12 Bits for 1024 prescaler | |
TCCR1B |= (1 << CS12) | (1 << CS10); | |
// Enable Timer Compare Interrupt | |
TIMSK1 |= (1 << OCIE1A); | |
// Setup Pins | |
pinMode(A1, INPUT); // Input For Analog Signal From Proximity Sensor | |
pinMode(10, OUTPUT); // Configure pin 10 as an Output to Motor Driver | |
pinMode(11, OUTPUT); // Configure pin 11 as an Output to Motor Driver | |
} | |
SIGNAL(TIMER1_COMPA_vect) { | |
sensorValue = analogRead(A1); | |
if(sensorValue > thresholdValue){ | |
sensorFlag = 1; | |
} else{ | |
sensorFlag = 0; | |
} | |
} | |
void loop() { | |
if(digitalRead(2) == HIGH & digitalRead(3) == LOW){ | |
// Retract Actuator | |
analogWrite(10, 0); | |
analogWrite(11, 255); | |
} | |
else if(digitalRead(2) == LOW & digitalRead(3) == HIGH){ | |
if(sensorFlag == 1){ | |
// Stop Actuator | |
analogWrite(10, 0); | |
analogWrite(11, 0); | |
} else { | |
// Extend Actuator | |
analogWrite(10, 255); | |
analogWrite(11, 0); | |
} | |
} | |
else{ | |
// Stop Actuator | |
analogWrite(10, 0); | |
analogWrite(11, 0); | |
} | |
} |
参照
[1] Kinney、T。A.(2001年9月) 比較した近接センサー:誘導性、容量性、光電気、および超音波 から取得: https://www.machinedesign.com/automation-iiot/sensors/article/21831577/proximity-sensors-compared-inductive-capacitive-photoelectric-and-ultrasonic
センサー画像: digikey.com