En este blog publicaremos información sobre ARDUINO y otros temas relacionados con la asignatura de tecnología industrial de 2º Bach. del instituto I.E.S. Parque de Monfragüe
martes, 19 de marzo de 2019
jueves, 7 de marzo de 2019
Creacción de un detector de metales
Como proyecto práctico en la clase de tecnología industrial de 2º de Bachillerato se nos planteó inicialmente el diseño y la construcción de un detector de metales utilizando Arduino uno, el cual habíamos utilizado en algunas prácticas anteriores para familiarizarnos con su funcionamiento y montaje. Me pareció un reto muy interesante a pesar de su dificultad, pero con la ayuda de nuestro profesor no ha resultado tener tanta dificultad como imaginaba. El código y el esquema de montaje le he sacado de un video que encontré en YouTube (dejaré el enlace al final del párrafo) y hemos tenido algunos problemas a la hora de encontrar los componentes porque no disponíamos de ellos en el taller de tecnología del instituto y tuvimos que sacarlos de un ordenador que no funcionaba. Con el circuito montado los problemas que tuvimos fueron con la bobina, al principio probamos una bobina grande que no era muy sensible, después fabricamos otra de menor tamaño pero su funcionamiento no era muy convincente. Decidimos fabricar otra bobina del tamaño de la primera con un número superior de espiras, pero seguía sin ser 100% efectiva, por eso decidimos finalmente fabricar otra del tamaño de la segunda, aumentando el número de espiras para aumentar el campo eléctrico y su funcionamiento no es el mas perfecto, pero para nosotros es suficiente.
Link video: https://youtu.be/orBxzw-kHtE
Link video: https://youtu.be/orBxzw-kHtE
miércoles, 6 de marzo de 2019
Código arduino del detector de metales
#define SET(x,y) (x |=(1<<y)) //-Bit set / clear macros #define CLR(x,y) (x &= (~(1<<y))) // | #define CHK(x,y) (x & (1<<y)) // | #define TOG(x,y) (x^=(1<<y)) //-+ unsigned long t0=0; //-Ultima vez int t=0; //-Tiempo entre ints unsigned char tflag=0; //-Indicador de medición flag float SENSITIVITY= 1000.0; //-Adivina qué //-Generar interrupción cada 1000 oscilaciones de la bobina de busqueda SIGNAL(TIMER1_COMPA_vect) { OCR1A+=1000; t=micros()-t0; t0+=t; tflag=1; } void setup() { pinMode(13,OUTPUT); //-bocina pin digitalWrite(12,HIGH); //-NULL SW. pull up //-Configurar el contador1 para contar en el pin 5 TCCR1A=0; TCCR1B=0x07; SET(TIMSK1,OCF1A); } //-Float ABS float absf(float f) { if(f<0.0) return -f; else return f; } int v0=0; //-NULL value float f=0; //-Medición value unsigned int FTW=0; //-Click Tasa de generador unsigned int PCW=0; //-Click Fase del generador unsigned long timer=0; //-Click timer void loop() { if(tflag) { if(digitalRead(12)==LOW) //-Check NULL SW. v0=t; //-Ejemplo de nuevo valor nulo f=f*0.9+absf(t-v0)*0.1; //-Promedio más de 10 muestras tflag=0; //-Reset flag float clf=f*SENSITIVITY; //-Convertir la medición en frecuencia de clic if(clf>10000) clf=10000; FTW=clf; } //-Click generator if(millis()>timer) { timer+=10; PCW+=FTW; if(PCW&0x8000) { digitalWrite(13,HIGH); PCW&=0x7fff; } else digitalWrite(13,LOW); } }
Suscribirse a:
Entradas (Atom)