Tabla de contenido:
Video: Detector de inducción de pulso basado en Arduino - LC-Trap: 3 pasos
2024 Autor: John Day | [email protected]. Última modificación: 2024-01-30 08:43
Mientras buscaba más ideas para un detector de metales de inducción de pulso Ardino simple con un solo voltaje de suministro, encontré la página de inicio de Teemo:
www.digiwood.ee/8-electronic-projects/2-metal-detector-circuit
Creó un detector de inducción de pulso simple utilizando el principio LC-Trap. Los circuitos similares se publicaron aquí en Instructable por TechKiwiGadgets. Excepto que el circuito Teemo utiliza los comparadores internos del microcontrolador PIC, por lo que necesita menos componentes externos
Así que tuve el desafío de usar el Arduino en lugar de un PIC-Controller para este esquema y ver hasta dónde puedo llegar.
Paso 1: esquema
El esquema de Arduino es un poco más complicado ya que Arduino no permite enrutar una señal analógica interna a la entrada del comparador. Esto agrega dos componentes para un divisor de voltaje simple. Esto lleva a un diseño con 12 componentes externos (sin incluir el altavoz y la pantalla LCD de 16x2), en comparación con los 9 del diseño Flip Coil.
El principio de funcionamiento del esquema se explica muy bien en el sitio web de Teemo. Básicamente, la bobina se alimenta y luego se apaga. Después de apagarse, la bobina y el condensador en paralelo crearán una oscilación amortiguada. La frecuencia y la caída de la oscilación están influenciadas por el metal en las proximidades de la bobina. Para obtener más detalles del circuito, consulte la página de Teemo o de TechKiwi aquí en Instructables.
Al igual que en el detector de inducción de pulso Flip Coil, utilizo el comparador interno y la posibilidad de activar una interrupción para adquirir la señal de la bobina.
En este caso, obtendré múltiples interrupciones ya que el voltaje oscila alrededor del voltaje de referencia establecido en el comparador. Al final de la oscilación, el voltaje en la bobina se estabilizará alrededor de 5 V, pero no exactamente. Elegí un divisor de voltaje con 200 Ohm y 10k Ohm para obtener un voltaje de aproximadamente 4.9 voltios
Para reducir la complejidad de los esquemas, utilicé D4 y D5 para proporcionar GND (para la resistencia de 10k) y 5V (para la resistencia de 220 ohmios). Los pines se establecen al inicio del detector.
En esta versión, agregué una conexión de altavoz usando el appraoch multitono controlado por volumen como se describe en Cómo programar un detector de metales basado en Arduino. Esto permite diferenciar las propiedades del objetivo, así como tener una idea de la intensidad de la señal. El altavoz se puede conectar al conector adicional de 5 pines. Los 3 pines restantes del encabezado se utilizarán para pulsadores (a implementar).
Paso 2: programación
Ahora que el circuito está diseñado y el prototipo está construido, es hora de encontrar un enfoque apropiado para detectar metales.
1. Contando pulsos
Contar los pulsos de la oscilación hasta que decae por completo es una idea.
Si hay metal cerca de la bobina, la cantidad de oscilación disminuye. En este caso, el voltaje de referencia del comparador debe establecerse a un nivel en el que apenas se mida el último pulso. Entonces, en caso de que se detecte algo, este pulso desaparece inmediatamente. Esto fue un poco problemático.
Cada onda de la oscilación crea dos interrupciones. Uno bajando y otro subiendo. Para establecer el voltaje de referencia exactamente en la cresta de una onda de oscilación, el tiempo entre la bajada y la subida debe ser lo más breve posible (ver imagen). Desafortunadamente, aquí la sobrecarga del entorno Arduino crea problemas.
Cada disparador de la interrupción requiere este código:
ISR (ANALOG_COMP_vect) {
Toggle1 = Toggle0 // guardar el último valor Toggle0 = TCNT1; // obtener un nuevo valor}
Este código lleva algo de tiempo (si recuerdo bien, alrededor de 78 ciclos de instrucción, lo que equivale a unos 5 microsegundos a 16 MHz). Por lo tanto, la distancia mínima detectable entre dos pulsos es exactamente el tiempo que tarda este código. Si el tiempo entre dos disparadores se acorta (ver imagen), no se detectará, ya que el código se ejecuta completamente antes de detectar una segunda interrupción.
Esto conduce a una pérdida de sensibilidad. Al mismo tiempo, me di cuenta de que la amortiguación de las oscilaciones es muy sensible a las influencias externas, lo que hace que este enfoque en total sea un poco difícil.
2. Midiendo la frecuencia
Otra forma de detectar metales es midiendo la frecuencia de oscilación. Esto tiene una gran ventaja en comparación con la medición de la amortiguación de la oscilación, ya que el cambio de frecuencia permite la discriminación del metal. En caso de que haya material ferroso cerca de la bobina, la frecuencia se ralentizará, en caso de que haya un metal precioso cerca de la bobina, la frecuencia aumentará.
La forma más fácil de medir la frecuencia es medir la cantidad de pulsos después de que las bobinas comienzan a oscilar. El período de tiempo entre el inicio y el último pulso dividido por la cantidad total de pulsos medidos es la frecuencia. Desafortunadamente, las últimas oscilaciones son bastante asimétricas. Como la presencia de metal también influye en la caída de la oscilación, las últimas oscilaciones son aún más asimétricas y las lecturas son difíciles de interpretar. En la imagen esto se muestra con el cruce de 1 a 1 'y 2 a 2'.
Por tanto, una mejor forma es utilizar algunos pulsos anteriores para medir la frecuencia. Mientras probaba, curiosamente descubrí que algunos pulsos son más sensibles que otros. En algún lugar a 2/3 de las oscilaciones es un buen punto para adquirir los datos.
Procesando los datos
El código inicial basado en el loop () que solicita una función pulse () para realizar la sincronización de la bobina. Si bien los resultados no fueron malos, tuve la necesidad de mejorar el tiempo. Para hacerlo, creé un código completamente basado en temporizador, lo que condujo al instuctable independiente Cómo programar un detector de metales basado en Arduino. Este instructivo explica en detalle la sincronización, la salida de LCD de procesamiento de datos, etc.
1. La pantalla LCD
El primer enfoque fue medir 10 pulsos y luego mostrar los valores en la pantalla LCD. Como descubrí que la transferencia de datos I2C era demasiado lenta, cambié al código para actualizar solo un carácter por pulso.
2. Enfoque de valor mínimo
Para mejorar aún más la estabilidad de las lecturas, escribí una rutina de salida en serie para tener una mejor idea de los datos medidos. Allí se hizo evidente que aunque la mayoría de las lecturas eran algo estables, ¡algunas no lo eran! Algunas lecturas del "mismo" pulso de oscilación estaban tan separadas que arruinarían todos los enfoques para analizar un cambio de frecuencia.
Para compensar esto, creé una "frontera" dentro de la cual el valor era digno de confianza. Es decir. cuando los valores estaban a más de 35 ciclos del timer1 del valor esperado, estos valores fueron ignorados (explicados en detalle en el Instructable "Cómo programar un detector de metales basado en Arduino")
Este enfoque demostró ser muy estable.
3. El voltaje
El diseño original de Teemo se alimenta por debajo de los 5 voltios. Como mis suposiciones eran “más voltios = más potencia = más sensibilidad”, al principio alimenté la unidad con 12V. Esto resultó en el calentamiento del MOSFET. Este calentamiento dio como resultado una desviación general de los valores medidos, lo que llevó a un reequilibrio frecuente del detector. Al disminuir el voltaje a 5 V, la generación de calor del MOSFET podría minimizarse a un nivel en el que casi no se observó desviación de las lecturas. Esto hizo que el circuito fuera aún más simple, ya que el regulador de voltaje integrado del Arduino ya no era necesario.
Para un MOSFET elegí inicialmente el IRL540. Este MOSFET es compatible con el nivel lógico, pero tiene una tensión nominal máxima de 100 V. Esperaba un mejor rendimiento cambiando a un IRL640 con clasificaciones de 200V. Desafortunadamente, los resultados fueron los mismos. Entonces, un IRL540 o un IRL640 harán el trabajo.
Paso 3: Resultados finales
La ventaja del detector es que discrimina entre material precioso y ferroso. La desventaja es que la sensibilidad con este esquema simple no es tan buena. Para comparar el rendimiento utilicé las mismas referencias que para el detector Flip-Coil. Probablemente sea bueno para algunas precisiones, pero probablemente decepcionante para una búsqueda real.
Aquí, el diseño original con el controlador PIC puede ser más sensible ya que se ejecuta en 32MHz en lugar de los 16MHz del mismo, lo que proporciona una resolución más alta para detectar cambios de frecuencia.
Los resultados se lograron utilizando la bobina con 48 vueltas a 100 mm.
Como siempre, abierto a recibir comentarios
Recomendado:
Termómetro infrarrojo sin contacto basado en Arduino - Termómetro basado en infrarrojos con Arduino: 4 pasos
Termómetro infrarrojo sin contacto basado en Arduino | Termómetro basado en infrarrojos con Arduino: Hola chicos, en este instructivo, haremos un termómetro sin contacto con arduino, ya que a veces la temperatura del líquido / sólido es demasiado alta o demasiado baja y luego es difícil hacer contacto con él y leer su temperatura entonces en ese escenario
Generador de música basado en el clima (generador Midi basado en ESP8266): 4 pasos (con imágenes)
Generador de música basado en el clima (Generador Midi basado en ESP8266): Hola, hoy explicaré cómo hacer tu propio generador de música basado en el clima. Está basado en un ESP8266, que es como un Arduino, y responde a la temperatura, la lluvia y la intensidad de la luz. No espere que haga canciones completas o programas de acordes
Detector de arritmias basado en frecuencia con Arduino: 7 pasos
Detector de arritmias basado en frecuencia que utiliza Arduino: las arritmias cardíacas afectan aproximadamente a cuatro millones de estadounidenses cada año (Texas Heart Institute, párr. 2). Si bien todos los corazones experimentan alteraciones en el ritmo y la frecuencia, las arritmias cardíacas crónicas pueden ser fatales para sus víctimas. Muchos arritmias cardíacas
Detector de metales de inducción de pulso basado en Arduino DIY: 5 pasos
Detector de metales de inducción de pulso basado en Arduino DIY: este es un detector de metales relativamente simple con excelentes rendimientos
Detector de inducción de pulso basado en Arduino - Flip Coil: 5 pasos (con imágenes)
Detector de inducción de pulso basado en Arduino - Flip Coil: la idea Habiendo construido algunos detectores de metales en el pasado con resultados variables, quería explorar las capacidades del Arduino en esa dirección. Hay algunos buenos ejemplos de cómo construir detectores de metales con el Arduino, algunos aquí como instructable