jueves, 24 de noviembre de 2016

Manera de calcular los cortes de unas patas en aspa con Excel.


Esta vez el supuesto es construir una mesa con las patas en aspa o en X. Con el libro excel calculo longitudes y cruces de las patas. Para el cálculo de unas patas en aspa, en principio, considero dos valores, la altura que queremos tener y la separación entre los extremos de las patas. Este supuesto es para patas simétricas. Las patas se cruzan en el centro del aspa. La parte carpintera permite, una vez fijadas la separación entre los extremos de las patas y ancho del listón, calcular el ángulo de corte y las distancias que indican por donde se cruzan ambas patas. Con la barra de desplazamiento de la hoja "Inicio" se selecciona el ángulo de corte (en décimas de grado) hasta alcanzar una la altura deseada.

Si queremos construir físicamente el aspa:
  • Desde uno de los extremos trasportamos el ángulo con un transportador de ángulos, o llevamos la distancia aa' desde la esquina contraría siguiendo el listón.
  • Llevamos las distintas medidas, según la gráfica de la hoja "Inicio"



Mi propia función en Excel:
  • Los cálculos teóricos son básicamente trigonométricos.
  • No son especialmente complejos, pero como llevo muchísimos años sin trabajar con senos, cosenos, tangentes, etc, me ha costado mas de la cuenta.
  • Además, como he llegado a una función un poco demasiado compleja para mi perdida base matemática, decidí no intentar resolverla. Para mi era demasiado compleja y además quería resolverla de otra manera, con excel, tanteando con distintos valores hasta encontrar el valor mas aproximado posible.
  • De paso toco de nuevo la posibilidad de hacer nuestras propias funciones con vbasic para excel.
  • La función no resuelta es Altura=(DistEntrePatas-AnchoListón/SENO(RADIANES(a)))*TAN(RADIANES(a))
Este método solo funciona para funciones, o tramos de funciones,  continuas y crecientes o decrecientes pero que no presenten ni picos ni valles. Las sucesivas aproximaciones se hacen fijando dos extremos, dos valores que sabemos que definen un tramo que cumple lo antes dicho, continuidad, crecimiento (o decrecimiento) y ausencia de picos y valles.
  • Hay que calcular el ángulo que nos va a dar la altura deseada. Fijamos, por tanto, la la altura deseada, en este caso en la hoja Aprox F2, el ancho de tabla y la separación entre patas.
  • Calculamos el valor medio de ambos extremos, en este caso el ángulo en grados.
  •  Calculamos, en este caso, las alturas en función de los grados, de los tres valores, límite inferior, límite superior y valor medio.
  • Si la altura correspondiente al valor medio supera la altura deseada, el valor del límite superior pasa a ser el valor medio.
  • Si la altura correspondiente al valor medio es inferior a la altura deseada, el límite inferior pasa a ser el valor medio.
  • Si la función fuese decreciente el cambio de límites sería al contrario.
  • Cada vez que se repite este proceso se aproximan los límites inferior y superior, hasta alcanzar el valor que resuelve nuestra ecuación.
  • En el ejemplo hago 64 repeticiones, mas que suficientes para resolver mi irresoluta ecuación.
  • Por otra parte, es poco práctico llenar una hoja de fórmulas bastante complejas cuando podemos crear una función en vbasic que nos resuelve nuestro problema.
  • Con alt+f11 podemos ver los módulos con la programación vbasic del libro y ver las distintas funciones creadas para resolver la función que resuelve nuestro cálculo.
  • En la hoja Aprox, celda L3 y columna E, utilizo un par de  funciones creadas por mi. Su funcionamiento es idéntico a cualquier otra función propia de excel.




jueves, 27 de octubre de 2016

Valores de un control que dependen de otro anterior.


Tengo dos controles, dos listas desplegables. El tema es que tengo hasta nueve colores, situados en tres bandas pintadas sobre una resistencia (electrónica). La primera banda me indica el primer dígito del valor, en ohmios, de una resistencia. La segunda banda me indica el segundo dígito de ese valor y la tercera multiplica los dos dígitos anteriores por 10, 100, 100,....
Color
1ªFranja 2ªFranja
Marron 10 Marron Negro
Rojo 12 Marron Rojo
Naranja 15 Marron Verde
Amarilla 18 Marron Gris
Verde 22 Rojo Rojo
Azul 27 Rojo Violeta
Gris 33 Naranja Naranja
39 Naranja Blanca
47 Amarilla Violeta
51 Verde Marron
56 Verde Azul
68 Azul Gris
82 Gris Rojo


Con dos desplegables puedo seleccionar el primer color con el primer desplegable y el segundo color con el segundo desplegable. 
El único problema es que no todas las combinaciones posibles se fabrican comercialmente. Solo se pueden dar unas pocas combinaciones, según la tabla anterior. Algunos colores de la primera banda pueden combinar con catro colres, otros con dos, etc...

¿Puedo variar los item del segundo desplegable en función del color del primero?
¿Como vario los item del segundo desplegable en función del color del primero?

Por supuesto, se puede, pero hay que utilizar rangos con nombre.

  • El primer desplegable no tiene problema, se trata como cualquier otro, no tiene nada en especial. Por tanto indicamos el rango de entrada (Aux!$J$15:$J$21) y la celda a la que está vinculado (Aux!$C$14)
  • Antes de empezar a trabajar con el segundo desplegable hay que pensar como vamos a conocer el rango de los segundos colores. Podría hacerlo a mano, en el ejemplo hay pocas líneas y, además, no varían con el tiempo, pero si hubiese una gran cantidad de líneas sería francamente complicado.
  • En este caso, se puede hacer de varias maneras, utilizo primero la función INDIRECTO para recuperar el nombre del color, en la celda vinculada al desplegable esta la posición del color dentro de la lista de colores. =INDIRECTO("j" & Aux!$C$14+14)
  • Cuento el número de veces que aparece el color en la segunda lista, la lista de los dos colores con =CONTAR.SI($L$15:$L$27;$A$16)
  • Hasta el momento podemos utilizar nombres o rangos tal cual los escribimos habitualmente.
  • Encontramos la primera aparición, en la segunda lista, del color deseado. =COINCIDIR($A$16;$L$15:$L$27;0)+14
  • Generamos, como texto, el rango en el que se encuentran los segundos colores. =("Aux!$m$" &C16 & ":$m$" & C16+B16-1)
  • Entramos en administrador de nombres y añadimos un nombre, en este caso SColor y la función indirecto, con la dirección generada en el paso anterior.  =INDIRECTO(Aux!$D$16)
  • Aparece otro pequeño problema, cada color combina con un número de colores distinto. Si la celda vinculada al segundo desplegable tiene un número superior al de colores del desplegable nos provoca un error.
  • La solución encontrada es vincular el segundo desplegable a una celda distinta por color del primer desplegable.
  • Con el administrador de nombres creamos una variable (CV).=INDIRECTO("Aux!h" &Aux!$C$14+14)
  • El nombre del segundo color se obtiene con la función  =INDICE(SColor;CV)


martes, 25 de octubre de 2016

Código de colores de una resistencia con excel. Directo e inverso

Para conocer el valor de una resistencia se utiliza un código de colores a cuatro bandas, la primera banda se reconoce porque es la más cercana al borde del cuerpo de la resistencia mientras que la cuarta banda (la tolerancia) está más separada respecto a las otras tres. 

  • Los colores posibles de las dos primeras banda son 9. Cada uno corresponde a un número entre 0 (negro) y 9 (blanco) , siguiendo el orden de los colores del arco iris (negro, marrón, rojo, naranja, amarillo, verde, azul, gris y blanco).
  • La primera banda nos indica el primer dígito del valor de resistencia. La segunda banda nos da el segundo dígito de dicho valor. Los dos dígitos de las primeras dos bandas nos dan un número que puede variar entre 0 y 99.
  • La tercera banda es el multiplicador, es decir, un factor con el cual debemos multiplicar el número de las dos primeras bandas. Por ejemplo, si el valor de las primeras bandas es 47 y el multiplicador es 1000 (o 1K) el valor de resistencia será de 47.000 ohms (47K). En la tabla pueden ver todos los colores, las bandas y los valores correspondientes. En la parte alta del diseño podemos ver un ejemplo concreto.





Para resistencias codificadas con 4 bandas el más conocido se llama E12 y está compuesto, como su nombre lo indica, por una serie de 12 números que son: 10, 12, 15, 18, 22, 27, 33, 39, 47, 56, 68, 82 y que se repiten para cada década del multiplicador. En la figura podemos ver todos los valores estándar E12 posibles que son 108 (12 números x 9 multiplicadores posibles). Por ejemplo, una resistencia con las dos primeras bandas rojas tendrá un valor numérico de 22 pero en base a la tercera banda el valor final podrá ser de 0,22 ohms, 2,2 ohms, 22 ohms, 220 ohms, 2,2K, 22K, 220K, 2,2M o 22M.

Cuando empecé con la calculadora de resistencias en Excel ya sabía que no todas las posibles combinaciones de colores se correspondían con un valor comercial, pero consideré que, en un primer intento no iba a contar con ello, por lo que en el libro excel se pueden seleccionar combinaciones de colores que que no se fabrican. A la inversa, a partir de un cálculo matemático en el que encontramos un valor de resistencia, la hoja de cálculo solo da valores comerciales.

La hoja de cálculo permite saber el valor de una determinada resistencia a partir de sus colores (3 colores) y el conocer los colores que corresponden a un determinado valor de una resistencia teórica como suma de hasta tres valores comerciales, en ohmios, siempre y cuando el valor teórico sea entero y superior a 10 ohmios. Creo que haré una nueva versión contemplando esos detalles.


Funciones utilizadas:
  • Indirecto(Cad):Convierte una cadena alfanumérica en una dirección excel.
  • Indice(). Devuelve el contenido de una celda incluida en un rango.
  • Extrae(texto;pos. inicial;N. Caract.). Devuelve una serie de caracteres de una cadena.
  • Coincidir(valor;matriz;tipo busq.). Encuentra un valor en un rango de valores.
  • Si.Error(valor;valor si error). Si se produce un error devuelve un valor determinado por el segundo parámetro.
Variables y rangos con nombre:
  • CFr1:=Aux!$A$3:$A$11 Colores de la primera franja.
  • CFr2:=Aux!$A$2:$A$11. Colores de la segunda franja.
  • CFr3:=Aux!$C$2:$C$10. Colores de la tercera franja.
  • VCom1:=Resistencia!$D$13. Valor comercial 1.
  • VCom1:=Resistencia!$F$13. Valor comercial 2.
  • VComer:=Aux!$K$2:$K$92. Valores comerciales.
  • VForm:=Resistencia!$B$13. Valor teórico de la resistencia.

Formato condicional en las celdas B2 a B5 de la hoja Resistencia.

Valor de una resistencia según sus colores:

  • El color de cada una de las bandas se selecciona mediante un desplegable. El color, en este caso, aparece como un literal. 
  • Cada desplegable tiene una celda vinculada con el valor seleccionado. En este caso de C2 a C5.
  • Los valores numéricos correspondientes a cada color de cada banda están en la hoja Aux.
  • Para recuperar cada valor utilizo, en este caso, la función INDIRECTO. Con una sola fórmula calculo el valor total (=(INDIRECTO("Aux!B" & C2+2)*10+INDIRECTO("Aux!B" & C3+1))*INDIRECTO("Aux!d" & C4+1))
  • Este cálculo también se puede hacer mediante la función INDICE. (=(INDICE(Aux!B3:B11;$C2)*10+INDICE(Aux!B2:B11;$C3))*INDICE(Aux!D2:D9;$C4). Los rangos a los que se refieren las funciones INDICE pueden sustituirse por un nombre de rango, que previamente se haya dado de alta con el administrador de nombres.
  • Por último, hay  una pequeña comprobación de que un determinado valor esta en la tabla de valores comerciales. (Celdas H y J).


Formato condicional:

  • Los formatos condicionales de las celdas con formato condicional, en este caso, dependen del valor de la celda asociada al desplegable. Así que  el formato condicional depende de una fórmula. Utilizo la formula =c2=1 para dar de fondo un color marrón. Es un poco pesado, hay que hacerlo de uno en uno.
Valores comerciales que nos aproximan a un valor calculado:
  • Aquí utilizo la función COINCIDIR(VBuscado;Rango en donde se busca; tipo de búsqueda), en este caso tipo de búsqueda=1, con el que encuentra, en una lista ordenada, el último número que es menor o igual al valor buscado. Esta función nos devuelve la posición en la que está el valor buscado, no el valor encontrado. Con la función INDICE recupero el valor encontrado.  =INDICE(VComer;COINCIDIR(VForm;VComer;1)), utilizando además nombres en vez de rangos.
  • Las otras dos resistencias, en serie, se calculan restando al valor inicial las resistencias encontradas y, con ese valor, repetir el proceso de búsqueda.


Segundo color dependiendo del primero





jueves, 29 de septiembre de 2016

PSeudo Osciloscopio con Excel.

Se trata de utilizar un gráfico del tipo XY para ver, y medir, la forma de una señal eléctrica.
Tengo un par de proyectos pendientes, uno de ellos poner en marcha de nuevo una vieja mobylette campera. La bobina es nueva, los platinos son nuevos, el circuito eléctrico está bien pero no da chispa, no es que de chispa fuera de tiempo, es que no da chispa.
Con un microprocesador Arduino Uno construí un pequeño aparato de medida para medir la señal en los platinos. Básicamente la cosa consiste en medir, mediante el conversor A/D del arduino, el nivel de tensión y escribir en una tarjeta SD ese valor y el tiempo, en microsegundos, en el que se hace la medida. Anoto el valor de conversión A/D leido no el valor en voltios.
El conversor A/D de Arduino es lento, para medir señales de alta frecuencia no vale, pero para este aparato de medida, si.
Otro tema es ver la señal. Hice, utilizando una pantalla tft, un preliminar para ver la señal en el propio aparato. Ya en una ocasión anterior había tocado este tema, ver la señal mediante un gráfico excel, así que decidí terminarlo.
  • Los datos los paso a excel, de momento, mediante un copia-pega. Habro el fichero con las medidas y las copio a Excel (Datos0)
  • El gráfico, como ya he dicho, es del tipo XY con rango variable. Para variar el rango utilizo la función desref().
  • El concepto es "voy a ver n puntos a partir de un punto punto determinado.
  • Tanto para seleccionar el primer punto como para determinar el número de puntos a ver utilizo barras de desplazamiento.




Variables y rangos con nombre:
  • BDI (=Aux!$A$2) Celda vinculada con la barra de desplazamiento que selecciona el primer punto de la gráfica.
  • BDI (=Aux!$B$2) Celda vinculada con la barra de desplazamiento que selecciona el número de puntos de la gráfica.
  • Mcrs. (=DESREF(Datos!$D$2;BDI;0;BDN;1)) Rango del eje de tiempos.
  • Vol, =DESREF(Datos!$C$2;BDI;0;BDN;1) Rango de los valores de tensión en el eje Y.
  • Sonda, =Aux!$A$5. Como la tensión de salida en los platinos es superior a 5 v. tuve que construir un divisor de tensión para poder medir tensiones superiores a 5 v. Es el factor de división.
  •  PValorX, =INDIRECTO("datos!$a$" & Aux!$A$2+2). Es el valor del primer punto a representar. Este valor se resta a todos los valores vistos con el fin de que el primer valor en el eje de tiempos de la gráfica sea cero.
  • Leyenda, sin uso como variable con nombre, ="V.Min "&TEXTO(Aux!A3;"0,000")&CARACTER(10)&"V.Max="&TEXTO(Aux!A2;"0,000")&CARACTER(10)&"Microseg="&MAX(Mcrs) &CARACTER(10)&"Sonda="&Sonda
Otras funciones utilizadas:
  • TEXTO(F2;"0,000") : Convierte el valor de F2 en texto con el formato deseado.
  • Max.
  • Min.
Gráfico:
La primera barra de desplazamiento selecciona el primer punto. La segunda, inmediatamente debajo, el número de puntos. Hay una tercera barra sin uso. La serie de la gráfica utiliza rangos con nombre, según:
 =SERIES(Aux!$H$2;SeudoOsciloscopio.xls!Mcrs;SeudoOsciloscopio.xls!Vol;1)

Datos0:
Columna A: Tiempos, sin acumular, entre medidas.
Columna B: Valores A/D medidos.
Columna C: Tiempos acumulados.
Columna D: Igual a columna B.

Datos:
Columna A: Tiempos acumulados. Igual a Datos0!C
Columna B: Valores A/D. Igual a Datos0!B
Columna C: Valor A/D convertido a voltios, teniendo en cuenta el factor del divisor de tensión (sonda).
Columna D: Tiempos, descontado el primer valor del eje de tiempos.





miércoles, 9 de marzo de 2016

Aforador.

  • Me llega una pregunta a través de mi blog AhoraMeDedicoAlCacharreo, alguien esta intentando construir un aforador con un Arduino y me pide ayuda con las formulas. 
  • El aforador mide el nivel de ocupación de un depósito de agua cilíndrico tumbado. De alguna manera se mide la altura o nivel de agua con respecto al suelo.
  • Para emular el sensor de nivel utilizo un potenciometro o divisor de tensión en A0.
  • El espacio vacío, visto desde el alzado, deja un segmento circular sin ocupar. El área del segmento circular es el área del sector circular (quesito) menos el área del triangulo definido por los radios y la cuerda del segmento  vacío (ver gráfica).
Me entra la curiosidad y me pongo a ello. Recupero algunos conceptos ya casi olvidados.
  • Sector circular. "Quesito" que contiene el segmento circular.
  • Segmento circular. Intento encontrar las fórmulas en internet , no me entero de nada, y decido desarrollarlas por mi mismo. A veces es necesario este tipo de decisiones para refrescar conocimientos.
  • Coseno del ángulo suplementario:\cos \alpha = -\cos (180^\circ - \alpha) 
  • Teorema de Pitágoras.
Empiezo el desarrollo de las fórmulas que me permitan calcular los volúmenes correspondientes. Creo que no me he equivocado, creo que las fórmulas son correctas, pero pudiera suceder que no. Ahí va mi borrador.


  • No me entiendo a mi mismo. No se por que calculo de una manera tan rara el tercer lado del triángulo (1/2 de b), si con aplicar directamente  Pitágoras  vale. Conozca la hipotenusa y uno de los catetos, luego R²=h²+b²=>b²=R²-h²=>b=raiz(R²-h²). Podría justificarme diciendo que así utilizamos, y refrescamos, trigonometría.
  • Preparo una batería de medidas para comprobar un posible error al calcular las fórmulas.
  • H, altura del nivel del líquido, H=2*R (2*Radio). Esto equivale a barril lleno. Esta prueba la cumplen.
  • H, altura del nivel del líquido, H=R (Radio). Esto equivale a barril medio lleno. Esta prueba la cumplen.
  • Dos medidas con H=2R-x y H=x. El espacio libre en la primera medida debe ser igual al espacio lleno de la segunda medida y viceversa. Esta prueba también la cumplen para cualquier probado de x.

  • Si menos de la mitad del barril está lleno el segmento  circular menor es el espacio ocupado, no el espacio vacío.


  • Cuando barril tiene un nivel menor a la mitad la altura del  barril, las formulas calculadas siguen valiendo. La altura del triangulo y el coseno del ángulo pasan a ser negativos. Para cosenos negativos la función ACOS de excel y la función  ATAN2 de arduino devuelven el ángulo suplementario, aquel que sumado al ángulo da 180º, lo que al repartir el área del circulo proporcionalmente nos da el área ocupada por el resto del circulo. Como el área del triángulo da negativo, recordemos que h es negativo, al restarla, añadimos al resto del circulo ese valor,  sumando todo ello la parte no ocupada del barril.


Llevo las fórmulas a excel. Utilizo variables con nombre.
  • A=H-R
  • Area_Sector=R^2*ACOS(A/R)
  • Area_Segmento=Area_Sector-Area_Triangulo
  • Area_Triangulo=A*RAIZ(R^2-A^2)
  • H=$Aforador.$E$2
  • L=$Aforador.$B$2
  • R=$Aforador.$A$2
  • Radio=$Aforador.$A$2
  • V=$Aforador.$D$2
  • Volumen_ocupado=V-Volumen_Segmento
  • Volumen_Segmento=Area_Segmento*L
  • Traduzco el desarrollo en excel a código Arduino.

Código Arduino:



#include <math.h>



double Pi=3.1415926536;

double Radio=50,Longitud=100;

double V=pow(Radio,2)*Pi*Longitud, h,AT,HAnt,ASec,ASeg,VSeg,VOcu,PorCen;



unsigned long H;



void setup()

{

Serial.begin(9600);

Serial.println(V);

Calculos();

}



void loop()

{

    H=analogRead(A0)*2*Radio/1023;

  if(H!=HAnt)

  {Calculos();

  //  Serial.println(H);

    HAnt=H;

  }

 

}



void Calculos()

{



  h=H-Radio;

  // Area del triangulo h*RAIZ(R^2-h^2)

  AT=h*sqrt(pow(Radio,2)-h*h);

 // area del sector R^2*ACOS(A/R)

 ASec=pow(Radio,2)*MiACos(h/Radio);

 //Area_Sector-Area_Triangulo

 ASeg=ASec-AT;

 //Volumen segmento Area_Segmento*Longitud

 VSeg=ASeg*Longitud;

 VOcu=V-VSeg;

 PorCen=VOcu*100/V;

 Serial.println("****************************************");

 Serial.println(Radio);

 Serial.println(Longitud);

 Serial.println(V);

 Serial.println(AT);

 Serial.println(ASec);

 Serial.println(ASeg);

 Serial.println(VSeg);

 Serial.println(VOcu,2);

 Serial.println(PorCen,2);

 Serial.println("****************************************");

}



unsigned long Fact(long N)

{unsigned long I;

 unsigned long R=1;

 for(I=1;I<=N;I=I+1)

 {

  R=R*I;



 }

return R;

}



float Grados(float Rd)

{

  float G=(Rd*360)/(2*Pi);

return G;



}



float Radianes(float G)

{

  float Rd=(G*Pi)/180;



return Rd;



}











float Pi4()



{

float signo=1,i;

float p=0,x4=1/2+1/3,x1,x2,x3 ;//1/2+1/3:



for(i=1;i<40;i=i+2)

{

  x1=signo/i;



  x2=1/pow(2.0,i);

  x3=1/pow(3.0,i);



/*

if(i>15)

 {

  x2=1/pow(2.0,15);

  x2=x2/pow(2.0,i-15);

  x3=1/pow(3.0,15);

  x3=x3/pow(3.0,i-15);



 }*/

//p=p+signo/(i*pow(2.0,i))+ signo/(i*pow(3.0,i));

p=p+x1*x2+x1*x3;

signo=signo*(-1) ;

/*Serial.print(i,0);

Serial.print(" ");

Serial.print(x2,20);

Serial.print(" ");

Serial.println(x3,20);*/

}



return p;

}







float MiACos(float R)

{

float S, C, T;

C = R;

S = sqrt(1 - pow(R , 2));









return atan2(S,C);



}





float MiASen(float R)

{

float S, C;

S = R;

C = sqrt(1 - pow(R , 2));







return atan2(S,C);



}


martes, 19 de enero de 2016

Ángulo entre paredes con excel.


Funciones excel utilizadas:
  • ACOS($E$2)
  • GRADOS($F$2)
  • TEXTO(Escala*$Aux.H4;"0,000")
  • Suma()
  • SENO($Datos.$F$2)
  • Implicitamente, coseno.



Variables con nombre : Escala

Dada mi actual sequía de ideas para desarrollar en excel, cualquier parida es una idea. 
El domingo pasado estaba intentando colocar un antiguo reloj de pared en una esquina de mi casa. El mueble, o lo que podríamos llamar mueble, en realidad es una plataforma y poco mas, es un mueble esquinero. El sitio en donde mi mujer decidió que debía ir el reloj es la intersección de dos paredes que no hacen un ángulo de 90º, es un ángulo mas cerrado. Después de hacer los correspondientes taladros en la pared y atornillar unas regletas que hacen de soporte vi que colocar el mueble esquinero no iba a ser tan fácil como yo suponía. Como ya era tarde dejé de trastear, pero no de pensar, y me dije ¿Como calculo el ángulo entre esas paredes?¿Como dibujo una plantilla para hacer un nuevo soporte?
Una vez mas puedo calcularlo, bien gráficamente, bien mediante excel. 

Medidas a realizar: 
  • Marco un origen en la intersección de las dos paredes. 
  • Manteniendo la línea horizontal llevo, desde el origen marcado, sobre una de las paredes una distancia determinada, en este caso la longitud de las regletas soporte, 44cm. (A)
  • Marco el punto.
  • Hago lo mismo sobre la otra pared. (B).
  • Mido la distancia entre los dos puntos marcados. (C).
  • Conviene que A=B.

Gráficamente debería trazar a escala la distancia C y, desde sus extremos, trazar con un compás, también a escala, las distancias A y B. La intersección nos da el tercer vértice del triángulo. Uniendo los puntos tenemos dibujado el ángulo entre paredes.

Matemáticamente, utilizo el teorema del coseno. Despejo el coseno, que es el único valor que no conozco. En excel calculo el coseno, a partir del coseno conozco el ángulo en radianes mediante arco coseno (=ACOS($D$2)) y el ángulo en grados mediante la función grados. 

Conocido el ángulo, en el gráfico, uno de los lados lo dibujo sobre el eje X y para el otro cálculo x e y utilizando el seno y el coseno del ángulo entre paredes.
Escalando los valores medidos calculo las dimensiones de la nueva plataforma para colocar el reloj.