Einen empfindlichen Metalldetektor mit Arduino Nano bauen – DIY-Anleitung
Komponenten und Zubehör
- 1× Arduino Nano R3
- 1× Operationsverstärker (Op-Amp + Komparator + Referenz)
- 1× IRF840 Power-MOSFET
- 6× LED (beliebig)
- Widerstände, Kondensatoren, Dioden (Sortiment)
- Suchspule: 20 cm Durchmesser, 25 Windungen isolierter Kupferdraht (0,3–0,5 mm²)
- 2× Lithium-Ionen-Akkus in Reihe (ca. 7,4 V)
- Piezo-Summer für akustische Anzeige
Benötigte Werkzeuge
- Lötkolben (mit feiner Spitze)
- Lötzinn, Seitenschneider, Abisolierzange
- Multimeter zum Testen
Software
- Arduino IDE
Projektbeschreibung
Dieser Metalldetektor basiert auf dem bekannten russischen Pulsinduktions-Detektor „PIRAT“, wurde aber durch den Einsatz eines Arduino Nano deutlich vereinfacht. Er erreicht eine Erkennungsreichweite von ca. 15 cm für Münzen und über 40 cm für größere Metallgegenstände – ein beachtliches Ergebnis bei so simpler Bauweise.
Funktionsweise der Pulsinduktion (PI)
PI-Metalldetektoren nutzen eine einzige Spule als Sender und Empfänger. Kurze, starke Stromimpulse erzeugen ein magnetisches Feld. Wenn der Impuls endet, kollabiert das Feld abrupt und induziert einen kurzen „reflektierten Impuls“ (ca. 30 µs) in der Spule. Befindet sich Metall im Feld, ändert sich Amplitude und Phase dieses reflektierten Signals. Daraus lassen sich Größe, Entfernung und Art des Metalls (ferro-/nicht-ferromagnetisch) ableiten.
Aufbau und Besonderheiten
Im Gegensatz zu einer früheren Version mit Smartphone-Anzeige und häufiger Kalibrierung ist dieses Gerät autark und kalibriert sich beim Reset selbst. Die Anzeige erfolgt über 6 LEDs (Häufigkeit und Intensität steigen bei Annäherung) sowie einen Summer. Die Spule besteht aus 25 Windungen isolierten Kupferdrahts (0,3–0,5 mm²) auf 20 cm Durchmesser.
Arduino-Code
// PI Metalldetektor für Arduino Version 18_min (C) alex --- 1967 2015
int ss0 = 0, ss1 = 0, ss2 = 0;
long c0 = 0, c1 = 0, c2 = 0;
byte i = 0;
int sss0 = 0, sss1 = 0, sss2 = 0;
int s0 = 0, s1 = 0, s2 = 0;
void setup() {
DDRB = 0xFF; // Port B: alle Ausgänge
DDRD = 0xFF; // Port D: alle Ausgänge
// Kalibrierung: 255 Messungen mitteln
for (i = 0; i < 255; i++) {
PORTB = B11111111; // MOSFET an
delayMicroseconds(200);
PORTB = 0; // MOSFET aus, Spule freilaufend
delayMicroseconds(20);
s0 = analogRead(A0);
s1 = analogRead(A0);
s2 = analogRead(A0);
c0 += s0; c1 += s1; c2 += s2;
delay(3);
}
c0 = c0 / 255 - 5;
c1 = c1 / 255 - 5;
c2 = c2 / 255 - 5;
}
void loop() {
PORTB = B11111111;
delayMicroseconds(200);
PORTB = 0;
delayMicroseconds(20);
s0 = analogRead(A0);
s1 = analogRead(A0);
s2 = analogRead(A0);
ss0 = s0 - c0; if (ss0 < 0) sss0 = 1; ss0 /= 16; PORTD = ss0; delay(1);
ss1 = s1 - c1; if (ss1 < 0) sss1 = 1; ss1 /= 16; PORTD = ss1; delay(1);
ss2 = s2 - c2; if (ss2 < 0) sss2 = 1; ss2 /= 16; PORTD = ss2; delay(1);
// Starke Anzeige bei Erkennung
if (sss0 + sss1 + sss2 > 2) {
PORTD = B11111111; // Alle LEDs an
delay(1);
sss0 = sss1 = sss2 = 0;
}
}
Schaltplan
Hinweis: Der Code nutzt direkte Port-Manipulation (PORTB, PORTD) für maximale Geschwindigkeit. Die Kalibrierung beim Start kompensiert Drift und Offset. Die Empfindlichkeit lässt sich über den Abzugswert (hier -5) und den Teiler (/16) anpassen.
Herstellungsprozess
- DIY Arduino Word Clock – Elegante Wortuhr mit RTC & Schieberegistern
- 20-kHz-Arduino-Oszilloskop mit Nokia 5110 LCD – Einfacher DIY-Bau
- DIY ADXL335 Erdbeben-Detektor – Low-Power 3-Achsen-Beschleunigungsmesser-Projekt
- Intelligentes Voltmeter mit Arduino & Smartphone bauen – Einfaches DIY-Projekt
- Arduino Audio-Frequenz-Detektor – Lauteste Schallpeaks mit hochsensiblem Modul messen
- DIY VR-Skateboard mit Arduino, Google Cardboard und Bluetooth bauen
- Einfacher Taschenrechner mit Arduino UNO – Einsteigerprojekt
- Präzises DIY-Messrad mit Arduino Nano und Drehgeber
- Einfacher Arduino-Stoppuhr: Taster-gesteuerter Chronometer
- DIY Radionik EMR-Behandlungsgerät mit Arduino Nano – Kritische Betrachtung