Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Manufacturing Technology >> Proceso de manufactura

Localizador de Pocket Metal

Componentes y suministros

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

Herramientas y máquinas necesarias

Impresora 3D (genérica)

Acerca de este proyecto

Introducción:Localizador de Pocket Metal - Arduino

Este pequeño localizador de bolsillo de metal es lo suficientemente sensible como para identificar pequeños clavos y tachuelas en la madera y lo suficientemente compacto como para caber en espacios incómodos, lo que lo hace conveniente para transportar y usar para localizar metales.

La unidad tiene cuatro bobinas de búsqueda independientes e indicadores LED de colores que facilitan la cobertura rápida de un área de búsqueda más grande al tiempo que se puede identificar con precisión el objetivo.

Este pequeño y elegante dispositivo se autocalibra con la operación de un botón, se recarga a través de un puerto USB y usa LED de color, sonido y vibración para indicar la fuerza del objetivo.

En el tutorial se incluyen todos los diseños, pruebas, código y archivos 3D necesarios para construir por su cuenta. ¡Espero que disfrutes construyendo y usando esto tanto como yo!

Paso 1:Lista de materiales y cómo funciona

1. Cómo es Funciona

El Pocket Metal Locator utiliza cuatro bobinas de búsqueda de inducción de pulso independientes alimentadas por un Arduino Pro Mini. Cada bobina de búsqueda está formada por una bobina TX y RX separada donde se induce un pulso en la bobina TX que crea un campo electromagnético alrededor de la bobina RX. El campo cambiante induce un voltaje en la bobina RX que se detecta y amplifica antes de que Arduino lea el ancho de pulso de la señal.

Se utiliza un algoritmo de suavizado en el código Arduino para eliminar el ruido de los pulsos válidos, haciéndolo muy estable.

Un algoritmo de calibración en el código toma un promedio de lecturas durante un período corto de inicio y establece una serie de umbrales para comparar la señal.

Cuando un objeto metálico entra dentro del alcance del campo electromagnético, el campo se interrumpe y parte de la energía se desvía de la bobina RX a las "corrientes de Eddie" que se forman en el objeto objetivo. Este efecto parásito del objeto objetivo da como resultado la reducción del ancho de pulso detectado en la bobina RX. Básicamente, estamos midiendo la pérdida de potencia en el objeto objetivo.

Cuando el ancho de pulso detectado en la bobina RX cae por debajo del umbral, los LED se encienden, suena el zumbador y se activa el motor de retroalimentación háptica, dependiendo de un tamaño predeterminado de la señal objetivo.

El circuito para esto ha evolucionado durante el último año hasta convertirse en un detector muy estable y con un rendimiento confiable. La configuración y la orientación de la bobina se han diseñado deliberadamente para maximizar la estabilidad y la detección de profundidad.

2. Lista de materiales

  • 3.7v 350mAh LiPo Tamaño de la batería:38 mm x 20 mm x 7.5 mm
  • Hoja de datos del cargador de batería LiPo USB TP4056
  • Resistencia de 4.7K para limitar la corriente de carga de la batería LiPo por debajo de 300mA
  • Arduino Pro Mini
  • Módulo FTDI USB a serie para programar el Mini Pro
  • Circuito integrado del comparador diferencial cuádruple LM339
  • Tablero Vero:2 piezas cortadas en 20 x 9 agujeros y 34 x 9 (vea la foto para ver la orientación correcta)
  • Transistor BC548 NPN x 4
  • Interruptor MOSFET 2N7000 x 5
  • Zumbador piezoeléctrico
  • Motor de vibración de monedas para retroalimentación háptica
  • Módulo LED WS2812 RGB x 4
  • Resistencia de 1k x 4
  • Resistencia de 10k x 4
  • Resistencia de 47 ohmios x 4
  • Resistencia de 2.2K x 4
  • Condensador cerámico de 150pf x 8
  • Condensador de poliéster de 0.18uF x 4
  • Rollo de alambre de cobre esmaltado de 0,3 mm (normalmente vienen en rollos de aproximadamente 25 g de peso)
  • Interruptor de botón pulsador montado en PCB
  • Pistola de pegamento caliente
  • Broca de 10 mm
  • Taladro de mano
  • Etiquetadora o cinta adhesiva adecuada para etiquetar 16 cables separados Cable de conexión
  • Acceso a una impresora 3D

3. Operación del comparador

He tenido una serie de preguntas sobre el funcionamiento del LM339, así que pensé en dar una explicación más clara.

El LM339 funciona únicamente como un comparador de voltaje, comparando el voltaje diferencial entre los pines positivo y negativo y emitiendo una impedancia lógica baja o alta (lógica alta con pullup) basada en la polaridad diferencial de entrada.

En este circuito, la entrada positiva del comparador está conectada a la línea Vcc y se aplica una resistencia de pull-up a Vcc a la salida del comparador. En esta configuración, en la práctica, el voltaje de salida del comparador permanece alto, hasta que el voltaje de entrada en la entrada negativa excede 3.5v

La operación se puede explicar en la hoja de datos LM339 que describe el "rango de voltaje de entrada" entre 0 V y Vsup-1.5 V

Cuando tanto IN– como IN + están dentro del rango de modo común, si IN– es menor que IN + y el voltaje de compensación, la salida es de alta impedancia y el transistor de salida no es conductor

Cuando IN– es más alto que el modo común e IN + está dentro del modo común, la salida es baja y el transistor de salida está perdiendo corriente. Enlace a la hoja de datos y la explicación a continuación http://www.ti.com/lit/ds/symlink/lm2901.pdf

lm2901.pdf

Paso 2:Imprime el caso

La carcasa impresa en 3D se realizó utilizando 5 impresiones separadas. Las dimensiones y los archivos 3D se pueden encontrar aquí en Thingiverse. El diseño se centró en hacer que el dispositivo fuera fácil de sostener y al mismo tiempo garantizar que las bobinas de búsqueda estuvieran lo más cerca del área que se buscaba.

Imprima con cuidado la carcasa y retire el exceso de plástico. Es importante realizar este paso ahora para que los componentes electrónicos se puedan alinear en el gabinete antes de la conexión final y la prueba.

Paso 3:construya y monte las bobinas de búsqueda

Tome los formadores de bobina impresos y enrolle 25 vueltas de alambre de cobre en cada uno de ellos. Asegúrese de dejar unos buenos 20 cm de cable de cobre adicional para la conexión a la unidad principal.

Utilice los orificios impresos en los formadores para permitir un viento constante y la orientación de las bobinas para cada formador. Mientras lo hace, dé la vuelta al primero y péguelo progresivamente en la unidad base.

Siga el ensamblaje de la foto como se proporciona, el resultado son 8 bobinas montadas en el ensamblaje de la bobina con todos los cables orientados de manera consistente y lo suficientemente largos para conectarse a la unidad de la placa principal en el gabinete superior.

Utilice los dos bloques de guía de alambre que tienen orificios para cada bobina de la base impresa para realizar un seguimiento de cada bobina específica.

Coloqué los cables para las bobinas internas a lo largo de la parte superior y las bobinas externas a lo largo de la parte inferior del bloque de cables para poder realizar un seguimiento de cada bobina específica, lo que facilita la conexión a la placa principal.

Paso 4:construye el circuito

La unidad tiene cuatro circuitos clave para construir de forma independiente:placa de controlador, placa principal, conjunto de LED y fuente de alimentación recargable. En este paso, crearemos la placa del controlador y la placa principal.

1. Placa de conductor

Use un cuchillo para manualidades para cortar un trozo de Vero Board a lo largo de los agujeros 22x11 y el resultado será un trozo de Vero Board con 20x9 agujeros orientados según la imagen incluida. Es mejor marcar los agujeros en ambos lados de la tabla varias veces y luego quitar suavemente el exceso de tabla. Verifique que la placa se asiente en la base del gabinete con suficiente espacio libre a ambos lados.

Usando las fotos y una broca de 10 mm a mano, rompa con cuidado las tachuelas que se muestran en la parte inferior de la placa Vero. Siga el diagrama del circuito y el diseño fotográfico de los componentes para ensamblar la placa de circuito, teniendo cuidado de asegurarse de que no haya pistas en cortocircuito.

Deje esta placa a un lado para probarla más tarde.

2. Placa principal

Use un cuchillo de artesanía para cortar un trozo de Vero Board a lo largo de los agujeros de 36x11 y el resultado será un trozo de Vero Board con 34x9 agujeros orientados según la imagen incluida. Es mejor marcar los agujeros en ambos lados de la tabla varias veces y luego quitar suavemente el exceso de tabla. Verifique que la placa se asiente en la base del gabinete con suficiente espacio libre a ambos lados.

Usando las fotos y una broca de 10 mm a mano, rompa con cuidado las tachuelas que se muestran en la parte inferior de la placa Vero.

Siga el diagrama del circuito y el diseño de la foto del Arduino y LM339 IC y otros componentes para ensamblar la placa de circuito, teniendo cuidado de asegurarse de que no haya pistas en cortocircuito.

Deje esta placa a un lado para probarla más tarde.

Paso 5:agregue indicadores LED

He usado LED WS2182 que tienen un IC incorporado que permite que Arduino los direccione usando tres cables separados, sin embargo, se puede crear una amplia gama de colores y brillos mediante el envío de un comando al LED. Esto se hace a través de una biblioteca especial cargada en el IDE de Arduino que se cubre en la sección de pruebas.

1. Montaje de los LED en la tapa de la caja de la bobina

Coloque con cuidado los cuatro LED de modo que estén orientados correctamente, de modo que las conexiones VCC y GND estén alineadas y asentadas en el centro de los orificios.

Utilice Hot Glue para fijar los LED en su posición.

2. Cableado de los LED

Pele con cuidado y coloque tres tramos de 25 cm de cable de conexión de un solo núcleo a través de los contactos de los LED.

Suelde estos en su lugar y asegúrese de que el cable de datos central esté conectado con los contactos IN y OUT como se muestra en la foto.

3. Comprobación de la alineación de la caja

Verifique que la tapa de la caja quede al ras con la caja de la bobina y luego use pegamento caliente para mantener los cables en su lugar en el extremo de la base de la tapa.

Deje esto a un lado para probarlo más tarde.

Paso 6:Montaje y prueba de la unidad

1. Preparación para el montaje

Antes de ensamblar, probaremos cada placa de forma progresiva para facilitar la resolución de problemas.

El Arduino Pro Mini requiere una placa serie USB para poder ser programado por su PC. Esto permite que la placa sea más pequeña ya que no tiene una interfaz en serie. Para programar estos tableros, deberá invertir en obtener uno como se describe en la lista de piezas.

Antes de cargar el código Arduino, deberá agregar la biblioteca "FastLED.h" como una biblioteca para controlar los LED WS2182. Se ha proporcionado una serie de trazas de osciloscopio para solucionar problemas si hay problemas.

También hay una captura de pantalla de la salida de datos en serie IDE utilizando la función Graph Plot que muestra la salida de ancho de pulso de cada uno de los canales, así como el valor de umbral. Esto es útil durante las pruebas, ya que puede ver si cada canal está funcionando a niveles similares de sensibilidad.

He incluido dos copias del código. Uno ha probado la transmisión de datos en serie para solucionar problemas.

NOTA: No conecte la unidad de batería LiPo hasta el último paso, ya que un cortocircuito accidental durante el montaje puede hacer que la unidad se sobrecaliente o incluso se incendie.

2. Pruebe la placa principal

Antes de conectar la placa principal a cualquier cosa, es recomendable conectar el cable serial Arduino y verificar que se cargue el código.

Esto simplemente probará que el Arduino está físicamente conectado correctamente y que el IDE y las bibliotecas están cargados. ¡Cargue el código a través del IDE que debería cargarse sin errores y no debería salir humo de ningún componente!

3. Conecte la placa del controlador

Siga el diagrama del circuito para conectar la placa del controlador a la placa principal y coloque físicamente la unidad en el gabinete para asegurarse de que los elementos quepan dentro del gabinete. Este es un caso de prueba y error y requiere persistencia.

¡Cargue el código a través del IDE que debería cargarse sin errores y no debería salir humo de ningún componente!

4. Conecte las bobinas Siga el diagrama del circuito para conectar las bobinas a la placa principal y coloque físicamente la unidad en la carcasa para asegurarse de que los elementos encajen correctamente. Asegúrese de que las bobinas estén alineadas con las entradas de la placa del controlador y la placa principal según el diagrama del circuito.

Con el código de prueba cargado, el puerto serial mostrará el ancho de pulso en la bobina de recepción en algún lugar entre 5000 - 7000uS. Esto también se puede ver con el trazador de gráficos IDE.

Esto le permitirá solucionar problemas de cada uno de los canales y también ver el efecto de mover una moneda cerca de la bobina de búsqueda, lo que debería reducir el ancho del pulso a medida que el objetivo se acerca a la bobina de búsqueda.

Si tiene un osciloscopio, también puede verificar las formas de onda en varias etapas del circuito para diagnosticar problemas.

Una vez que todos los canales estén funcionando según lo esperado, coloque los cables de modo que la caja se ensamble y cierre correctamente.

5. Conecta los LED

Tome con cuidado los tres cables de los LED de la caja de la bobina y conéctelos a la placa principal. Cargue el código y verifique que los LED estén funcionando correctamente. Use pegamento para sujetar la tapa del recinto de la bobina en su lugar.

Pocket_Metal_Locator_V11__TEST_CODE.zip Pocket_Metal_Locator_V11.zip

Paso 7:Conexión de la batería recargable

NOTA:

1. No conecte la unidad de batería LiPo hasta el último paso, ya que un cortocircuito accidental durante el montaje puede hacer que la unidad se sobrecaliente o incluso se incendie.

2. Al manipular la batería y el cargador, asegúrese de tener cuidado de no cortocircuitar las conexiones de la batería.

3. Las baterías LiPo son diferentes a otras recargables y la carga por sobrecorriente puede ser peligrosa, así que asegúrese de configurar el circuito de carga correctamente.

4. No conecte el cable serial Arduino a la unidad cuando el botón de encendido esté presionado, de lo contrario la batería podría dañarse.

1. Modificar el límite de corriente del cargador

El Pocket Metal Locator utiliza una batería LiPo que se puede cargar con un cargador de teléfono Micro USB. La placa del cargador de batería LiPo USB TP4056 se modifica primero con una resistencia de 4,7 K para limitar la corriente de carga a menos de 300 mA. Puede encontrar instrucciones sobre cómo se puede hacer aquí.

TP4056.pdf

Esto requiere que retire la resistencia montada en superficie existente y la reemplace con una resistencia como se muestra en la foto. Una vez en su lugar, proteja cualquier movimiento no planificado de la resistencia con una pistola de pegamento caliente.

Antes de conectarse a la placa principal, pruebe que el cargador funcione correctamente conectando un cargador de teléfono celular con un puerto Micro USB. La luz roja de carga debería encenderse cuando funciona correctamente.

2. Instale el interruptor de encendido con botón pulsador

Asegúrese de que el botón pulsador esté montado en la posición correcta de modo que sobresalga por el centro de la tapa del gabinete y luego suelde el botón pulsador en su lugar. Instale los cables entre el interruptor de botón pulsador y la salida del cargador y la línea VCC en el Arduino según el diagrama del circuito.

Cuando se instala correctamente, presionar el interruptor activará la unidad.

Fije la batería en su posición con pegamento caliente y asegúrese de que la toma Micro USB esté alineada con el orificio de la tapa de la caja para que pueda cargarse.

Paso 8:Prueba y funcionamiento finales

1. Montaje físico

El último paso es reorganizar los cables con cuidado para que la carcasa se cierre correctamente. Use pegamento caliente para sujetar la placa base en la tapa y luego cierre la tapa en su posición.

2. Funcionamiento de la unidad

La unidad funciona calibrándose después de presionar y mantener presionado el botón de encendido. Todos los LED parpadearán cuando la unidad esté lista para usarse. Mantenga presionado el botón pulsador mientras busca. Los LED cambian de azul-verde, rojo, violeta según la fuerza del objeto objetivo. La retroalimentación háptica ocurre cuando los LED se vuelven morados.

¡¡No está listo para usarlo en aplicaciones prácticas !!

Código

  • Pocket_Metal_Locator_V11.ino
Pocket_Metal_Locator_V11.ino C / C ++
Este pequeño localizador de bolsillo de metal es lo suficientemente sensible como para identificar clavos pequeños y tachuelas en la madera y lo suficientemente compacto como para caber en espacios incómodos, lo que lo hace conveniente para transportar y usar para localizar metales.

La unidad tiene cuatro bobinas de búsqueda independientes e indicadores LED de color que facilitan la cobertura rápida de un área de búsqueda más grande al tiempo que se puede identificar con precisión el objetivo.

Este pequeño y elegante dispositivo se autocalibra con la operación de un botón, se recarga a través de un puerto USB y utiliza LED de color, sonido y vibración para indicar la fuerza del objetivo.

Incluido en el instructivo están todos los diseños, pruebas, código y archivos 3D necesarios para construir por su cuenta. ¡Espero que disfrutes construyendo y usando esto tanto como yo!
 / * Pocket Metal Locator - Arduino Pro Mini Abril 2018 TechKiwiGradgetsVersion 11 - Primera versión instructable * /// WS2182 LED Driver Library Setup # include "FastLED.h "// ¿Cuántos leds hay en tu tira? #Define NUM_LEDS 4 // Nota:El primer LED es la dirección 0 # define DATA_PIN 11 // Nota:D11 se usa para controlar la cadena de LED // Define la matriz de ledsCRGB leds [NUM_LEDS]; / / Variables de suavizado para LPFconst float alpha =0.85; float smoothedvalue1 =1000; float smoothedvalue2 =1000; float smoothedvalue3 =1000; float smoothedvalue4 =1000; int sthreshold =100; // La lectura mínima de la función pulseIn asegura el muestreo por encima de noisefloat ledthreshold1 =0.93; // Porcentaje por debajo de la línea de base antes de configurar los LED Purplefloat ledthreshold2 =0.96; // Porcentaje por debajo de la línea de base antes de configurar los LED Redfloat ledthreshold3 =0.99; // Porcentaje por debajo de la línea de base antes de configurar los LED Greenfloat ledthreshold4 =0.998; // Porcentaje por debajo de la línea de base antes de configurar los LED Azul // Variables de calibración boolean sample =false; // si es verdadero, no vuelva a calibrar los umbrales sint calcounter =0; // Se utiliza para contar el número de veces que se ha tomado una muestra en scount =200; // Número de lecturas antes de calibrar una vez solo después del encendidoint numsamples =20; // Número de muestras tomadas antes de promediar la menta t1 =100; // Duración en microsegundos que se encienden los LED durante la calibración de largo calav1 =0; // Se usa para calcular el promedio de diez muestras de largo calav2 =0; // Se usa para calcular el promedio de diez muestras de largo calav3 =0; // Se usa para calcular el promedio de diez muestras de largo calav4 =0; // Se utiliza para calcular el promedio de diez muestrasint div1 =0; // Contador de divisores para el número de muestras tomadasint div2 =0; int div3 =0; int div4 =0; // Cuatro canales indicados por A, B, C, Dint divA =0; long tempA =0; long pcounterA =0; // Ancho de pulso sin filtrar del canal 1int divB =0; long tempB =0; long pcounterB =0; // Ancho de pulso sin filtrar del canal 2int divC =0; long tempC =0; long pcounterC =0; // Ancho de pulso sin filtrar del canal 1int divD =0; long tempD =0; long pcounterD =0; // Ancho de pulso sin filtrar del canal 1int pwindow =7500; // Valor máximo de tiempo de espera para ancho de pulso // ************************************** *********** int dly1 =4; // Periodo de tiempo que el pin TXR permanece alto (típicamente 4uS) int dly2 =1; // Retraso después de que el pin TXR pasa a BAJO antes de comenzar a leer la duración del pulso - típicamente 1 uS int dly3 =500; // Retraso en microsegundos después de muestrear el ancho de pulso antes de comenzar el siguiente ciclo // ********************************** **************** int threshdiff =15; // Agregue al promedio para convertirse en un umbral específico donde se iluminará el LED (V21 cambiado de 25 a 20) long pulseav =0; // Almacena el valor de salida para la calibración // Vibration Motor boolean haptic =false; // Indicador utilizado para encender el motor de vibración durante un período de tiempo int vduration =1; // Número de ciclos de programa que habilitó el motor de vibración int vcounter =vduration; // v configuración de vacío del contador de ciclos () {// Motor de vibración / Retroalimentación háptica pinMode (12, SALIDA); // Controlador de motor de vibración de Arduino - D10 digitalWrite (12, LOW); // Apague el motor Serial.begin (115200); // Configuración de la interfaz de serie para salidas de datos de prueba // WS2182 Configuración del controlador LED LEDS.addLeds  (leds, NUM_LEDS); // Por defecto si RGB para esto, sin embargo, puede variar dependiendo del fabricante de LED LEDS.setBrightness (5); // Establecer el brillo de los LED aquí // limitar mi consumo a 1A a 5v de consumo de energía FastLED.setMaxPowerInVoltsAndMilliamps (5,100); FastLED.setDither (0); // Desactiva la función Auto Dithering para eliminar el parpadeo // Asignaciones de pines lógicos de Arduino Mini Pro // Nombre de pin lógico 2,3,4,5,6,7,8,9 Equivale a D2-D9 Nombre de pin impreso en placa // Nombre de pin lógico 10,11,12,13,14,15,16,17 Equivale a D10-D13, A0-A3 Nombre de pin impreso en placa // Buzzer piezo pinMode (10, OUTPUT); // Driver Piezo Buzzer de Arduino - D10 // Transmitir pinMode (2, OUTPUT); // Salida de pulsos de Arduino - D2 pinMode (4, OUTPUT); // Salida de pulsos de Arduino - D4 pinMode (6, OUTPUT); // Salida de pulsos de Arduino - D6 pinMode (8, OUTPUT); // Salida de pulsos de Arduino - D8 // Channel A pinMode (3, INPUT); // Entrada de señal a Arduino desde el pin 2 en LM339 - D3 // Canal B pinMode (5, INPUT); // Entrada de señal a Arduino desde el pin 1 en LM339 - D5 // Channel C pinMode (7, INPUT); // Entrada de señal a Arduino desde el pin 14 en LM339 - D7 // Channel D pinMode (9, INPUT); // Entrada de señal a Arduino desde el pin 13 en LM339 - D9} void loop () {// Pulse y lea la bobina ------------------------- -------------------- // Canal 1 (punto de varita) digitalWrite (2, HIGH); // Establece el pin TX en highdelayMicroseconds (dly1); // Retraso antes de establecer bajo en la salida pindigitalWrite (2, LOW); // Establece el pin TX en lowdelayMicroseconds (dly2); // Retraso antes de muestrear ancho de pulso pcounterA =pulseIn (3, LOW, pwindow); digitalWrite (2, LOW); // Establezca el pin TX en LOWdelayMicroseconds (dly3); // Retraso antes de muestrear el ancho del pulso // Aplicar filtro de paso bajo a la señal para suavizar el canal 1 if (pcounterA> =sthreshold) {smoothedvalue1 =(alpha * smoothedvalue1) + ((1 - alpha) * pcounterA); } pcounterA =smoothedvalue1; // Canal 2digitalWrite (4, HIGH); // Establece el pin TX en highdelayMicroseconds (dly1); // Retraso antes de establecer bajo en la salida pindigitalWrite (4, LOW); // Establece el pin TX en lowdelayMicroseconds (dly2); // Retraso antes de muestrear ancho de pulso pcounterB =pulseIn (5, LOW, pwindow); digitalWrite (4, LOW); // Establezca el pin TX en LOWdelayMicroseconds (dly3); // Retraso antes de muestrear el ancho del pulso // Aplicar filtro de paso bajo a la señal para suavizar el canal 2 if (pcounterB> =sthreshold) {smoothedvalue2 =(alpha * smoothedvalue2) + ((1 - alpha) * pcounterB); } pcounterB =smoothedvalue2; // Canal 3digitalWrite (6, HIGH); // Establece el pin TX en highdelayMicroseconds (dly1); // Retraso antes de establecer bajo en la salida pindigitalWrite (6, LOW); // Establece el pin TX en lowdelayMicroseconds (dly2); // Retraso antes de muestrear ancho de pulso pcounterC =pulseIn (7, LOW, pwindow); digitalWrite (6, LOW); // Establece el pin TX en LOW // delayMicroseconds (dly3); // Retraso antes de muestrear el ancho del pulso // Aplicar filtro de paso bajo a la señal para suavizar el canal 3 if (pcounterC> =sthreshold) {smoothedvalue3 =(alpha * smoothedvalue3) + ((1 - alpha) * pcounterC); } pcounterC =smoothedvalue3; // Canal 4 digitalWrite (8, HIGH); // Establece el pin TX en highdelayMicroseconds (dly1); // Retraso antes de establecer bajo en la salida pindigitalWrite (8, LOW); // Establece el pin TX en lowdelayMicroseconds (dly2); // Retraso antes de muestrear ancho de pulso pcounterD =pulseIn (9, LOW, pwindow); digitalWrite (8, LOW); // Establezca el pin TX en LOWdelayMicroseconds (dly3); // Retraso antes de muestrear el ancho del pulso // Aplicar filtro de paso bajo a la señal para suavizar el canal 4 if (pcounterD> =sthreshold) {smoothedvalue4 =(alpha * smoothedvalue4) + ((1 - alpha) * pcounterD); } pcounterD =smoothedvalue4; // Imprime el valor y luego reinicia el contador / * 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 // Espere un período de tiempo para establecer la línea base para cada bobina if (sample ==false) {calcounter ++; } if (calcounter> (scount-numsamples)) {// Espere 90 y luego sume las muestras para preparar el cálculo del promedio 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)) {// Establecer los umbrales calav1 =calav1 / div1; calav2 =calav2 / div2; calav3 =calav3 / div3; calav4 =calav4 / div4; // LED parpadeante para mostrar calibrado terminado // 0-3 LED azules [3] =CRGB ::Azul; FastLED.show (); retraso (t1); leds [3] =CRGB ::Negro; leds [2] =CRGB ::Azul; FastLED.show (); retraso (t1); leds [2] =CRGB ::Negro; leds [1] =CRGB ::Azul; FastLED.show (); retraso (t1); leds [1] =CRGB ::Negro; leds [0] =CRGB ::Azul; FastLED.show (); retraso (t1); leds [0] =CRGB ::Negro; // 3-0 LED verdes [3] =CRGB ::Verde; FastLED.show (); retraso (t1); leds [3] =CRGB ::Negro; leds [2] =CRGB ::Verde; FastLED.show (); retraso (t1); leds [2] =CRGB ::Negro; leds [1] =CRGB ::Verde; FastLED.show (); retraso (t1); leds [1] =CRGB ::Negro; leds [0] =CRGB ::Verde; FastLED.show (); retraso (t1); leds [0] =CRGB ::Negro; FastLED.show (); // Sonido zumbador // digitalWrite (10, HIGH); // Establece el pin de salida en alto para activar el LED // delay (t1 * 2); digitalWrite (10, BAJO); // Establece el pin de salida en alto para activar el LED // Restablece el indicador de muestra sample =true; calcounter =0; } if (muestra ==verdadero) {updateLEDs (); } // Retroalimentación háptica - Si se excede el umbral, encienda el motor de vibración para ciclos de "vduration" if (haptic ==true) {// Si se establece el indicador, encienda el motor digitalWrite (12, HIGH); // Establezca el pin de salida en alto para activar el motor de vibración if (vcounter> =1) {vcounter--; // decremento del contador} else {digitalWrite (12, LOW); // Establezca el pin de salida en BAJO para desactivar el motor de vibración háptico =falso; // Restablecer el indicador de vibración después de varios ciclos vcounter =vduration; // Restablecer el contador de vibraciones}}} // Subrutinas para evitar actualizar LED () {// Mostrar resultados // Púrpura - Señal de objetivo más fuerte + (Pitido Piezo y retroalimentación háptica) // Rojo - Alto + (Retroalimentación háptica) // Verde - Moderado + (Retroalimentación háptica) // Azul - Señal de objetivo más débil // Apagar todos los LEDleds [0] =CRGB ::Black; leds [1] =CRGB ::Black; leds [2] =CRGB ::Black; leds [3] =CRGB ::Negro; escritura digital (10, BAJA); // Establezca el pin de salida en LOW para desactivar el Piezo SpeakerdigitalWrite (12, LOW); // Establezca el pin de salida en BAJO para desactivar el motor vibratorio // *************** Canal 1 if (pcounterA <(calav1 * (ledthreshold1))) {// Display Purple si es fuerte leds de destino [3] =CRGB ::Violeta; escritura digital (10, ALTA); // Establezca el pin de salida en alto para activar el altavoz piezoeléctrico haptic =true; } elseif (pcounterA <(calav1 * (ledthreshold2))) {// Mostrar azul para leds objetivo de intensidad moderada [3] =CRGB ::Red; háptico =verdadero; } elseif (pcounterA <(calav1 * (ledthreshold3))) {// Mostrar azul para leds objetivo de intensidad moderada [3] =CRGB ::Verde; háptico =verdadero; } elseif (pcounterA <(calav1 * (ledthreshold4))) {// Agregar un punto porcentual adicional al umbral debido a la sensibilidad de los leds del canal 1 [3] =CRGB ::Blue; } // Display del canal 2 if ((pcounterB   

Piezas y carcasas personalizadas

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.

Proceso de manufactura

  1. Filtro de cerámica
  2. Salvavidas
  3. 16 técnicas de herrería
  4. Corte de metal
  5. Rentabilidad del punzonado de chapa
  6. ¿Qué es el punzonado de chapa?
  7. Máquina de metal perforado y aplicaciones
  8. ¿Qué es una Fundición?
  9. La formación de bobinas de metal:corte longitudinal de bobinas
  10. Una descripción general de la chapa fina
  11. ¿Qué es enderezar chapa?