Cientificosaficionados.com

Los foros de los científicos aficionados de la red.
Fecha actual Jue Oct 17, 2019 6:14 pm

Todos los horarios son UTC [ DST ]




Nuevo tema Responder al tema  [ 395 mensajes ]  Ir a página Anterior  1 ... 36, 37, 38, 39, 40
Autor Mensaje
NotaPublicado: Dom Sep 08, 2019 12:55 pm 
Desconectado
Avatar de Usuario

Registrado: Dom Feb 11, 2007 10:16 pm
Mensajes: 4890
Ubicación: Islas Baleares, España
He seguido trabajando con la parte matemática del sistema UPP, y poco a poco he ido desgranando resultados...

Para empezar establecí el sistema de unidades de cálculo en décimas de milímetro (0,1 mm.), con lo cual, según los datos obtenidos en una simulación anterior de emisión-recepción directa, en que obtuve lecturas con variación de +/- 1 unidad sobre 20.000, en teoría el software del sistema podría responder a un precisión de 0,2 mm...

Naturalmente, cuando incorpore el sistema físico de transmisión por ultrasonidos, la precisión será inferior. Yo establecí la meta que creo realista en una precisión de 1 cm. para "campos" de 4 metros de lado... así que veremos al final en qué queda la cosa...

Luego, para hacerme alguna idea previa, realicé un programa de Arduino que me calculaba las coordenadas de las hipérbolas creadas por un eje de orientación horizontal y distancia entre focos de 40.000 u. (4 metros), explorando con un bucle "for()", valores desde -20.000 a +20.000 (recordar que el eje de coordenadas ocupa el centro 0,0)... Y con los valores obtenidos realicé gráficas, comprobando que el sistema seguía bien las curvas hiperbólicas...

Los cálculos los realicé utilizando las fórmulas canónicas, pero con la de eje vertical me salían resultados extraños, sólo obtenía datos en un pequeño margen... hasta que me di cuenta que al ser curvas que sólo existen desde su vértice hacia valores mayores, por debajo de este valor la variable Y no tiene ninguna correspondencia de X, con lo cual el algoritmo del Arduino en vez de un número me daba "nan" que significa "not a number"...

Estos días me he visto obligado a refrescar algunos olvidados conceptos de matemáticas, pero me ha resultado hasta interesante.

Para simplificar los cálculos he desarrollado fórmulas a partir de otras, y algunas me han llevado bastante trabajo a pesar de que por suerte no aparecen por ningún sitio expresiones de segundo grado, porque o bien me equivocaba en algún paso de transformación o el resultado era más enrevesado que el original. Naturalmente, como algunas operaciones implicarán divisiones, las variables deberán ser decimales del tipo "float", porque con enteros la cosa no iría ni a tiros. A la vez, recordar que las incógnitas son solamente X e Y, puesto que "a" y "b" son cantidades numéricas conocidas que dependen de la diferencia de tiempos entre impulsos y de la distancia entre emisores, con una relación de cálculo que ya expliqué en un mensaje anterior...

.. Al final de las fórmulas canónicas me ha salido esto:

Para eje horizontal: b²x²-a²y²-a²b²=0
Para eje vertical__: b²y²-a²x²-a²b²=0

De las cuales, para despejar x² (cuya raíz se obtendrá al final, si se necesita) han salido:

Para eje horizontal: x² = (a²y²+a²b²)/b²
Para eje vertical__: x² = (b²y²-a²b²)/a²

Para identificar los parámetros de la primera curva de eje horizontal añadiremos la letra "h" y para la curva de eje vertical la "v", con lo cual quedaría:

Para eje horizontal: xh² = ((ah²·yh²)+(ah²·bh²))/bh²
Para eje vertical__: xv² = ((bv²·yv²)-(av²·bv²))/av²

¿Y todo esto para qué? ...pues para poder hallar de forma algebraica el punto de intersección entre dos hipérbolas pertenecientes a diferencias de tiempo de emisores distintos. Realizar el cálculo por álgebra es mucho más "elegante" y rápido que hacerlo por "fuerza bruta" mediante bucles incrementales probando valores hasta que coincidan. Como le dije a Baldo, esta segunda opción sólo la habría intentado si hubiera visto muy complicada la primera...

Para el algoritmo que me encuentra el punto de coincidencia ya no ha hecho falta acudir a mi amigo matemático. En este punto es evidente que los valores de X e Y (y por tanto sus cuadrados X² e Y²) de ambas curvas serán iguales, por tanto, si enfrentamos el X² de la curva "horizontal" con el X² de la "vertical" nos queda así:

((ah²·yh²)+(ah²·bh²))/bh² = ((bv²·yv²)-(av²·bv²))/av²

Despejando...

(((ah²·yh²)+(ah²·bh²))/bh²) - (((bv²·yv²)-(av²·bv²))/av²) = 0

Como las Y serán también iguales, tanto la yh² como la "yv²" podrán sustituirse por la misma Y²

(((ah²·Y²)+(ah²·bh²))/bh²) - (((bv²·Y²)-(av²·bv²))/av²) = 0

Despejando la Y² al final obtengo la expresión:

Y² = -((bh² · av² · bv²)+(av² · ah² · bh²)) / ((av² · ah²)-(bh² · bv²));

De aquí ya obtendré la Y² que corresponde al punto Y de corte entre las dos curvas.
Ahora, para encontrar la X² coincidente bastará aplicar cualquiera de las fórmulas de la Hipérbola H o V...

X² = ((ah² · Y²) + (ah² · bh²)) / bh²

Luego sacando las raíces de X² e Y² ya tendríamos el punto de corte y por tanto la situación real del receptor en el área de cobertura del sistema...

Un problema que me he encontrado han sido los signos, porque los valores al cuadrado siempre los convierten en +, y además las raíces tienen dos valores + y -. Para discriminarlos bastan dos simples órdenes

if(Dif_H<0) X = -X; // Si la diferencia de tiempos H es negativa, X será negativa
if(Dif_V<0) Y = -Y; // Si la diferencia de tiempos V es negativa, V será negativa


Imagen

Una vez trasplantado todo eso a código y realizadas las primeras pruebas utilizando distintas diferencias de tiempos calculadas a partir de coordenadas X e Y reales, los resultados de situación han sido totalmente coincidentes.

Continuará...

Saludos

_________________
La VIDA sólo es energía que ha aprendido a defenderse... (Anilandro)

*** La Web de Anilandro *** http://sites.google.com/site/anilandro


Arriba
 Perfil  
 
NotaPublicado: Dom Sep 08, 2019 1:34 pm 
Desconectado

Registrado: Mar Nov 10, 2009 3:26 pm
Mensajes: 4739
Ubicación: Madrid
País: españa
Ciudad: madrid
Perdón por irrumpir sin méritos ni conocimientos suficientes. Es solo para comentar las dificultades insalvables o casi que tuvo hace unos años un amigo que necesitaba conocer el nivel de agua de un embalse de varios metros de profunfidad con una precisión inferior al milímetro.
En sus primeros intentos usaba transductores ultrasónicos, pero tenía muchos problemas por los cambios en la velocidad del sonido en función de la tempertaura y la presión atmosférica.
Sé que finalmente lo resolvió no sé como. En ese tiempo no había arduino pero sí otros micros.


Arriba
 Perfil  
 
NotaPublicado: Dom Sep 08, 2019 2:46 pm 
Desconectado
Avatar de Usuario

Registrado: Dom Feb 11, 2007 10:16 pm
Mensajes: 4890
Ubicación: Islas Baleares, España
Ninguna interrupción, Joseluis... Por el tema que citas es precisamente por el que establezco la meta de precisión de 1 cm en un cuadrado de 4x4 metros, con la que ya estaría más que contento. A la vez, estoy intentando que otros errores de la cadena sean lo más pequeños posible (en el conjunto del software es de tan solo 0,2 mm.)

Sin duda, la variación de la velocidad del sonido con la temperatura es un factor importante de error (en m/s, la velocidad es 331+0,61 x Cº), error que sería casi nulo en el centro de coordenadas pero iría aumentando al alejarnos de la cruz. No obstante habría métodos para minimizarlo. Por ejemplo, de forma muy simple con un sensor NTC que corrija las lecturas en el receptor, o de forma un poco más sofisticada por el sistema que propuse de efectuar dos emisiones de impulsos en cada eje, primero en un sentido y luego en el otro, con lo cual, como el error de velocidad/tiempo tendrá signo contrario, podrá anularse...

En fin, sigo paso a paso con el tema...

Saludos

_________________
La VIDA sólo es energía que ha aprendido a defenderse... (Anilandro)

*** La Web de Anilandro *** http://sites.google.com/site/anilandro


Arriba
 Perfil  
 
NotaPublicado: Sab Sep 14, 2019 8:29 pm 
Desconectado
Avatar de Usuario

Registrado: Dom Feb 11, 2007 10:16 pm
Mensajes: 4890
Ubicación: Islas Baleares, España
He seguido trabajando en el tema del UPP, en concreto he hecho un programa de simulación para el "campo" de hipérbolas, que me suministra los valores de cada curva determinada por su "diferencia" de tiempos o distancias, que para una velocidad constante viene a ser lo mismo, y también los posibles límites de los puntos de cruce, ya que en distancias próximas a los emisores las hipérbolas se "doblan" mucho hacia a fuera, y en algunas situaciones físicas no habría ningún punto de cruce con la curva de eje perpenticular...

Imagen

Esta primera numeración muestra grupos de coordenadas de dos hipérbolas iguales pero con sus ejes girados 90º. El grupo de arriba es de curvas con una diferencia de distancia de 150,00. (cuyo punto de origen el los ejes de coordenadas es siempre la mitad, 75,00). Con estos datos podemos dibujar las curvas, pero además el programa nos proporciona el punto de corte entre ambas, que en concreto es X=82,01 e Y=82,01.

...En estas cifras vemos que las coordenadas de corte X e Y son naturalmente iguales, porque ambas curvas tiene la misma "diferencia" y sus ejes son perpenticulares, por lo tanto, en estas circunstancias, los puntos de cruce estarán siempre situados sobre su mediana...

...A continuación una representación parcial (de un solo cuadrante) de las curvas obtenidas con estas series de números. Los focos o emisores son los puntos azules situados en las coordenadas 200, y los puntos rojos son los de corte entre ambas curvas.
Aquí también puede observarse lo que ya he dicho, que el principal parámetro que define la hipérbola, que es la "diferencia" de distancias a los "focos" (en azul), son el doble de la coordenada al cruzar el eje X o Y...

Imagen


En este gráfico observamos otra cosa. Como las curvas de mayor "diferencia", 275, no se cortan en la parte representada, pero en cambio sí lo harían "fuera del papel", en concreto en las coordenadas X=427 e Y=427. Dos curvas con algo más de "diferencia", pongamos 300, ya no se cortarían en ningún punto, y por tanto no servirían para situarnos, aunque como veremos más tarde, una curva de 300 y otra de 160 sí lo harían...

Continuará...

Saludos

_________________
La VIDA sólo es energía que ha aprendido a defenderse... (Anilandro)

*** La Web de Anilandro *** http://sites.google.com/site/anilandro


Arriba
 Perfil  
 
NotaPublicado: Dom Sep 15, 2019 10:05 am 
Desconectado
Avatar de Usuario

Registrado: Dom Feb 11, 2007 10:16 pm
Mensajes: 4890
Ubicación: Islas Baleares, España
El anterior listado se refería a coordenadas X-Y de pares de hipérbolas iguales pero giradas 90º, en que veíamos los límites de los puntos de corte sobre la línea mediana entre las curvas. Ahora muestro otro tipo de listado que también me suministra mi programa, y que calcula los puntos de corte entre curvas asimétricas, en concreto ésta es de una hipérbola de eje horizontal con "diferencia" DifH=260, una serie de 24 hipérbolas de eje vertical, desde DifV=0 a DifV=230, que es la última que para esta horizontal tiene el punto de corte inferior a coordenadas X o Y 210.

Este límite de coordenadas X-Y "aceptables" para el sistema UPP, de 210, lo he establecido por dos motivos. El primero es que no podemos superar demasiado el cuadrado teórico de -200 a +200 que representa un cuadrado físico de 4x4 metros, porque si bien aún más allá podrían determinarse situaciones, en la zona exterior el error provocado por el ángulo cada vez más agudo con que se cruzan las hipérbolas crece de forma geométrica, y el segundo es que además existen "zonas de sombra" más allá de los puntos emisores en que las curvas no se cortan y por tanto no puede conseguirse una situación.

Imagen


Con los puntos de corte obtenidos de esta segunda serie de datos, he dibujado un gráfico en que se ve uno de los cuadrantes de 2x2 metros que forman la superficie total de 4x4, y la zona marcada en rojo en que el sistema UPP proporcionaría las coordenadas de la situación física del receptor...

Imagen


...Las hipérbolas las he dibujado a mano desde su origen en los ejes X e Y hasta los puntos de corte determinados en las listas de datos, así que es posible que la forma de las curvas sea mejorable, pero eso no afecta al área entre límites marcada en rojo, e incluso así puede verse su mayor "inclinación" a medida que nos acercamos a los focos emisores, situados a 200 (200 cm en la realidad) del origen de coordenadas...

Continuará...

Saludos

_________________
La VIDA sólo es energía que ha aprendido a defenderse... (Anilandro)

*** La Web de Anilandro *** http://sites.google.com/site/anilandro


Arriba
 Perfil  
 
Mostrar mensajes previos:  Ordenar por  
Nuevo tema Responder al tema  [ 395 mensajes ]  Ir a página Anterior  1 ... 36, 37, 38, 39, 40

Todos los horarios son UTC [ DST ]


¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 2 invitados


No puede abrir nuevos temas en este Foro
No puede responder a temas en este Foro
No puede editar sus mensajes en este Foro
No puede borrar sus mensajes en este Foro

Buscar:
Desarrollado por phpBB® Forum Software © phpBB Group
Traducción al español por Huan Manwë para phpbb-es.com