1era Entrega Informe - USB-EC3883-III-2019/EC3883-G01 GitHub Wiki
Universidad Simón Bolívar
Departamento de Electrónica y Circuitos
Profesor: Novel Certad
Asignatura: Laboratorio de Proyectos III
Código: EC-3883
Trimestre: Septiembre – Diciembre 2019
SOLINDAR (Sonar/Lidar)
Integrantes del grupo:
Fulvio D’Adazzio Carnet: 07-40794
Harold Harting Carnet: 14-10477
Sección: 1 Grupo: 1
INTRODUCCIÓN
En esta propuesta de proyecto se presenta el esquema con el cual se realizará la adquisición de datos de un sonar y un lidar, el cual se divide a modo general en 3 partes, canal de adquisición de datos y protección, procesamiento digital y la interfaz gráfica con la interpretación de las señales de entrada. Dado este desglose, se tienen 3 objetivos principales:
• Elaborar un sistema de adquisición y acondicionamiento de datos apto para el DEMOQE128, que será el microcontrolador a usar.
• Codificar un programa que permita a nuestro microcontrolador procesar los datos y entregarlos a la PC, además de implementar los distintos modos de operación para cada sensor.
• Desarrollar de una interfaz para lograr la visualización de la señal obtenida en la PC.
Dado este desglose, el objetivo principal constituye la elaboración de un SONAR/LIDAR de dos dimensiones de bajo costo y con fusión sensorial.
ESPECIFICACIONES:
-Modos de operación: Sonar, Lidar y Fusión.
-Rango de 30mm a 80mm.
-Comunicación vía Bluetooth (100m, 2.4 GHz, BW: 500kbps).
-Motor de pasos.
-Sensores ultrasónico de distancia (SRF04) e infrarrojo de distancia (SHARP GP2Y0A21YK).
-Posición cero (opto-switch).
-Microcontrolador DEMOQE128.
SISTEMA DE ADQUISICION DE DATOS: ACONDICIONAMIENTO DE LA SEÑAL
Es necesario que la señal se encuentre dentro del rango de 0 a 3V para ser pasada al microcontrolador sin inconvenientes, es por esto el convertidor de nivel en esta etapa.
PROCESAMIENTO DE LA SEÑAL
La señal analógica luego de pasar por la etapa de acondicionamiento pasará a ser convertida en una señal binaria por el conversor integrado (de 12 bits) en el microprocesador.
El codigo del mcirocontrolador se divide en 3 secciones basicamente, cada seccion controlada por una interrupcion distinta, y todas dentro de un ciclo infinito, primero tenemos la interrupcion del motor:
Donde la variable motor se cambia a 1 cuando ocurra una interrupcion por timer para accerder al ciclo, la logica de este segmento es simple al trabajar con medios pasos tenemos 8 posibilidades y segun cada una de ellas se envia el codigo corresponiente, esto se logro obsevando los intervalos en los que cada bit se enciende o apaga y progamandolo de esa manera en 4 pines de salida del cable plano y enviadolos al motor, y el ciclo mas grande es simplemente las 72 posiciones que utilizamos para abarcar aproximadamente 270 grados y la logica apra que se devuelva.
Luego tenemos el ciclo del sonar, que se rige por un capture
El capture tiene una interrupcion cada vez que detecta un flanco (bien sea subida o bajada) este segmento simplemente detecta cual fue y si es subida resetea el timer del capture y cuadno es bajada toma el timer, de esta manera sabemos el tiempo que la senal estuvo en “1”.
y por ultimo tenemos un bloque un poco mas complejo donde se manejan principalmente 3 cosas, el trigger del sonar, la data del lidar y el envio de datos
tambien controlado por un timer, al entrar al ciclo primero envia el triger al sonar y enciende el timer de los 10microseg minimos dle trigger, el cual niega el pulso y se apaga, asegurando 1 solo trigger por ciclio de datos, el ADC esta configurado para convertir el pin donde lelga la senal del lidar, asi que cada vez que se quiera el dato simplemente se mide el ADC, ya con todos los datos necesario se procede al empaquetado/entramado, segun el esquema acordado como se puede observar en la imagen, y por ultimo se envia el paquete por el puerto serial.
INTERFAZ GRÁFICA
Para esta última etapa, se decodifica la trama proveniente del microcontrolador y a través del protocolo de comunicación serial RS-232 se establece la transmisión de datos desde el microcontrolador a la PC.
Para la interfaz, se contaba con un diseño demo previo que consta de 1 display para visualizar las señales del lidar y sonar provenientes del microcontrolador. Botones para la selección de los modos. Una válvula que servirá como indicador para mostrar el valor de la posición (ángulo). Campos para mostrar la distancia y ángulo de los datos leídos por los sensores. Por último, se colocó un switch para habilitar o deshabilitar la opción para llevar un log con todos los datos leídos.
Se probó el activar y desactivar del display ambos modos. A continuación, se muestra solamente el modo LIDAR en pantalla:
Para realizar esta prueba, se implementaron arreglos de datos aleatorios para simular los datos obtenidos por el sonar y el lidar. Se utilizaron las siguientes sentencias:
Finalmente, para esta versión demo, se implementó el guardado de datos en un documento de texto. Para ello se muestra a continuación los comandos empleados y la visualización del resultado final del log obtenido:
Ya pasando a la version serial, se adaptó la interfaz en AppDesigner (Matlab 2018). El display final se elaboró de la siguiente manera:
Se implementaron botones de activación y desactivación de los distintos sensores, en este caso, se muestran ambos (sonar y lidar) en el display. A su vez, se dispone de un switch para activar el log de datos obtenidos en cada uno de los modos.
A manera de demostración se muestran el sonar, lidar y la fusión por separados:
Al activar el log se tiene como resultado:
Y el archivo en donde son guardados se ve así:
Ahora se detalla la programación implementada. En primer lugar se definieron todas las variables de uso pertinente para cumplir con lo propuesto.
Luego se inicializaron como se muestra en la siguiente imágen:
Para la parte de decodificación se realizó como se muestra a continuación:
Las funciones que se implementaron aparte del código en AppDesigner fueron las siguientes:
En decoding se implementó la lógica necesaria para desentramar los datos provenientes del puerto. Esto por supuesto, siguiendo el protocolo de comunicación ya establecido anteriormente.
En la conversión, se escala todas las variables de datos para su posterior uso en el display de la interfaz. Se multiplica el sonar por el factor de conversión ya calculado. La posición es escalada de acuerdo a los pasos totales del motor y se debe también transformar a radianes debido a que el Polar Axes empleado para la graficación requiere de variables en radianes para realizar las gráficas. Para el lidar, se empleó un polinomio de caracterización para adecuar la escala y que los datos muestren una medida aproximada en cms de la distancia medida.
En el modo fusión se seleccionó entre las dos medidas de los sensores según el error en la distancia de la medida de cada uno para seleccionar según sea conveniente uno u otro. Si son parecidas las medidas, se realiza un promedio entre las dos y se grafica.