Anda di halaman 1dari 10

Un buscador de vuelos Ultrasonidos

Versin para imprimir | Foros | Preguntas Frecuentes |

Es necesario aadir un sensor de distancia de su proyecto integrado? Construir este buscador sencilla gama de ultrasonidos! Esta rpida y sucia PIC telmetro ultrasnico encontrar un lugar en numerosos proyectos: detector de presencia, la robtica, el aparcamiento, la medicin de distancia ... Con unos pocos componentes baratos y menos de 200 bytes de cdigo, este sensor funcionar de 30 a 200 cm, alrededor de 1 cm de precisin, con el desbordamiento y la indicacin de desbordamiento.

CMO FUNCIONA EL ESQUEMA DEL CIRCUITO Y


Todo el mundo sabe la velocidad del sonido en el aire seco es de alrededor de 340 m / s. Enviar un pulso ultrasnico corto a 40 Khz en el aire, y tratar de escuchar el eco. Por supuesto que no se oye nada, pero con un sensor ultrasnico de nuevo el pulso puede ser detectado. Si conoce el tiempo de recorrido adelante y atrs de la onda ultrasnica, se conoce la distancia, dividir la distancia por dos y que conoce el rango del sensor de ultrasonidos para el primer obstculo en frente de ella. Aqu se utiliza un transmisor de ultrasonidos piezzo con su receptor, que son muy eficientes, fciles de encontrar y bastante barato. En primer lugar, tenemos que enviar el pulso: es fcil de obtener un pulso de 40 Khz de una salida PWM PIC. Usted puede conducir un transmisor ultrasnico directamente desde la salida de PIC, pero el rango de sentido, no ser superior a 50 cm. El uso de un transistor y un circuito resonante, el transmisor ultrasnico conseguir alrededor de 20 voltios y el rango de sentido se ampliar hasta 200 cm. En segundo lugar tenemos que sentir el eco: el receptor piezzo puede proporcionar unas cuantas decenas de milivoltios, esto ser suficiente para que un ADC de PIC con resolucin de

4 mV sin necesidad de hardware adicional. Haga clic en esquema para agrandar C1 es un condensador de desacoplamient o El pulso PWM del pasador RC2 del PIC impulsa la base del transistor T1 a travs de la resistencia R1 Un inductor de 330 uH se aade en paralelo al transceptor piezzo ultrasnica, para formar una resonnator LC, el diodo D1 protege T1 de tensin inversa. El receptor ultrasnico est directamente conectado al pin RA1 del PIC (ADC nmero de canal 1), con R3 en paralelo como adaptator impedancia.

La junta protot ipo <Comp onente del lado del Soldad ura lado > Tenga cuidad o de alinear lo mejor que possib e el trans misor con el recept or

EL CDIGO FUENTE
Aqu est el cdigo fuente de mikroC: /* * Archivo: sonar.c

* * * * * * * * * * * * * * * * * * * * * * *

Proyecto: Finder Simple Ultrasonidos Autor: Bruno Gavand Compilador: mikroC V6.2 Fecha: 30 de septiembre 2006 Descripcin: Este es un buscador de base amplia ultrasnico, de 30 a 200 centmetros Dispositivo de destino: PIC16F877A con el cristal de 8 Mhz O cualquier CFP con al menos un canal ADC y PWM Los bits de configuracin: HS reloj No hay vigilancia No hay ningn temporizador el poder No se agote LVP deshabilitado Los datos de EE proteger a discapacitados CIE discapacitados Ver ms detalles y esquemticas sobre http://www.micro-examples.com/ /

/ ******************** * MACRO DEFINICIONES ******************** / /* * Ultrasnico longitud del pulso en microsegundos */ # Define PULSELEN 300 /* * El tamao de bfer circular para las muestras de un promedio de */ # Define BUFSIZE 10 /* * LCD PUERTO * EasyPic2, EasyPic3: PORTB * EaspyPic4: PORTD */ # Define LCDPORT PORTD # Define LCDTRIS TRISD / ******************* * Las variables globales ******************* / outofrange unsigned char / / fuera del alcance de la bandera: establece cuando se detecta ningn eco buf unsigned int [BUFSIZE] / / buffer de muestras unsigned char idx = 0; / / ndice de la muestra actual en el buffer / ***************************************** * Rutina de interrupcin

* Esta ISR se encarga de desbordamiento slo TIMER1 ***************************************** / sin efecto la interrupcin (void) { if (PIR1.TMR1IF) / / timer1 desborde? { outofrange = 1; / / establecer fuera del alcance de la bandera PIR1.TMR1IF = 0; / / bandera de interrupcin clara } } / ************ * Bucle principal ************ / void main () { ADCON1 = 0; / / permite a ADC TRISA = 0xFF; / / PORTA como entradas PORTA = 0; TRISC = 0; / / PORTC como salidas PORTC = 0; / / TIMER1 ajustes T1CON = 0b00001100; / / prescaler 1:1, osc. no habilitado, de sincronizacin, en la residencia CLK, se detuvo # Ifdef LCDPORT / / Init LCD Lcd_init (y LCDPORT); / / usa la configuracin de EP2/3/4 Lcd_Cmd (lcd_clear); pantalla / / claro Lcd_Cmd (Lcd_CURSOR_OFF); / / cursor fuera Lcd_Out (1, 1, "UltraSonicRanger"); Lcd_Out (2, 5, "cm"); # Endif / / Init PWM canales: 40 kHz, 50% ciclo de trabajo PWM1_Init (40000); PWM1_Change_Duty (128); INTCON.GIE = 1 / / habilitar las interrupciones globales INTCON.PEIE = 1 / / habilitar las interrupciones perifricas PIE1.TMR1IE = 0; / / desactivar el temporizador de una interrupcin PIR1.TMR1IF = 0; / / Tiempo borrar una bandera de interrupcin / / Por siempre para (; ;) { unsigned char i; byte de propsito / / general cm de largo sin firmar; / / distancia en centmetros str unsigned char [4]; / / cadena de pantalla amplia / / Preparar el temporizador

T1CON.TMR1ON = 0; temporizador / / parada outofrange = 0; / / reposicin de bandera de rango TMR1H = 0; / / claro timer1 TMR1L = 0; T1CON.TMR1ON = 1 / / inicio del temporizador 1 PIE1.TMR1IE = 1; / / activar el temporizador de 1 interrumpe en caso de desbordamiento / / Enviar el pulso PWM1_Start (); / / habilitar la salida de PWM: transductor es pulsado a una frecuencia ultrasnica Delay_us (PULSELEN); / / durante microsegundos PULSELEN PWM1_Stop (); / / parada PWM Delay_us (PULSELEN * 2) / / hacer nada por el doble de la duracin de la duracin del impulso para evitar salida en falso mientras que (Adc_Read (1) <1) / / mientras no se detect pulso (no hay seal en el canal ADC 1) { if (outofrange) break; / / a la tarde, fuera de rango } T1CON.TMR1ON = 0; / / parada del cronmetro 1 PIE1.TMR1IE = 0; / / desactivar el temporizador de 1 interrumpe en caso de desbordamiento # Ifdef LCDPORT if (outofrange) / / se condtion sobre rango detectado? { Lcd_Out (2, 8, "rango"); / / mostrar mensaje fuera de rango } else if (TMR1H <((PULSELEN * 6 * Clock_kHz ()) / (1000 * 4 * 256))) / / es la condicin por debajo del rango detectado? { Lcd_Out (2, 8, "UnderRnge"); / / mostrar mensaje debajo del rango } lectura else / / buena { buf [idx] = TMR1H; / / crear un valor de 16 bits de timer1 buf [idx] << = 8; / / MSB buf [idx] + = TMR1L; / / LSB / / Buffer circular idx + +; / / siguiente ubicacin if (idx == BUFSIZE) / / se llega al final? { idx = 0; / / Volver a la } cm = 0; / / preparar un promedio de un centmetro for (i = 0; i <BUFSIZE; i + +) / / para todas las muestras en tampn { cm + = buf [i]; / / aadir a la suma }

cm / = BUFSIZE; / / muestras promedio /* Cm * contiene ahora el nmero de ciclos de reloj * Desde el inicio de la transmisin de ultrasonidos * Para la deteccin de eco primera * La duracin en segundos es s = cm / (Clock_Khz () * 1000/4) * Si se admite que la velocidad del sonido en el aire es 340 m / s * La distancia en centmetros (ida y vuelta) es d = s * 340 * 100/2 * O d = 340 * 100/2 * cm / Clock_khz () / 1000 * 4 * D = 34 * 2 / Clock_Khz () */ cm * = 34 * 2; / / ahora se convierte en centmetros cm / = Clock_Khz (); ByteToStr (cm, str); / / convertir a la cadena Lcd_Out (2, 1, str); / / cadena de impresin Lcd_Out (2, 8, ""); / / mensaje de error claro } # Endif Delay_ms (10); / / 10 milisegundos de retardo antes de la siguiente muestra } } INSTRUCCIONES DE USO Lo he comprobado con una placa de desarrollo EasyPic4:

Por supuesto, esto guarda es muy bsico y tiene algunas desventajas: Un choque poco a la clula receptor piezzo podra conducir a una medicin errnea, Desde pulso ultrasnico no est codificado, cualquier otra fuente de ultrasonidos a poner el desorden: = Condiciones underflow> no deseado o desbordamient o puede ocurrir Este es el precio del diseo es muy sencillo de los guardaparques. Esto es lo que usted debe ver en su mbito de aplicacin, si la sonda a los pines del receptor de ultrasonidos:

Horizontal: 1 ms / div Vertical: 5 mV / div El eco mecnico se elimina por un retardo de software. La onda reflejada es de alrededor de 40 mV pico a pico, se trata de alrededor de 9,5 ms despus del estallido de ultrasonidos, si decimos que la velocidad del sonido es de 340 m / s, esto significa que la distancia del objeto fue de alrededor de 0,0095 / 2 * 340 = 1.615 metros. En realidad, fue el techo, que fue de 172 cm por encima del circuito, la pantalla LCD, escribi 170 cm. Espero que este proyecto de base har un buen comienzo para el tuyo! Por favor, informe de errores y comentarios en mis foros

Anda mungkin juga menyukai