Pi-Lotus 5V es como he querido llamar al proyecto que estoy desarrollando de detector de metales de inducción de pulsos con arduino.
Estoy desarrollando a la vez una versión a 5V y 11V con Arduino Uno (nano compatible).
El sistema de detección de metales de inducción de pulsos se basa en enviar pulsos a una bonina la cual expande su campo magnetico durante el pulso y lo reabsorbe cuando se termina el pulso, Ese colapso del campo magnetico provoca un pulso que es amplificado por el amplificador operacional. Arduino manda esos pulsos y tras cada uno hace una espera y lee la amplitud de la respuesta, la cual es distinta si hay metales cerca. no solo éso, la forma del pulso tambien difiere entre metales ferrosos y no ferrosos, siendo mas picuda con los primeros y mas redondeada con los segundos. todavia no he implementado la parte de diferenciar los metales y queda mucho por ahacer todavía.
Mas adelante os comparto el esquema y el código. No será necesario instalar ninguna librería para estas primeras versiones.
Para la versión dinámica no será necesario el botón.
int sens=0;
int LA;
int retardo=26; //funciona bien con 25
int referencia=60; // referencia de lectura
int limite=3;
int Max, Min=1023;
int Bi;
bool B;
void setup() {
//analogReference(INTERNAL);
pinMode(13,OUTPUT);
pinMode(12,OUTPUT);
pinMode(9,OUTPUT); //buzzer
pinMode(8,OUTPUT);
pinMode(2,INPUT); // boton
Serial.begin(9600);
bitWrite(PORTB,0,1); // pulso apagado
}
void loop() {
int p=0;
int pulso=50; //funciona bien con 50
while(1){
bitWrite(PORTB,0,1); // es el pin digital 8
delayMicroseconds(pulso);
bitWrite(PORTB,0,0); // pulso apagado
delayMicroseconds(retardo);
LA=analogRead(A0);
//if(LA>sens)sens++; // el sistema de estabilización es innecesario
//else if(LA<sens)sens--;
sens=LA;
delayMicroseconds(4000-pulso-100); // 250Hz es un periodo de 4000 us
p++;
if(p>3){
p=0;
if(!digitalRead(2)){B=true; Bi=0;}// boton pulsado
else if(B && Bi<100)//Pausa despues de boton
{
Bi++;
if(Bi>90){ //Ajusta sensibilidad
if(sens>Max)Max=sens;
if(sens<Min)Min=sens;
referencia=Min;
}
}else {Min=4023; Bi=0;}
// if(!digitalRead(2)){ // boton pulsado
// if(sens>Max)Max=sens;
// if(sens<Min)Min=sens;
// referencia=Min;
// }else {Min=1023;}
if(sens<referencia-limite){
digitalWrite(13,HIGH); //detecta metal
tone(9,900,100);
}
else digitalWrite(13,LOW);
if(sens>referencia+limite*3)digitalWrite(12,HIGH); //indicador deajuste
else digitalWrite(12,LOW);
}
}
}
/////FIN de la versión con pulsador////
fuaa que velocidad para subir cosas yeti
ResponderEliminarEra domingo y me pidieron que lo publique, así que me puse con el esquema y lo publiqué, luego limpié el código y le añadí comentarios para que se entienda
EliminarGracias
ResponderEliminarHola! Me parece muy bien este diseño, solo una pregunta, se podría sustituir el TL072 por un lm358? Gracias de antemano.
ResponderEliminarEn el último vídeo que hice en Youtube, en mi canal Yeti-lab probé un montón de amplificadores, no recuerdo si ése concretamente,la cosa es que con algunos funciona y con otros no, pero también cambia la sensibilidad. Con los que más alcance da son lf356 y lf357 pero es inestable, con el tl072 da muy buen alcance y miuy buena estabilidad y los otros que probé y funcionaron me dieron mucho menor alcance
EliminarEstimado , he llevado a cabo este detector y el otro fabricado con el microcontrolador attiny85 hace un tiempo y funcionan perfectamente.
ResponderEliminarEl detector que me llamo la atención es el que funcióna con Arduino a 12 v, no tengo claro en qué cosas debo modificar el código Arduino para que funcione. Espero su respuesta , saludos
Perdona Luca que no vi tu comentario. mira la ultima entrada del blog. acabo de publicar un detector de metales completo muy potente. un saludo
Eliminar