Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Manufacturing Technology >> Productieproces

Pocket Metal Locator

Componenten en benodigdheden

SparkFun Arduino Pro Mini 328 - 5V/16MHz
× 1

Benodigde gereedschappen en machines

3D-printer (algemeen)

Over dit project

Intro:Pocket Metal Locator - Arduino

Deze coole kleine metalen zakzoeker is gevoelig genoeg om kleine spijkers en spijkers in hout te identificeren en compact genoeg om in lastige ruimtes te passen, waardoor hij gemakkelijk te dragen en te gebruiken is voor het lokaliseren van metaal.

Het apparaat heeft vier onafhankelijke zoekspoelen en gekleurde LED-indicatoren waardoor het gemakkelijk is om snel een groter zoekgebied te bestrijken terwijl het doel nauwkeurig kan worden geïdentificeerd.

Dit handige kleine apparaat kalibreert zichzelf met één knop, oplaadbaar via een USB-poort en maakt gebruik van kleuren-LED's, geluid en trillingen om de sterkte van het doelwit aan te geven.

Inbegrepen in de tutorial zijn alle ontwerpen, testen, code en 3D-bestanden die nodig zijn om zelf te bouwen. Ik hoop dat je net zoveel plezier beleeft aan het bouwen en gebruiken als ik!!

Stap 1:Materialenlijst en hoe het werkt

1. Hoe het Werkt

De Pocket Metal Locator maakt gebruik van vier onafhankelijke pulsinductiezoekspoelen die worden aangedreven door een Arduino Pro Mini. Elke zoekspoel bestaat uit een afzonderlijke TX- en RX-spoel waarbij een puls in de TX-spoel wordt geïnduceerd die een elektromagnetisch veld rond de RX-spoel creëert. Het veranderende veld induceert een spanning in de RX-spoel die wordt gedetecteerd en versterkt voordat de pulsbreedte van het signaal door de Arduino wordt gelezen.

Een afvlakkingsalgoritme in de Arduino-code wordt gebruikt om ruis uit geldige pulsen te verwijderen, waardoor het zeer stabiel is.

Een kalibratie-algoritme in de code neemt een gemiddelde van de metingen over een korte opstartperiode en stelt een reeks drempels in om het signaal mee te vergelijken.

Wanneer een metalen object binnen het bereik van het elektromagnetische veld komt, wordt het veld verstoord en wordt een deel van de energie van de RX-spoel afgeleid in "Eddie-stromen" die zich in het doelobject vormen. Dit parasitaire effect van het doelobject resulteert in een vermindering van de pulsbreedte die in de RX-spoel wordt gedetecteerd. In wezen meten we het vermogensverlies in het doelobject.

Wanneer de in de RX-spoel gedetecteerde pulsbreedte onder de drempel daalt, gaan de LED's branden, klinkt de zoemer en wordt de Haptic Feedback-motor geactiveerd - afhankelijk van een vooraf bepaalde grootte van het doelsignaal.

De schakeling hiervoor heeft zich het afgelopen jaar ontwikkeld tot een zeer stabiele en betrouwbaar presterende detector. De spoelconfiguratie en oriëntatie zijn bewust ontworpen om de stabiliteit en dieptedetectie te maximaliseren.

2. Materialenlijst

  • 3.7v 350mAh LiPo-batterijformaat:38 mm x 20 mm x 7,5 mm
  • TP4056 USB LiPo-batterijladerGegevensblad
  • 4,7K-weerstand om de laadstroom van de LiPo-batterij te beperken tot minder dan 300 mA
  • Arduino Pro Mini
  • FTDI USB naar seriële module voor het programmeren van de Mini Pro
  • LM339 Quad Differential Comparator Integrated Circuit
  • Vero Board - 2 stuks gesneden tot 20x9 gaten en 34x9 (zie foto voor de juiste oriëntatie)
  • BC548 NPN-transistor x 4
  • 2N7000 MOSFET-schakelaar x 5
  • Piëzo-zoemer
  • Munttrillingsmotor voor haptische feedback
  • WS2812 RGB LED-module x 4
  • 1k Weerstand x 4
  • 10k Weerstand x 4
  • 47 Ohm Weerstand x 4
  • 2.2K Weerstand x 4
  • 150 pf keramische condensator x 8
  • 0,18uF polyester condensator x 4
  • Rol van 0,3 mm emaille koperdraad (normaal geleverd in rollen van ongeveer 25 g Gewicht)
  • Op PCB gemonteerde drukknopschakelaar
  • Hot lijmpistool
  • 10 mm boor
  • Handboormachine
  • Labelpistool of plakband geschikt om 16 afzonderlijke draden te labelen Aansluitdraad
  • Toegang tot een 3D-printer

3. Vergelijkingsbewerking

Ik heb een aantal vragen gehad over de werking van de LM339 dus ik dacht ik geef een duidelijkere uitleg.

De LM339 werkt uitsluitend als een spanningsvergelijker, vergelijkt de differentiële spanning tussen de positieve en negatieve pinnen en geeft een logisch lage of hoge impedantie af (logisch hoog met pullup) op basis van de differentiële ingangspolariteit.

In dit circuit is de positieve ingang van de comparator verbonden met de Vcc-lijn en wordt een pull-up-weerstand naar Vcc toegepast op de comparatoruitgang. In deze configuratie blijft in de praktijk de uitgangsspanning van de comparator hoog, totdat de ingangsspanning op de negatieve ingang 3,5v overschrijdt

De werking kan worden uitgelegd aan de hand van het LM339-gegevensblad dat het "ingangsspanningsbereik" schetst tussen 0 V en Vsup-1,5 V

Wanneer zowel IN– als IN+ beide binnen het common-mode bereik zijn, als IN– lager is dan IN+ en de offsetspanning, heeft de uitgang een hoge impedantie en is de uitgangstransistor niet geleidend

Wanneer IN– hoger is dan de gewone modus en IN+ zich in de gewone modus bevindt, is de uitvoer laag en daalt de uitgangstransistor. Link naar gegevensblad en uitleg hieronder http://www.ti.com/lit/ds/symlink/lm2901.pdf

lm2901.pdf

Stap 2:druk de zaak af

Het 3D-geprinte hoesje is gemaakt met behulp van 5 afzonderlijke prints. De afmetingen en 3D-bestanden vind je hier op Thingiverse. Het ontwerp was erop gericht het apparaat gemakkelijk vast te houden en ervoor te zorgen dat de zoekspoelen zo dicht mogelijk bij het te doorzoeken gebied waren.

Print de behuizing zorgvuldig uit en verwijder overtollig plastic. Het is belangrijk om deze stap nu uit te voeren, zodat de elektronische componenten in de behuizing kunnen worden uitgelijnd voordat ze definitief worden aangesloten en getest.

Stap 3:Bouw en monteer de zoekspoelen

Neem de bedrukte spoelvormers en wind er 25 windingen koperdraad op. Zorg ervoor dat u 20 cm extra koperdraad overlaat voor aansluiting op de hoofdeenheid.

Gebruik de gaten die in de mallen zijn afgedrukt om een ​​consistente wind en oriëntatie van de spoelen voor elke mal mogelijk te maken. Terwijl u dit doet, draait u de eerste ondersteboven en lijmt u de eerste geleidelijk in de basiseenheid.

Volg de fotomontage zoals geleverd, met als resultaat 8 spoelen die in de spoelconstructie zijn gemonteerd met alle draden consistent georiënteerd en lang genoeg om verbinding te maken met de hoofdkaarteenheid in de bovenste behuizing.

Gebruik de twee draadgeleidingsblokken met gaten voor elke spoel en de bedrukte basis om elke specifieke spoel bij te houden.

Ik heb de draden voor de binnenste spoelen langs de bovenkant en de buitenste spoelen langs de onderkant van het draadblok geplaatst, zodat ik elke specifieke spoel kon volgen, wat het gemakkelijker maakt om verbinding te maken met het moederbord.

Stap 4:Bouw het circuit

Het apparaat heeft vier belangrijke circuits om onafhankelijk te bouwen - Driver Board, Main Board, LED-assemblage en oplaadbare voeding. In deze stap bouwen we het Driver Board en Main Board.

1. Bestuurdersbord

Gebruik een knutselmes om een ​​stuk Vero Board langs de gaten 22x11 te snijden, het resultaat is een stuk Vero Board met 20x9 gaten, georiënteerd volgens de bijgevoegde afbeelding. Het is het beste om meerdere keren over de gaten aan beide zijden van het bord te kerven en vervolgens voorzichtig het overtollige bord af te breken. Controleer of het bord in de basis van de behuizing zit met voldoende ruimte aan beide zijden.

Gebruik de foto's en een boor van 10 mm met de hand om voorzichtig de spijkers op de onderkant van het Vero-bord te breken. Volg het schakelschema en de fotolay-out van componenten om de printplaat te monteren en zorg ervoor dat er geen kortgesloten tracks zijn.

Leg dit bord opzij om later te testen.

2. Hoofdbord

Gebruik een knutselmes om een ​​stuk Vero Board langs de gaten 36x11 te snijden, het resultaat is een stuk Vero Board met 34x9 gaten, georiënteerd volgens de bijgevoegde afbeelding. Het is het beste om meerdere keren over de gaten aan beide zijden van het bord te kerven en vervolgens voorzichtig het overtollige bord af te breken. Controleer of het bord in de basis van de behuizing zit met voldoende ruimte aan beide zijden.

Gebruik de foto's en een boor van 10 mm met de hand om de spijkers op de onderkant van het Vero-bord voorzichtig te breken.

Volg het schakelschema en de fotolay-out van de Arduino en LM339 IC en andere componenten om de printplaat te monteren en zorg ervoor dat er geen kortgesloten tracks zijn.

Leg dit bord opzij om later te testen.

Stap 5:LED-indicatoren toevoegen

Ik heb WS2182-LED's gebruikt die een ingebouwd IC hebben waardoor ze door de Arduino kunnen worden geadresseerd met behulp van drie afzonderlijke draden, maar een breed scala aan kleuren en helderheidskleuren kan worden gecreëerd door een opdracht naar de LED te sturen. Dit wordt gedaan via een speciale bibliotheek die is geladen in de Arduino IDE die wordt beschreven in de testsectie.

1. Montage van de LED's in het deksel van de spoelbehuizing

Plaats de vier LED's voorzichtig zodat ze correct zijn georiënteerd, zodat de VCC- en GND-aansluitingen zijn uitgelijnd en ze in het midden van de gaten zitten.

Gebruik Hot Glue om de LED's op hun plaats te bevestigen.

2. Bedrading van de LED's

Strip en plaats drie stukken enkeladerige aansluitdraad van 25 cm voorzichtig over de contacten van de LED's.

Soldeer deze op hun plaats en zorg ervoor dat de centrale datadraad is aangesloten met IN- en OUT-contacten zoals op de foto.

3. Uitlijning van hoofdletters controleren

Controleer of het deksel van de behuizing gelijk ligt met de spoelbehuizing en gebruik vervolgens Hot Glue om de draden op hun plaats te houden aan de onderkant van het deksel.

Leg dit apart om later te testen.

Stap 6:Het apparaat in elkaar zetten en testen

1. Montage voorbereiden

Voordat we ze in elkaar zetten, zullen we elk bord geleidelijk testen om het gemakkelijker te maken om problemen op te lossen.

De Arduino Pro Mini heeft een USB-seriële kaart nodig om door uw pc te kunnen worden geprogrammeerd. Hierdoor kan het bord kleiner zijn omdat het geen seriële interface heeft. Om deze boards te programmeren, moet je investeren om er een te krijgen, zoals beschreven in de onderdelenlijst.

Voordat u de Arduino-code laadt, moet u de bibliotheek "FastLED.h" toevoegen als een bibliotheek om de WS2182-LED's aan te sturen. Er is een reeks oscilloscoopsporen meegeleverd voor het oplossen van problemen als er problemen zijn.

Er is ook een screenshot van de seriële IDE-gegevensuitvoer met behulp van de Graph Plot-functie die de pulsbreedte-uitvoer van elk van de kanalen en de drempelwaarde toont. Dit is handig tijdens het testen, omdat u kunt zien of elk kanaal met vergelijkbare gevoeligheidsniveaus presteert.

Ik heb twee exemplaren van de code bijgevoegd. Men heeft test seriële datastreaming voor het oplossen van problemen.

OPMERKING: Sluit de LiPo-batterij niet aan tot de allerlaatste stap, want als u deze tijdens de montage per ongeluk kortsluit, kan de eenheid oververhit raken of zelfs vlam vatten.

2. Test het moederbord

Voordat u het moederbord ergens op aansluit, is het raadzaam om de Arduino seriële kabel aan te sluiten en te controleren of de code wordt geladen.

Dit zal eenvoudigweg testen of de Arduino fysiek correct is aangesloten en dat de IDE en bibliotheken zijn geladen. Laad de code via de IDE die zonder fouten moet worden geladen en er mag geen rook uit de componenten komen!!

3. Sluit de bestuurderskaart aan

Volg het schakelschema om de driverkaart op de hoofdkaart aan te sluiten en plaats de unit fysiek in de behuizing om ervoor te zorgen dat de items in de behuizing passen. Dit is een kwestie van vallen en opstaan ​​en vereist doorzettingsvermogen.

Laad de code via de IDE die zonder fouten moet worden geladen en er mag geen rook uit de componenten komen!!

4. Sluit de spoelen aan Volg het schakelschema om de spoelen op het moederbord aan te sluiten en plaats de eenheid fysiek in de behuizing om ervoor te zorgen dat de items op de juiste manier passen. Zorg ervoor dat de spoelen zijn uitgelijnd met de Driver Board en Main Board-ingangen volgens het schakelschema.

Met de testcode geladen zal de seriële poort de pulsbreedte op de ontvangstspoel ergens tussen 5000 - 7000uS weergeven. Dit kan ook worden bekeken met behulp van de IDE Graph Plotter.

Dit stelt u in staat om problemen met elk van de kanalen op te lossen en ook het effect te zien van het verplaatsen van een munt in de buurt van de zoekspoel, wat de pulsbreedte zou moeten verminderen naarmate het doel dichter bij de zoekspoel komt.

Als je een oscilloscoop hebt, kun je ook de golfvormen in verschillende stadia van het circuit controleren om problemen te diagnosticeren.

Zodra alle kanalen werken volgens de verwachte positie, plaatsen de draden zodat de behuizing goed wordt gemonteerd en gesloten.

5. Sluit de LED's aan

Neem voorzichtig de drie draden van de LED's van de spoelbehuizing en sluit ze aan op het moederbord. Laad de code en controleer of de LED's correct werken. Gebruik lijm om het deksel van de spoelbehuizing op zijn plaats te bevestigen.

Pocket_Metal_Locator_V11__TEST_CODE.zip Pocket_Metal_Locator_V11.zip

Stap 7:De oplaadbare batterij aansluiten

OPMERKING:

1. Sluit de LiPo-batterij niet aan tot de allerlaatste stap, want als u deze tijdens de montage per ongeluk kortsluit, kan de eenheid oververhit raken of zelfs vlam vatten.

2. Zorg er bij het hanteren van de accu en oplader voor dat u de accuverbindingen niet kortsluit.

3. LiPo-batterijen zijn anders dan andere oplaadbare batterijen en opladen met overstroom kan gevaarlijk zijn, dus zorg ervoor dat u het oplaadcircuit correct configureert.

4. Sluit de Arduino seriële kabel niet aan op het apparaat wanneer de aan/uit-knop is ingedrukt, anders kan de batterij beschadigd raken.

1. Wijzig de stroomlimiet van de oplader

De Pocket Metal Locator maakt gebruik van een LiPo-batterij die kan worden opgeladen met een Micro USB-telefoonoplader. De TP4056 USB LiPo Batt Charger Board is eerst gemodificeerd met een weerstand van 4,7K om de laadstroom te beperken tot minder dan 300mA. Aanwijzingen over hoe dit kan worden gedaan, vindt u hier.

TP4056.pdf

Hiervoor moet u de bestaande op het oppervlak gemonteerde weerstand verwijderen en vervangen door een weerstand zoals weergegeven op de foto. Eenmaal op zijn plaats bescherm je elke ongeplande beweging van de weerstand met een heet lijmpistool.

Voordat u verbinding maakt met het moederbord, moet u testen of de oplader correct werkt door een oplader voor mobiele telefoons met een micro-USB-poort aan te sluiten. Het rode oplaadlampje moet gaan branden als het correct werkt.

2. Installeer de drukknopschakelaar

Zorg ervoor dat de drukknop in de juiste positie is gemonteerd, zodat deze door het midden van de behuizingsdeksel steekt en soldeer vervolgens de drukknop op zijn plaats. Installeer draden tussen de drukknopschakelaar en laderuitgang en de VCC-lijn op de Arduino volgens het schakelschema.

Als de schakelaar correct is geïnstalleerd, wordt de unit geactiveerd.

Bevestig de batterij op zijn plaats met behulp van hete lijm en zorg ervoor dat de micro-USB-aansluiting is uitgelijnd met het gat in het deksel van de behuizing, zodat deze kan worden opgeladen.

Stap 8:Laatste testen en bediening

1. Fysieke montage

De laatste stap is om de draden zorgvuldig te herschikken, zodat de behuizing correct sluit. Gebruik hete lijm om het moederbord in het deksel te bevestigen en sluit het deksel vervolgens op zijn plaats.

2. Het apparaat bedienen

Het apparaat werkt door te kalibreren nadat u de aan/uit-knop ingedrukt hebt gehouden. Alle LED's knipperen wanneer het apparaat klaar is voor gebruik. Houd de drukknop ingedrukt tijdens het zoeken. De LED's veranderen van blauw-groen, rood, paars op basis van de sterkte van het doelobject. De haptische feedback vindt plaats wanneer de LED's paars worden.

Je bent nog niet klaar om te gebruiken voor praktische toepassingen!!

Code

  • Pocket_Metal_Locator_V11.ino
Pocket_Metal_Locator_V11.inoC/C++
Deze coole kleine metalen zakzoeker is gevoelig genoeg om kleine spijkers en spijkers in hout te identificeren en compact genoeg om in lastige ruimtes te passen, waardoor hij gemakkelijk te dragen en te gebruiken is voor het lokaliseren van metaal.

Het apparaat heeft vier onafhankelijke zoekspoelen en gekleurde LED-indicatoren waardoor het gemakkelijk is om snel een groter zoekgebied te bestrijken terwijl het doel nauwkeurig kan worden geïdentificeerd.

Dit handige apparaatje kalibreert zichzelf met één knop, is oplaadbaar via een USB-poort en maakt gebruik van kleuren-LED's, geluid en trillingen om de sterkte van het doelwit aan te geven.

Inbegrepen in de instructable zijn alle ontwerpen, testen, code en 3D-bestanden die nodig zijn om zelf te bouwen. Ik hoop dat je net zoveel plezier beleeft aan het bouwen en gebruiken als ik!
/* Pocket Metal Locator - Arduino Pro Mini April 2018 TechKiwiGradgetsVersion 11 - First Instructable Release*/// WS2182 LED Driver Library Setup#include "FastLED.h "// Hoeveel leds in uw strip?#define NUM_LEDS 4 // Opmerking:de eerste led is adres 0#define DATA_PIN 11 // Opmerking:D11 wordt gebruikt om de led-keten te besturen// Definieer de reeks ledsCRGB-leds[NUM_LEDS];/ / Smoothing-variabelen voor LPFconst float alpha =0,85; float smoothedvalue1 =1000;float smoothedvalue2 =1000;float smoothedvalue3 =1000;float smoothedvalue4 =1000;int sthreshold =100; // Minimale aflezing van pulseIn-functie zorgt voor bemonstering boven noisefloat ledthreshold1 =0,93; // Percentage onder de basislijn voordat LED's worden ingesteld Purplefloat ledthreshold2 =0,96; // Percentage onder de basislijn voordat LED's worden ingesteld Redfloat ledthreshold3 =0,99; // Percentage onder de basislijn voordat LED's worden ingesteld Greenfloat ledthreshold4 =0,998; // Percentage onder de basislijn voordat LED's Blauw worden ingesteld// Kalibratievariabelenbooleaans voorbeeld =false; // indien waar, drempelwaarden niet herroepensint calcounter =0; // Wordt gebruikt om het aantal keren te tellen dat een monster is genomenint scount =200; // Aantal keer gelezen voor kalibreren slechts eenmaal na power upint numsamples =20; // Aantal monsters dat is genomen voordat het gemiddelde wordt genomenint t1 =100; // Duur in microseconden dat LED's branden tijdens callibrationlong calav1 =0; // Gebruikt om het gemiddelde van tien monsters te berekenen, lang calav2 =0; // Gebruikt om het gemiddelde van tien monsters te berekenen, lang calav3 =0; // Gebruikt om het gemiddelde van tien monsters te berekenen, lang calav4 =0; // Gebruikt om het gemiddelde van tien monsters te berekenenint div1 =0;// Delerteller voor het aantal genomen monstersint div2 =0;int div3 =0;int div4 =0;// Vier kanalen aangeduid met A,B,C,Dint divA =0;lange tempA =0;lange pcounterA =0; // Ongefilterde pulsduur van kanaal 1int divB =0; lange tempB =0; lange pcounterB =0; // Ongefilterde pulsduur van kanaal 2int divC =0; lange tempC =0; lange pcounterC =0; // Ongefilterde pulsduur van kanaal 1int divD =0; lange tempD =0; lange pcounterD =0; // Ongefilterde pulsbreedte van kanaal 1int pwindow =7500; // Maximale time-outwaarde voor pulsbreedte// **************************************** **********int dly1 =4; // Periode waarin de TXR-pin hoog blijft (typisch 4uS) in dly2 =1; // Vertraging nadat TXR-pin LAAG wordt voordat het lezen begint om de pulsduur te lezen - typisch 1 uS int dly3 =500; // Vertraging in microseconden na het bemonsteren van de pulsbreedte voordat de volgende cyclus wordt gestart// *********************************** ***************int threshdiff =15; // Voeg toe aan het gemiddelde om een ​​specifieke drempel te worden waar LED zal oplichten (Veranderd V21 van 25 naar 20) lange pulseav =0; // Slaat waarde van output op voor kalibratie// Vibration Motor boolean haptic =false; // Vlag die wordt gebruikt om de vibratiemotor gedurende een bepaalde periode aan te zetten int vduration =1; // Aantal programmacycli dat de vibratiemotor mogelijk maakte int vcounter =vduration; // v cycle counter void setup() {// Vibration Motor/Haptic Feedback pinMode (12,OUTPUT); // Trillingsmotorstuurprogramma van Arduino - D10 digitalWrite (12,LOW); // Zet motor uit Serial.begin (115200); // Setupseriële interface voor testgegevensuitgangen// WS2182 LED Driver Setup LEDS.addLeds(leds,NUM_LEDS); // Standaardwaarde als RGB hiervoor kan echter variëren afhankelijk van de LED-fabrikant LEDS.setBrightness(5); //Stel hier de helderheid van LED's in // beperk mijn stroomverbruik tot 1A bij 5v stroomverbruik FastLED.setMaxPowerInVoltsAndMilliamps (5.100); FastLED.setDither(0); // Schakelt Auto Dithering-functie uit om flikkering te verwijderen// Arduino Mini Pro logische pintoewijzingen// Logische pinnaam 2,3,4,5,6,7,8,9 Komt overeen met D2-D9 Pinnaam op bord gedrukt // Logische pinnaam 10,11,12,13,14,15,16,17 Komt overeen met D10-D13, A0-A3 Pinnaam gedrukt aan boord// Piezo-zoemer pinMode (10,OUTPUT); // Piezo Buzzer-stuurprogramma van Arduino - D10// Transmit pinMode (2,OUTPUT); // Pulsuitgang van Arduino - D2 pinMode (4,OUTPUT); // Pulsuitgang van Arduino - D4 pinMode (6,OUTPUT); // Pulsuitgang van Arduino - D6 pinMode (8, OUTPUT); // Pulsuitgang van Arduino - D8 // Kanaal A pinMode (3,INPUT); // Signaalinvoer naar Arduino vanaf pin 2 op LM339 - D3// Kanaal B pinMode (5,INPUT); // Signaalinvoer naar Arduino vanaf pin 1 op LM339 - D5// Channel C pinMode (7,INPUT); // Signaalinvoer naar Arduino vanaf pin 14 op LM339 - D7// Channel D pinMode (9, INPUT); // Signaalinvoer naar Arduino vanaf pin 13 op LM339 - D9 }void loop(){// Puls en lees spoel ------------------------- --------------------// Kanaal 1 (punt van toverstaf)digitalWrite(2,HIGH); // Stel de TX-pin in op highdelayMicroseconds (dly1); // Vertraging voordat laag wordt ingesteld op output pindigitalWrite (2,LOW); // Stel TX-pin in op lowdelayMicroseconds (dly2); // Vertraging voor het bemonsteren van pulsbreedtepcounterA =pulseIn (3, LOW, pwindow); digitalWrite (2, LOW); // Stel de TX-pin in op LOWdelayMicroseconds (dly3); // Vertraging voordat de pulsbreedte wordt bemonsterd// Pas een laagdoorlaatfilter toe om kanaal 1 af te vlakken als (pcounterA>=drempel) { smoothedvalue1 =(alpha * smoothedvalue1) + ( (1 - alpha) * pcounterA); } pcounterA =afgevlakte waarde1;// Kanaal 2digitalWrite(4,HIGH); // Stel de TX-pin in op highdelayMicroseconds (dly1); // Vertraging voordat laag wordt ingesteld op output pindigitalWrite (4, LOW); // Stel TX-pin in op lowdelayMicroseconds (dly2); // Vertraging voor bemonstering puls widthpcounterB =pulseIn(5,LOW,pwindow);digitalWrite(4,LOW); // Stel de TX-pin in op LOWdelayMicroseconds (dly3); // Vertraging voor het bemonsteren van de pulsbreedte// Pas een laagdoorlaatfilter toe om kanaal 2 af te vlakken als (pcounterB>=drempel) { smoothedvalue2 =(alpha * smoothedvalue2) + ( (1 - alpha) * pcounterB); } pcounterB =afgevlakte waarde2;// Kanaal 3digitalWrite(6,HIGH); // Stel de TX-pin in op highdelayMicroseconds (dly1); // Vertraging voordat laag wordt ingesteld op output pindigitalWrite (6,LOW); // Stel TX-pin in op lowdelayMicroseconds (dly2); // Vertraging voor het bemonsteren van pulsbreedtepcounterC =pulseIn (7, LOW, pwindow); digitalWrite (6, LOW); // Stel de TX-pin in op LOW//delayMicroseconds (dly3); // Vertraging voordat de pulsbreedte wordt bemonsterd// Pas een laagdoorlaatfilter toe om kanaal 3 af te vlakken als (pcounterC>=drempel) { smoothedvalue3 =(alpha * smoothedvalue3) + ( (1 - alpha) * pcounterC); } pcounterC =smoothedvalue3;// Channel 4 digitalWrite (8,HIGH); // Stel de TX-pin in op highdelayMicroseconds (dly1); // Vertraging voordat laag wordt ingesteld op output pindigitalWrite (8,LOW); // Stel TX-pin in op lowdelayMicroseconds (dly2); // Vertraging voor bemonstering puls widthpcounterD =pulseIn(9,LOW,pwindow);digitalWrite(8,LOW); // Stel de TX-pin in op LOWdelayMicroseconds (dly3); // Vertraging voordat de pulsbreedte wordt bemonsterd// Pas een laagdoorlaatfilter toe om kanaal 4 af te vlakken als (pcounterD>=drempel) {afgevlakte waarde4 =(alpha * afgevlakte waarde4) + ( (1 - alpha) * pcounterD); } pcounterD =smoothedvalue4;// Print waarde en reset de teller/* Serial.print(pcounterA); Serieel.print(" "); Serial.print(calav1); Serieel.print(" "); Serial.print(pcounterB); Serieel.print(" "); Serial.print(calav2); Serieel.print(" "); Serial.print(pcounterC); Serieel.print(" "); Serial.print(calav3); Serieel.print(" "); Serial.print(pcounterD); Serieel.print(" "); Serial.println(calav4);*/// Callibation of Thresholds on Powerup // Wacht een tijdje om de basislijn voor elke spoel in te stellen if (sample ==false){ calcounter++; } if ( calcounter> (scount-numsamples) ) { // Wacht 90 en tel dan de steekproeven bij elkaar op om het gemiddelde te berekenen if (pcounterA> sthreshold) { calav1 =calav1 + pcounterA; div1++; } if (pcounterB> drempel) { calav2 =calav2 + pcounterB; div2++; } if (pcounterC> drempel) { calav3 =calav3 + pcounterC; div3++; } if (pcounterD> drempel) { calav4 =calav4 + pcounterD; div4++; } } if ((calcounter> scount)&&(sample ==false)){ // Stel de drempels in calav1 =calav1/div1; calav2 =calav2/div2; calav3 =calav3/div3; calav4 =calav4/div4; // Flash-LED om te laten zien dat de kalibratie is voltooid // 0-3 Blauwe leds [3] =CRGB::Blauw; FastLED.show(); vertraging (t1); leds [3] =CRGB::Zwart; leds [2] =CRGB::Blauw; FastLED.show(); vertraging (t1); leds [2] =CRGB::Zwart; leds [1] =CRGB::Blauw; FastLED.show(); vertraging (t1); leds [1] =CRGB::Zwart; leds [0] =CRGB::Blauw; FastLED.show(); vertraging (t1); leds[0] =CRGB::Zwart; // 3-0 Groene leds [3] =CRGB::Groen; FastLED.show(); vertraging (t1); leds [3] =CRGB::Zwart; leds [2] =CRGB::Groen; FastLED.show(); vertraging (t1); leds [2] =CRGB::Zwart; leds [1] =CRGB::Groen; FastLED.show(); vertraging (t1); leds [1] =CRGB::Zwart; leds[0] =CRGB::Groen; FastLED.show(); vertraging (t1); leds[0] =CRGB::Zwart; FastLED.show();// Geluidszoemer // digitalWrite (10,HIGH); // Stel de uitgangspin in op hoog om de LED te activeren// vertraging (t1*2); digitalWrite(10,LAAG); // Stel de uitgangspin in op hoog om de LED te activeren // Reset de voorbeeldvlag sample =true; teller =0; } if (voorbeeld ==waar) { updateLEDs(); }// Haptische feedback - Als de drempel wordt overschreden, schakelt u de vibratiemotor in voor "vduration" -cycli if (haptic ==true) { // Als de vlag is ingesteld, zet u de motor aan digitalWrite (12,HIGH); // Stel de uitgangspin in op hoog om de trilmotor te activeren als (vcounter>=1){ vcounter--; // decrement teller }else{ digitalWrite (12,LOW); // Stel de uitgangspin in op LAAG om de vibratiemotor haptic =false te deactiveren; // Reset vibratievlag na aantal cycli vcounter =vduration; // Trillingsteller resetten } } }// Subroutinesvoid updateLEDs() {// Resultaten weergeven// Paars - Sterkste doelsignaal + (pieppiezo en haptische feedback)// Rood - Hoog + (Haptische feedback)// Groen - Matig + (Haptische feedback)// Blauw - Zwakste doelsignaal// Schakel alle LEDsleds uit [0] =CRGB::Black;leds[1] =CRGB::Black;leds[2] =CRGB::Black;leds[3] =CRGB::Zwart;digitalWrite(10,LAAG); // Stel de uitgangspin in op LOW om de Piezo SpeakerdigitalWrite (12,LOW) te deactiveren; // Zet de uitgangspin op LAAG om de vibrerende motor te deactiveren// *************** Kanaal 1 if (pcounterA <(calav1*(ledthreshold1))) { // Display paars indien sterk doel-leds [3] =CRGB::Paars; digitalWrite(10,HOOG); // Stel de uitgangspin in op hoog om de Piezo Speaker haptic =true te activeren; } elseif (pcounterA <(calav1*(ledthreshold2))) { // Display Blue voor doel-leds van gemiddelde sterkte [3] =CRGB::Rood; haptisch =waar; } elseif (pcounterA <(calav1*(ledthreshold3))) {// Display Blue voor doel-leds van gemiddelde sterkte [3] =CRGB::Green; haptisch =waar; } elseif (pcounterA <(calav1*(ledthreshold4))) { // Voeg een extra procentpunt toe aan de drempel vanwege de gevoeligheid van de leds van kanaal 1 [3] =CRGB::Blue; } // Kanaal 2 Weergave als ((pcounterB   

Aangepaste onderdelen en behuizingen

Thingiverse
This cool little Pocket Metal Locator is sensitive enough to identify small nails and tacks in wood and compact enough to fit into awkward spaces making it convenient to carry and use for metal locating.The unit has four independent search coils and color LED indicators making it easy to cover a larger search area quickly while being able to accurately identify the target.This neat little device is self-calibrating with one button operation, rechargeable through a USB port and uses color LEDs, sound and vibration to indicate target strength.Included in the instructable is all of the designs, testing, code and 3D files required to build on your own. I hope you enjoy building and using this as much as I have!!CAD file on thingiverse.com

Schema's

This cool little Pocket Metal Locator is sensitive enough to identify small nails and tacks in wood and compact enough to fit into awkward spaces making it convenient to carry and use for metal locating.

The unit has four independent search coils and color LED indicators making it easy to cover a larger search area quickly while being able to accurately identify the target.

Productieproces

  1. Keramische filter
  2. Life Saver
  3. 16 smedentechnieken
  4. Metaal scheren
  5. Kosteneffectiviteit van ponsen van plaatstaal
  6. Wat is plaatwerkponsen?
  7. Machine en toepassingen van geperforeerd metaal
  8. Wat is een gieterij?
  9. Het vormen van metalen spoelen:Coil Slitting
  10. Een overzicht van dun plaatwerk
  11. Wat is plaatwerk rechttrekken?