facultad de ingeniería - u.n.sdea.unsj.edu.ar/ultrasonido/pdfs/trabajos finales...el motor paso a...
TRANSCRIPT
Facultad de Ingeniería - U.N.S.J
Aplicaciones Industriales de Ultrasonido
Trabajo Final de Materia:
“Obtención de Perfil de Alturas Mediante
Sensor Ultrasónico”.
Alumnos: Doncel, Mario Reg.: 24031
Escribá, Pablo Reg.: 24190
Gerlini, Luis Reg.: 24151
Docente a Cargo: Dr. Ing. Angel Veca
Diciembre 2014
Doncel – Escribá - Gerlini Trabajo Final Ultrasonido i
Contenido
1. Objetivos ............................................................................................................................................. 1
2. Introducción ........................................................................................................................................ 1
3. Diseño ................................................................................................................................................. 2
3.1 Sensor de Ultrasonido HC-SR04 .................................................................................................. 2
3.2 Microcontrolador ........................................................................................................................ 3
3.3 Motor Paso a Paso ...................................................................................................................... 4
3.4 Driver motor PaP ......................................................................................................................... 4
3.5 Estructura .................................................................................................................................... 5
4. Pruebas y prototipos ........................................................................................................................... 5
5. Resultados........................................................................................................................................... 6
6. Conclusión........................................................................................................................................... 7
7. Apéndices ........................................................................................................................................... 7
7.1 Software Microcontrolador ......................................................................................................... 7
7.1 Función de Matlab ...................................................................................................................... 9
Doncel – Escribá - Gerlini Trabajo Final Ultrasonido 1
1. Objetivos
Investigación, diseño, realización y puesta a punto de un dispositivo que realiza
mediciones utilizando como sensor un transductor ultrasónico.
Dicho dispositivo es un prototipo capaz de realizar sobre una superficie un barrido en una
dirección y ofrecer vía USB hacia una PC el registro de alturas medido, y por medio de
Matlab graficar un perfil de la superficie a estudiar. Si bien el barrido se realiza en una sola
dirección y se obtiene un perfil, se dejan ya implementadas las herramientas para ampliarlo
a dos dimensiones.
2. Introducción
Se realizó una investigación con el fin de obtener ideas para la realización del proyecto, en
las cuales se obtuvieron distintos proyectos que podrían ser interesantes para desarrollar
entre los cuales y con la ayuda del docente a cargo se seleccionó el que será detallado en
las próximas páginas.
El sistema cuenta con una estructura con dimensiones a escala pequeña para probar el
prototipo. Dicha estructura cuenta con un riel por el que se desplaza el sensor para tomar
las mediciones y un motor montado al final de una varilla roscada que hace mover el
sensor. El dispositivo donde se monta el sensor también carga con el driver y el
microcontrolador. Este puede moverse de forma manual mediante dos teclas para dicho fin
y también en forma automática cuando se lo comanda mediante la función de Matlab
detallada más adelante.
Se utiliza un micro controlador para hacer el procesamiento de señales y enviar estos datos
vía USB a la PC en formato serie, siendo estos recibidos y mostrados en forma gráfica por
una función de Matlab (.m) diseñada y programada también para la ocasión.
Doncel – Escribá - Gerlini Trabajo Final Ultrasonido 2
3. Diseño
A continuación se encuentra un detalle del diseño y del montaje del prototipo. El sensor
está montado a 30cm de altura en referencia al plano de medición. La estructura tiene
40cm de ancho pero el área de medición está limitada a unos 28cm aproximadamente por
lo cual el sistema realiza 28 mediciones cada 1cm. Como se mencionó anteriormente se
cuenta con 2 pulsadores (PD y PI) para poder desplazar el carrete en forma manual sobre el
riel a la derecha o izquierda. Una vez posicionado, se inicia el proceso de medición a través
de la función de Matlab comandada por el usuario. En cada una de las 28 posiciones el
sensor toma 40 mediciones, se eliminan las de los extremos y se realiza un promedio, el
cual es enviado a la PC para el procesamiento y obtener el gráfico. Cuando el sistema
termina su proceso, vuelve en forma automática a la posición inicial esperando una nueva
instrucción.
3.1 Sensor de Ultrasonido HC-SR04
Este módulo contiene tanto el emisor como el receptor, y también la electrónica asociada.
El manejo del mismo es muy sencillo ya que posee 2 pines, uno de TRIG por el cual se
emite un pulso el cual es enviado al transductor y otro de ECO por el cual se recibe un
pulso cuando hay retorno de la señal enviado. Luego con un microcontrolador se mide el
tiempo desde que se generó el pulso en TRIG hasta que se obtiene el pulso en ECO y
mediante la siguiente formula se obtiene la distancia del objeto a medir:
Sensor de
Ultrasonido
Motor
PAP
Driver
Motor
uC PC Gráfico
En Pantalla
PD PI
Doncel – Escribá - Gerlini Trabajo Final Ultrasonido 3
𝐷 = 0.017 ∗ 𝑇 ∗ 100 (1)
donde de D es la distancia [cm] y T es el tiempo entre el pulso de TRIG y ECO.
También se debe destacar que este tiene un bajo costo aunque su desempeño no es óptimo.
3.2 Microcontrolador
Se utilizó una placa arduino UNO, que posee un microcontrolador ATmega 328 de 8bits y
que nos permite conectarnos vía USB a la pc y manejar el driver del motor y el sensor de
ultrasonido.
Doncel – Escribá - Gerlini Trabajo Final Ultrasonido 4
3.3 Motor Paso a Paso
El motor paso a paso usado es el NEMA 17 con paso de 1.8°. Este es un motor pequeño de
alto torque comúnmente usado para aplicaciones como las impresoras 3d.
3.4 Driver motor PaP
El driver del motor PAP es el POLOLU A4988. Este driver permite el control del motor
PaP con un paso de corriente de hasta 1A y un rango de tensión de 12v a 35v. El manejo
del mismo re realiza con solo 2 líneas de control, una de dirección y otra de paso.
Doncel – Escribá - Gerlini Trabajo Final Ultrasonido 5
3.5 Estructura
4. Pruebas y prototipos
Para llegar al prototipo final presentado se pasó previamente por pequeños prototipos que
nos permitieron probar y ajustar a las necesidades los distintos módulos que componen el
sistema.
Las primeras pruebas fueron con el sensor de ultrasonido, el cual luego de estudiar y
analizar el datasheet, se conectó a una placa arduino UNO y se realizaron pruebas para
medir distancias conocidas. Debido a que los resultados de las pruebas fueron
satisfactorios se procedió a elegir este sensor para el prototipo final.
La siguiente prueba fue conectando el arduino UNO al driver y el motor PAP al driver,
luego de analizar el datasheet de cada uno se realizaron pruebas sacando conclusiones de
la velocidad máxima que se podía alcanzar y del correcto comando del mismo.
Doncel – Escribá - Gerlini Trabajo Final Ultrasonido 6
Luego se realizó la estructura donde se montaría el sistema, la misma fue realizada en
madera con los rieles hechos con dos varillas y una varilla roscada para desplazar el
sensor de lado a lado. Se dejó previsto una futura ampliación para agregarle otro grado de
libertad de movimiento al sistema.
Por último se montó el sistema completo y se realizaron diversas pruebas hasta que se
logró un ajuste satisfactorio del funcionamiento del sistema tanto a nivel de hardware
como a nivel de software.
5. Resultados
Tras varias pruebas y distintos procedimientos de filtrado, ya que como se mencionó
anteriormente, el sensor es bastante impreciso se lograron resultados satisfactorios.
A continuación se muestra una imagen con los resultados obtenidos en la medición de dos
objetos de distintas alturas.
* Puntos de cada medición Objetos y plano real
Doncel – Escribá - Gerlini Trabajo Final Ultrasonido 7
6. Conclusión
Se cumplió con los objetivos previstos. Fue posible diseñar un sistema práctico que haga
uso del ultrasonido, y se obtuvieron resultados satisfactorios.
El sistema realizado no sirve para determinar con exactitud la forma del objeto estudiado
debido a las imprecisiones del sensor utilizado, pero sí sirve para utilizarlo como detector
de objetos, es decir si este sistema se implementara en un espacio que contenga líquidos y
no se pueda visualizar el contenido interior de dicho espacio, se podría utilizar este sistema
para hacer un barrido en el espacio y detectar la presencia de objetos en el mismo. Para ello
sería necesario la utilización de un sensor de ultrasonido que pueda ser sumergido en el
líquido.
7. Apéndices
7.1 Software Microcontrolador
#define TRIG 6
#define ECO 7
#define dir 3
#define st 2
#define derecha 4
#define izquierda 5
int a = 0;
int total = 0;
int count=0;
long distancia;
long tiempo;
long tiempo_aux=0;
int mayor=0;
int menor=30000;
long auxx;
byte comando;
void setup() {
pinMode(TRIG, OUTPUT);
pinMode(ECO, INPUT
pinMode(dir, OUTPUT);
pinMode(st, OUTPUT);
pinMode(derecha, INPUT);
Doncel – Escribá - Gerlini Trabajo Final Ultrasonido 8
pinMode(izquierda, INPUT);
digitalWrite(TRIG,LOW);
digitalWrite(st,LOW);
digitalWrite(dir,HIGH);
Serial.begin(9600);
}
void loop() {
digitalWrite(dir, HIGH);
//if (digitalRead(derecha) == HIGH){
if (Serial.available()>0){ //si hay datos disponibles en el serial
delay(50); //esperemos a que se terminen de recibir
comando=Serial.read(); //leemos el primer datos –byte-
if(comando==49){
Serial.flush();
digitalWrite(dir,LOW);
delay(250);
//
for (total=0; total < 28 ; total++){
for (a=0; a<1400;a++ ){
digitalWrite(st,HIGH);
delay(1);
digitalWrite(st,LOW);
delay(1);
}
delay(200);
for(int i=0;i<40;i++){ //Realizamos las 40 mediciones
delay(10);
digitalWrite(TRIG,LOW);
delayMicroseconds(5);
digitalWrite(TRIG, HIGH);
auxx=pulseIn(ECO, HIGH);
tiempo_aux=tiempo_aux + auxx;
if(auxx>mayor)
mayor=auxx;
if(auxx<menor)
menor=auxx;
}
tiempo=(tiempo_aux-menor-mayor)/38; //Eliminamos las muestras
tiempo_aux=0; // de los extremos y prom.
distancia= int(0.017*tiempo*100); //Convertimos a cm
Doncel – Escribá - Gerlini Trabajo Final Ultrasonido 9
Serial.println(distancia); // Enviamos datos a Matlab
}
for (total=0; total < 28 ; total++){ //Retornamos a la
for (a=0; a<1400;a++ ){ //posicion inicial
digitalWrite(dir, HIGH);
digitalWrite(st, HIGH);
delay(1);
digitalWrite(st, LOW);
delayMicroseconds(500);
}
}
}
}
// Tecla para mover el carrete a la izquierda
if (digitalRead(izquierda) == HIGH){
digitalWrite(st, HIGH);
//delayMicroseconds(800);
delay(1);
digitalWrite(st, LOW);
delayMicroseconds(500);
//delay(1);
}
// Tecla para mover el carrete a la derecha
if (digitalRead(derecha) == HIGH){
digitalWrite(dir,LOW);
digitalWrite(st, HIGH);
//delayMicroseconds(800);
delay(1);
digitalWrite(st, LOW);
delayMicroseconds(500);
//delay(1);
}
}
7.1 Función de Matlab
function Matlab_Arduino(numero_muestras)
close all; clc; y=zeros(1,1000); %Vector donde se guardarán los datos
Doncel – Escribá - Gerlini Trabajo Final Ultrasonido 10
%Inicializo el puerto serial que utilizaré delete(instrfind({'Port'},{'COM6'})); puerto_serial=serial('COM6'); puerto_serial.BaudRate=9600; set(puerto_serial,'Baudrate',9600); set(puerto_serial,'DataBits',8); set(puerto_serial,'Parity','none'); set(puerto_serial,'StopBits',1); set(puerto_serial,'FlowControl','none'); warning('off','MATLAB:serial:fscanf:unsuccessfulRead');
%Abro el puerto serial fopen(puerto_serial);
%Declaro un contador del número de muestras ya tomadas contador_muestras=1;
%Envio comando de inicio para el microcontrolador
fprintf(puerto_serial,'%s','1');
%Creo una ventana para la gráfica xlabel('Número de muestra'); ylabel('Altura (cm)'); grid on; hold on;
%Bucle while para que tome y dibuje las muestras que queremos while contador_muestras<=numero_muestras ylim([0 30]); xlim([0 30]); valor_leido=fscanf(puerto_serial,'%d')'; y(contador_muestras)= 30 -(valor_leido(1)/100); disp(valor_leido(1)/100) plot(contador_muestras,y(contador_muestras),'X-r'); drawnow contador_muestras=contador_muestras+1; end
%Cierro la conexión con el puerto serial y elimino las variables fclose(puerto_serial); delete(puerto_serial); clear all;
end