» Electrónica » Detectores de metales »Detector de metales en el Arduino Pro Mini. Procesamiento de las profundidades de Kolokolov-Shchedrin según el principio de "Transmisión"

Detector de metales en Arduino Pro Mini. Procesamiento de las profundidades de Kolokolov-Shchedrin según el principio de "Transmisión"


Reciclaje del esquema de aguas profundas Kolokolov-Shchedrin Diferencias con respecto al esquema original:
1. NO hay oscilador de cristal en el chip k561 .. y cuarzo de 32 kHz. La señal de 32 kHz le da al Arduino Pro Mini.
2. Los circuitos de notificación de sonido en varios microcircuitos de la serie 561 también están ausentes: Arduino también expresa los objetivos (y debo decir, excelentes voces, en comparación con el circuito del autor).
3. Alimentado por voltaje unipolar 12v (batería de plomo-ácido).
4. Ajuste la sensibilidad con los botones. Con la escala ADC de 0 a 1023, el umbral de respuesta es ajustable de 1 a 38 (el valor se puede cambiar fácilmente en el boceto).


Detector de metales en Arduino Pro Mini. Procesamiento de las profundidades de Kolokolov-Shchedrin según el principio de


Lo que es más importante, quería mostrar en este artículo que es posible ensamblar MD en Arduino no inferiores al original en sensibilidad (esto funcionó, porque los originales del circuito original se recolectaron en el orden de 10 piezas, por lo que hay material para comparar). Circuito original:


Cuando comencé a trabajar con Arduino, estaba tan entusiasmado que pensé que podría encontrar y ensamblar cualquier circuito de Detector de metales de Internet en Arduino que pudiera encontrar fácilmente en el vasto basurero. En principio, resultó de esa manera, pero los circuitos se basaron en un contador de frecuencia, que no permitió alcanzar un rango realmente bueno. Algunos juguetes para niños y una prueba de la pluma + intenta ganar dinero con los principiantes. El original de este MD es un verdadero caballo de batalla que le permite encontrar objetos grandes a una distancia de 2 m (consulte el libro Kolokolov-Shchedrin en Google). No hay estadísticas sobre el md transformado. Espero que aparezca con el apoyo de los fanáticos de MD y Arduino. El esquema funcionó con Arduino Uno y Arduino Pro Mini.

Más adelante en el enlace se presenta el proceso de nacimiento de este MD en el sitio web del Soldador, que duró más de un año y llevó al autor a estudiar la programación duin. Tal vez el boceto le parezca miserable a alguien; con mucho gusto aceptaré sus ARREGLOS.




Por el momento, hay un boceto que le permite ajustar la barrera de sensibilidad (pin 7 douins +1 a la barrera, pin 8 -1 a la barrera). .
Arduino sobre mini 5v, 16MHz, ATmega168 y la pantalla los utilizó. Al lado de la báscula está el adaptador Mini SD


Como ya se dijo 1602 cuesta 86 rublos, ProMini - 82 rublos. Si lo desea, incluso puede tomar un ATmega168 desnudo, desarrollar un tablero para él y llenar el boceto directamente en él.Y así, por ejemplo, instalé mamá-papá en la placa MD usando el conector. La foto muestra el enchufe de 6 pines de Arduino, a través del cual se vertieron bocetos directamente en el tablero.

Sketch-MD.Rx-Tx.ProMini.SrednjajaTochkaRegBar.ino

// Entrada analógica A3 para voltímetro
// Entrada analógica A4 para señal
// 6- conclusión del zook
// 9 - frecuencia de salida 31200 Hz
#include
LCD de cristal líquido (12, 11, 5, 4, 3, 2);
                                       
  byte z1 [8] = {// icono de batería
  0b01100, 0b11110, 0b11110, 0b11110, 0b11110, 0b11110, 0b11110};
 
 int contados = 0; // variable para almacenar el valor del nivel de escala
 int voltag = 0; // variable para almacenar el valor del voltaje
 int noll = 0; // variable para almacenar el valor del punto medio
   #define NUM_SAMPLES 10 // 10 muestras analógicas para leer en 1 segundo
   int suma = 0; // suma de muestras tomadas
   int sol = 0; // igual, pero dividido por 10
   unsigned char sample_count = 0; // número de muestra actual con
   voltaje de flotación = 0.0; // voltaje calculado
   const int button1 = 7; // botón de barrera plus
   const int button2 = 8; // botón de barrera menos
   int i = 5; // barrera
   
configuración nula () {
     lcd.begin (16, 2); // muestra la inicialización
     lcd.setCursor (1, 0);
     lcd.setCursor (10, 1);
     lcd.print ("Rx-Tx");
     retraso (3000);
     lcd.clear ();
     
     TCCR1A = TCCR1A & amp; 0xe0 | 2;
     TCCR1B = TCCR1B & amp; 0xe0 | 0x09;
     analogWrite (9, 126); // en el pin 10 PWM = 50% f = 31200Hz
     
     lcd.createChar (1, z1);
     }
     
bucle vacío () {
     int buttonState1 = HIGH; // El estado del botón es uno
     int buttonState2 = HIGH; // Estado de dos botones
   sample_count = 0; // restablecer el contorno del número de adiciones
   suma = 0; // restablecer la suma de 10 adiciones
   while (sample_count & lt; NUM_SAMPLES) {
   suma + = lectura analógica (A4); // la siguiente medición se agrega a la suma
   muestra_cuenta ++; // la unidad se agrega al número de medida
   sun = sum / 10;} // encuentra el valor promedio de 10 mediciones
   
   noll = analogRead (A3) / 2; // potencia del punto medio
   voltaje de flotación = mapa (analogRead (A3), 0,1023,0,1500) /100.0;
                                        // Voltímetro construido en la entrada A3
   if (sun & gt; = noll + i) {countleds = map (sun, noll + i, noll * 2 - 250, 9, 14);
                                        // si el resultado recibido está en el segmento 9-15 de la escala
    tono (6, contados * 100);}
   if (sun & lt; = noll - i) {countleds = map (sun, 116, noll - i, 0, 7);
                                        // si el resultado resultante es 0-7 segmento de la escala
    tono (6, contados * 50); }
     if (sun & lt; noll & amp; & amp; sun & gt; = noll - (i-1)) {countleds = 7;
    noTono (6); } // islote de CERO virtual (7 segmentos)
     if (sun & gt; noll & amp; & amp; sun & lt; = noll + (i-1)) {countleds = 8;
    noTono (6); } // isla de escala CERO virtual (8 segmentos)

   
    {lcd.setCursor (contados, 0); // establece el cursor en la columna de los contados, línea 0
    lcd.print ("\ xff"); // icono lleno
    lcd.setCursor (0, 1); // mover a 2 filas, columna-0
    lcd.print (char (1)); // Indicación del icono de batería
    lcd.setCursor (1, 1); // pasar a la indicación de voltaje
    lcd.print (voltaje); // voltaje
    lcd.setCursor (7, 0); // 8a columna 1ra fila
    if (sun & lt; noll) {lcd.print ("{");} // print
    lcd.setCursor (8, 0); // novena columna primera fila
    if (sun & gt; noll) {lcd.print ("}");} // imprimir
    lcd.setCursor (7, 1);
    lcd.print ("B =");
    lcd.setCursor (9, 1); // 11 columna 2da fila
    lcd.print (i); // barrera
    lcd.setCursor (13, 1); // 13a columna 2a fila
    lcd.print (sol); // imprime el valor promedio del valor ADC
    retraso (100); // espera
    
  buttonState1 = digitalRead (button1); // Estado del botón de lectura 1
  buttonState2 = digitalRead (button2); // Estado del botón de lectura 2
  if (buttonState1 == LOW) {i = i + 1; retraso (50);}
                                        // Cuando se presiona el botón, la barrera crece en 1. Retraso 50
  if (buttonState2 == LOW) {i = i - 1; retraso (50);}
                                        // Cuando se presiona el botón, la barrera disminuye en 1. Retraso 50
  if (i & lt; 1) {i = 1;} // Límite inferior de la barrera
  if (i & gt; 38) {i = 38;} // El límite superior de la barrera
 
 lcd.clear ();
    }
}

No utilicé el automóvil. Los dos últimos elementos del TL074 quedaron inactivos. Pero en el circuito y la placa lo son. Es posible que desee llevarlos a condiciones de trabajo un poco más tarde. Creo que he logrado mi objetivo. La unidad de visualización funciona de maravilla. Todo lo demás depende del MD.
9.8
10
10

Agrega un comentario

    • sonriesonrisasxaxaokno sabesyahoonea
      jeferascarsetontosisi-siagresivosecreto
      lo sientobailardance2dance3perdónayudabebidas
      pararamigosbuenobuenosilbatodesmayarselengua
      fumaraplaudirllorardeclararburlóndon-t_mentiondescargar
      calorfuriosorisa1mdareuniónMoskingnegativo
      not_ipalomitas de maizcastigarleerasustarasustabuscar
      burlagraciasestoto_clueumnikagudode acuerdo
      malbeeeojo negroblum3ruborpresumiraburrimiento
      censuradocortesíasecreto2amenazarvictoriaYusun_bespectacled
      shokrespektjajajaPrevedbienvenidokrutoyya_za
      ya_dobryiayudantene_huliganne_othodigolpearprohibircerrar
24 comentario
El autor
Gracias puteec FU! Lo solicité por segunda vez. Cosí a través de Arduino uno. El problema desapareció después de actualizar el gestor de arranque. Ahora interesa cómo configurar más.
puteec fu
Cualquier Arduino es adecuado para atmega168, atmega328. Acerca de nano esto con un conector usb si no se equivoca. Coser el ide Arduino a partir de los ejemplos del boceto Blink (LED parpadeantes en el pin 13, el LED está instalado en la placa). Asegúrese de estar utilizando el puerto correcto, la placa está seleccionada correctamente, el procesador en la placa está seleccionado correctamente, la frecuencia de cuarzo en la placa está seleccionada correctamente, el método de firmware (μ2) está seleccionado correctamente.
Error no encontrado
Cree un nuevo archivo en Arduino, copie el boceto desde aquí a un boceto nuevo y limpio y funcionará.Pero primero, haga que el LED de la placa Arduino parpadee con un ejemplo de parpadeo estándar. Entonces sigue adelante.
Compré Arduino p nano solo en el procesador Atmega328. Revisé un montón de videos y foros ... dijeron que debería aparecer ... pero luego el fastidio NO parpadea ... da #include espera "FILENAME" o . ¿Alguien ha encontrado esto?
El autor
Un boceto funciona con este tablero. ¿Qué es exactamente el tapón formado?
Si vierte el último boceto, no se pueden instalar todos los detalles relacionados con D3.3 y D3.4, así como ellos mismos. En el soldador hay un nuevo dibujo sobre este tema.
Anjey888
Hola Este tema está muy interesado. Quiero armar el dispositivo. Hice un tablero de soldador fuera del camino ... y luego me quedé atascado. Dado que hay mucho desacuerdo entre la placa y el circuito. Comenzó a comparar su tablero ... esa es una gran diferencia. Pero confundido con el arnés de Arduino.
Pido la ayuda de personas conocedoras.
El autor
Lo mismo que para otros metales. La profundidad de detección depende del área del objetivo. Cuanto más, más profundo.
Invitado Eugene
¿Cuáles son los límites para detectar objetos? Oro, aluminio, cobre.
Alexander invitado
¿Qué hacer ahora, porque todavía hay una barrera de Schottky?
El autor
Bueno aqui! ¡Incluso el valor más pequeño está fuera de discusión! Gracias por la aclaración.
Cita: puteec_80
Y la gente entenderá más rápida e intuitivamente de lo que estoy hablando.
Puede continuar en este error. ((Las personas técnicamente alfabetizadas tendrán una ligera pérdida.
BARRERA, esposo.
1. Un obstáculo (una especie de muro, una viga transversal) establecido en el camino.
2. Valla, cercas.

UMBRAL, umbral, esposo.
1. En ciencia y tecnología, el umbral se llama el valor más pequeño, el grado de manifestación de algo.
El umbral de sensibilidad del dispositivo. El | Umbral de audición. El | Umbral de dolor. El | El sensor se activa cuando se supera el umbral de temperatura establecido.
sonrie
El autor
Quedémonos con los nuestros. Escribiré "aumentando la barrera en una unidad" y "la sensibilidad del receptor fue de 5 μV". Y escribe "Aumentando el umbral de operación en una unidad" y "el umbral de sensibilidad del receptor ..." Además, las personas entenderán más rápida e intuitivamente de lo que estoy hablando.
Y lo explico en este ejemplo. No hay umbral estrictamente hablando, porque no hay una escala de referencia clara. Hay algún tipo de banda flotante recortada de una señal flotante. Entonces, me parece que la definición de barrera es mucho más adecuada para esta franja "flotante" que para un umbral.
Generalmente argumento sin sentido y estúpido. ¿Tienes alguna pregunta?
Cita: puteec_80
¿Cuáles son sus umbrales inferior y superior?
Tal vez los significados de las palabras traducidas no coinciden o un poco no coinciden. Pero describen perfectamente el proceso y gradualmente entran en jerga.
Exactamente cuál es el umbral. El umbral de respuesta está en su caso. Por favor explique cómo la "barrera" describe el proceso.
En cuanto a unirse a la jerga, ahora hay muchos tipos de malentendidos allí ((
El autor
En este caso, todavía tiendo a usar la palabra "barrera", porque es la barrera que se establece en el texto del programa, pero sin entrar en su rango, el microcontrolador percibe la señal como útil. Y es la barrera porque Tiene dos valores: los límites superior e inferior de la ejecución, es decir La operación ocurre por encima del borde "superior" y debajo del borde "inferior" de la barrera en la escala ADC. Sin embargo, lo sabes mejor. ¿Cuáles son sus umbrales inferior y superior?
Tal vez los significados de las palabras traducidas no coinciden o un poco no coinciden. Pero describen perfectamente el proceso y gradualmente entran en jerga.
Por cierto La sensibilidad y la barrera son cosas completamente diferentes.
SiSe cruzan. Pero no mas.
Cita: puteec_80
En MD extranjero, el menú dice "Barier".

Puedo sorprenderte, pero muchas palabras en inglés que se parecen a las nuestras tienen un significado diferente, a veces cercano, a veces no. Busque las palabras "falso traductor amigos".
Ahora esencialmente. En ruso tecnico documentación no simplemente no existe esa frase "barrera de sensibilidad", ¡y eso es todo! Hay un "umbral de sensibilidad", en algunos casos podemos decir "límite de sensibilidad", pero no una "barrera de sensibilidad". Quizás en algunas otras ramas del conocimiento se usa, pero no en electrónica.
El autor
Bueno, significa que todos los ingenieros extranjeros están saltando sobre un palo en el camino. En el MD extranjero, el menú dice "Barier" ¡Camarada Ivan, te estás cayendo en mis ojos con esas pequeñas objeciones! ¿Dónde están tus comentarios sobre el fondo? ¿Después de lo cual tienes que aplaudir en la frente? Solías malcriarme a menudo castigar
La diferencia es significativa: el umbral es un término técnico, la barrera es un "palo al otro lado de la carretera".
El autor
Tal vez Pero no veo la diferencia.
¿Quizás no sea una "barrera", sino un umbral? ;)
El autor
El diagrama no muestra los botones de ajuste de barrera. Están conectados a los pines 7 y 8 del Arduino. Cada uno levantado con una resistencia de 10k al plus, se cierra cuando presiona la masa.
El autor
bucle vacío () {
int buttonState1 = HIGH; // El estado del botón es uno
int buttonState2 = HIGH; // Estado de dos botones

int pot = analogRead (A4); // filtro para cambio rápido de señal
signo = signo * (1-K) + bote * K;

noll = noll * (1-L) + signo * L; // filtro de señal a largo plazo
// Voltímetro construido en la entrada A3
voltaje de flotación = mapa (analogRead (A3), 0,1023,0,1500) /100.0;

if (sign> = noll + i) {countleds = map (sign, noll + i, 1023, 9, 14);
// si el resultado recibido está en el segmento 9-15 de la escala
tono (6, contados * 100);}
if (sign <= noll - i) {countleds = map (sign, 0, noll - i, 0, 7);
// si el resultado resultante es 0-7 segmento de la escala
tono (6, contados * 50); }
if (sign = noll - (i-1)) {countleds = 7;
noTono (6); } // islote de CERO virtual (7 segmentos)
if (sign> noll && sign <= noll + (i-1)) {countleds = 8;
noTono (6); } // isla de escala CERO virtual (8 segmentos)


{lcd.setCursor (contados, 0); // establece el cursor en la columna de los contados, línea 0
lcd.print ("\ xff"); // icono lleno
lcd.setCursor (0, 1); // mover a 2 filas, columna-0
lcd.print (char (1)); // Indicación del icono de batería
lcd.setCursor (1, 1); // pasar a la indicación de voltaje
lcd.print (voltaje); // voltaje
lcd.setCursor (7, 0); // 8a columna 1ra fila
if (sign lcd.setCursor (8, 0); // novena columna primera fila
if (sign> noll) {lcd.print ("}");} // print
lcd.setCursor (7, 1);
lcd.print ("B =");
lcd.setCursor (9, 1); // 11 columna 2da fila
lcd.print (i); // barrera
lcd.setCursor (13, 1); // 13a columna 2a fila
lcd.print (signo); // imprime el valor promedio del valor ADC
retraso (10); // espera

buttonState1 = digitalRead (button1); // Estado del botón de lectura 1
buttonState2 = digitalRead (button2); // Estado del botón de lectura 2
if (buttonState1 == LOW) {i = i + 1; retraso (50);}
// Cuando se presiona el botón, la barrera crece en 1. Retraso 50
if (buttonState2 == LOW) {i = i - 1; retraso (50);}
// Cuando se presiona el botón, la barrera disminuye en 1. Retraso 50
if (i <1) {i = 1;} // Límite inferior de la barrera
if (i> 38) {i = 38;} // El límite superior de la barrera

lcd.clear ();
}
}
El autor
Nuevo boceto. El algoritmo para detectar la señal útil ha sido cambiado. El esquema está simplificado, no hay elementos D3.4 y D3.3 con todos sus enlaces. Si toma su propio sello, entonces todos estos detalles simplemente no se pueden instalar. Más sensibilidad No hay falsos positivos.
Bosquejo:

// Entrada analógica A3 para un voltímetro, configurable por el potenciómetro R32.
// Entrada analógica A4 para la señal. Ajuste con la señal mínima en D3.2
// resistencia R40 para las lecturas de ADC de aproximadamente 510.
// 6- conclusión del zook
// 9 - frecuencia de salida 31200 Hz
#include
LCD de cristal líquido (12, 11, 5, 4, 3, 2);

byte z1 [8] = {// icono de batería
0b01100, 0b11110, 0b11110, 0b11110, 0b11110, 0b11110, 0b11110};
int contados = 0; // variable para almacenar el valor del nivel de escala

voltaje de flotación = 0.0; // voltaje calculado
const int button1 = 7; // botón de barrera plus
const int button2 = 8; // botón de barrera menos
int i = 5; // barrera
flotador constante K = 0.1; // filtro de seguimiento de cambios rápidos (coeficiente. cuanto más pequeño, más fuerte)
flotador constante L = 0.07; // filtrar los cambios de seguimiento durante mucho tiempo
signo flotante = 0; // filtro
flotador noll = 0;

configuración nula () {
lcd.begin (16, 2); // muestra la inicialización
lcd.createChar (1, z1);
pinMode (9, SALIDA);
pinMode (6, SALIDA);
TCCR1A = TCCR1A y ​​0xe0 | 2;
TCCR1B = TCCR1B y 0xe0 | 0x09;
analogWrite (9, 126); // en el pin 10 PWM = 50% f = 31200Hz
// de hecho, para PWM = 50% necesita establecer al menos 220 rellenos, de acuerdo con el osciloscopio
// el duin no puede manejarlo. Esto no es crítico.
}
El autor
Los que verán el boceto. Los signos> = y <= han sido reemplazados por combinaciones extrañas de & gt y & lt. Por qué no lo sé Cuando la depuración era normal.

Le recomendamos que lea:

Pásalo por el teléfono inteligente ...