hola amigo, ya he avanzado bastante en el tema asi que aqui se los presento:
FuncionamientoSi sabemos la velocidad de propagación de una onda sonora en el aire más el tiempo que demora en cruzar cierto punto, podemos calcular la distancia recorrida que tuvo la onda para llegar a tal punto con la siguiente fórmula:
• 343 m/s es la velocidad de la onda en el aire a 20º C según la ecuación:
C es la velocidad y Tº la temperatura en el aire
• y son iguales, por eso se divide por 2
Transmisión Se genera la ráfaga a través del puerto RB1, el cual no necesita una etapa amplificadora para su transmisión.
Por RB0 se recibe el eco.
RecepciónSe compone de dos circuitos amplificador de señal y un filtro pasa banda para la correcta detección de frecuencia.
La señal es recibida por el sensor receptor y amplificada 2 veces, luego filtrada para verificar que es el eco de nuestra señal y no una indeseable.
*Se ajusta el filtro a 41 KHz para una mejor precisión.
Pasa bandaAmplificador Opampobs: la ganancia es algo que vere ni bien haga las pruebas, ya que en proteus no me permitia una mayor
ProgramaciónY en assembler:
;_____detección de eco con su tiempo de llegada (guardado en 'dato' )_____
;
;____DISTANCIA = [(Tida + Tvuelta) * 343 m/s] / 2_____ con Tida = Tvuelta
;
;___como existe un delay de 20 ms la maxima distancia que podra medir
;
;___sera: DISTANCIA = [(20 ms) * 343 m/s] / 2 => DISTANCIA MAXIMA = 3.43 mts.
LIST P=16F84A
INCLUDE <P16F84A.INC>
MULTIPLICADOR EQU .64 ; (128 del prescaler)/ 2
CBLOCK 0Ch
contador
dato
MULTIPLICANDO
ENDC
;********************ZONA DE CODIGO**********************************
ORG 0
goto Inicio
ORG 4
goto ServicioInterrupcion
Inicio bsf STATUS,RP0
movlw b'11000110'
movwf OPTION_REG bsf PORTB,0
bcf PORTB,1
bcf STATUS,RP0
clrf TMR0
clrf contador
Principal
;__________________________PWM______________________________________
ciclo_2 movlw .16 movwf contador
bcf PORTB,1
call Retardo_20ms
call muestra_dato
movlw b'10000000'
movwf INTCON
ciclo_1 bsf PORTB,1
call Retardo_10micros
nop
nop
bcf PORTB,1
call Retardo_5micros
nop
nop
nop
decfsz contador,f
goto ciclo_1
clrf TMR0
movlw b'10010000'
movwf INTCON
goto ciclo_2
;_____________________________________________________________________
ServicioInterrupcion
movf TMR0,w
movwf MULTIPLICANDO
bcf INTCON,INTF
retfie
;_____________________________________________________________________
muestra_dato
call LCD_Inicializa
movf MULTIPLICANDO,w movwf Arit_Multiplicando movlw MULTIPLICADOR movwf Arit_Multiplicador
call Arit_Multiplica_8Bit
movf Arit_Producto_H,W movwf Arit_Binario_H
movf Arit_Producto_L,W
movwf Arit_Binario_L
call Arit_Bin_BCD_16Bit movlw MensajeTpoEco call LCD_Mensaje
call LCD_Linea2
call LCD_UnEspacioBlanco
call Arit_VisualizaBCD movlw Mensaje_us
call LCD_Mensaje
return
Mensajes
addwf PCL,F
MensajeTpoEco
DT "Tpo Demora Eco = ", 0x00
Mensaje_us
DT "us", 0x00
INCLUDE <LCD_MENS.INC>
INCLUDE <RETARDOS.INC>
INCLUDE <ARITMETICA.INC> INCLUDE <LCD_4BIT.INC>
END
Diagrama FinalRáfaga de 16 ciclos cada 20ms y pruebaLista de materialesMe queda por hacer las pruebas y realizar los ajustes necesarios como la ganancia del opamp, explicar porque acepta al entrada INT/RB0 una señal analogica sin problema (cosa que aun no entiendo, pero se que puede
), tener "algo" de referencia como para calibrar las medidas y asi sean exactas, ajustar mediante un potenciometro,por ejemplo, los 20 ms cosa de que permita diferentes escalas de distancia para medir
nota: pienso posicionar un tubo pbc en el sensor para direccionar mejor la rafaga, pero debo comprobar que no afecte tales ondas (refleje, refracte o que se yo), en el caso que desee medir nivel de liquido en un recipiente
me surge la duda de como variar o establecer el angulo deseado para la tx de las ondas, ya que he visto en esquemas y proyectos rafagas con diferentes angulos de proyeccion, creo que depende de la distancia
aaa, el dato que entrega por el LCD es el tiempo que tardo la rafaga en rebotar y volver, faltaria un calculo anexo para la distancia
criticas y acotaciones muy bien recibidassaludos
Pato