DIY Metal Detector using Arduino step by step

How to make a metal Detector

Welcome to the Techatronic, in this article we will share with you How to make a metal Detector with the Arduino. Arduino is the basic controller board that is using widely in the area of basic-level projects. so this project I am making also on the same. A metal detector is an interesting and important project. which can be used in many placed like Metal waste segregator, and finding metal from the ground, and many other places. I use the Arduino metal detector to find out the metal from my garden so that I will never hurt with that small pieces of metal. this metal detector is very easy and simple to make. you only need a small electronic circuit and have to embed this circuit with the Arduino board. So, let Talk about the working of the Arduino metal detector.

Diy metal detector

How does a metal detector work?

As we can see there are three things that are using to complete the whole project. Electronic circuit, Arduino, and a copper coil. here actually we are making a proximity sensor that detects the metal with a metal detector  using Arduino. with the help of the RC circuit built in the Electronics part. now when we take this project near the metal it senses the metal near it due to the electromagnetic waves transmitted from the coil. hence with these electromagnetic waves, the circuit sends a signal to the Arduino. Arduino compares and processes the data and sends the instruction to the buzzer and the LED according to the code. the coil will generate the electromagnetic waves and when we take it near to the metal the electromagnetic waves get distorted. and Arduino gives the instruction according to all these data variations. Here are more Arduino projects like Gesture Control Robot using Arduino to check it also.

Learn 10+ basic activity & sensor interfacing with our Arduino ebook. Well explained program. And brief circuit diagram WhatsApp and email support. which will help you to learn basic electronics, Arduino Coding, Sensor interfacing with Arduino, Arduino, and much more. buy Arduino Ebook to learn https://techatronic.com/arduino-ebook/

Arduino metal detector- DIY Metal Detector with Arduino

At whatever point some present goes through the loop, it produces a magnetic field around it. Furthermore, the adjustment in the magnetic field produces an electric field. Presently as per Faraday’s law, due to this Electric field, a voltage creates over the curl which contradicts the adjustment in an attractive field and that is the way Coil builds up the Inductance, which implies the produced voltage restricts the expansion in the flow. This is the easiest metal detector project The unit of Inductance is Henry and the equation to quantify the Inductance is:

L = (μο * N2 * A) / l

Where, L- Inductance in Henries

μο- Permeability,

its 4Ï€*10-7 for Air

N- Number of turns

A- Inner Core Area (Ï€r2) in m2 l-

Length of the Coil in meters

Components Required

  • Arduino UNO
  • Copper coil
  • Diode
  • 10nf capacitor
  • Buzzer
  • Led
  • 220 ohm &  330 Ohm Resistor
  • Jumper wires and a breadboard
  • USB cable for uploading the code
S.NoComponent RequiredQuantityBuy Link
1.Arduino UNO1https://amzn.to/3ue2vmh
2.Arduino UNO Cable1https://amzn.to/3obXjht
3.Copper Coil1https://amzn.to/30toRFq
4.Diode1https://amzn.to/3lFiU08
5.LED2https://amzn.to/3AQbzzY
6.220-ohm Resistor2https://amzn.to/3oioZkQ
7.330-ohm Resistor 1https://amzn.to/30mLXNP
8.Buzzer1https://amzn.to/3iN5XiX
9.Breadboard1https://amzn.to/39vsRX2
10.Power Supply1https://amzn.to/3FmT9K7

Circuit Diagram Arduino metal detector:- 

DIY METAL DETECTOR CIRCUIT DIAGRAM
Circuit Diagram DIY metal detector
Arduino UNO10 nf Capacitor
A2 PinTerminal 1
GNDTerminal 2
Arduino UNOBuzzer
D6 PinPositive
GND Negative
ArduinoLED 220 Ohm Resistor
D5 Pin Terminal 1
 Anode PinTerminal 2
GNDCathode Pin 
Arduino UNOCopper coilDiode330-ohm res
 Terminal 1Terminal 1Terminal 1
A1 Pin  Terminal 2
A2 Pin Terminal 2 
GNDTerminal 2  

metal Detector Arduino Code:- 

#define capPin A5
#define buz 9
#define pulsePin A4

#define led 10

long sumExpect=0; //running sum of 64 sums 
long ignor=0;   //number of ignored sums
long diff=0;        //difference between sum and avgsum
long pTime=0;
long buzPeriod=0; 

void setup() 
{
  Serial.begin(9600);
  pinMode(pulsePin, OUTPUT); 
  digitalWrite(pulsePin, LOW);
  pinMode(capPin, INPUT);  
  pinMode(buz, OUTPUT);
  digitalWrite(buz, LOW);
  pinMode(led, OUTPUT);
}

void loop() 
{
  int minval=1023;
  int maxval=0;
  long unsigned int sum=0;
  for (int i=0; i<256; i++)
  {
    //reset the capacitor
    pinMode(capPin,OUTPUT);
    digitalWrite(capPin,LOW);
    delayMicroseconds(20);
    pinMode(capPin,INPUT);
    applyPulses();
    
    //read the charge of capacitor
    int val = analogRead(capPin); //takes 13x8=104 microseconds
    minval = min(val,minval);
    maxval = max(val,maxval);
    sum+=val;
    
    long unsigned int cTime=millis();
    char buzState=0;
    if (cTime<pTime+10) { if (diff>0)
        buzState=1;
      else if(diff<0) buzState=2; } if (cTime>pTime+buzPeriod)
    {
      if (diff>0)
      buzState=1;
      else if (diff<0) buzState=2; pTime=cTime; } if (buzPeriod>300)
    buzState=0;

    if (buzState==0)
    {
      digitalWrite(led, LOW);
      noTone(buz);
    }  
    else if (buzState==1)
    {
      tone(buz,100);
      digitalWrite(led, HIGH);
    }
    
    else if (buzState==2)
    {
      tone(buz,500);
      digitalWrite(led, HIGH);
    }
  }

  //subtract minimum and maximum value to remove spikes
  sum-=minval; 
  sum-=maxval;
  
  if (sumExpect==0) 
  sumExpect=sum<<6; //set sumExpect to expected value 
  long int avgsum=(sumExpect+32)>>6; 
  diff=sum-avgsum;
  if (abs(diff)>10)
  {
    sumExpect=sumExpect+sum-avgsum;
    ignor=0;
  } 
  else 
    ignor++;
  if (ignor>64)
  { 
    sumExpect=sum<<6;
    ignor=0;
  }
  if (diff==0) 
    buzPeriod=1000000;
  else 
  buzPeriod=avgsum/(2*abs(diff));    
}

void applyPulses()
{
    for (int i=0;i<3;i++) 
    {
      digitalWrite(pulsePin,HIGH); //take 3.5 uS
      delayMicroseconds(3);
      digitalWrite(pulsePin,LOW);  //take 3.5 uS
      delayMicroseconds(3);
    }
}  

Upload the given Code into the Arduino With the help of Arduino IDE

7 thoughts on “DIY Metal Detector using Arduino step by step”

  1. Sir, thank you very much for publishing these excellent projects/ tutorials.

    I live in Canada and would like to make my own copper coil. Could you give me the awg of the wire, the number of turns and the diameter of the coil ?

    Thank you very much.

    Reply
    • If you lick on the link next to the coil in the table it will take you to Amazon including a description of the coil.

      Regards

      Reply
  2. This pins used in the SW-program and in the drawing don’t comply with each other…

    #define capPin A5
    #define buz 9
    #define pulsePin A4
    #define led 10

    Reply
    • Thank you for pointing this out. I couldn’t figure out why it wasn’t working. I moved over to pins A4 and A5 and it seems to work ok.

      Reply

Leave a Comment