工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Manufacturing Technology >> 製造プロセス

DIYArduinoベースのパルス誘導金属探知機

コンポーネントと消耗品

>
Arduino Nano R3
× 1
HC-05Bluetoothモジュール
× 1
汎用トランジスタPNP
× 1
汎用トランジスタNPN
× 1
パワーMOSFETNチャネル
× 1
オペアンプ、オペアンプ+コンパレータ+リファレンス
× 1
1N4148 –汎用高速スイッチング
× 2
コンデンサ10µF
× 1
コンデンサ1µF
× 1
シングルターンポテンショメータ-100kオーム
× 1
シングルターンポテンショメータ-47k
× 1
値が異なる12個の抵抗器
× 1

必要なツールとマシン

>
はんだごて(汎用)

このプロジェクトについて

パルス誘導(PI)システムは、送信機と受信機の両方として単一のコイルを使用します。この技術は、ワイヤーのコイルを介して電流の強力で短いバースト(パルス)を送信します。各パルスは短い磁場を生成します。パルスが終了すると、磁場は極性を反転させ、非常に突然崩壊し、鋭い電気スパイクをもたらします。このスパイクは数マイクロ秒続き、コイルに別の電流が流れます。この電流は反射パルスと呼ばれ、非常に短く、約30マイクロ秒しか持続しません。次に、別のパルスが送信され、プロセスが繰り返されます。金属片が磁力線の範囲内に入ると、受信コイルは受信信号の振幅と位相の両方の変化を検出できます。振幅変化と相変化の量は、金属のサイズと距離の指標であり、鉄金属と非鉄金属を区別するためにも使用できます。

N.E.C.O.のサイトでPI検出器の良い例を見つけました。プロジェクト。この金属探知機は、ArduinoとAndroidの共生です。 Playストアでは、完全に機能するアプリケーション「Spirit PI」の無料バージョンをダウンロードできますが、いくつかの優れたオプションを備えたプロバージョンを購入することもできます。スマートフォンとarduinoの間の通信は、BluetoothモジュールHC 05を使用して行われますが、ボーレートを115200に変更する必要がある任意のBluetoothアダプターを使用できます。スキームを次の図に示します。デバイスの機能を改善するために、元のスキームにいくつかの小さな変更を加えました。元の回路図面はN.E.C.O.-sのWebサイトで見つけることができます:

https://neco-desarrollo.es/pirat-wireless-metal-detector

150オームの抵抗器の代わりに、47Kohmsの値の三量体ポテンショメータを置きました。この三量体は、コイルを流れる電流を調整します。その値を増やすことにより、コイルを流れる電流が増加し、デバイスの感度が向上します.2番目の変更は、元の抵抗62kの代わりにトリマポット100kOhmです。この三量体では、ArduinoのA0入力に約4.5Vの電圧を設定しました。これは、オペアンプと動作電圧が異なると、この抵抗の値が異なるはずであることに気付いたためです。

この特定のケースでは、電源装置に直列に接続された4リチウムイオン電池を使用するため、電圧は15vを超えます。 Arduinoは最大12Vの入力電圧を受け入れるため、Arduinoに直接+ 5vピンに電力を供給するために、小さなヒートシンクに取り付けられた5V(7805)用のスタビライザーを配置しました。

コイルは直径0.4mmの孤立した銅線でできており、直径19cmの円の形をした25本の巻線が含まれています。最終的な仕上がりでは、金属の近くに金属物がないことを確認する必要があります。コイル(要素は接着剤で接着され、ネジは使用されません)

ビデオで見ることができるように、小さな金属のコインは10〜15センチメートルの距離で検出できますが、大きな金属の物体は30〜40センチメートル以上の距離で検出できます。デバイスの作成と設定が比較的簡単であることを考慮すると、これらは優れた結果です。

コード

  • コード
コード Arduino
 #include  //#include  // int bluetoothTx =5; // int bluetoothRx =6; // blutothモジュール端末RX // SoftwareSerial bluetooth(bluetoothTx、bluetoothRx);#定義pulsePine2int timer =200; const int button1 =12; int buttonState1 =0; char data; // EEPROM変数intaddr_duty =0; int addr_freq =1; int Stored_value; int Duty_cycle; int Duty_cycle_temp; int freq; int freq_temp; int Duty_def_value =10; int freq_def_value =60; //バランス変数intvalue_count =0; int value_count_def =100; int balance_value =0; int balance_value_temp =0; // **** unsigned long startMillis; unsigned long currentMillis; long period =100000; //値はマイクロ秒数です//バッテリーフロートのレベルの測定resistencia1 =101000; // Resistencia de 100K para medir la tencion(Voltios)/テストボルトの抵抗100kフロートresistencia2 =10000; // Resistencia de 10k para medir la tencion(Voltios)/テストボルトの抵抗10kfloat const arefVolt =4.8f; // pin "4.9v" SET EXACT VALUE HEREfloat voutv; float vinv; unsigned long startMillisVolts; unsigned long currentMillisVolts; long periodVolts =2000; //値はマイクロ秒数ですintsensorValue; void setup(){// analogReference(INTERNAL); Serial.begin(115200); readFromStorage(addr_duty); Duty_cycle =Stored_value; readFromStorage(addr_freq); freq =Stored_value; if(duty_cycle ==0 || Duty_cycle ==255){writeToStorage(duty_def_value、addr_duty); readFromStorage(addr_duty); Duty_cycle =Stored_value; } if(freq ==0 || freq ==255){writeToStorage(freq_def_value、addr_freq); readFromStorage(addr_freq); freq =Stored_value; } pinMode(pulsePine、OUTPUT); } void loop(){currentMillis =micros(); currentMillisVolts =millis(); if(Serial.available()> 0){data =Serial.read(); setDutyAndFreq(データ); } if(currentMillis --startMillis> =period){period =1000000 / freq; // Serial.println(period); digitalWrite(pulsePine、HIGH); Duty_cycle_temp =Duty_cycle * 10; delayMicroseconds(duty_cycle_temp); digitalWrite(pulsePine、LOW); // SensorValue =analogRead(A0); for(int i =0; i <3; i ++){sensorValue =analogRead(A0);} delayMicroseconds(10); SensorValue =analogRead(A0); SensorValue =SensorValue / 5;データを送る(); startMillis =currentMillis; } // Lectura voltios if(currentMillisVolts --startMillisVolts> =periodVolts){lecturaVoltios(); // Serial.println( "Lectura voltios"); startMillisVolts =currentMillisVolts; }} void writeToStorage(int valor、int addr){EEPROM.write(addr、valor); } int readFromStorage(int addr){stored_value =EEPROM.read(addr); Stored_valueを返します。 } void setDutyAndFreq(char valor){// "n" valor paraaumentarデューティサイクル// "m" valor paradisminuirデューティサイクル// "j" valor para aumentar la frequencia // "k" valor para des、inuir la frequencia // "+" valor para aumentar el balance // "-" valor para desminuir el balance if(valor =='n'){// Serial.println( "n Recived"); readFromStorage(addr_duty); Duty_cycle =Stored_value; Duty_cycle =Duty_cycle + 1; writeToStorage(duty_cycle、addr_duty); } else if(valor =='m'){// Serial.println( "m Recived"); readFromStorage(addr_duty); Duty_cycle =Stored_value; Duty_cycle =Duty_cycle-1; writeToStorage(duty_cycle、addr_duty); } else if(valor =='j'){// Serial.println( "j Recived"); readFromStorage(addr_freq); freq =Stored_value; freq =freq + 10; writeToStorage(freq、addr_freq); } else if(valor =='k'){// Serial.println( "k Recived"); readFromStorage(addr_freq); freq =Stored_value; freq =freq-10; writeToStorage(freq、addr_freq); } else if(valor =='p'){// Serial.println( "m Recived"); writeToStorage(0、addr_freq); writeToStorage(0、addr_duty); }} //ボルト関数voidlecturaVoltios(){vinv =0.0f; voutv =0.0f; for(int i =0; i <100; i ++){voutv =(analogRead(A7)* arefVolt)/ 1023; // Lee el voltaje de entrada vinv + =voutv /(resistencia2 /(resistencia1 + Resistencia2)); //Fórmuladeldivisorresistivopara el voltaje final if(vinv <0.9){vinv =0.0f; }} vinv =vinv / 100;} void sendData(){/ * Serial.print( "<"); Serial.print(sensorValue); Serial.print( "/"); Serial.print(freq); Serial.print( "/"); Serial.print(duty_cycle); Serial.print( "/"); Serial.print(vinv); Serial.print( ">"); Serial.println(); * /文字列データ="<";データ+ =SensorValue;データ+ ="/";データ+ =頻度;データ+ ="/";データ+ =Duty_cycle;データ+ ="/";データ+ =vinv;データ+ =">"; / * bluetooth.print( "<"); bluetooth.print(sensorValue); bluetooth.print( "/"); bluetooth.print(freq); bluetooth.print( "/"); bluetooth.print(duty_cycle); bluetooth.print( "/"); bluetooth.print(vinv); bluetooth.print( ">"); * / Serial.println(data); } 

回路図


製造プロセス

  1. Arduinoとスマートフォンを使用したDIY電圧計
  2. Pixie:ArduinoベースのNeoPixel腕時計
  3. 可聴周波数検出器
  4. DIYバーチャルリアリティスケートボード
  5. ArduinoおよびOLEDベースのセルオートマトン
  6. DIY ArduinoRADIONICSトリートメントマシン
  7. DIY2Dモーションレーシングシミュレーター
  8. Arduinoを備えた超音波距離検出器
  9. Arduinoベースのセキュリティシステム
  10. Arduino用の雷検知器
  11. RFIDを使ったDIYのアイデア