산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Manufacturing Technology >> 제조공정

DIY Arduino 기반 펄스 유도 금속 탐지기

구성품 및 소모품

Arduino Nano R3
× 1
HC-05 블루투스 모듈
× 1
범용 트랜지스터 PNP
× 1
범용 트랜지스터 NPN
× 1
전력 MOSFET N-채널
× 1
연산 증폭기, 연산 증폭기 + 비교기 + 참조
× 1
1N4148 – 범용 고속 전환
× 2
커패시터 10μF
× 1
커패시터 1μF
× 1
단일 회전 전위차계 - 100,000옴
× 1
단일 회전 전위차계-47k
× 1
값이 다른 12개의 저항기
× 1

필요한 도구 및 기계

납땜 인두(일반)

이 프로젝트 정보

펄스 유도(PI) 시스템은 단일 코일을 송신기와 수신기로 사용합니다. 이 기술은 와이어 코일을 통해 강력하고 짧은 전류 버스트(펄스)를 보냅니다. 각 펄스는 짧은 자기장을 생성합니다. 펄스가 끝나면 자기장이 극성을 바꾸고 매우 갑자기 붕괴되어 날카로운 전기 스파이크가 발생합니다. 이 스파이크는 몇 마이크로초 동안 지속되며 다른 전류가 코일을 통해 흐르게 합니다. 이 전류를 반사 펄스라고 하며 약 30마이크로초 동안 지속되는 매우 짧습니다. 그런 다음 다른 펄스가 전송되고 프로세스가 반복됩니다. 금속 조각이 자기장 라인의 범위 안에 들어오면 수신 코일은 수신된 신호의 진폭과 위상 모두의 변화를 감지할 수 있습니다. 진폭 변화와 위상 변화의 양은 금속의 크기와 거리를 나타내는 지표이며 철금속과 비철금속을 구별하는 데에도 사용할 수 있습니다.

N.E.C.O. 사이트에서 PI 검출기의 좋은 예를 찾았습니다. 프로젝트. 이 금속 탐지기는 Arduino와 Android의 공생입니다. Play 스토어에서 모든 기능을 갖춘 "Spirit PI" 애플리케이션의 무료 버전을 다운로드할 수 있지만 몇 가지 훌륭한 옵션이 있는 프로 버전을 구입할 수도 있습니다. 스마트 폰과 arduino 간의 통신은 블루투스 모듈 HC 05로 수행되지만 전송 속도를 115200으로 설정해야 하는 모든 블루투스 어댑터를 사용할 수 있습니다. 구성표는 아래 그림에 나와 있습니다. 장치의 기능을 개선하기 위해 원래 구성표를 몇 가지 약간 수정했습니다. N.E.C.O.-s 웹에서 원본 회로도를 찾을 수 있습니다.

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

150옴 저항 대신 47옴 값의 삼량체 전위차계를 넣었습니다. 이 트리머는 코일을 통한 전류를 조절합니다. 값을 높이면 코일을 통과하는 전류가 증가하고 장치의 감도가 증가합니다. 두 번째 수정은 원래의 저항 62k 대신 트리머 포트 100kOhm입니다. 이 트리머를 사용하여 Arduino의 A0 입력에 대해 약 4.5V의 전압을 설정했습니다. 다른 연산 증폭기와 작동 전압의 경우 이 저항의 값이 달라야 한다는 것을 알았기 때문입니다.

이 특별한 경우 장치에 전원을 공급하기 위해 직렬로 연결된 4개의 리튬 이온 배터리를 사용하므로 전압은 15v보다 높습니다. 아두이노는 최대 12V 입력 전압을 수용하기 때문에 +5v 핀에 직접 아두이노에 전원을 공급하기 위해 작은 방열판에 5V(7805)용 스태빌라이저를 장착했습니다.

코일은 직경 0.4mm의 절연 구리선으로 만들어지며 직경 19cm의 원 모양으로 25개의 권선이 포함되어 있습니다. 코일(요소는 접착제로 접착되어야 하며 나사는 없음)

비디오에서 볼 수 있듯이 작은 금속 동전은 10-15cm의 거리에서 감지할 수 있으며 더 큰 금속 물체는 30-40cm 이상의 거리에서 감지할 수 있습니다. 기기의 제작과 설정이 비교적 간단하다는 점을 감안하면 훌륭한 결과입니다.

<섹션 클래스="섹션 컨테이너 섹션 축소 가능" id="코드">

코드

<울>
  • 코드
  • 코드Arduino
    #include //#include //int bluetoothTx =5;//int bluetoothRx =6;//blutoth 모듈 터미널 RX//SoftwareSerial 블루투스(bluetoothTx, bluetoothRx);# pulsePine 2 정의 타이머 =200; const int button1 =12; int buttonState1 =0;char 데이터;//EEPROM 변수int addr_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;//밸런스 변수int value_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; //값은 마이크로초 수입니다.//배터리 플로트 저항 레벨 측정1 =101000; //Resistencia de 100K para medir la Tencion (Voltios)/테스트 voltsfloat resistance2 =10000에 대한 100k의 저항; //Resistencia de 10k para medir la tencion (Voltios)/Resistance 10k for test voltsfloat const arefVolt=4.8f; //핀 "4.9v" SET 정확한 값 HEREfloat voutv;float vinv;unsigned long startMillisVolts; unsigned long currentMillisVolts;long periodVolts =2000; //값은 마이크로초 단위입니다.sint sensorValue;void setup() { //analogReference(INTERNAL); Serial.begin(115200); readFromStorage(addr_duty); 듀티 사이클 =저장된 값; readFromStorage(addr_freq); 주파수 =저장된 값; if(duty_cycle ==0 || duty_cycle ==255){ writeToStorage(duty_def_value,addr_duty); readFromStorage(addr_duty); 듀티 사이클 =저장된 값; } if(주파수 ==0 || 주파수 ==255 ){ writeToStorage(freq_def_value,addr_freq); readFromStorage(addr_freq); 주파수 =저장된 값; } 핀모드(펄스파인, 출력); } 무효 루프() { currentMillis =micros(); 현재MillisVolts =밀리(); if(Serial.available()>0) { 데이터 =Serial.read(); setDutyAndFreq(데이터); } if (currentMillis - startMillis>=period) { period =1000000 / freq; // Serial.println(마침표); digitalWrite(펄스파인, 높음); 듀티 사이클_템프 =듀티 사이클 * 10; 지연마이크로초(duty_cycle_temp); digitalWrite(펄스파인, LOW); //센서값 =analogRead(A0); for(int i =0;i <3; i++){ sensorValue =analogRead(A0);}delayMicroseconds(10);sensorValue =analogRead(A0);sensorValue =sensorValue / 5; 센드데이터(); startMillis =현재Millis; } // Lectura voltios if (currentMillisVolts - startMillisVolts>=periodVolts) {lecturaVoltios();//Serial.println("Lectura voltios");startMillisVolts =currentMillisVolts; } } 무효 writeToStorage(int valor,int addr) { EEPROM.write(addr, valor); } int readFromStorage(int addr) { stored_value =EEPROM.read(addr); 저장된 값을 반환합니다. } void setDutyAndFreq (char valor) { //"n" 용기 파라 aumentar 듀티 사이클 //"m" valor para disminuir 듀티 사이클 //"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); 듀티 사이클 =저장된 값; 듀티 사이클 =듀티 사이클 + 1; writeToStorage(의무_주기, 추가_의무); } else if(valor =='m') { // Serial.println("m Received"); readFromStorage(addr_duty); 듀티 사이클 =저장된 값; 듀티 사이클 =듀티 사이클 - 1; writeToStorage(의무_주기, 추가_의무); } else if(valor =='j') { // Serial.println("j 수신"); readFromStorage(addr_freq); 주파수 =저장된 값; 주파수 =주파수 + 10; writeToStorage(주파수, addr_freq); } else if(valor =='k') { // Serial.println("k 수신"); readFromStorage(addr_freq); 주파수 =저장된 값; 주파수 =주파수 - 10; writeToStorage(주파수, addr_freq); } else if(valor =='p') { // Serial.println("m 수신"); writeToStorage(0, addr_freq); writeToStorage(0, addr_duty); } } //볼트 functionvoid lecturaVoltios(){ vinv=0.0f; voutv=0.0f; for (int i=0;i <100;i++){ voutv =(analogRead(A7) * arefVolt) / 1023; //리 엘 볼타헤 데 엔트라다 vinv +=voutv / (resistencia2 / (resistencia1 + resistance2)); // 저항의 제수 수식 최종 if(vinv <0.9){ vinv=0.0f; } }vinv =vinv/100;}무효 sendData() { /* Serial.print("<"); Serial.print(센서값); Serial.print("/"); Serial.print(주파수); Serial.print("/"); Serial.print(duty_cycle); Serial.print("/"); Serial.print(vinv); Serial.print(">"); Serial.println();*/ 문자열 데이터 ="<"; 데이터 +=센서값; 데이터 +="/"; 데이터 +=주파수; 데이터 +="/"; 데이터 +=duty_cycle; 데이터 +="/"; 데이터 +=vinv; 데이터 +=">"; /* 블루투스.print("<"); 블루투스.프린트(센서값); 블루투스.프린트("/"); 블루투스.프린트(주파수); 블루투스.프린트("/"); 블루투스.프린트(듀티사이클); 블루투스.프린트("/"); 블루투스.프린트(vinv); 블루투스.print(">");*/ Serial.println(데이터); }

    회로도


    제조공정

    1. Arduino와 스마트폰을 사용한 DIY 전압계
    2. Pixie:Arduino 기반 NeoPixel 손목시계
    3. 오디오 주파수 감지기
    4. DIY 가상 현실 스케이트보드
    5. Arduino 및 OLED 기반 Cellular Automata
    6. DIY Arduino RADIONICS 치료 기계
    7. DIY 2D 모션 레이싱 시뮬레이터
    8. Arduino를 사용한 초음파 거리 감지기
    9. Arduino 기반 보안 시스템
    10. Arduino용 번개 감지기