Localizador de distância baseado em AT89S52 e sensores ultrassônicos HC-SR04

Buscador de distancia basado en sensores ultrasónicos AT89S52 y HC-SR04

El buscador de distancias basado en HC-SR04 indica la distancia hasta un obstáculo en centímetros. Tiene un alcance de 2 cm a 400 cm. El proyecto se basa en el AT89S52, que es un microcontrolador de la familia 8051. La distancia se muestra en pantallas de siete segmentos.

Componentes:

AT89S52

Tres 7 segundos. Gastos (Tipo de ánodo común)

HC-SR04 (módulo de sensor ultrasónico)

Conectores, PCB, etc.

El código está escrito en ensamblador y es fácilmente comprensible. El proyecto se puede utilizar en robots para evitar obstáculos, etc.

Laboral:

El funcionamiento de los sensores ultrasónicos es bastante sencillo y fácil de conectar con el microcontrolador. El módulo del sensor tiene 4 pines, de los cuales Pin-1 y Pin-4 son +Vcc y Gnd respectivamente. El pin 2 es el disparador y el pin 3 es el pin Echo.

Cuando se aplica un pulso alto de 10us al pin TRIG, el transmisor ultrasónico envía 8 pulsos consecutivos de frecuencia de 40kHz. Cuando se envía el octavo pulso, el pin ECHO del sensor se vuelve ALTO. Ahora, cuando las ondas ultrasónicas se reflejan desde cualquier superficie y son recibidas por el receptor, el pin ECHO pasa a BAJO. El tiempo que tarda en salir y regresar al sensor se utiliza para encontrar la distancia a la superficie reflectante.

Distancia en centímetros = (Tiempo/58) cms

En pulgadas = (tiempo/148)

La distancia también se puede calcular teniendo en cuenta la velocidad del sonido (=340m/s)

HC-SRO4

CÓDIGO Explicación:

· Las líneas de datos de las pantallas de siete segmentos están conectadas al puerto 0

· Port-1, Pin-0,1 y 2 son líneas seleccionadas para SSD

· P3.0 está conectado a Trig.

· P3.1 está conectado al pin Echo del módulo del sensor

· En la parte principal del programa, el primer temporizador 1 se inicializa en modo 2 (recarga automática de 8 bits).

Cuando P3.0 se establece en alto, se llama a la subrutina DELAY1. Después de 10us, P3.0 se restablece a 0

· Ahora se comprueba que P3.1 tenga una señal alta. A medida que P3.1 aumenta, se inicia el temporizador 1 y cada vez que se desborda, se incrementa el registro A.

· El valor del recuento cargado debe ser 58 (mencionado en la hoja de datos). De modo que después de 58 ciclos A se incrementa una vez. Pero como el retraso causado por las instrucciones debe compensarse, el valor de conteo que utilicé fue 45 (=> 255D-210D).

· El valor almacenado en A se utiliza para extraer la Distancia medida. Esto se hace mediante instrucción de División.

· El valor de datos de 8 bits se envía secuencialmente a la respectiva pantalla de 7 segmentos y se selecciona a través de las líneas de selección.

Buscador de distancia basado en sensores ultrasónicos AT89S52 y HC-SR04

Buscador de distancia basado en sensores ultrasónicos AT89S52 y HC-SR04

Código fuente del proyecto

###


 ORG 00H 
MOV DPTR,#SSDisplay // mueve la dirección LUT a DPTR
MOV P1,#00000000B // define P1 como puerto de salida MOVIMIENTO P0,#00000000B // define P0 como puerto de salida CLR P3.0 // define P3.0 como salida para enviar el disparador CONJUNTO P3.1 // define P3.1 como entrada para recibir eco MOV TMOD,#00100000B // define el temporizador 1 como temporizador de recarga automática modo 2 PRINCIPAL: MOV TL1,#210D //carga el valor inicial para empezar a contar MOVIMIENTO TH1,#210D // carga el valor de recarga MOV A,#00000000B //limpiar el acumulador CONJUNTO P3.0 //inicia el reloj LLAMADA RETRASO1 // proporciona un ancho de 10uS para el pulso de disparo CLR P3.0 //terminar el reloj AQUÍ: JNB P3.1, AQUÍ // bucle aquí hasta que se reciba el eco ATRÁS: AJUSTE TR1 //inicia el temporizador1 AQUÍ1: JNB TF1,AQUÍ1 // bucle aquí hasta que se acabe el tiempo (es decir, 48 cuentas) CLR TR1 //para el temporizador CLR TF1 // borrar la bandera del temporizador 1 INCA // incrementa A por cada desbordamiento del temporizador1 JB P3.1,TRASERO // salta a ATRÁS si el eco todavía está disponible MOV R4,A // guarda el valor de A en R4 DLOOP DE LLAMADA //llamar al bucle de visualización SJMP PRINCIPAL // salta al bucle PRINCIPAL RETARDO1: MOV R6,#2D // retraso de 10uS BUCLE1: DJNZ R6, BUCLE1 RETIRADO DLOOP: MOV R5,#50D // carga R5 con 100D ATRÁS1: MOV A, R4 //carga el valor en R4 a A MOVIMIENTO B,#100D // cargar B con 100D divab // aislamos el primer dígito CONFIGURAR P1.0 // activa la unidad de visualización LED D1 PANTALLA DE LLAMADA //llamar a la subrutina DISPLAY MOVIMIENTO P0,A // mueve el patrón de unidades de dígitos del primer dígito a P0 RETRASO DE LLAMADA // retraso de 1mS RETRASO DE LLAMADA MOVIMIENTO A, B // mueve el resto de la 1.ª división a A MOVIMIENTO B,#10D // carga B con 10D divab // aislamos el segundo dígito CLR P1.0 //deshabilita la unidad de visualización LED D1 CONFIGURAR P1.1 // activa la unidad de visualización LED D2 PANTALLA DE LLAMADA MOVIMIENTO P0,A // mueve el patrón de unidades de dígitos del segundo dígito a P0 RETRASO DE LLAMADA RETRASO DE LLAMADA MOVIMIENTO A, B // mueve el resto de la 2da división a A CLR P1.1 //deshabilita la unidad de visualización LED D2 CONFIGURAR P1.2 // activa la unidad de visualización LED D3 PANTALLA DE LLAMADA MOVIMIENTO P0,A // mueve el patrón de unidades de dígitos del 3er dígito a P0 RETRASO DE LLAMADA RETRASO DE LLAMADA CLR P1.2 //deshabilita la unidad de visualización LED D3 DJNZ R5, ATRÁS1 //repite el bucle de visualización 100 veces RETIRADO RETARDO: MOV R7,#250D // retraso de 1mS ETIQUETA2: DJNZ R7, ETIQUETA2 RETIRADO PANTALLA: MOVC A,@A+DPTR // obtenemos el patrón de unidad de dígitos para el contenido en A RETIRADO Pantalla SSD: DB 0C0H // Código hexadecimal para mostrar DISPLAY 0 DB 0F9H // PANTALLA 1 DB 0A2H // PANTALLA 2

3

Vídeo del proyecto

https://www.youtube.com/watch?v=He7SEEitFP4

¿Preguntas relacionadas con este artículo?

👉 Pregunte y discuta en los foros EDAboard.com y Electro-Tech-Online.com.

¡¡Dinos qué piensas!! Cancelar respuesta

Regresar al blog

Deja un comentario

Ten en cuenta que los comentarios deben aprobarse antes de que se publiquen.