Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Manufacturing Technology >> Processo de manufatura

Localizador de Pocket Metal

Componentes e suprimentos

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

Ferramentas e máquinas necessárias

Impressora 3D (genérica)

Sobre este projeto





Introdução:Pocket Metal Locator - Arduino


Este pequeno localizador de bolso é sensível o suficiente para identificar pequenos pregos e tachas em madeira e compacto o suficiente para caber em espaços desajeitados, tornando-o conveniente para transportar e usar para localizar metais.

A unidade possui quatro bobinas de busca independentes e indicadores de LED coloridos, facilitando a cobertura de uma área de busca maior rapidamente, ao mesmo tempo em que é capaz de identificar o alvo com precisão.

Este pequeno dispositivo é autocalibrado com a operação de um botão, recarregável através de uma porta USB e usa LEDs coloridos, som e vibração para indicar a força do alvo.

Incluídos no tutorial estão todos os designs, testes, códigos e arquivos 3D necessários para construir você mesmo. Espero que você goste de construir e usar isso tanto quanto eu!





Etapa 1:lista de materiais e como funciona


1 Como Funciona

O Pocket Metal Locator usa quatro bobinas de busca de indução de pulso independentes alimentadas por um Arduino Pro Mini. Cada bobina de busca é composta de uma bobina TX e RX separada, onde um pulso é induzido na bobina TX que cria um campo eletromagnético em torno da bobina RX. O campo variável induz uma tensão na bobina RX, que é detectada e amplificada antes que a largura de pulso do sinal seja lida pelo Arduino.

Um algoritmo de suavização no código do Arduino é usado para remover o ruído de pulsos válidos, tornando-o muito estável.

Um algoritmo de calibração no código faz uma média de leituras em um curto período de inicialização e define uma série de limites para comparar o sinal.

Quando um objeto de metal chega ao alcance do campo eletromagnético, o campo é interrompido e parte da energia é desviada da bobina RX para as "correntes de Eddie" que se formam no objeto alvo. Este efeito parasita do objeto alvo resulta na largura de pulso detectada na redução da bobina RX. Basicamente, estamos medindo a perda de potência do objeto alvo.

Quando a largura de pulso detectada na bobina RX cai abaixo do limite, os LEDs se acendem, a campainha soa e o motor de feedback tátil é acionado - dependendo de um tamanho predeterminado do sinal alvo.

O circuito para isso evoluiu no ano passado para um detector muito estável e de desempenho confiável. A configuração e orientação da bobina foram deliberadamente projetadas para maximizar a estabilidade e a detecção de profundidade.

2. Lista de Materiais
  • 3,7v 350mAh LiPo Tamanho da bateria:38 mm x 20 mm x 7,5 mm
  • Folha de dados do carregador de bateria TP4056 USB LiPo
  • Resistor de 4,7 K para limitar a corrente de carga da bateria LiPo abaixo de 300 mA
  • Arduino Pro Mini
  • FTDI USB para módulo serial para programação do Mini Pro
  • Circuito integrado comparador diferencial quádruplo LM339
  • Placa Vero - 2 peças cortadas em orifícios 20x9 e 34x9 (veja a foto para obter a orientação correta)
  • BC548 NPN Transistor x 4
  • 2N7000 MOSFET Switch x 5
  • Piezo Buzzer
  • Motor de vibração de moeda para feedback tátil
  • Módulo LED WS2812 RGB x 4
  • Resistor 1k x 4
  • Resistor de 10k x 4
  • 47 Ohm Resistor x 4
  • Resistor 2.2K x 4
  • 150pf Capacitor de cerâmica x 8
  • Capacitor 0,18uF de poliéster x 4
  • Rolo de fio de cobre esmaltado de 0,3 mm (normalmente vem em rolos com peso aproximado de 25g)
  • Interruptor de botão de pressão montado em PCB
  • pistola de cola quente
  • Broca de 10 mm
  • Broca portátil
  • Pistola de etiqueta ou fita adesiva adequada para rotular fios de conexão de 16 fios separados
  • Acesso a uma impressora 3D

3. Operação do comparador

Tive uma série de perguntas sobre o funcionamento do LM339, por isso pensei em dar uma explicação mais clara.

O LM339 opera apenas como um comparador de tensão, comparando a tensão diferencial entre os pinos positivo e negativo e emitindo uma impedância lógica baixa ou alta (lógica alta com pullup) com base na polaridade diferencial de entrada.

Neste circuito, a entrada positiva do comparador é conectada à linha Vcc e um resistor pull-up para Vcc é aplicado à saída do comparador. Nesta configuração, na prática, a tensão de saída do comparador permanece alta, até que a tensão de entrada na entrada negativa exceda 3,5v

A operação pode ser explicada na Folha de Dados do LM339, que descreve a "faixa de tensão de entrada" entre 0 V a Vsup-1,5 V

Quando IN– e IN + estão dentro da faixa de modo comum, se IN– for menor que IN + e a tensão de deslocamento, a saída é de alta impedância e o transistor de saída não está conduzindo

Quando IN– é maior que o modo comum e IN + está dentro do modo comum, a saída é baixa e o transistor de saída está absorvendo corrente. Link para folha de dados e explicação abaixo http://www.ti.com/lit/ds/symlink/lm2901.pdf
lm2901.pdf
A caixa impressa em 3D foi feita usando 5 impressões separadas. As dimensões e arquivos 3D podem ser encontrados aqui no Thingiverse. O projeto foi centrado em tornar o dispositivo fácil de segurar, garantindo que as bobinas de busca estivessem o mais perto da área sendo pesquisada.

Imprima cuidadosamente a caixa e remova o excesso de plástico. É importante realizar esta etapa agora para que os componentes eletrônicos possam ser alinhados na caixa antes da conexão e teste final.





Etapa 3:construir e montar as bobinas de pesquisa


Pegue os formadores de bobina impressa e enrole 25 voltas de fio de cobre em cada um deles. Certifique-se de deixar uns bons 20 cm de fio de cobre extra para a conexão à unidade principal.

Use os orifícios impressos nos moldadores para permitir um vento consistente e a orientação das bobinas para cada forma. Ao fazer isso, vire o molde de cabeça para baixo e, progressivamente, cole o molde na unidade base.

Siga a montagem da foto conforme fornecido, o resultado sendo 8 bobinas montadas no conjunto da bobina com todos os fios orientados de forma consistente e longo o suficiente para conectar à unidade da placa principal no invólucro superior.

Use os dois blocos de guia de fio que têm orifícios para cada bobina da base impressa para rastrear cada bobina específica.

Coloquei os fios para as bobinas internas ao longo da parte superior e as bobinas externas ao longo da parte inferior do bloco de fios para que eu pudesse acompanhar cada bobina específica, o que torna mais fácil para conectar à placa principal.





Etapa 4:construir o circuito


A unidade tem quatro circuitos principais para construir independentemente - placa de driver, placa principal, conjunto de LED e fonte de alimentação recarregável. Nesta etapa, construiremos a placa do driver e a placa principal.

1 Placa do motorista

Use uma faca artesanal para cortar um pedaço de Vero Board ao longo dos orifícios 22x11, resultando em um pedaço de Vero Board com orifícios 20x9 orientados de acordo com a imagem incluída. É melhor pontuar nos orifícios em ambos os lados da placa várias vezes e, em seguida, retire o excesso da placa com cuidado. Verifique se a placa está assentada na base do gabinete com espaço suficiente em ambos os lados.

Usando as fotos e uma broca de 10 mm com a mão, quebre cuidadosamente as tachas mostradas na parte inferior da placa Vero. Siga o diagrama do circuito e o layout da foto dos componentes para montar a placa de circuito, tomando cuidado para garantir que não haja trilhas em curto.

Deixe esta placa de lado para teste posterior.

2. Placa Principal



Use uma faca artesanal para cortar um pedaço de Vero Board ao longo dos orifícios 36x11, resultando em um pedaço de Vero Board com orifícios 34x9 orientados de acordo com a imagem incluída. É melhor pontuar nos orifícios em ambos os lados da placa várias vezes e, em seguida, retire o excesso da placa com cuidado. Verifique se a placa está assentada na base do gabinete com espaço suficiente em ambos os lados.

Usando as fotos e uma broca de 10 mm com a mão, quebre cuidadosamente as tachas mostradas na parte inferior da placa Vero.

Siga o diagrama do circuito e o layout da foto do Arduino e LM339 IC e outros componentes para montar a placa de circuito, tomando cuidado para garantir que não haja trilhas em curto.

Deixe esta placa de lado para teste posterior.






Etapa 5:adicionar indicadores LED


Usei LEDs WS2182 que têm um IC integrado que permite que sejam endereçados pelo Arduino usando três fios separados, no entanto, uma ampla gama de cores e brilho pode ser criada enviando um comando para o LED. Isso é feito por meio de uma biblioteca especial carregada no IDE do Arduino, abordada na seção de teste.

1 Montagem dos LEDs na tampa do invólucro da bobina

Posicione com cuidado os quatro LEDs para que fiquem orientados corretamente para que as conexões VCC e GND fiquem alinhadas e eles fiquem no centro dos orifícios.

Use cola quente para prender os LEDs na posição.

2. Fiação dos LEDs

Desencape e posicione com cuidado três comprimentos de 25 cm de fio de conexão de núcleo único entre os contatos dos LEDs.

Solde-os no lugar e certifique-se de que o fio de dados do centro esteja conectado com os contatos IN e OUT conforme a foto.

3. Verificação de alinhamento de caixa

Verifique se a tampa da caixa ficará nivelada com o Gabinete da Bobina e, em seguida, use cola quente para segurar os fios no lugar na extremidade da base da tampa.

Deixe isso de lado para teste mais tarde.





Etapa 6:montagem e teste da unidade


1 Preparação para a montagem

Antes da montagem, testaremos cada placa progressivamente para facilitar a solução de problemas.

O Arduino Pro Mini requer uma placa serial USB para ser programado pelo seu PC. Isso permite que a placa seja menor, pois não possui uma interface serial. Para programar essas placas, você precisará investir na obtenção de uma conforme descrito na lista de peças.

Antes de carregar o código do Arduino, você precisará adicionar a biblioteca "FastLED.h" como uma biblioteca para acionar os LEDs WS2182. Uma série de rastreamentos de osciloscópio foi fornecida para solucionar problemas se houver problemas.

Também há uma captura de tela da saída de dados seriais IDE usando a função Graph Plot, que mostra a saída de largura de pulso de cada um dos canais, bem como o valor limite. Isso é útil durante o teste, pois você pode ver se cada canal está funcionando em níveis semelhantes de sensibilidade.

Eu incluí duas cópias do código. Um deles tem streaming de dados seriais de teste para fins de solução de problemas.

NOTA: Não conecte a unidade de bateria LiPo até a última etapa, pois um curto-circuito acidental durante a montagem pode causar superaquecimento ou até mesmo incêndio na unidade.

2. Teste a placa principal

Antes de conectar a placa principal a qualquer coisa, é aconselhável conectar o cabo serial do Arduino e verificar se o código carrega.

Isso simplesmente testará se o Arduino está fisicamente conectado corretamente e se o IDE e as bibliotecas estão carregados. Carregue o código através do IDE que deve carregar sem erros e sem fumaça deve sair de nenhum componente !!

3. Conecte a placa do driver

Siga o diagrama do circuito para conectar a placa do driver à placa principal e posicione fisicamente a unidade na caixa para garantir que os itens caibam dentro do gabinete. Este é um caso de tentativa e erro e requer persistência.

Carregue o código através do IDE que deve carregar sem erros e sem fumaça deve sair de nenhum componente !!

4. Conecte as bobinas Siga o diagrama do circuito para conectar as bobinas à placa principal e posicione fisicamente a unidade na caixa para garantir que os itens se encaixem adequadamente. Certifique-se cuidadosamente de que as bobinas estejam alinhadas com as entradas da placa do driver e da placa principal de acordo com o diagrama do circuito.

Com o código de teste carregado, a porta serial exibirá a largura do pulso na bobina de recepção em algum lugar entre 5000 - 7000uS. Isso também pode ser visualizado usando o IDE Graph Plotter.

Isso permitirá que você solucione o problema de cada um dos canais e também veja o efeito de mover uma moeda perto da bobina sensora, o que deve reduzir a largura do pulso conforme o alvo se aproxima da bobina sensora.

Se você tiver um osciloscópio, também poderá verificar as formas de onda em vários estágios do circuito para diagnosticar problemas.

Uma vez que todos os canais estão funcionando conforme esperado, posicione os fios de forma que o invólucro da caixa seja montado e fechado corretamente.



5. Conecte os LEDs

Com cuidado, pegue os três fios dos LEDs do gabinete da bobina e conecte-os à placa principal. Carregue o código e verifique se os LEDs estão funcionando corretamente. Use cola para prender a tampa do invólucro da bobina no lugar.
Pocket_Metal_Locator_V11__TEST_CODE.zip Pocket_Metal_Locator_V11.zip





Etapa 7:conectar a bateria recarregável


NOTA:

1. Não conecte a unidade de bateria LiPo até a última etapa, pois um curto-circuito acidental durante a montagem pode causar superaquecimento ou até mesmo incêndio na unidade.

2. Ao manusear a bateria e o carregador, tome cuidado para não causar curto-circuito nas conexões da bateria.

3. As baterias LiPo são diferentes de outras recarregáveis ​​e o carregamento por sobrecorrente pode ser perigoso, portanto certifique-se de configurar o circuito de carga corretamente.

4. Não conecte o cabo serial Arduino à unidade quando o botão liga / desliga estiver pressionado, caso contrário, a bateria pode ser danificada.

1 Modificar o limite de corrente do carregador

O Pocket Metal Locator usa uma bateria LiPo que pode ser carregada usando um carregador de telefone Micro USB. O TP4056 USB LiPo Batt Charger Board foi modificado pela primeira vez com um resistor de 4,7 K para limitar a corrente de carga abaixo de 300mA. A orientação sobre como isso pode ser feito pode ser encontrada aqui.
TP4056.pdf
Isso requer que você remova o resistor montado na superfície existente e substitua por um resistor conforme mostrado na foto. Uma vez no lugar, proteja qualquer movimento não planejado do resistor com uma pistola de cola quente.

Antes de conectar à placa principal, teste se o carregador está funcionando corretamente conectando um carregador de celular com uma porta Micro USB. A luz vermelha de carregamento deve acender durante o funcionamento correto.

2. Instale o botão liga / desliga

Certifique-se de que o botão de pressão esteja montado na posição correta para que se projete através do centro da tampa do invólucro e então solde o botão de pressão no lugar. Instale os fios entre o botão de pressão e a saída do carregador e a linha VCC no Arduino de acordo com o diagrama de circuito.

Quando instalado corretamente, pressionar o interruptor ativará a unidade.

Fixe a bateria na posição usando cola quente e certifique-se de que o soquete Micro USB esteja alinhado ao orifício na tampa da caixa para que possa ser carregada.





Etapa 8:Teste final e operação


1 Montagem Física

A etapa final é reorganizar os fios com cuidado para que a caixa feche corretamente. Use cola quente para prender a placa-mãe na tampa e, em seguida, feche a tampa na posição.

2. Operando a Unidade

A unidade opera calibrando após pressionar e segurar o botão liga / desliga. Todos os LEDs piscarão quando a unidade estiver pronta para ser usada. Mantenha o botão pressionado durante a pesquisa. Os LEDs mudam de Azul-Verde, Vermelho, Roxo com base na força do objeto alvo. O feedback tátil ocorre quando os LEDs ficam roxos.

Você não está pronto para usar em aplicações práticas !!

Código

  • Pocket_Metal_Locator_V11.ino
Pocket_Metal_Locator_V11.ino C / C ++
Este pequeno localizador de bolso é sensível o suficiente para identificar pequenos pregos e tachas em madeira e compacto o suficiente para caber em espaços desajeitados, tornando-o conveniente para transportar e usar para localizar metais.

A unidade possui quatro bobinas de busca independentes e indicadores de LED coloridos, facilitando a cobertura de uma área de busca maior rapidamente, ao mesmo tempo em que é capaz de identificar o alvo com precisão.

Este pequeno dispositivo é autocalibrado com a operação de um botão, recarregável através de uma porta USB e usa LEDs coloridos, som e vibração para indicar a força do alvo.

Incluídos no instrutível estão todos os projetos, testes, códigos e arquivos 3D necessários para construir por conta própria. Espero que você goste de construir e usar isso tanto quanto eu !!
 / * Pocket Metal Locator - Arduino Pro Mini abril 2018 TechKiwiGradgetsVersion 11 - Primeira versão instrutível * /// WS2182 Configuração da biblioteca do driver de LED # include "FastLED.h "// Quantos leds em sua faixa? #Define NUM_LEDS 4 // Nota:o primeiro LED é o endereço 0 # define DATA_PIN 11 // Nota:D11 usado para controlar a cadeia de LED // Define a matriz de ledsCRGB leds [NUM_LEDS]; / / Variáveis ​​de suavização para LPFconst float alpha =0,85; float smoothedvalue1 =1000; float smoothedvalue2 =1000; float smoothedvalue3 =1000; float smoothedvalue4 =1000; int sthreshold =100; // A leitura mínima da função pulseIn garante a amostragem acima do noisefloat ledthreshold1 =0.93; // Porcentagem abaixo da linha de base antes de definir os LEDs Purplefloat ledthreshold2 =0.96; // Porcentagem abaixo da linha de base antes de definir os LEDs Redfloat ledthreshold3 =0,99; // Porcentagem abaixo da linha de base antes de definir os LEDs Greenfloat ledthreshold4 =0.998; // Porcentagem abaixo da linha de base antes de definir os LEDs Blue // Callibration Variablesboolean sample =false; // se verdadeiro, então não recalibrar thresholdsint calcounter =0; // Usado para contar o número de vezes que uma amostra foi obtidaint scount =200; // Número de leituras antes da calibração uma vez, somente após a ativaçãoint numsamples =20; // Número de amostras tiradas antes de calcular a médiaint t1 =100; // Duração em microssegundos que os LEDs acendem durante a calibraçãolong calav1 =0; // Usado para calcular a média de dez sampleslong calav2 =0; // Usado para calcular a média de dez sampleslong calav3 =0; // Usado para calcular a média de dez sampleslong calav4 =0; // Usado para calcular a média de dez amostrasint div1 =0; // Contador do divisor para o número de amostras tomadasint div2 =0; int div3 =0; int div4 =0; // Quatro canais denotados por A, B, C, Dint divA =0; tempA longo =0; pcontadorA longo =0; // Largura de pulso não filtrada do canal 1int divB =0; long tempB =0; long pcounterB =0; // Largura de pulso não filtrada do canal 2int divC =0; long tempC =0; long pcounterC =0; // Largura de pulso não filtrada do canal 1int divD =0; long tempD =0; long pcounterD =0; // Largura de pulso não filtrada do canal 1int pwindow =7500; // Valor de tempo limite máximo para largura de pulso // ***************************************** *********** int dly1 =4; // Período de tempo que o pino TXR permanece alto (tipicLLY 4uS) int dly2 =1; // Atraso após o pino TXR ficar BAIXO antes da leitura começar a ler a duração do pulso - normalmente 1 uS int dly3 =500; // Atraso em microssegundos após a amostragem da largura de pulso antes de iniciar o próximo ciclo // *********************************** ***************** int threshdiff =15; // Adicione à média para se tornar o limite específico onde o LED acenderá (Alterado V21 de 25 para 20) long pulseav =0; // Armazena o valor da saída para calibração // Motor de vibração boolean haptic =false; // Sinalizador usado para ligar o motor de vibração por um período de tempo int vduration =1; // Número de ciclos do programa que o motor de vibração habilitou int vcounter =vduration; // v cycle counter void setup() {// Vibration Motor/Haptic Feedback pinMode(12,OUTPUT); // Vibration Motor driver from Arduino - D10 digitalWrite(12,LOW); // Turn off motor Serial.begin(115200); // Setupserial interface for test data outputs// WS2182 LED Driver Setup LEDS.addLeds(leds,NUM_LEDS); // Default if RGB for this however may vary dependent on LED manufacturer LEDS.setBrightness(5); //Set brightness of LEDs here // limit my draw to 1A at 5v of power draw FastLED.setMaxPowerInVoltsAndMilliamps(5,100); FastLED.setDither(0); // Turns off Auto Dithering function to remove flicker// Arduino Mini Pro logical pin assignements// Logical Pin Name 2,3,4,5,6,7,8,9 Equates to D2-D9 Pin Name Printed On Board // Logical Pin Name 10,11,12,13,14,15,16,17 Equates to D10-D13, A0-A3 Pin Name Printed On Board// Piezo Buzzer pinMode(10,OUTPUT); // Piezo Buzzer driver from Arduino - D10// Transmit pinMode(2,OUTPUT); // Pulse output from Arduino - D2 pinMode(4,OUTPUT); // Pulse output from Arduino - D4 pinMode(6,OUTPUT); // Pulse output from Arduino - D6 pinMode(8,OUTPUT); // Pulse output from Arduino - D8 // Channel A pinMode(3,INPUT); // Signal input to Arduino from pin 2 on LM339 - D3// Channel B pinMode(5,INPUT); // Signal input to Arduino from pin 1 on LM339 - D5// Channel C pinMode(7,INPUT); // Signal input to Arduino from pin 14 on LM339 - D7// Channel D pinMode(9,INPUT); // Signal input to Arduino from pin 13 on LM339 - D9 }void loop(){// Pulse and read Coil ---------------------------------------------// Channel 1 (point of Wand)digitalWrite(2,HIGH); // Set the TX pin to highdelayMicroseconds(dly1); // Delay before setting low on output pindigitalWrite(2,LOW); // Set TX pin to lowdelayMicroseconds(dly2); // Delay before sampling pulse widthpcounterA =pulseIn(3,LOW,pwindow);digitalWrite(2,LOW); // Set the TX pin to LOWdelayMicroseconds(dly3); // Delay before sampling pulse width// Apply Low Pass Filter to signal to smooth Channel 1 if (pcounterA>=sthreshold) { smoothedvalue1 =(alpha * smoothedvalue1) + ( (1 - alpha) * pcounterA); } pcounterA =smoothedvalue1;// Channel 2digitalWrite(4,HIGH); // Set the TX pin to highdelayMicroseconds(dly1); // Delay before setting low on output pindigitalWrite(4,LOW); // Set TX pin to lowdelayMicroseconds(dly2); // Delay before sampling pulse widthpcounterB =pulseIn(5,LOW,pwindow);digitalWrite(4,LOW); // Set the TX pin to LOWdelayMicroseconds(dly3); // Delay before sampling pulse width// Apply Low Pass Filter to signal to smooth Channel 2 if (pcounterB>=sthreshold) { smoothedvalue2 =(alpha * smoothedvalue2) + ( (1 - alpha) * pcounterB); } pcounterB =smoothedvalue2;// Channel 3digitalWrite(6,HIGH); // Set the TX pin to highdelayMicroseconds(dly1); // Delay before setting low on output pindigitalWrite(6,LOW); // Set TX pin to lowdelayMicroseconds(dly2); // Delay before sampling pulse widthpcounterC =pulseIn(7,LOW,pwindow);digitalWrite(6,LOW); // Set the TX pin to LOW//delayMicroseconds(dly3); // Delay before sampling pulse width// Apply Low Pass Filter to signal to smooth Channel 3 if (pcounterC>=sthreshold) { smoothedvalue3 =(alpha * smoothedvalue3) + ( (1 - alpha) * pcounterC); } pcounterC =smoothedvalue3;// Channel 4 digitalWrite(8,HIGH); // Set the TX pin to highdelayMicroseconds(dly1); // Delay before setting low on output pindigitalWrite(8,LOW); // Set TX pin to lowdelayMicroseconds(dly2); // Delay before sampling pulse widthpcounterD =pulseIn(9,LOW,pwindow);digitalWrite(8,LOW); // Set the TX pin to LOWdelayMicroseconds(dly3); // Delay before sampling pulse width// Apply Low Pass Filter to signal to smooth Channel 4 if (pcounterD>=sthreshold) { smoothedvalue4 =(alpha * smoothedvalue4) + ( (1 - alpha) * pcounterD); } pcounterD =smoothedvalue4;// Print value then Reset the counter/* Serial.print(pcounterA); Serial.print (""); Serial.print(calav1); Serial.print (""); Serial.print(pcounterB); Serial.print (""); Serial.print(calav2); Serial.print (""); Serial.print(pcounterC); Serial.print (""); Serial.print(calav3); Serial.print (""); Serial.print(pcounterD); Serial.print (""); Serial.println(calav4);*/// Callibation of Thresholds on Powerup // Wait for a period of time to set baseline for each coil if (sample ==false){ calcounter++; } if ( calcounter> (scount-numsamples) ) { // Wait for 90 then add up the samples to prepare to calculate the average if (pcounterA> sthreshold) { calav1 =calav1 + pcounterA; div1++; } if (pcounterB> sthreshold) { calav2 =calav2 + pcounterB; div2++; } if (pcounterC> sthreshold) { calav3 =calav3 + pcounterC; div3++; } if (pcounterD> sthreshold) { calav4 =calav4 + pcounterD; div4++; } } if ((calcounter> scount)&&(sample ==false)){ // Set the thresholds calav1 =calav1/div1; calav2 =calav2/div2; calav3 =calav3/div3; calav4 =calav4/div4; // Flash LED to show calibrate done // 0-3 Blue leds[3] =CRGB::Blue; FastLED.show (); delay(t1); leds[3] =CRGB::Black; leds[2] =CRGB::Blue; FastLED.show (); delay(t1); leds[2] =CRGB::Black; leds[1] =CRGB::Blue; FastLED.show (); delay(t1); leds[1] =CRGB::Black; leds[0] =CRGB::Blue; FastLED.show (); delay(t1); leds[0] =CRGB::Black; // 3-0 Green leds[3] =CRGB::Green; FastLED.show (); delay(t1); leds[3] =CRGB::Black; leds[2] =CRGB::Green; FastLED.show (); delay(t1); leds[2] =CRGB::Black; leds[1] =CRGB::Green; FastLED.show (); delay(t1); leds[1] =CRGB::Black; leds[0] =CRGB::Green; FastLED.show (); delay(t1); leds[0] =CRGB::Black; FastLED.show();// Sound Buzzer // digitalWrite(10,HIGH); // Set the output pin to high to activate the LED// delay(t1*2); digitalWrite(10,LOW); // Set the output pin to high to activate the LED // Reset the sample flag sample =true; calcounter =0; } if (sample ==true) { updateLEDs(); }// Haptic Feedback - If threshold exceeded turn on vibration motor for "vduration" cycels if(haptic ==true) { // If flag set then turn on motor digitalWrite(12,HIGH); // Set the output pin to high to activate the Vibrate Motor if (vcounter>=1){ vcounter--; // decrement counter }else{ digitalWrite(12,LOW); // Set the output pin to LOW to deactivate the Vibrate Motor haptic =false; // Reset vibration flag after number of cycles vcounter =vduration; // Reset vibration counter } } }// Subroutinesvoid updateLEDs() {// Display results// Purple - Strongest target signal + (Beep Piezo and Haptic Feedback)// Red - High +(Haptic Feedback)// Green - Moderate +(Haptic Feedback)// Blue - Weakest target signal// Turn off all LEDsleds[0] =CRGB::Black;leds[1] =CRGB::Black;leds[2] =CRGB::Black;leds[3] =CRGB::Black;digitalWrite(10,LOW); // Set the output pin to LOW to deactivate the Piezo SpeakerdigitalWrite(12,LOW); // Set the output pin to LOW to deactivate Vibrating Motor// *************** Channel 1 if (pcounterA <(calav1*(ledthreshold1))) { // Display Purple if strong target leds[3] =CRGB::Purple; digitalWrite(10,HIGH); // Set the output pin to high to activate the Piezo Speaker haptic =true; } elseif (pcounterA <(calav1*(ledthreshold2))) { // Display Blue for moderate strength target leds[3] =CRGB::Red; haptic =true; } elseif (pcounterA <(calav1*(ledthreshold3))) { // Display Blue for moderate strength target leds[3] =CRGB::Green; haptic =true; } elseif (pcounterA <(calav1*(ledthreshold4))) { // Add additional percentage point to threshold due to sensitivity of channel 1 leds[3] =CRGB::Blue; } // Channel 2 Display if ((pcounterB  

Peças personalizadas e gabinetes

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

Esquemas

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.

Processo de manufatura

  1. Salva-vidas
  2. 16 técnicas de ferraria
  3. Cisalhamento de metal
  4. Custo-benefício da perfuração de chapas metálicas
  5. O que é perfuração de chapa metálica?
  6. Máquina de metal perfurado e aplicações
  7. O que é uma Fundição?
  8. A formação de bobinas de metal:corte de bobinas
  9. Uma visão geral de chapas finas de metal
  10. O que é endireitar chapas metálicas?