Está en la página 1de 155

Development of

Android App for


Designing Spur
Gear Pumps
Desarrollo de Aplicacin Android para
el Diseo de Bombas de Engranajes

Alumno: Manuel Gonzlez Demianenko


Director: Pedro Javier Gmez-Montero
Co-director:
Javier Freire
05/06/2015

ndice
1. Sinopsis ........................................................................................................................... 3
2. Introduccin .................................................................................................................... 4
2.1. Antecedentes y contexto ........................................................................................ 4
2.2. Objetivo y alcance .................................................................................................. 4
2.3. Requerimientos ...................................................................................................... 5
2.4. Utilidad y justificacin ............................................................................................ 6
3. Bombas de engranajes externos .................................................................................... 8
3.1. Conceptos bsicos .................................................................................................. 8
3.2. Diseo de engranajes ............................................................................................. 9
3.2.1. Ruedas dentadas y engranajes de perfil evolvente ........................................ 9
3.2.2. Dimensiones de una rueda dentada ............................................................. 15
3.2.3. Cremallera y talla de engranajes .................................................................. 17
3.2.4. Clculo de engranajes ................................................................................... 25
3.3. Caudal terico e irregularidad de caudal .............................................................. 35
4. Aplicacin Android ....................................................................................................... 37
4.1. Aplicaciones existentes ......................................................................................... 37
4.2. Alternativas y solucin elegida ............................................................................. 39
4.2.1. MIT App Inventor 2 ....................................................................................... 39
4.2.2. Android Studio .............................................................................................. 40
4.2.3. Justificacin de la solucin escogida ............................................................ 41
4.3. Desarrollo de la aplicacin .................................................................................... 42
4.3.1. Requerimientos previos................................................................................ 42
4.3.2. Clculo de engranajes ................................................................................... 45
4.3.3. Dibujo de engranajes .................................................................................... 51
4.4. Resultado .............................................................................................................. 52
4.5. Manual del usuario ............................................................................................... 61
4.6. Hoja Excel .............................................................................................................. 61
5. Planificacin y programacin ....................................................................................... 66
1

6. Resumen econmico .................................................................................................... 69


7. Implicacin ambiental ................................................................................................... 70
8. Conclusiones ................................................................................................................. 71
9. Recomendaciones para una posible continuacin del trabajo ..................................... 73
10. Requisitos de software................................................................................................ 74
11. Bibliografa y referencias ............................................................................................ 75

ANEXO I: Cdigo ............................................................................................................... 78


I.1. Java ........................................................................................................................ 79
I.1.1. MainActivity.java .......................................................................................... 79
I.1.2. Resultados.java .............................................................................................. 88
I.1.3. Caudal.java..................................................................................................... 99
I.1.4. Grafica.java ................................................................................................. 106
I.2. XML ..................................................................................................................... 108
I.2.1. activity_main.xml ........................................................................................ 108
I.2.2. activity_resultados.xml ................................................................................ 113
I.2.3. activity_caudal.xml ...................................................................................... 145
I.2.4. grafica.xml ................................................................................................... 148
I.2.5. styles.xml .................................................................................................... 149
I.2.6. strings.xml ................................................................................................... 150
I.2.7. custom_toast.xml ....................................................................................... 154

1. Sinopsis
La tecnologa de las bombas de engranajes tiene un potencial enorme en el mundo
industrial, desde la alimentacin en motores diesel de nueva generacin hasta la
dosificacin de fluidos en sistemas mdicos y farmacuticos.
El principal componente de dichas bombas son sus engranajes, y su clculo y diseo
debe tener en cuenta todas las variables posibles a la hora de trabajar como parte de
una bomba. El conocimiento actual sobre ellos, as como sus criterios de diseo y otros
parmetros, pueden ser reunidos y compilados en una aplicacin para telfonos
mviles, haciendo ms sencillo e intuitivo el proceso de clculo de una bomba de
engranajes.
Este proyecto trata sobre el desarrollo de dicha aplicacin para telfonos con sistema
Android. Esta aplicacin permitir realizar el diseo y representacin de los engranajes,
as como el clculo del flujo e irregularidades que intervienen a la hora de trabajar estos
dentro de una bomba. El objetivo final es facilitar todo el proceso de clculo y acercar al
gran pblico los conocimientos disponibles sobre la materia para que puedan ser usados
de una manera sencilla e intuitiva, en cualquier momento y cualquier lugar.

2. Introduccin
2.1. Antecedentes y contexto
De las bombas de engranajes, stos son su parte ms importante. Diferentes engranajes
definen las diferentes caractersticas de cada bomba en la que se encuentren.
El diseo de estos engranajes necesita un clculo previo, que si bien no es demasiado
complejo, tampoco es trivial, por lo que la fase de diseo requiere un cierto
conocimiento de la materia as como un determinado tiempo de estudio y clculo.
Los telfonos mviles ya forman parte del da a da de la inmensa mayora de la
poblacin. Los nuevos smartphones se usan cada vez menos para llamar y ms como
pequeos ordenadores de bolsillo. El uso de aplicaciones est en continuo crecimiento y
es por ello que hay que aprovechar la oportunidad para ofrecer nuevas posibilidades en
el campo de la ingeniera.
Las aplicaciones mviles tienen la particularidad de que pueden ser usadas en cualquier
momento y lugar siempre que se disponga de un smartphone, y suponen poder tener
una potente herramienta con la capacidad de ser usada sin problema por cualquier
persona, tenga mayores o menores conocimientos sobre ella.
Google dispone de un vasto mercado de aplicaciones para telfonos Android (Google
Play), pero dentro de este mercado todava no existe una aplicacin enfocada al diseo
de bombas de engranajes. Es por ello que este proyecto aporta algo nuevo y til, todava
no desarrollado, que puede facilitar mucho las tareas de clculo a las personas que lo
necesiten.

2.2. Objetivo y alcance


El objetivo de este proyecto es el desarrollo de una aplicacin Android que permita
disear y calcular los parmetros de los engranajes de una bomba a partir de la
definicin una serie de caractersticas dimensionales; y adems poder calcular las
caractersticas del flujo de una bomba que contenga estos engranajes en su interior.

El objetivo final es desarrollar, partiendo desde cero, una aplicacin funcional,


descargable y usable en cualquier smartphone con sistema operativo Android, para que
pueda ser usada por cualquier persona, indiferentemente de su nivel de conocimiento
sobre las bombas de engranajes.
El alcance de dicha aplicacin es, tal y como se ha nombrado, el clculo de los
engranajes de una bomba de engranajes externos a partir de unos datos dimensionales
bsicos entrados por el usuario, adems del clculo de los datos de caudal e
irregularidad de ste, para finalmente poder ver en pantalla una representacin grfica
del perfil evolvente del diente del engranaje y poder exportar sus coordenadas para el
dibujo en un programa CAD.
No se tienen en cuenta los elementos existentes ms all de la bomba, as como no se
profundiza en el clculo del resto de partes de la bomba ms all de sus engranajes. El
clculo del caudal se realiza para fluidos newtonianos, y se considera, en primera
instancia, el trabajo en condiciones normales de temperatura.

2.3. Requerimientos
Los requerimientos de la aplicacin son los que se proceden a detallar a continuacin.
En el aspecto funcional:
-

Interfaz sencilla e intuitiva: Debe ser una aplicacin fcil de usar.

Compatibilidad con la mayora de smartphones del mercado: Si se quiere que la


aplicacin pueda ser usada por el mximo nmero de personas posible, sta debe
ser compatible con la inmensa mayora de terminales del mercado.

Gratuita: El conocimiento no debera tener barreras econmicas, es por ello que


esta aplicacin no debe tener coste alguno para el usuario final.

En el aspecto interno o de clculo:


-

Clculo del perfil evolvente del engranaje: La aplicacin debe definir el perfil
evolvente del engranaje para asegurar que la solucin calculada es la adecuada.

Clculo del caudal e irregularidad de la bomba, con fluidos newtonianos: La


aplicacin debe poder calcular las caractersticas de caudal e irregularidad de la
bomba de engranajes, en base a fluidos newtonianos.

Dibujo del diente del engranaje calculado: Se debe poder ver representada
grficamente la forma final del diente del engranaje calculado.

Posibilidad de exportar los puntos del diente del engranaje: Se debe poder
exportar los puntos del diente del engranaje para representarlo en un programa
externo de CAD.

2.4. Utilidad y justificacin


La utilidad de la aplicacin final que desarrolla este proyecto reside en facilitar el clculo
de las caractersticas de las bombas de engranajes, y acercar este proceso a cualquier
persona interesada.
Dicha aplicacin puede ser utilizada para fines profesionales, acadmicos o personales, y
facilita enormemente el proceso de diseo y clculo de las bombas de engranajes.
Que se pueda representar grficamente el diente del engranaje calculado aporta en
tiempo real una mejor comprensin y visualizacin de los resultados del clculo
realizado previamente.
Personalmente, considero que las aplicaciones mviles son una parte muy importante el
presente y el futuro de la sociedad en la que vivimos. Nos las podemos llevar a cualquier
parte, y nos permiten estar comunicados, informados, y entretenernos. Pero creo que
existen pocas aplicaciones orientadas a otros procesos ms complejos y concretos,
como pueden ser clculos o diseo. Es por ello que he decidido realizar este proyecto, ya
que el ttulo de proyecto propuesto por el Departamento de Mecnica de Fluidos me
llam la atencin desde un primer momento.
El hecho de poder crear una aplicacin gratuita, accesible a todo el mundo, y que aporte
algo que hasta ahora ninguna otra lo hace, supone una gran motivacin personal para
desarrollar algo til e innovador, sobre lo que adems se puede trabajar en un futuro
para ampliar y mejorar.

Acercar y facilitar el conocimiento a las personas justifica el hecho de que este proyecto
sea realizado.

3. Bombas de engranajes externos


El tipo de bomba sobre el que se basa este proyecto es la bomba de engranajes
externos, donde ambos engranajes tienen dentada su cara exterior. Existen tambin
bombas donde un engranaje tiene dentado externo y el otro interno, pero no se van a
tratar este tipo de bombas en este caso.
En este captulo se explican los conceptos fundamentales sobre las bombas de
engranajes externos, necesarios para la comprensin del funcionamiento de stas, as
como su clculo y diseo. Dichos conceptos son los pilares fundamentales sobre los que
se desarrollar la aplicacin.

3.1. Conceptos bsicos

Una bomba de engranajes externos es un tipo de bomba hidrulica que impulsa el fluido
debido a la diferencia de presin generada por una pareja de engranajes que giran en un
alojamiento muy ajustado.
Los elementos principales de la bomba, tal y como indica su nombre, son sus engranajes.
Existe un engranaje conductor, cuyo eje recibe el movimiento de rotacin de un
elemento externo como puede ser un motor, y el engranaje conducido, que se mueve
debido al principio de desplazamiento provocado por el contacto entre sus dientes con
los dientes del engranaje conductor.
Al accionar la bomba, y debido al movimiento de rotacin de ambos engranajes, se crea
un espacio entre los dientes de stos, donde una cantidad determinada de fluido entra
en la bomba debido a la depresin creada por dicha separacin. El fluido es
transportado en el espacio interdental de ambos engranajes hasta la zona de impulsin,
donde, debido al encuentro de los dientes del engranaje conductor y el conducido, el
espacio existente en esta zona se reduce y se crea una cierta presin que expulsa el
fluido fuera de la bomba.
Una bomba de engranajes externos es una bomba volumtrica rotativa, ya que su
funcionamiento se basa en un movimiento de rotacin de los engranajes, trasvasando
un volumen conocido de fluido de la zona de aspiracin a la de impulsin. La presin
generada depender de la resistencia que dicho fluido encuentre posteriormente en el
circuito por el que circula.

En la siguiente figura puede verse un esquema del funcionamiento de este tipo de


bombas, donde a la izquierda se encuentra la zona de aspiracin y a la derecha la zona
de impulsin:

Figura 1: Esquema de funcionamiento de una bomba de engranajes externos

3.2. Diseo de engranajes


3.2.1. Ruedas dentadas y engranajes de perfil evolvente

Engranajes hay de diversos tipos y formas, y para diversos usos y aplicaciones; desde la
transmisin de grandes esfuerzos hasta pequeos movimientos de precisin. Los ms
comunes, y que adems son los usados en las bombas, son los engranajes cilndricos
rectos.
A continuacin se explican los criterios necesarios para el clculo y diseo de este tipo
de engranajes cuando trabajan dentro de una bomba.
Los engranajes reciben este nombre siempre y cuando se trate de un mnimo de dos
ruedas dentadas engranando entre s. Las ruedas dentadas se utilizan para la
transmisin del movimiento entre dos ejes en contacto continuo de transmisin de
movimiento por empuje de unos dientes sobre otros. En el caso de estudio de este
proyecto, aplicado a bombas de fluidos, nos centraremos en aquellas ruedas dentadas
que cumplan con las siguientes condiciones:
-

A la rodadura de ambas ruedas se une el deslizamiento entre los dientes en


contacto.

La relacin de transmisin es constante, y se define como:


(3.2.1.1)

Siendo 1 y 2 las velocidades angulares de las ruedas dentadas conductora y


conducida, respectivamente
-

Los engranajes son cilndricos de dientes rectos, es decir, los dientes son prismas
rectos.

Una vez conocidas las condiciones, nos centraremos en los dientes de los engranajes.
Para poder disear los dientes, se necesita conocer el dimetro primitivo de cada una de
las ruedas dentadas. El dimetro primitivo es aquel que corresponde a la circunferencia
primitiva, es decir, el dimetro que tendra una circunferencia si la transmisin del
movimiento se realizase por rozamiento entre dos cilindros sin dentado. En la siguiente
figura puede verse con mayor claridad:

Figura 2: Explicacin grfica del dimetro primitivo

Donde (1) son un par de cilindros donde el movimiento se transmite por una correa
cruzada. El punto donde se cruza la correa determina el dimetro primitivo de cada
cilindro, que es el de las circunferencias en (2), donde el movimiento entre ellas se
transmite por rozamiento; y en (3) se puede ver el paso de stas a engranajes, y cmo
stos adems definen un dimetro exterior y un dimetro interior, mayor y menor al
primitivo respectivamente.
El lugar geomtrico de los ejes que determinan el movimiento de las ruedas definen los
axoides. En el caso de las ruedas lisas, este movimiento puede darse por el rozamiento

10

entre ellas. En las ruedas dentadas, el contorno liso de los axoides se sustituye por dos
sucesiones de dientes que se arrastran mutuamente, engranando entre s.
La condicin de engrane entre dos ruedas dentadas es que la normal a la superficie de
los dientes en su punto de contacto P, debe pasar, en cualquier posicin de stas, por un
punto fijo I de la lnea de centros. Este punto I es el centro instantneo de rotacin,
donde se tocan entre s los axoides del movimiento. Dos perfiles que cumplan esta
condicin se denominan perfiles conjugados.
En la siguiente figura puede verse una representacin grfica de dos perfiles conjugados,
con sus respectivos axoides y los puntos P e I explicados anteriormente:

Figura 3: Perfiles conjugados

Una vez conocidas las caractersticas de los perfiles conjugados, nos centraremos en la
forma de los dientes de stos. Los dientes de los engranajes a tratar tienen un perfil
evolvente.
La evolvente del crculo es la curva que describe una cuerda al desenrollarse de un
carrete. Tambin se puede decir que es la trayectoria de un punto cualquiera de una
varilla que se rueda con rodadura pura sobre una circunferencia fija cualquiera.
En la figura 4 puede verse la representacin grfica de la evolvente de una
circunferencia.

11

Figura 4: Evolvente de una circunferencia

Las propiedades del perfil evolvente son:


-

Su parmetro caracterstico es el radio de la circunferencia base: =Rb

La normal a la evolvente en cualquiera de sus puntos es tangente a la circunferencia


base.

En cualquier punto A de la evolvente, el segmento TA es igual al arco TB.

El radio de curvatura en cualquier punto A de la evolvente es TA.

Dentro de la circunferencia base no existe evolvente.

Estas propiedades pueden verse de manera ms clara en la figura 5:

Figura 5: Propiedades del perfil evolvente

La ecuacin polar de la evolvente es del tipo r=f(), es decir, el radio vara en funcin del
ngulo .
12

Se puede demostrar que se puede obtener la ecuacin de la evolvente mediante la


relacin de ngulos, obteniendo finalmente la funcin evolvente Ev:
(3.2.1.2)

[rad]

Las ventajas del perfil evolvente son:


-

El ngulo de presin es constante a lo largo del engrane, evitando vibraciones y


ruidos.

La herramienta de talla de los dientes (cremallera) tiene los flancos rectilneos,


hacindola ms fcil de producir.

Cualquier dentadura de perfil evolvente puede engranar con cualquier otra que
tambin lo tenga, as como con cualquier distancia entre centros razonable
fsicamente, siempre que ambos engranajes tengan el mismo paso.

Estas ventajas son muy importantes a la hora de determinar las caractersticas del
engranaje, como se podr ver a continuacin.
Volvamos al ejemplo 2 de la figura 2, donde dos cilindros transmiten movimiento entre
s por rozamiento. Si, respecto a sus ejes, estos cilindros se hacen rotar sin deslizar entre
ellos, se puede decir que el punto de tangencia entre ambas circunferencias es su centro
instantneo de rotacin relativo. En la siguiente figura puede verse el centro
instantneo de rotacin relativo en el punto I23:

Figura 6: Circunferencias rotando sin deslizamiento entre ellas

13

Y la relacin de transmisin entre dichas circunferencias viene determinada por:


(3.2.1.3)

Una vez entendido el principio con las dos circunferencias, se da el paso a los
engranajes.

Figura 7: Engranaje evolvente

De la figura anterior, donde se aprecia un par de engranajes evolventes conjugados, se


pueden extraer las siguientes propiedades:
-

La lnea de engrane es la recta T1T2 y es perpendicular a ambas evolventes en el


punto de contacto P.

La lnea de engrane coincide continuamente con la lnea de empuje.

El ngulo de presin es constante.

El centro instantneo de rotacin relativo I se encuentra siempre en la interseccin


entre una lnea recta que une ambos centros O1O2 con la lnea de empuje T1T2.

Adems, con unos sencillos clculos se puede ver que la relacin de transmisin de los
engranajes responde a la expresin:

14

(3.2.1.4)

Por lo que la relacin de transmisin slo depende del radio de las circunferencias
base de ambos engranajes.
Si separamos fsicamente una de las ruedas dentadas de la otra, la nueva tangente ser
distinta de la anterior -cuando ambos engranajes estaban en contacto-, pero seguir
siendo la lnea de engrane en esta nueva situacin. Variarn por tanto I, d, , R1 y R2,
pero los perfiles seguirn siendo conjugados y la relacin de transmisin seguir siendo
la misma.

3.2.2. Dimensiones de una rueda dentada

Conocido el funcionamiento de la transmisin del movimiento entre engranajes, se pasa


a detallar la nomenclatura de cada una de las partes que define una rueda dentada. En
la siguiente figura puede verse un esquema general de los diferentes parmetros que se
definirn a continuacin:

Figura 8: Dimensiones de una rueda dentada

15

De la figura anterior se define:


-

z: Nmero de dientes. Es el nmero total de dientes sucesivos espaciados


regularmente sobre la circunferencia primitiva.

m: Mdulo (mm). Se define como el cociente del paso por el nmero pi, o del
dimetro de la circunferencia primitiva dividida entre el nmero de dientes de la
rueda dentada. (m=2R/z).

: ngulo de presin o de empuje de la cremallera. Es el ngulo que forma, en un


punto cualquiera de la evolvente, la tangente a la curva con el radio del crculo que
pasa por ese punto de la evolvente. El ngulo de presin es el ngulo de incidencia
sobre la circunferencia primitiva.

J: Juego radial, proporcional a entre 01 y 03 veces el mdulo. (J=jm , j=01~03).

ac: Altura de cabeza, igual al mdulo.

ap: Altura de pie, igual al mdulo ms el juego radial. (ap=m+J).

ad: Altura del diente, igual a la suma de las alturas de cabeza y de pie, o a dos veces
el mdulo ms el juego radial. (ad=ac+ap=2m+J).

=Rb: Radio base, correspondiente a la circunferencia base o directora.

R: Radio primitivo, correspondiente al radio polar en la rueda sin holgura.

Rc: Radio de cabeza. Radio de la circunferencia que pasa por la cabeza de los dientes
de la rueda dentada.

Rp: Radio de pie. Radio de la circunferencia que pasa por el pie de los dientes de la
rueda dentada.

Ra: Radio de apuntamiento. Radio de la circunferencia que pasa por los puntos
donde se intersecan cada pareja de evolventes de los dientes de la rueda dentada.

L: ngulo lmite de apuntamiento. ngulo respecto al centro del diente y el punto


donde la tangente a la circunferencia base pasa por el punto donde interseca la
pareja de evolventes de dicho diente.

p: Paso en circunferencia primitiva. Es igual a la longitud de la circunferencia


primitiva dividido entre el nmero de dientes, o pi por el mdulo. Mide la distancia
entre dos perfiles homlogos consecutivos sobre la circunferencia primitiva.
(p=[Lcirc.prim./z]=m).

e: Espesor del diente a la altura de la circunferencia primitiva. Mide el arco sobre la


circunferencia primitiva entre dos flancos de un diente. Es igual a la mitad del paso
en dicha circunferencia primitiva. (e=p/2).

h: Hueco entre dientes a la altura de la circunferencia primitiva. Es igual a la mitad


del paso en dicha circunferencia primitiva. (h=p/2).

pb: Paso del diente en la circunferencia base. Mide la distancia entre dos perfiles
homlogos consecutivos sobre una tangente cualquiera de la circunferencia base.

16

3.2.3. Cremallera y talla de engranajes

Una vez conocidas todas las caractersticas de las ruedas dentadas, se procede a detallar
la herramienta que las talla y define, llamada cremallera.
La cremallera representa un caso lmite al que tiende una rueda dentada cuando se
aumenta indefinidamente su radio y nmero de dientes, conservando el mismo paso y
ngulo de empuje/presin. El perfil de evolvente se degenera en una recta y el
movimiento de rotacin de la rueda se transforma en el movimiento de traslacin de
una cremallera. Este tipo de perfiles se usan para tallar ruedas dentadas.

Figura 9: Transicin de rueda a cremallera

En la construccin de los dientes deben tenerse en cuenta las caractersticas de los


engranajes enumeradas anteriormente, que recordemos son:
-

La lnea de referencia para tallar los dientes es la circunferencia primitiva, que en las
dentaduras normales coincide con la circunferencia polar.

La lnea de engrane, que es el lugar geomtrico de los puntos reales de contacto de


dos perfiles conjugados.

La condicin general de engrane, que es que la normal comn en los puntos de


contacto a dos perfiles conjugados pase por un punto fijo I, que a su vez es centro
instantneo de rotacin en el movimiento relativo.

El coeficiente de engrane, que es la relacin entre el arco de conduccin y el paso en


circunferencia base. Para que exista continuidad en la conduccin es necesario que
sea superior a la unidad.

Para que exista rodadura pura, el punto de contacto P debe estar en la recta entre
centros.

La relacin de transmisin es constante, y para ello la normal comn al punto de


contacto P ha de cortar a la recta entre centros en un punto fijo.

17

El ngulo de presin es aquel que forma la direccin en que se transmite la presin o


esfuerzo entre dientes y la tangente en I a las circunferencias polares.

La evolvente sufre la accin de la herramienta al tallar el diente, que penetra en la


misma y la modifica. Debe tenerse en cuenta la penetracin de la evolvente.

Cuando la lnea media de la cremallera (la herramienta de talla) es tangente a la


circunferencia primitiva de la rueda dentada que se va a tallar, la talla y rueda resultante
se llaman a cero o rueda normal. En la siguiente figura puede verse una
representacin grfica de la lnea media:

Figura 10: Lnea media

Pero cuando esta lnea media no coincide con la tangente a la circunferencia primitiva,
puede estar entre sta y la circunferencia base (1), puede coincidir con la circunferencia
base (2), puede encontrarse entre la circunferencia base y el punto de tangencia T de la
lnea de engrane (3), puede coincidir con este punto de tangencia (4), o puede
sobrepasarlo (5). Dependiendo de la posicin de la cremallera pueden darse tres
diferentes casos en el perfil de los dientes, los cuales se explican a continuacin.

18

Figura 11: Posicin de talla de la cremallera

Caso 1: Situaciones 1 y 2 de la cremallera en la figura 11. La lnea de cabeza de la


cremallera es exterior a la circunferencia base.
En el caso 1 se demuestra que el perfil total del diente es un arco completo de la
correspondiente evolvente del crculo. En la siguiente ecuacin puede verse el nmero
de dientes de la rueda dentada en funcin del ngulo :
(3.2.3.1)

El caso 2 no es ms que la situacin lmite del caso 1, donde la lnea media est situada
justo en la circunferencia base. Se demuestra entonces que el nmero de dientes,
dependiendo del ngulo es:
(3.2.3.2)

Caso 2: Situaciones 3, 4 y 5 de la cremallera en la figura 11. La lnea de cabeza de la


cremallera es interior a la circunferencia base.
En este caso el nmero de dientes segn el ngulo se demuestra que es:
(3.2.3.3)

19

En esta situacin, el perfil de la evolvente viene necesariamente limitado por la


circunferencia base, y el resto del perfil est formado por la curva descrita por la cabeza
de la herramienta durante su utilizacin, pero no tiene utilizacin alguna en el engrane.
El perfil del diente es, pues, un arco de evolvente que empieza en el punto de cabeza y
termina en el crculo base, seguido de un perfil complementario no usado durante el
engrane.
Dentro del caso 2, se pueden diferenciar tres posiciones, las cuales se agrupan en tres
sub-casos:
Sub-caso 2a: Situacin de la cabeza de la cremallera entre las lneas 3 y 4 de la figura 11,
donde la herramienta no llega a sobrepasar el punto de tangencia T1 de la lnea de
engrane de la cremallera, normal al perfil de sta, con la circunferencia base de la rueda
dentada. El ltimo contacto de la cremallera con el perfil tallado se realiza antes de
dicho punto de tangencia. En este sub-caso, el perfil de la evolvente resulta
perfectamente tallado.
En este sub-caso se puede demostrar que:
(3.2.3.4)

Sub-caso 2b: Situacin de la cabeza de la cremallera entre las lneas 4 y 5 de la figura 11,
donde la herramienta rebasa el punto de tangencia T1 de la lnea de engrane de la
cremallera, normal al perfil de sta, con la circunferencia base de la rueda dentada. El
ltimo contacto de la cremallera con el perfil tallado se realiza despus de dicho punto
de tangencia. En este sub-caso, el perfil de la evolvente sufre la accin de la herramienta
al tallar el diente, que penetrando en ella la modifica.
En este sub-caso, la relacin entre el ngulo y los dientes es:
(3.2.3.5)

Sub-caso 2c: Situacin de la cabeza de la cremallera en la lnea 4 de la figura 11, donde


la herramienta llega exactamente hasta el punto de tangencia T1 de la lnea de engrane
de la cremallera, normal al perfil de sta, con la circunferencia base de la rueda dentada.
El ltimo contacto de la cremallera con el perfil tallado se realiza justo a la altura del

20

punto de tangencia. En este sub-caso, se obtiene el nmero lmite de dientes zl, y


representa el sub-caso lmite que delimita los dos sub-casos anteriores.
Es por ello que se demuestra que:
(3.2.3.6)

Estos diferentes casos, cuando la lnea media de la cremallera no es tangente a la


circunferencia primitiva, sino que se desplaza una cantidad V (V=xm), dan nombre a las
ruedas dentadas llamadas ruedas V. Si el desplazamiento se tiene en cuenta radialmente
hacia el exterior, se tratar de ruedas V+, y si es hacia el interior, se tratar de ruedas V-.
Entonces, teniendo en cuenta los casos y sub-casos anteriores, se pueden reformular las
expresiones teniendo en cuenta el desplazamiento radial de la herramienta de talla.
Caso 1: La lnea de cabeza de la cremallera es exterior a la circunferencia base. Siendo x1
el coeficiente de desplazamiento, se demuestra que:
(3.2.3.7)

En la siguiente figura pueden apreciarse los parmetros que se tienen en cuenta en este
caso:

Figura 12: Coeficiente de desplazamiento

Caso 2: La lnea de cabeza de la cremallera es interior a la circunferencia base. Siendo x1


el coeficiente de desplazamiento, se demuestra que:

21

(3.2.3.8)

Siendo la situacin lmite aquella en la que se cumple:


(3.2.3.9)

Dentro de este caso, se pueden encontrar los tres sub-casos vistos anteriormente.
Sub-caso 2a: Situacin donde el ltimo contacto de la herramienta con el perfil tallado
no llega a sobrepasar el punto de tangencia T1 de la lnea de engrane de la cremallera.
En este sub-caso se demuestra que:
(3.2.3.10)

Sub-caso 2b: Situacin donde el ltimo contacto de la herramienta con el perfil tallado
se realiza despus del punto de tangencia T1 de la lnea de engrane de la cremallera. La
herramienta rebasa este punto y se produce penetracin. La penetracin modifica el
perfil de la evolvente en el diente. En este sub-caso se demuestra que:
(3.2.3.11)

Sub-caso 2c: Situacin donde el ltimo contacto de la herramienta con el perfil tallado
se realiza exactamente a la altura del punto de tangencia T1 de la lnea de engrane de la
cremallera. No se produce penetracin. En este sub-caso se demuestra que:
(3.2.3.12)

De las expresiones anteriores en los diferentes sub-casos se puede determinar el valor


del coeficiente de desplazamiento x1 que se puede dar sin que se produzca penetracin
de la herramienta, y, por lo tanto, modificacin del perfil evolvente del diente. Este valor
viene determinado por la expresin:
(3.2.3.13)

22

Al aumentar x1 hacia el exterior en direccin radial, los dientes terminan cada vez ms
en punta. El valor de x1 para el cual los dos perfiles de cada diente se unan reduciendo a
cero el espesor de la cabeza, es decir, el valor para que el diente acabe perfectamente
en punta, marcar el lmite de desplazamiento. En la siguiente figura puede apreciarse
cmo cambia la forma del diente segn el desplazamiento de la herramienta:

Figura 13: Forma del diente segn el desplazamiento de la herramienta

Dependiendo de la forma que tengan los dientes, stos tendrn interferencia entre ellos
o no.
La interferencia ocurre cuando dos dientes se tocan en la lnea de engrane y los dos
inmediatos lo hacen fuera de esta lnea. Es decir, existe un segundo contacto no
deseado en la transmisin del movimiento. Este segundo contacto perturba la
conduccin del primero, e incluso puede llegar a imposibilitarlo.
Esta interferencia se debe a la penetracin de la herramienta de talla o cremallera en
el perfil ya tallado anteriormente. Es decir, el propio proceso de talla estropea el perfil
dando lugar a un perfil complementario, que al dejar de ser una evolvente deja de ser el
perfil conjugado de la otra rueda dentada.
En la siguiente figura puede apreciarse la interferencia entre dientes de dos ruedas
dentadas engranadas entre s:

23

Figura 14: Interferencia entre dos ruedas dentadas

Para evitar esta interferencia y la penetracin que la causa se puede recurrir a cuatro
procedimientos distintos:
-

Aumento del ngulo de presin. Este procedimiento tiene el principal inconveniente


de que obliga a usar herramientas especiales no normalizadas, motivo por el cual no
se suele emplear. Adems hace disminuir el coeficiente de engrane as como el
espesor del diente en cabeza, mientras que hace aumentar la presin entre dientes.

Rebaje de las dentaduras. Este procedimiento tambin requiere utilizar


herramientas especiales no normalizadas.

Sustitucin de los engranajes cilndricos rectos por engranajes cilndricos


helicoidales.

Desplazamiento del perfil de referencia durante la talla. Es decir, tallar engranajes


en V. Es el procedimiento ms utilizado, ya que su gran ventaja radica en que se
puede evitar la penetracin sin necesidad de usar herramientas especiales.

En las siguientes figuras se puede observar que si la lnea efectiva de la cabeza de la


cremallera es la T1A2, que pasa precisamente por el punto T1, ninguno de los puntos del
perfil H1T1 de la herramienta volver a penetrar en el perfil ya tallado por S1. Si por lo
contrario, el perfil de la cremallera alcanzara en su lnea de cabeza el lmite BB2, la
evolvente descrita por B que arranca perpendicularmente a PB necesariamente
encuentra el perfil S1 tallado ya por H, y lo vuelve a tallar estropeando la primera de las
tallas.

24

Figura 15: Lmite de penetracin

Figura 16: Penetracin

3.2.4. Clculo de engranajes

A continuacin se detalla el clculo de las dimensiones de las ruedas dentadas,


anteriormente explicadas en la pgina 16 de este mismo documento.
Las dimensiones de una rueda dentada con o sin desplazamiento en V o a cero parten
de los datos z (nmero de dientes), m (mdulo), (ngulo de presin o empuje), x
(desplazamiento de la herramienta de talla proporcional al mdulo) y j (juego u holgura
proporcional al mdulo), explicados anteriormente. De estos datos caractersticos se
puede conocer:

25

R: Radio primitivo, correspondiente al radio polar en la rueda sin holgura.


(3.2.4.1)

=Rb: Radio base, correspondiente a la circunferencia base o directora.


(3.2.4.2)

: Desplazamiento de la lnea media de la herramienta de talla en una rueda V.


(3.2.4.3)

Rc: Radio de cabeza, correspondiente al radio de la circunferencia que pasa por la


cabeza de los dientes.
(3.2.4.4)

Rp: Radio de pie, correspondiente al radio de la circunferencia que pasa por el pie de
los dientes.
(3.2.4.5)

p: Paso en circunferencia primitiva, correspondiente a la distancia entre dos perfiles


homlogos consecutivos sobre la circunferencia primitiva.
(3.2.4.6)

pb: Paso del diente en la circunferencia base, correspondiente a la distancia entre


dos perfiles homlogos consecutivos sobre una tangente cualquiera de la
circunferencia base.
(3.2.4.7)

26

pc: Paso del diente en la cabeza, correspondiente a la distancia entre dos cabezas de
perfiles homlogos consecutivos sobre una tangente cualquiera de la circunferencia
que pasa por las cabezas de los dientes.
(3.2.4.8)

Ev: Evolvente segn el ngulo de presin, en radianes.


(3.2.4.9)

EvL: Evolvente segn el ngulo de apuntalamiento, en radianes.


(3.2.4.10)

er: Espesor del diente para un radio genrico r.


(3.2.4.11)

eb: Espesor en base.


(3.2.4.12)

Lk: Distancia cordal, correspondiente a la distancia tangente-base sobre k dientes de


un dentado recto.
(3.2.4.13)

Conocidas todas las caractersticas de la rueda dentada, queda conocer su interaccin


con su conjugada.

27

Figura 17: Engrane de un par de dientes

En la figura anterior se muestra la procesin del engrane de un par de dientes de dos


ruedas dentadas. En la posicin 1 inicia el engranaje un nuevo par de dientes,
acompaado de otro par ya engranado que se ubica en la posicin 3. Estos dos pares de
dientes se desplazan hasta que el par engranado en 3 se desengrana, dejando al otro par
de dientes anteriormente en 1 en la posicin 2, posicin desde la que se desplazarn a
3 siendo el nico par de dientes en contacto, hasta que otro nuevo inicie el engrane en
la posicin 1 y se repita el mismo proceso. Por lo tanto, existe una zona central en la
lnea prctica de engranaje donde solo hace contacto un par de dientes. Esta es la zona
de mayor carga en estos, pues ellos solos deben transmitir todo el movimiento del
engrane sin la ayuda de otra pareja de dientes.
Esta interaccin entre dientes define el coeficiente de engrane (), que es un parmetro
adimensional que permite evaluar de manera terica la continuidad del movimiento en
el engranaje. Se define como la relacin entre la lnea prctica de engranaje y el paso
transversal medido en la circunferencia base.

Figura 18: Coeficiente de engrane

28

Este parmetro vara segn el tipo de ruedas dentadas que se quieran engranar entre s.
En un engranaje a cero con ruedas a cero, para conseguir un engranaje perfecto basta
con la igualdad de mdulos, siempre que ambas ruedas tengan un nmero de dientes
superior al que marca el lmite.
En este tipo de ruedas, las circunferencias primitivas R1 y R2 coinciden con las
circunferencias polares R1 y R2, y son tangentes entre ellas.

Figura 19: Engranaje a cero

La distancia entre centros es la suma de los radios de las circunferencias primitivas, y el


coeficiente de engrane es:
(3.2.4.14)
(3.2.4.15)

Es aconsejable que el coeficiente de engrane sea mayor o igual a 12.

En un engranaje a cero con ruedas en V, las ruedas dentadas han de tallarse siempre por
el mismo perfil de referencia con coeficientes de desplazamiento iguales pero
contrarios. Este tipo de engranajes slo podrn tallarse si la suma de los dientes de
ambas ruedas dentadas es igual o superior a dos veces el dentado lmite zl.
Si la rueda dentada ms pequea tiene un nmero de dientes inferior al lmite, entonces
se tallar obligatoriamente con desplazamiento positivo, y por tanto, la rueda dentada
ms grande se tallar con el mismo desplazamiento, pero negativo.

29

Las circunferencias primitivas en este caso siguen siendo polares, ya que son tangentes y
se mantiene el ngulo de presin. Esto es debido a que la distancia entre centros no ha
variado.

Figura 20: Engranaje a cero con ruedas en V

En este caso el coeficiente de engrane es el siguiente:


(3.2.4.16)
(3.2.4.17)

(3.2.4.18)

El ltimo caso se trata de los engranajes en V con ruedas en V, que son aquellos
constituidos por dos ruedas dentadas cuyas circunferencias primitivas no son tangentes.
No coindicen las circunferencias polares, y ambas ruedas se tallan por la misma
herramienta.
Este tipo de engranaje se utiliza cuando:
-

La distancia de montaje no es igual a la distancia entre centros. En este caso las dos
ruedas sern talladas en V, aun que una de ellas puede ser tallada a cero si el
nmero mnimo de dientes se lo permite.

La distancia de montaje es la que corresponde pero una de las dos ruedas no cumple
con el nmero mnimo de dientes. En este caso una rueda puede tallarse a cero y la
otra llevarse todo el desplazamiento con rueda en V.

30

El nmero de dientes de ambas ruedas es inferior al lmite. Ambas ruedas se tallan


forzosamente en V, concretamente en V+, para evitar la interferencia entre dientes.

El nmero de dientes de una rueda es inferior al lmite, y la suma de los dientes de


ambas es inferior al doble del lmite. Se talla forzosamente en V.

El nmero de dientes de una rueda es inferior al lmite, y la suma de los dientes de


ambas es superior al doble del lmite. En este caso tambin se podra optar por un
engranaje a cero con ruedas en V.

Dos ruedas en V se deben montar a una distancia entre centros v igual a la suma de los
nuevos radios polares en V (R1 y R2) para que no exista ningn tipo de juego tangencial
tambin llamado holgura lateral. Si simplemente se superponen sus perfiles de
referencia, quedan montadas a una distancia entre centros .
(3.2.4.19)

Siendo B:
(3.2.4.20)

Tal y como se ha mencionado, si dos ruedas se tallan con el mismo perfil de referencia
pero con desplazamientos distintos, existir un juego tangencial entre ellas. Para evitar
este inconveniente debe alterarse la distancia entre centros , fijndola en v, que ser
la suma de los nuevos radios polares de ambas ruedas.
Con esta distancia entre centros el ngulo de presin ya no ser el de la cremallera, sino
que ser un nuevo ngulo v, que depender del radio de la circunferencia base y el
nuevo radio polar de la rueda dentada.
(3.2.4.21)

Entonces el nuevo mdulo de engranaje mv, referido a la nueva circunferencia polar R


es:
(3.2.4.22)

31

Y por lo tanto la nueva distancia entre centros:


(3.2.4.23)

Siendo Bv:
(3.2.4.24)

Donde oBv representa el exceso de distancia entre centros sobre el caso de haberse
tratado del engrane a cero de dos ruedas a cero.
En la siguiente figura puede apreciarse el esquema de engrane en V de dos ruedas en V
sin juego tangencial:

Figura 21: Engranaje en V de ruedas en V

Como se desea que las ruedas funcionen sin holgura, el nuevo paso en la circunferencia
polar p se definir como la suma de los espesores de ambas ruedas en sus nuevas
circunferencias polares e1 y e2.
(3.2.4.25)

32

Donde mv queda definida por la ecuacin 3.2.4.22 de la pgina 31.


Entonces el espesor de un diente en un radio genrico es definido por la expresin:
(3.2.4.26)

Siendo la evolvente del ngulo de apuntalamiento la misma que en la ecuacin XX de la


pgina 24, y la evolvente del ngulo en V:
(3.2.4.27)

Obteniendo entonces otra expresin para B:


(3.2.4.28)

Tal y como se ha comentado en el punto anterior, se sabe que cuando la distancia de


montaje no coincide con la distancia entre centros de engranajes a cero, el engranaje es
forzosamente en V.
Como las ruedas no se montarn a la distancia inicial de montaje si no a la distancia en
V, las ruedas se tienen que acercar o separar. Por lo tanto, para no eliminar la holgura
de fondo, se tiene que calcular qu cantidad se tienen que acortar o alargar las cabezas
de los dientes en ambas ruedas.
La cantidad a acortar o alargar es:
(3.2.4.29)

Definindose K como:
(3.2.4.30)

Donde si K resulta positiva los dientes deben alargarse, y si K resulta negativa los dientes
deben acortarse.

33

Por lo tanto, el nuevo radio de cabeza de las ruedas dentadas puede ser definido como:
(3.2.4.31)

Y donde el coeficiente de engrane es:


(3.2.4.32)

Pero si dichas ruedas se deben montar a una distancia entre centros no igual a la
distancia en V sino a la distancia de montaje, no igual a la suma de los nuevos radios
polares, entonces existir juego tangencial debido al montaje, es decir, una cierta
holgura lateral.
Esta distancia, diferente a la distancia en V, definir nuevas magnitudes de montaje,
como un nuevo ngulo de montaje:
(3.2.4.33)

(3.2.4.34)

Un nuevo mdulo de montaje:


(3.2.4.35)

Un nuevo radio polar de montaje:


(3.2.4.36)

Donde el paso por circunferencia polar de montaje es:


(3.2.4.37)

34

Y el espesor del diente en un radio genrico de montaje es:


(3.2.4.38)

Y por lo tanto el juego de montaje en s:


(3.2.4.39)

Donde la evolvente segn el ngulo de montaje es:


(3.2.4.40)

Y por lo tanto el coeficiente de engrane:


(3.2.4.41)

Todos estos parmetros se tienen que tener en cuenta a la hora de disear los
engranajes de las bombas, segn su disposicin, talla, montaje, y dems caractersticas.

3.3. Caudal terico e irregularidad de caudal

Una vez conocidos los parmetros anteriores, derivados de la forma del diente del
engranaje, se puede calcular tambin el caudal terico que desplazar una bomba que
uses dichos engranajes.
Teniendo en cuenta que una pareja de dientes es la que acta sobre la succin y la
presin, la expresin del caudal terico, dependiente del volumen movido por un par de
dientes, la cantidad de dientes de los engranajes y la velocidad de rotacin de ellos
dentro de la carcasa de la bomba, es la siguiente:
(3.3.1)

35

Donde los radios r1 y r2 son, respectivamente:


(3.3.2)

Los radios rh1 y rh2 son los radios de cabeza, b es la anchura de la rueda dentada, y t0 es:
(3.3.3)

Donde 0 es el ngulo de presin del engranaje.


Esta ecuacin aplica correctamente para bombas de engranajes externos, al igual que
para ciertas bombas de engranajes internos, con o sin correccin del perfil del diente.
La expresin para la irregularidad de caudal, dependiente del nmero de dientes del
engranaje es:

(3.3.4)

De dicha expresin se obtiene que la irregularidad de caudal se pueda disminuir con las
siguientes medidas:
-

En caso de tener el mismo dimetro ambas ruedas, elegir un nmero de dientes tan
alto como sea posible.

Incrementar la relacin de transmisin aumentando el nmero de dientes de la


rueda z2.

Aumentando el coeficiente de desplazamiento de los engranajes de la bomba.

36

4. Aplicacin Android
4.1. Aplicaciones existentes
Con ms de 700.000 aplicaciones disponibles en Google Play, la tienda oficial donde
poder encontrar aplicaciones Android, cabe esperar que haya aplicaciones similares a la
que se pretende desarrollar en este proyecto.
Tras una bsqueda de aplicaciones existentes, tanto en espaol como en ingls, se ha
comprobado que no hay ninguna aplicacin que vaya a realizar las mismas funciones
que la aplicacin a desarrollar, si bien hay algunas que podran ser similares, o partes de
ella.
Existe una aplicacin que se centra en el clculo de engranajes, y se llama Diseo de
Engranajes, desarrollada por Jos Fernndez. Esta aplicacin calcula los datos ms
significativos de una rueda dentada, como pueden ser los diferentes pasos, longitud del
diente, dimetro primitivo, exterior, base, espesor del diente, etc. Los datos de entrada
son dimensiones conocidas, como el nmero de dientes, el mdulo, ngulo de presin,
distancia entre tres dientes, etc.
Esta aplicacin slo permite el clculo para una rueda dentada. Si se quieren calcular
datos para dos o ms ruedas engranadas (distancias de montaje, por ejemplo), se tiene
que pagar la versin PRO, con un precio de 098 en Google Play.

Figura 22: Diseo de Engranajes PRO

Esta aplicacin es vlida para el clculo de engranajes de dientes rectos o engranajes


helicoidales. Por el contrario, no permite dibujar la forma del diente del engranaje ni
exportar los puntos para su dibujo en CAD.

37

No es una aplicacin enfocada al clculo de bombas de engranajes, sino simplemente al


clculo de engranajes. Es por ello que no calcula ningn parmetro de caudal.

Otra aplicacin similar es Gear Check, desarrollada por VictorMedvedevSoft. Esta


aplicacin calcula unos cuantos datos significativos de una rueda dentada. Su precio es
de 554 en Google Play.

Figura 23: Gear check

Los datos calculados son ms escasos que en la aplicacin anterior. Esto puede ser
debido a que la aplicacin se centra ms en el clculo dimensional de un diente del
engranaje que no del conjunto. A diferencia de la aplicacin anterior, los datos
calculados slo son los de una rueda dentada, no calcula los datos para un par de ruedas
engranadas.
En cambio, a diferencia de la anterior, esta aplicacin s dibuja una vista previa de cmo
es el perfil evolvente del diente, adems de poder exportar dichos datos. No exporta los
puntos de coordenadas para dibujar el diente, si no que ofrece el dato del espesor del
diente en funcin del dimetro.
Por ltimo, tampoco ofrece datos referentes a bombas de engranajes, dado que es una
aplicacin que slo calcula el engranaje, no la bomba que usa dicho engranaje.

38

4.2. Alternativas y solucin elegida


Al no existir una aplicacin que ya realice todo lo que se pretende en los objetivos de
este proyecto, se toman como punto de partida ciertas ideas las aplicaciones existentes.
Se tienen en cuenta algunos puntos de las aplicaciones nombradas anteriormente, como
la manera de introducir los datos, la manera de ensearlos, y el tipo de representacin
grfica. Todo ello sirve como base para confeccionar una primera visin general de la
aplicacin final de este proyecto.

Una vez con la idea en mente, es hora de decidir cmo programarla. Actualmente existe
una gran diversidad de soluciones para poder programar aplicaciones en Android,
incluso sin tener conocimiento del lenguaje de programacin usado (Java para las
operaciones de programa y XML para la parte visual).
A continuacin se muestran las dos alternativas estudiadas para el desarrollo de la
aplicacin, la eleccin de la ms adecuada, y su justificacin.

4.2.1. MIT App Inventor 2

Una de las alternativas estudiadas para el desarrollo de la aplicacin es App Inventor


2, una plataforma online desarrollada por el MIT (Massachussets Institute of
Technology) que permite crear aplicaciones mediante la unin de bloques, tanto en la
parte visual como la de programa, de manera parecida a un puzle. App Inventor permite
personalizar la parte visual de la aplicacin final con bloques que forman elementos del
diseo, a la vez que permite realizar la parte de programacin y funcionamiento
mediante la unin de bloques que realizan funciones sencillas.
Su ventaja radica en la gran facilidad de uso que tiene, en la que cualquier usuario, sin
necesidad de tener conocimientos del lenguaje de programacin de Android, puede
disear y hacer funcionar una aplicacin sencilla. La multitud de bloques de los que
dispone, as como su sencillo funcionamiento lo hacen una alternativa muy vlida para
disear una aplicacin por primera vez para una persona que parte desde cero.

39

Figura 24: Vista previa de App Inventor 2

Por el contrario, la mayor limitacin de App Inventor 2 es que los bloques contienen
expresiones estndar, quizs demasiado sencillas, las cuales son difciles de personalizar
para obtener comportamientos ms complejos en una aplicacin. Para algunas
operaciones se deben unir ms de 10 bloques para obtener el comportamiento
deseado, siendo esto tedioso adems de requerir mucho tiempo.
Adems, el cdigo generado no resulta tan limpio, por lo que es difcil poder
estudiarlo y desarrollar mejoras a partir de l. Por ltimo, la aplicacin final depender
de App Inventor 2 para ser retocada y mejorada.

4.2.2. Android Studio

Por otra parte, existe la opcin de programar la aplicacin con la herramienta oficial
para desarrolladores de Android, disponible en la pgina web de la plataforma. Se trata
de Android Studio, un programa que permite la programacin de las aplicaciones
escribiendo directamente el cdigo que van a utilizar para su funcionamiento.
Android Studio es un programa que incluye las herramientas necesarias para la creacin
de una aplicacin desde cero, partiendo de su diseo, programacin, virtualizacin,
prueba, etc., hasta la creacin del paquete instalable definitivo.

40

Figura 25: Pantalla de carga de Android Studio

La gran ventaja de Android Studio es que permite definir la aplicacin en todas sus capas
de trabajo. Permite controlar su diseo, su comportamiento, definir su interaccin con
el telfono, controlar los permisos necesarios de lectura o escritura en la memoria
interna, aadir mdulos, etc. El control es mximo y las posibilidades infinitas.
El cdigo que se desarrolle con esta herramienta puede incluir comentarios y ser
mejorado y ampliado con cualquier otro programa que permita programar en Java.
En su contra juega el hecho de ser un programa que slo permite programar
aplicaciones escribiendo cdigo. No existen bloques con funciones como en App
Inventor 2, ni guas ms all de notificaciones de errores de escritura (un parntesis mal
puesto, un punto y coma faltante). S es cierto que facilita la declaracin de elementos
con mensajes de aviso, o notifica si algo no cuadra dentro del cdigo, pero no incluye
funciones predefinidas que puedan hacer que alguien que no sepa Java ni XML pueda
ponerse a programar desde el minuto cero.

4.2.3. Justificacin de la solucin escogida

Finalmente, debido a la complejidad de algunos de los clculos de la aplicacin a


desarrollar y el hecho de tener que representar el diente del engranaje en una grfica,
as como a la necesidad de obtener permisos del telfono para poder exportar los
puntos de dicha grfica a un archivo en el almacenamiento interno, se opta por usar
Android Studio, a pesar de que requiera mayor esfuerzo al tener que aprender nuevos
lenguajes de programacin, teniendo as una curva de aprendizaje y desarrollo mucho
ms lenta que si se optara por App Inventor 2. A pesar de todo, se considera que la
inexistencia de limitaciones en cuanto a personalizacin y programacin es un gran
beneficio de esta alternativa, adems de permitir su posterior mejora y desarrollo de
forma fcil, lo que la consolida como la finalmente elegida.

41

A continuacin puede verse un cuadro resumen con ambas opciones:


MIT App Inventor 2

Android Studio

No requiere conocer el lenguaje de

Requiere conocer el lenguaje de

programacin, mayor facilidad de uso.

programacin, mayor complejidad.

Bloques con expresiones sencillas,

Sin limitaciones en cuanto a expresiones y

programacin complicada de personalizar

programacin.

Cdigo no limpio, generado de forma

Cdigo limpio, escrito directamente.

automtica por los bloques usados.

Posibilidad de notas y comentarios.

Aplicacin final dependiente de la

Aplicacin final no dependiente del

herramienta App Inventor.

programa.

Complejidad para futuras mejoras.

Cdigo mejorable con cualquier


herramienta de programacin.

Tabla 1: App Inventor vs Android Studio

A pesar del hecho de tener que aprender el lenguaje de programacin, Android Studio
tiene ms ventajas que App Inventor. Por ello se escoge como solucin deseada para
desarrollar la aplicacin.

4.3. Desarrollo de la aplicacin


Una vez evaluadas las aplicaciones existentes, y escogida la base para desarrollar la
aplicacin, se procede a la fase de diseo y programacin en s, la cual confeccionar la
aplicacin final.

4.3.1. Requerimientos previos

Uno de los requerimientos bsicos a tener en cuenta antes de empezar a programar, es


conocer cul es el sistema Android ms usado en el momento, para as determinar el
pblico objetivo; en este caso, conociendo el sistema que usan sus dispositivos.
En el apartado 2.3. Requerimientos se menciona el requerimiento de compatibilidad
con la mayora de smartphones del mercado, por lo que es importante saber la versin
Android que usa esta mayora de smartphones actualmente.

42

El sistema Android ha evolucionado desde sus primeras versiones (1.x) hasta la ltima
lanzada recientemente (5.x), tambin llamada Lollipop. Las versiones de estos
sistemas toman nombres de postres, siguiendo un orden alfabtico.
La distribucin del uso de las versiones evoluciona segn los nuevos lanzamientos de
terminales smartphone, las actualizaciones disponibles en los terminales con cierta
antigedad usados por los usuarios, as como el lanzamiento de nuevas versiones de
Android por parte de Google, entre otros. El mercado de la telefona mvil est en
continuo cambio y movimiento, y es por ello que la mayora de usuarios pueden no
tener la ltima versin de Android, de igual manera que muy pocos todava mantienen
versiones muy antiguas de ste.
En el portal web para desarrolladores de la plataforma de Android puede verse una
estadstica que muestra cul es la versin ms usada en el momento. El ltimo dato
recogido hasta la fecha de presentacin de este proyecto data del 4 de mayo de 2015, y
se puede ver grficamente en la siguiente figura:

Figura 26: Datos de uso de sistemas Android

Se puede apreciar que las dos versiones de Android ms usadas en este momento, con
ms del 75% de usuarios de dicho sistema usndolas (un 79%), son las versiones Jelly

43

Bean, lanzada en junio de 2012, y KitKat, lanzada en octubre de 2013. Estas versiones
incluyen todos los sistemas desde el 4.1.x hasta el 4.4.
Las diferentes versiones de Android se basan en APIs (Interfaz de Programacin de
Aplicaciones, Application Programming Interface por sus siglas en ingls). Estas APIs
llaman a diferentes objetos, funciones, rutinas o protocolos, y permiten que la
aplicacin pueda programarse, ejecutarse e interactuar con el dispositivo y el usuario.
En el caso de Jelly Bean y KitKat estas APIs se comprenden entre la versin 16 y la
19. De stas, la 19 es la ms extendida y usada.
A pesar de ello, dado que la tecnologa avanza muy deprisa y los usuarios irn
cambiando a versiones ms actuales y modernas con el tiempo, no tiene sentido
desarrollar la aplicacin con un objetivo que no sea su correcto funcionamiento en la
ltima API que haya sido lanzada.
A medida que las APIs se modernizan, stas optimizan el rendimiento del sistema e
incluyen nuevas caractersticas interesantes que pueden ser usadas durante el
desarrollo y en la aplicacin. Por ello interesa no elegir una que quede atrs en el
tiempo.
Tambin cabe destacar que las versiones superiores de Android siempre soportarn
aplicaciones creadas con APIs de versiones inferiores, por lo que la aplicacin no
quedar obsoleta en un futuro. De igual modo, los terminales con APIs inferiores podrn
usar la aplicacin siempre que sta no use algn elemento exclusivo de APIs superiores,
cosa que se va a evitar en el desarrollo de la aplicacin de este proyecto.
Es por este motivo que se opta por programar la aplicacin usando la API 21, que fue la
ltima en haber sido sacada al mercado en el momento que se empez con la
programacin en este proyecto.

Conocida la API objetivo de la programacin, el siguiente paso es confeccionar el prediseo de la interfaz de usuario de la aplicacin.
Tomando como referencia las aplicaciones anteriormente mencionadas en el apartado
4.1, se confecciona un esquema general de cmo se va a distribuir el diseo de la
interfaz de usuario en la aplicacin. Este esquema se basa en una distribucin de varias
pantallas claramente diferenciadas, donde cada una de ellas tendr una actividad
principal a realizar. Puede verse un esquema de la distribucin a seguir en la siguiente
figura:

44

Figura 27: Primer layout de la aplicacin

Las tres actividades diferentes, tal y como aparecen en la figura anterior, son: recibir los
datos introducidos por parte del usuario, visualizar los resultados de clculo a partir de
esos datos introducidos, y visualizar los puntos del engranaje adems de poder
exportarlos.
El clculo de los resultados visibles en la segunda pantalla se realizar en el paso de la
primera a sta, y el clculo de los puntos del perfil evolvente del diente del engranaje,
visible en la tercera pantalla, se realizar en el paso de la segunda a la tercera.
El paso de una pantalla a otra se realizar cuando el usuario pulse un botn situado en la
parte inferior de cada pantalla.
Ya definida la estructura a seguir en la programacin de la aplicacin, en los siguientes
apartados se procede a explicar con ms profundidad las acciones realizadas por la
aplicacin.

4.3.2. Clculo de engranajes

Los valores a introducir en la pantalla principal de la aplicacin, y que servirn como


datos de partida para el clculo dimensional posterior, deben ser los suficientes para
poder definir en su totalidad los engranajes de la bomba.
Tras un estudio previo, se obtiene que los datos que definen el resultado del resto de
clculos de los engranajes son los siguientes:
-

Nmero de dientes (z): El nmero total de dientes sucesivos espaciados


regularmente sobre la circunferencia primitiva. Se piden tanto el nmero de dientes
de la rueda 1 como los de la rueda 2.

45

Mdulo (m): Se define como el cociente del paso por el nmero pi, o del dimetro
de la circunferencia primitiva dividida entre el nmero de dientes de la rueda
dentada. (m=2R/z). Como ambas ruedas deben tener el mismo mdulo para poder
engranar correctamente, este valor ese pide una nica vez.

ngulo de presin o de empuje de la cremallera (): Es el ngulo que forma, en un


punto cualquiera de la evolvente, la tangente a la curva con el radio del crculo que
pasa por ese punto de la evolvente. El ngulo de presin es el ngulo de incidencia
sobre la circunferencia primitiva. De igual modo que con el mdulo, este valor es
vlido para ambas ruedas, por lo que slo debe introducirse una vez.

Coeficiente de desplazamiento (x): Es aquel coeficiente, que, multiplicado por el


mdulo del engranaje, define el desplazamiento de la cremallera que talla el diente
del engranaje. Es decir, el coeficiente modifica la penetracin de la cremallera de
talla en la rueda. Se pide este coeficiente tanto para la rueda 1 como para la 2.

Coeficiente de juego radial (j): Multiplicado por el mdulo define la distancia de


juego radial de la rueda dentada. (J=jm).

Distancia entre centros de montaje (=m): La distancia medida entre los centros de
ambas ruedas dentadas, en la posicin de montaje.

Longitud del diente (b): Longitud o profundidad que tienen las ruedas del engranaje
de la bomba.

Radio de cabeza de bomba, radio de mecanizacin (Rk): Aquel radio que viene
impuesto por el proceso de mecanizacin del diente del engranaje. Este radio es
independiente de los dems y viene definido por el mecanizado, pudiendo hacer
variar el radio final de cabeza del diente del engranaje.

Con estos datos de entrada, se pueden realizar los clculos para todos los valores
dimensionales del engranaje, en todas sus posibilidades de talla y montaje.
Los datos calculados a mostrar se dividen en diversos bloques, y son los especificados a
continuacin.
Primeramente, las caractersticas del engranaje:
-

Nmero lmite de dientes (zl): El nmero lmite de dientes que puede presentar el
engranaje con los datos introducidos.

Paso en circunferencia primitiva (p): La distancia existente entre dos perfiles


homlogos consecutivos sobre la circunferencia primitiva.

Paso en base o director (pb=pd): La distancia existente entre dos perfiles homlogos
consecutivos sobre la circunferencia base o directora.

Funcin evolvente del ngulo de presin (Ev ): El valor de la funcin evolvente


tomando como valor el ngulo de presin (tan-).

46

Distancia entre centros en engranaje a cero (0): La distancia entre centros de las
ruedas dentadas si estas estuvieran dispuestas como un engranaje a Cero.

Desplazamiento de la cremallera en ambas ruedas (): El desplazamiento, en


milmetros, de la herramienta de talla en cada una de las ruedas dentadas.

Tras conocer los datos de las caractersticas del engranaje, el siguiente bloque trata
sobre las caractersticas del engranaje si ste fuese tallado en V:
-

Parmetro B (B): Parmetro dependiente del desplazamiento y el nmero de dientes


de las ruedas dentadas, necesario para calcular la evolvente.

Funcin evolvente del ngulo en V (Ev v): El valor de la funcin evolvente teniendo
en cuenta el ngulo de presin del engranaje.

ngulo de presin en V (v): Valor del ngulo de presin, obtenido a partir de la


funcin evolvente. Es el ngulo de presin del engranaje en V.

Distancia entre centros de engranaje en V (v): Es la distancia entre los centros de


las ruedas dentadas cuando estas estn montadas en V.

Mdulo en V (mv): Valor del mdulo del engranaje en V.

Paso polar en V (p): La distancia existente entre dos perfiles homlogos


consecutivos sobre la circunferencia polar o primitiva para el engranaje en V.

Parmetro Bv (Bv): Parmetro que relaciona la distancia entre centros en V y a Cero.


Indica, en tanto por uno, la diferencia entre distancias de montaje.

Parmetro K (K): Parmetro que define la cantidad que se necesita alargar o acortar
los dientes de los engranajes para que estos contacten correctamente.

Comprobacin de la suma de coeficientes de desplazamiento (x1+x2): Esta suma


comprueba, en base al parmetro B, que los resultados sean coherentes. El usuario
puede comparar esta suma con sus coeficientes de desplazamiento entrados, y
valorar si el resultado es ms o menos preciso.

El siguiente bloque de resultados muestra los datos de montaje de los engranajes dentro
de la bomba:
-

ngulo de presin de montaje (m): ngulo de presin que tiene el engranaje en su


posicin de montaje.

Funcin evolvente del ngulo de montaje (Ev m): El valor de la funcin evolvente
tomando como valor el ngulo de presin del engranaje en su posicin de montaje.

Mdulo de montaje (mm): Valor del mdulo del engranaje en su posicin de


montaje.

Paso de montaje (pm): La distancia existente entre dos perfiles homlogos


consecutivos del engranaje en la posicin de montaje.

47

En el siguiente bloque de resultados se muestra si el engranaje est montado a cero, en


V, u otro tipo de montaje diferente:
-

Condicin engranaje a Cero: Muestra si el engranaje es a Cero, y de ser as, si tiene


alguna condicin especial. Los posibles valores de salida son Engranaje a Cero,
Engranaje en V y Engranaje en V con desplazamientos contrarios.

Condicin engranaje en V: Muestra si el engranaje cumple las condiciones


necesarias para ser un engranaje en V. Los posibles valores de salida de este campo
son Engranaje en V y Engranaje a Cero o en V.

Condicin de montaje: Muestra las condiciones de montaje del engranaje. Muestra


si existe o no juego radial en el montaje.

Los siguientes bloques tratan sobre los datos de los dientes de los engranajes, tanto de
la rueda dentada 1 como de la rueda dentada 2, tanto a Cero como en V y en posicin
de montaje. A continuacin se muestran los datos calculados por la aplicacin:
-

Coeficiente

de

desplazamiento

mnimo

(xmin):

El menor coeficiente de

desplazamiento permitido para que las ruedas cumplan la condicin de estar a Cero.
-

Radio primitivo o polar (R): El radio de la circunferencia primitiva de la rueda


dentada.

Radio base o de circunferencia directora (): Radio de la circunferencia base o


directora. Radio de la circunferencia en la cual empieza el perfil evolvente de los
dientes de las ruedas dentadas.

Radio de cabeza (Rc): El radio de la circunferencia que marca el lmite de todas las
cabezas de los dientes de la rueda dentada.

Radio de pie (Rp): Radio de la circunferencia inscrita en el pie de todos los dientes
del engranaje.

Funcin evolvente del ngulo lmite (Ev L): Valor de la funcin evolvente para el
ngulo lmite de apuntamiento del engranaje.

ngulo lmite de apuntamiento (L): ngulo lmite formado por la recta tangente a la
circunferencia base que pasa por el punto ms alto de la cabeza del diente de la
rueda dentada, si ste fuese en punta.

Radio lmite de apuntamiento (RL): Radio lmite para el engranaje con dientes en
punta. Distancia desde el centro de la rueda dentada hasta el punto ms alejado de
un diente acabado en punta.

Espesor primitivo o polar (e): Espesor de la seccin de un diente de la rueda dentada


a la altura de la circunferencia primitiva o polar.

Espesor de cabeza (ec): Espesor de la seccin de un diente de la rueda dentada a la


altura del radio de cabeza.

48

Espesor base (eb): Espesor de la seccin de un diente de la rueda dentada a la altura


del radio base o director.

Longitud entre dos dientes (distancia cordal) (L2k): Longitud medida en lnea recta
entre dos dientes consecutivos de la rueda dentada. Valor similar a la medicin con
un pie de rey o herramienta similar en una rueda dentada fsica.

Longitud entre tres dientes (distancia cordal) (L3k): Longitud medida en lnea recta
entre tres dientes consecutivos de la rueda dentada. Valor similar a la medicin con
un pie de rey o herramienta similar en una rueda dentada fsica.

Coeficiente de engrane (): Coeficiente que indica la relacin entre el arco de


conduccin y el paso en la circunferencia base. Para que exista continuidad en la
conduccin del engranaje es necesario que sea superior a la unidad.

Coeficiente de engrane (comprobacin) (): Clculo del coeficiente de engrane


usando un mtodo diferente al del campo anterior. Permite al usuario comprobar la
precisin y fiabilidad de los clculos siguiendo diferentes caminos para poder valorar
los resultados obtenidos.

Estos datos son calculados primero para engranajes a Cero, y en el siguiente bloque para
engranajes en V, para ambas ruedas dentadas. El bloque que sigue a continuacin es el
de montaje. Este bloque tambin es calculado para ambas ruedas dentadas:
-

Radio polar de montaje (Rm): Radio de la circunferencia polar del engranaje en la


posicin de montaje.

Espesor en circunferencia polar de montaje (em): Espesor de la seccin de un diente


de la rueda dentada a la altura del radio polar de montaje.

Coeficiente de engrane de montaje (m): Coeficiente que indica la relacin entre el


arco de conduccin y el paso en la circunferencia base, en condiciones de montaje.
Para que exista continuidad en la conduccin del engranaje es necesario que sea
superior a la unidad.

Coeficiente de engrane de montaje con radio de cabeza impuesto (mecanizacin Rk): Coeficiente que indica la relacin entre el arco de conduccin y el paso en la
circunferencia base, si la rueda dentada es tallada con un radio distinto, impuesto
por el proceso de mecanizado.

Holgura sobre espesor de circunferencia polar de montaje (hc): Holgura existente


sobre el espesor del diente de la rueda dentada a la altura del radio definido por la
circunferencia polar de montaje.

El siguiente y ltimo- bloque muestra datos sobre el engranaje. Los datos son vlidos
para ambas ruedas dentadas, ya que se trata de datos conjuntos del engrane entre ellas.
Estos datos son los siguientes:

49

Coeficiente de engrane total a Cero (): La suma de los coeficientes de engrane a


Cero de ambas ruedas dentadas.

Coeficiente de engrane total en V (): Suma de los coeficientes de engrane en V de


ambas ruedas dentadas.

Coeficiente de engrane total de montaje con radio de cabeza en V (m): Suma de


los coeficientes de engrane de montaje de ambas ruedas dentadas. Puede ser mayor
o menor a los coeficientes anteriores, dependiendo de la distancia de montaje
adoptada.

Coeficiente de engrane total de montaje con radio de cabeza de mecanizacin


impuesto (mRk): Suma de los coeficientes de engrane de montaje con el radio de
la cabeza del engranaje impuesto por el proceso de mecanizacin de ambas ruedas
dentadas.

Juego tangencial de montaje (J): El valor del juego tangencial existente en el


montaje de las dos ruedas dentadas engranadas.

Holgura sobre espesor de circunferencia polar de montaje (hc): Holgura polar total
existente, suma de las holguras polares de ambas ruedas dentadas.

Diferencia entre distancia entre centros en V y de montaje: La diferencia existente


entre ambas distancias, en V y de montaje.

Margen de error del paso en V: Margen de error que puede existir en el clculo de la
aplicacin en el campo del paso en V. Permite al usuario comprobar la precisin de
los clculos y conocer el error que puede existir.

Margen de error de la distancia en V: De igual manera que en el campo anterior,


permite comprobar la cantidad de error que puede haber en el clculo de la
distancia entre centros en V, calculndolo de un modo distinto al mostrado en el
campo, y mostrando la diferencia entre ambos. Permite conocer al usuario el
posible error con el que trabaja la aplicacin calculando un mismo parmetro de
diferentes maneras.

Margen de error de la distancia de montaje: Igual que en la distancia en V, calcula la


distancia de montaje a travs de otra va y muestra la diferencia entre campos.
Permite conocer el posible error con el que trabaja la aplicacin calculando un
mismo parmetro de dos maneras diferentes.

ngulo de presin en V (V): ngulo de presin con el que trabaja el engranaje en V.

ngulo de presin de montaje (m): ngulo de presin final con el que trabaja el
engranaje una vez montado.

Con tal cantidad de parmetros calculados, las ruedas dentadas y el engranaje entre
ellas se define completamente en todas las posibilidades de montaje diferentes.

50

Para que el clculo de las caractersticas de la bomba que monta estos engranajes no
pase desapercibido, y dado que necesita otro parmetro ms que es la velocidad de
rotacin de los engranajes, estas caractersticas son mostradas en la pantalla siguiente,
donde tambin se permite al usuario poder ver los puntos que conforman el perfil
evolvente de los dientes.
En esta pantalla se pide al usuario que defina una velocidad de rotacin para la bomba,
en rpm. Esta velocidad definir el caudal de la bomba.
Los campos mostrados en esta tercera pantalla, incluido el caudal, que son los que se
detallan a continuacin:
-

Velocidad de rotacin (n): Este campo es definido por el usuario, necesario para
calcular el caudal de la bomba. Si el usuario no introduce ningn dato, se pone a
cero por defecto.

Caudal terico (Qg): Caudal terico de una bomba de engranajes, los cuales vienen
definidos por los datos iniciales introducidos, con una velocidad de rotacin definida
por el usuario en el campo anterior.

Capacidad volumtrica (V): Volumen el cual la bomba tiene la capacidad de impulsar


a cada vuelta completa de sus engranajes.

Irregularidad de caudal (Q): Irregularidad o fluctuacin, en tanto por ciento del


caudal terico, que puede tener la bomba de engranajes calculada.

4.3.3. Dibujo de engranajes

En esta tercera pantalla, adems de mostrar los ltimos datos de la bomba de


engranajes, aparecen tres botones que permiten visualizar (en una cuarta pantalla) los
puntos del perfil evolvente de los dientes del engranaje, as como exportar estos puntos
a un archivo en el almacenamiento interno o externo del telfono.
Los puntos del engranaje son mostrados gracias a un mdulo importable de cdigo
abierto, que permite el dibujo de grficas. El mdulo se llama GraphView, y ha sido
desarrollado por Jonas Gehring. Este mdulo est disponible como librera importable al
programa de compilacin (en el caso de este proyecto es Android Studio).
El mayor problema que presenta GraphView es que la relacin entre ambos ejes no se
puede fijar en 1:1 como en un plano cartesiano, por lo que la representacin del perfil
evolvente del diente del engranaje puede no tener las proporciones adecuadas. Los

51

puntos, sin embargo s se generan correctamente (son independientes de dicho mdulo)


y permiten realizar el dibujo detallado en un programa de CAD.
La exportacin de los puntos del engranaje se realiza en un archivo .txt que guarda los
datos de las coordenadas X e Y.
Estos puntos del perfil evolvente son calculados por un algoritmo programado en la
aplicacin. El perfil evolvente cuenta con un total de 200 puntos calculados, distribuidos
en 100 puntos en cada uno de los perfiles (son necesarios dos perfiles para definir un
diente, uno a cada lado), y el perfil de la cabeza es calculado mediante una interpolacin
del final del perfil evolvente con el valor del radio final de cabeza del diente de la rueda
dentada. El perfil de la cabeza se compone de 9 puntos, es por ello que estos puntos
aparecen ms distanciados que los de los perfiles evolventes.
Los puntos, una vez generados, se muestran en pantalla, conformando la silueta del
diente del engranaje.

4.4. Resultado
El resultado de la programacin es una aplicacin llamada GearPumps.
Esta aplicacin est compuesta por cuatro actividades, cada una de ellas presentada en
una pantalla diferente. Todas ellas constan de un archivo de programacin de la parte
visual (.xml) y un archivo de la parte de programa (.java), siguiendo la estructura que se
presenta a continuacin:

Introduccin de
datos

Visualizacin de

Visualizacin de

parmetros del

parmetros de

engranaje

la bomba

Figura 28: Layout definitivo de la aplicacin

52

Visualizacin y
exportacin de
los puntos del
diente

Pantalla 1

Pantalla 2

Pantalla 3

Pantalla 4

Parte visual

activity_main.xml

activity_resultados.xml

activity_caudal.xml

grafica.xml

Parte de
programa

MainActivity.java

Resultados.java

Caudal.java

Grafica.java

Tabla 2: Distribucin del layout definitivo

La primera pantalla, donde se introducen los datos, tiene el siguiente aspecto:

Figura 29: Pantalla 1

En ella existen los campos para introducir los datos, que se activan nada ms entrar en la
aplicacin, desplegando el teclado del dispositivo. El layout general permite hacer scroll
en la pantalla para moverse hacia arriba y hacia abajo.
En la parte superior una lnea de texto advierte al usuario que puede pulsar sobre
cualquier campo de texto para ver una pequea explicacin sobre el valor a introducir
en dicho campo. Al pulsar se abre una ventana con una imagen representativa del
campo a introducir, as como una escueta explicacin sobre el dato que se debe entrar.
En la misma lnea se puede leer Vea valores de ejemplo. Si se pulsa sobre esta parte
del texto, los campos se rellenan automticamente con unos valores por defecto, de una
bomba de engranajes existente. Dichos valores son los siguientes:
-

Nmero de dientes rueda pequea 1 (z1): 12 dientes

Nmero de dientes rueda grande 2 (z2): 12 dientes

Mdulo (m): 25mm

53

ngulo de presin (): 20

Coeficiente de desplazamiento rueda 1 (x1): 033

Coeficiente de desplazamiento rueda 2 (x2): 033

Coeficiente de juego radial (j): 04

Distancia entre centros de montaje (=m): 315mm

Longitud del diente (b): 2475mm

Radio de cabeza de bomba, radio de mecanizacin (Rk): 187mm

Con estos valores de ejemplo una persona que se descargue la aplicacin por primera
vez puede ver datos realistas de una bomba de engranajes existente. En las siguientes
pantallas puede ver los datos calculados por la aplicacin, as como la forma de los
dientes de estos engranajes.
Al final de todos los campos de datos est el botn de calcular, que empieza el proceso
de clculo y, una vez finalizado, inicia la segunda actividad para que el usuario pueda ver
los resultados de dicho proceso.
Para evitar que la aplicacin pueda mostrar resultados errneos, incompletos, o incluso
encontrar alguna excepcin y tener que forzar el cierre, la aplicacin avisa con un
mensaje si alguno de los campos no se ha rellenado. Un smbolo rojo con una
exclamacin dentro avisa al usuario de qu campo o campos en concreto se trata. Los
datos introducidos en el resto de campos se mantienen.
Al final del todo, hay un texto donde pone Acerca de GearPumps, que si se pulsa
muestra un mensaje en pantalla sobre el desarrollador y los colaboradores de la
aplicacin, as como un mensaje informativo en el que se exhime de responsabilidad al
equipo desarrollador por cualquier tipo de uso y resultados de esta aplicacin.

54

La segunda pantalla y actividad muestra los resultados de clculo de manera muy similar
a cmo se introducen los datos en la primera:

Figura 30: Pantalla 2

La peculiaridad en este caso es que el usuario no tiene que introducir nada en esta
pantalla, tan solo ver los resultados mostrados. Los resultados son todos aquellos
explicados en el punto 4.3.2. Clculo de engranajes de esta memoria.
Esta actividad, al igual que la primera, tambin permite al usuario desplazarse
verticalmente por ella haciendo scroll. Al final de la pantalla hay un botn donde pone
Ver caudal y engranaje. Si se pulsa este botn, se pasa a la tercera actividad.

La tercera actividad muestra cuatro botones, que son el nexo a la cuarta actividad,
donde los puntos se exportan y se muestran en pantalla. Debajo de estos estn los
campos que tratan sobre el caudal e irregularidad de la bomba de engranajes. El aspecto
que tiene esta tercera pantalla es el siguiente:

55

Figura 31: Pantalla 3

El primer campo, Definir velocidad de rotacin, es el nico que requiere que se entre
un valor manualmente. El usuario debe definir la velocidad de rotacin de la bomba.
Una vez definida, y si pulsa sobre el botn Recalcular, podr ver cmo en los otros
campos aparecen los datos faltantes. Si el valor de la velocidad de rotacin no se define,
a diferencia de lo que suceda en la primera actividad, no se muestra ningn mensaje de
aviso si no que se toma el valor de la velocidad de rotacin como cero.
Pulsando cualquiera de los cuatro botones de la parte superior se accede a la cuarta
actividad y pantalla, donde se puede ver la representacin del perfil evolvente del
diente, segn las caractersticas seleccionadas (en V y a Cero, con o sin radio de
mecanizacin impuesto).

56

La cuarta actividad tiene el siguiente aspecto:

Figura 32: Pantalla 4

En esta actividad lo que se ve es la representacin mediante GraphView, adems de una


pequea explicacin de dnde se puede encontrar el archivo .txt generado.
Este archivo se guarda en el almacenamiento interno del telfono, en una carpeta
llamada GearPumps. Dentro de ella se puede encontrar el archivo Coordenadas.txt,
que contiene las coordenadas de la posicin X y la posicin Y del perfil del diente del
engranaje. Estas coordenadas pueden usarse en cualquier otro programa paraser
representadas, como puede verse en la figura mostrada a continuacin, donde se ha
representado usando MS Excel:

Figura 33: Vista de los puntos exportados

57

Tras conocer las acciones llevadas a cabo por la aplicacin, los resultados con los datos
de entrada del ejemplo son los siguientes:
Caractersticas del engranaje:
-

Nmero lmite de dientes (zl): 17097 dientes

Paso en circunferencia primitiva (p): 7853 mm

Paso en base o director (pb=pd): 7380 mm

Funcin evolvente del ngulo de presin (Ev ): 00149 rad

Distancia entre centros en engranaje a cero (0): 30 mm

Desplazamiento de la cremallera en ambas ruedas (): 0825 mm

Engranaje en V:
-

Parmetro B (B): 0055

Funcin evolvente del ngulo en V (Ev v): 00349 rad

ngulo de presin en V (v): 2624

Distancia entre centros de engranaje en V (v): 31429 mm

Mdulo en V (mv): 2619 mm

Paso polar en V (p): 8228 mm

Parmetro Bv (Bv): 0047

Parmetro K (K): 0088

Comprobacin de la suma de coeficientes de desplazamiento (x1+x2): 066

Montaje:
-

ngulo de presin de montaje (m): 26498

Funcin evolvente del ngulo de montaje (Ev m): 0036 rad

Mdulo de montaje (mm): 2625 mm

Paso de montaje (pm): 8246 mm

Condicin rueda:
-

Condicin engranaje a Cero: En V

Condicin engranaje en V: En V

Condicin de montaje: S juego radial

Rueda 1 a Cero:
-

Coeficiente de desplazamiento mnimo (xmin): 0298

Radio primitivo o polar (R): 15 mm

Radio base o de circunferencia directora (): 14095 mm

Radio de cabeza (Rc): 175 mm

58

Radio de pie (Rp): 115 mm

Funcin evolvente del ngulo lmite (Ev L): 0145 rad

ngulo lmite de apuntamiento (L): 4039

Radio lmite de apuntamiento (RL): 18506 mm

Espesor primitivo o polar (e): 3926 mm

Espesor de cabeza (ec): 1552 mm

Espesor base (eb): 411 mm

Longitud entre dos dientes (distancia cordal) (L2k): 1149 mm

Longitud entre tres dientes (distancia cordal) (L3k): 1887 mm

Coeficiente de engrane (): 071

Coeficiente de engrane (comprobacin) (): 071

Rueda 1 en V:
-

Radio de cabeza V (RcV): 18325 mm

Radio de cabeza por desplazamientos distintos (Rc1xV): 18545 mm

Radio primitivo o polar V (R): 15714 mm

Radio de pie V (RpV): 12325 mm

Funcin evolvente del ngulo lmite V (Ev LV): 0165 rad

ngulo lmite V (LV): 4190

Radio lmite de apuntamiento V (RLV): 19839 mm

Espesor primitivo o polar V (eV): 4527 mm

Espesor de cabeza V (ecV): 1036 mm

Espesor base V (ebV): 467 mm

Espesor de cabeza por desplazamientos distintos (ec1xV): 0674 mm

Longitud entre dos dientes (distancia cordal) V (L2kV): 12054 mm

Longitud entre tres dientes (distancia cordal) V (L3kV): 19435 mm

Coeficiente de engrane V (V): 0645

Coeficiente de engrane V (comprobacin) (V): 0617

Rueda 1 montaje:
-

Radio polar de montaje (Rm): 1575 mm

Espesor en circunferencia polar de montaje (em): 4087 mm

Coeficiente de engrane de montaje (m): 0634

Coeficiente de engrane de montaje con radio de cabeza impuesto (mecanizacin Rk): 0712

Holgura sobre espesor de circunferencia polar de montaje (hc): 0035 mm

59

Rueda 2 a Cero:
-

En este caso son los mismos resultados que en la rueda 1 a Cero, dado que sus
caractersticas y datos de entrada son los mismos.

Rueda 2 en V:
-

En este caso son los mismos resultados que en la rueda 1 a Cero, dado que sus
caractersticas y datos de entrada son los mismos.

Rueda 2 montaje:
-

En este caso son los mismos resultados que en la rueda 1 a Cero, dado que sus
caractersticas y datos de entrada son los mismos.

Engranaje:
-

Coeficiente de engrane total a Cero (): 1420

Coeficiente de engrane total en V (): 1290

Coeficiente de engrane total de montaje con radio de cabeza en V (m): 1268

Coeficiente de engrane total de montaje con radio de cabeza de mecanizacin


impuesto (mRk): 1425

Juego tangencial de montaje (J): 0071 mm

Holgura sobre espesor de circunferencia polar de montaje (hc): 0071 mm

Diferencia entre distancia entre centros en V y de montaje: 0070 mm

Margen de error del paso en V: 0826 mm

Margen de error de la distancia en V: 00 mm

Margen de error de la distancia de montaje: 00 mm

ngulo de presin en V (V): 2624

ngulo de presin de montaje (m): 26498

Y en la siguiente pantalla, donde el clculo del caudal:


-

Velocidad de rotacin (n): Este campo es definido por el usuario, necesario para
calcular el caudal de la bomba. En este caso se define, por ejemplo, un valor de
1500rpm.

Caudal terico (Qg): 18306 L/min

Capacidad volumtrica (V): 12204 cm3/rev

Irregularidad de caudal (Q): 17351 %

60

Las representaciones de los diferentes dientes pueden consultarse en la propia


aplicacin, y exportar sus puntos de coordenadas a un programa de diseo externo.
Asimismo, el perfil trocoidal resultante puede ser consultado en la hoja Excel de
comprobacin, explicada en el punto 4.6. de este documento.
Finalmente puede consultarse el cdigo de la aplicacin en el Anexo I para conocer ms
detalles sobre la estructura y el funcionamiento de sta.

4.5. Manual del usuario


La aplicacin se ha programado con la intencin de que tenga la mayor facilidad de uso
posible de cara al usuario final. La inclusin de valores de ejemplo as como la
explicacin de cada campo a introducir y dnde buscar el .txt generado facilitan su
comprensin. Adems es una aplicacin con un objetivo muy especfico, que no se
descargara una persona que no tuviera ciertos conocimientos del tema, o que no le
sonasen los conceptos sobre los que trata.
Por todo esto, adems del hecho de que la inmensa mayora de aplicaciones del
mercado no incluyen un manual del usuario ni un FAQ (repositorio de preguntas
frecuentes), no se ha credo necesario aadir un manual del usuario a la aplicacin
GearPumps.
Toda la informacin que se podra necesitar se encuentra en esta memoria de proyecto.

4.6. Hoja Excel


Paralelamente a la aplicacin, se ha realizado una hoja Excel para planificar las
expresiones, comprobar los resultados en tiempo real, y hacer un estudio previo a la
programacin de cdigo Java.
Esta hoja parte de un Excel base, facilitado por Xavier Gmez-Montero, que fue creado
por l junto con Munir Khamashta y Esteve Codina. La hoja ha sido ampliada y probada,
y se ha usado como punto de partida y soporte para el desarrollo de la aplicacin final

61

GearPumps. Los clculos y resultados han sido comparados y probados en todo el


proceso de desarrollo y depuracin.
Esta hoja Excel, adems de realizar los mismos clculos que realiza la aplicacin, tambin
se ha ampliado para poder representar el perfil trocoidal del diente del engranaje; parte
que se crea durante la mecanizacin del perfil evolvente y a la cual no se suele prestar
mucha atencin. Las expresiones para representar dicho perfil son extradas del
documento Performance Rating and optimization of spur gear drives with small number
of teeth, de M.A. Sahir Arikan. Dichas expresiones son las que siguen a continuacin.
Primeramente es necesario conocer la geometra de la cremallera de talla del engranaje.
Dicha geometra viene dada por unos estndares en la creacin de estas herramientas, y
puede verse en la figura siguiente:

Figura 34: Dimensiones de la cremallera de talla

En el caso que afecta a este proyecto, se ha elegido el estndar ISO 53 como referencia a
la hora de definir los parmetros de la herramienta de talla. En los valores, m es el
mdulo del engranaje a tallar.
La talla del perfil trocoidal es una talla complementaria generada debido a la creacin
del perfil evolvente, debido a la interferencia de la herramienta con la rueda dentada.
Dicho perfil trocoidal tiene unos puntos de inicio y fin, calculables mediante un ngulo ,
cuyo valor inicial es cero (perfil trocoidal tangente a la circunferencia base de la rueda),
y cuyo valor final viene definido por la siguiente expresin:
(4.6.1)

62

Donde rf y c vienen definidos por la norma ISO 53 (vase la figura 34), y rps se
define con la siguiente expresin:
(4.6.2)

Donde m es el mdulo, y z es el nmero de dientes de la rueda dentada en cuestin.


Este ngulo max es el ngulo que amrca el punto mximo del perfil trocoidal, donde este
se une al perfil evolvente del diente del engranaje. En la figura que se muestra a
continuacin, este punto puede verse representado con un radio rti, que es el radio
donde acaba el perfil trocoidal.

Figura 35: Diente con perfil evolvente y trocoidal

Los puntos de coordenadas (xf, yf) son los puntos calculados en la hoja Excel, y que
determinan el perfil trocoidal. Las expresiones que definen estos puntos son las
siguientes:

sin + +

cos + ]

(4.6.3)

63

cos +

sin + ]

(4.6.4)

En estas expresiones, los valores de rf y bc vienen definidos por la norma ISO 53, rps
se define por la expresin citada anteriormente (4.6.2), y es el resultado de la
expresin siguiente:
(4.6.5)

Donde z es el nmero de dientes de la rueda en cuestin, y se obtiene a partir de la


siguiente expresin:
(4.6.6)

Una vez obtenidos los puntos de coordenadas del perfil trocoidal (xf, yf), si el radio
terico donde empieza el perfil trocoidal es menor al radio donde acaba el perfil
evolvente, se puede habar de interferencia en el perfil evolvente. La herramienta de
talla destruye parte de este perfil evolvente de un diente por el hecho de tallar el perfil
evolvente del diente adyacente.
En el caso de ejemplo de la aplicacin GearPumps, siendo comprobado en la Hoja Excel
de la que trata este punto, el perfil de los diferentes dientes de los engranajes de la
bomba se define con sus puntos (xf, yf), visibles en la hoja de clculo. Estos puntos, una
vez representados y superpuestos a los perfiles evolventes, tienen el aspecto siguiente:

64

A Cero

20

En V

19

En V_Rk

18

A Cero_Rk

17

Trocoidal

16

Trocoidal izq

15
14
13
12
11
10

-5

-3

-1

Figura 36: Vista previa de los dientes en la hoja Excel

65

5. Planificacin y programacin
Este proyecto se ha llevado a cabo en 30 semanas de trabajo, invirtiendo las horas libres
disponibles despus de la jornada laboral y otras obligaciones. Es por ello que la
distribucin de horas es muy variable, y la programacin no es la que cabra esperar en
un proyecto con dedicacin total y exclusiva. La cantidad de horas invertidas en este
proyecto puede verse resumida en la siguiente tabla:

Horas totales

Bsqueda de
informacin
229

Aprendizaje
268

Programacin
de la aplicacin
277

Redaccin de
la memoria
155

Tabla 3: Horas empleadas

La tarea de bsqueda de informacin contempla la bsqueda tanto para comprender la


teora sobre los engranajes como para conocer el lenguaje de Android y los requisitos
necesarios durante la programacin.
El aprendizaje contempla las horas en las que la informacin encontrada es til y es
posible aplicarla al desarrollo del proyecto. En este caso, el nmero de horas es mayor
que en la bsqueda dado que la informacin de la teora de engranajes no fue necesario
filtrarla, porque fue facilitada informacin til por el tutor de este proyecto.
Las horas empleadas en programacin son aquellas horas con las que se ha estado
trabajando con Android Studio. Son las horas en las que se ha escrito, probado y
depurado el cdigo de la aplicacin hasta obtener la app final GearPumps.
La redaccin de la memoria incluye todas las horas empleadas en redactar la memoria
de este proyecto.
Debido a que la bsqueda de informacin y el aprendizaje son dos tareas muy ligadas
entre s, y que en muchas ocasiones no se realizaban de manera independiente sino
conjunta, a la suma de estas horas se le ha aplicado un coeficiente de simultaneidad de
07, redistribuyendo el total de horas empleadas de la siguiente manera:

Horas totales

Bsqueda de informacin
+ Aprendizaje
(229+268)07 = 348

Programacin
de la aplicacin
277

Tabla 4: Horas empleadas, con simultaneidad

66

Redaccin de la
memoria
155

Con esta distribucin final de las horas empleadas, la duracin de este proyecto en el
caso de haber tenido dedicacin total y exclusiva, contando con 40h semanales de
trabajo, sera de 20 semanas.
En el siguiente diagrama de Gantt, realizado con el software Gantt Project, puede
verse la distribucin de las horas invertidas en este proyecto:

67

68

Figura 37: Diagrama Gantt

6. Resumen econmico
El presupuesto estimado de este proyecto incluye todos aquellos gastos, IVA incluido,
que han concurrido en la realizacin del proyecto, siendo estos los siguientes:
-

Horas empleadas en la bsqueda de informacin y aprendizaje sobre teora de


engranajes.

Horas empleadas en la bsqueda de informacin y aprendizaje sobre el lenguaje de


programacin de Android (Java + XML).

Horas empleadas en la programacin de la aplicacin y la realizacin de la hoja Excel


de comprobacin.

Horas empleadas en la redaccin de la memoria del proyecto.

Costes derivados del consumo elctrico del ordenador utilizado.

Costes de movilidad derivados de los desplazamientos necesarios para las reuniones


con el tutor del proyecto.

Costes de imprenta y encuadernacin.

Costes del material de oficina utilizado.

El coste de cada hora de trabajo se ha estimado en 12/hora, teniendo en cuenta que el


proyecto ha sido realizado por un estudiante de ingeniera con conocimientos limitados
sobre la materia. En el caso que el proyecto se llevara a cabo por un profesional
cualificado con experiencia en el sector, el precio por hora se vera incrementado, aun
que tambin el tiempo total de realizacin del proyecto sera menor.
El desglose econmico total puede verse a continuacin:
Concepto
Bsqueda y
aprendizaje
Programacin y
hoja Excel
Redaccin de la
memoria
Consumo elctrico
Desplazamiento
Impresin del
proyecto
Encuadernacin
CDs

Unidades

Coste unitario

Coste total

348 horas

12/h

4176

277 horas

12/h

3324

155 horas

12/h

1860

936 kWh

014/kWh

1311

85 km

030/km

255

1 ud

10

10

1 ud

2 ud

4
941561

TOTAL
Tabla 5: Presupuesto

69

7. Implicacin ambiental
Este proyecto ha tenido un bajo impacto ambiental al tratarse del desarrollo de una
aplicacin para telfonos mviles. Sin embargo, el uso de un ordenador porttil durante
todas las horas necesarias para la creacin del proyecto, as como el desplazamiento en
vehculo privado y la impresin del proyecto, s causan un cierto impacto
medioambiental. El impacto directo en kg de CO2 puede verse en la siguiente tabla:
Concepto

Cantidad

Emisiones de CO2

Consumo elctrico

936 kWh

611 kg

Desplazamiento

85 km

119 kg

TOTAL

73 kg
Tabla 6: Emisiones de CO2 equivalentes

En cuanto a la impresin del proyecto, al no ser cuantificable directamente el valor de


las emisiones de CO2 equivalentes, se tiene en cuenta la buena prctica ambiental del
servicio de reprografa de la ETSEIAT, donde:
-

Los restos de papel y cartn, as como plsticos sobrantes de la impresin y


encuadernacin

del

proyecto,

son

desechados

en

sus

contenedores

correspondientes, facilitando as su futuro reciclaje por los servicios municipales de


recogida de basuras.
-

El tner usado para la impresin, al final de su vida til, es depositado en su


contenedor especfico para gestionar su recogida y posterior tratamiento por la
empresa correspondiente.

Referente a la aplicacin GearPumps de este proyecto, dicha aplicacin permite ahorrar


papel y tinta al calcular las caractersticas de los engranajes en el propio smartphone, sin
necesidad de usar recursos externos. La aplicacin en s contribuye en cierto modo al
ahorro en materia prima y desechos de papel y tinta.

70

8. Conclusiones
Una vez desarrollada la aplicacin y finalizado el proyecto, las conclusiones que se
obtienen sobre la propia aplicacin son las siguientes:
-

Se ha desarrollado una aplicacin funcional partiendo desde cero, usable en


cualquier smartphone con sistema operativo Android.

La aplicacin tiene una interfaz sencilla e intuitiva, con ayudas para que cualquier
usuario pueda entender qu datos son los requeridos, adems de contar con datos
de ejemplo de una bomba de engranajes real para poder hacer pruebas. Es una
aplicacin fcil de usar.

La aplicacin es totalmente gratuita y no tiene publicidad.

Permite calcular el perfil evolvente del engranaje, adems de muchas otras


caractersticas de ste.

Permite el clculo de las caractersticas de la bomba (caudal e irregularidad) cuando


por ella circulan fluidos newtonianos.

Permite ver el dibujo del diente del engranaje calculado en la propia aplicacin.

Permite exportar las coordenadas del diente del engranaje calculado para ser
usadas en un programa de diseo CAD.

En el mbito personal, las conclusiones que obtengo es que aprender a programar


Android desde cero requiere una dedicacin bastante elevada, adems de tener una
curva de aprendizaje lenta. El lenguaje Java es complicado de dominar si nunca antes se
ha usado.
En mi caso mis nicos conocimientos de programacin eran haber usado C++ y Arduino
a nivel bsico en la carrera, y HTML/CSS a nivel personal.
El hecho de haber programado cosas en C++ y Arduino me ha ayudado a tener un
pensamiento ms enfocado a la programacin, generacin de bucles, bsqueda de
errores, declaracin de variables, memoria, etc. HTML y CSS me han ayudado con el

71

mbito de XML de Android, teniendo un poco ms de soltura al programar las interfaces


visuales de GearPumps.
La programacin ha sido difcil, ms con el poco tiempo del que dispona; esto ha hecho
que el proyecto se haya alargado ms de lo que tena previsto en un inicio. A pesar de
ello, considero que las horas empleadas son correctas, y que finalmente se han
cumplido con creces los objetivos iniciales previstos.

72

9. Recomendaciones para una


posible continuacin del trabajo
Esta aplicacin puede mejorarse y ampliarse de cara a un futuro. Al ser sta la primera
versin lanzada, tiene un funcionamiento bsico que puede ser mejorado en futuras
versiones. Las posibles mejoras a realizar podran ser:
-

Mejorar el aspecto de la interfaz grfica para hacer ms atractiva la aplicacin.

Mantener una relacin de aspecto de 1:1 en los ejes de la grfica en la actividad 4,


donde se muestra el perfil del diente del engranaje.

Mostrar el perfil trocoidal del diente y poder exportar sus puntos.

Y a partir de aqu las mejoras pueden ser infinitas e incluir ms caractersticas dentro de
la misma aplicacin. El cdigo es ampliable tanto como se desee.

73

10. Requisitos de software


Para el desarrollo de este proyecto se han usado varios programas:
-

Microsoft Office 2010: Word como procesador de textos, y Excel como herramienta
para poder crear una tabla para comprobar los clculos de la aplicacin GearPumps.

Android Studio: Programa usado para escribir el cdigo de la aplicacin y poder


disearla y desarrollarla partiendo de cero.

Gantt Project: Programa usado para la creacin del grfico Gantt de planificacin del
proyecto.

El nico de los tres que requiere licencia es Microsoft Office. Se ha usado una licencia de
estudiante mediante Dreamspark (antiguo MSDNAA, programa que incluye licencias
gratuitas de Microsoft para estudiantes universitarios) para su funcionamiento.
Android Studio es un programa libre (Freeware), al igual que Gantt Project. Ambos
fueron descargados de sus sitios web oficiales.
Los requisitos mnimos de sistema para poder usar dichos programas son los siguientes:
Programa

Procesador

Memoria RAM

Espacio en disco

Microsoft Office 2010

500 MHz

256 MB

15 GB

Android Studio

2 GB

1 GB

Gantt Project

25 MB

Tabla 7: Requisitos de sistema

A pesar de ser estos los requisitos mnimos, para Android Studio se recomienda un
procesador Intel con capacidad de aceleracin de hardware (i3 o superior) para poder
generar un emulador de smartphone en el propio ordenador. Tambin se recomienda el
uso de un telfono Android para poder probar la aplicacin en un terminal aparte.

74

11. Bibliografa y referencias


Figuras:

Figura 1: http://www.cbs.grundfos.com/GMX_Mexico/lexica/LIT_Gear_pumps.html

Figura 2: Celades, J.; Pedrs, J.M. (1966) Manual Prctico de Engranajes. Marcombo,
Barcelona.

Figura 3: Gmez-Montero, X.; Khamashta, M.; Codina, E. (2014) Teora Bsica de


Engranajes Cilndricos Rectos. UPC-ETSEIAT, Terrassa, Barcelona.

Figura 4: http://commons.wikimedia.org/wiki/File:Evolvent_of_circle.jpg

Figura 5: Gmez-Montero, X.; Khamashta, M.; Codina, E. (2014) Teora Bsica de


Engranajes Cilndricos Rectos. UPC-ETSEIAT, Terrassa, Barcelona.

Figura 6: Gmez-Montero, X.; Khamashta, M.; Codina, E. (2014) Teora Bsica de


Engranajes Cilndricos Rectos. UPC-ETSEIAT, Terrassa, Barcelona.

Figura 7: Gmez-Montero, X.; Khamashta, M.; Codina, E. (2014) Teora Bsica de


Engranajes Cilndricos Rectos. UPC-ETSEIAT, Terrassa, Barcelona.

Figura 8: Gmez-Montero, X.; Khamashta, M.; Codina, E. (2014) Teora Bsica de


Engranajes Cilndricos Rectos. UPC-ETSEIAT, Terrassa, Barcelona.

Figura 9: Gmez-Montero, X.; Khamashta, M.; Codina, E. (2014) Teora Bsica de


Engranajes Cilndricos Rectos. UPC-ETSEIAT, Terrassa, Barcelona.

Figura 10: Gmez-Montero, X.; Khamashta, M.; Codina, E. (2014) Teora Bsica de
Engranajes Cilndricos Rectos. UPC-ETSEIAT, Terrassa, Barcelona.

Figura 11: Lamadrid, A.; de Corral, A. (1983) Cinemtica y Dinmica de Mquinas. E.T.S.I.I,
Madrid.

Figura 12: Lamadrid, A.; de Corral, A. (1983) Cinemtica y Dinmica de Mquinas. E.T.S.I.I,
Madrid.

Figura 13: Lamadrid, A.; de Corral, A. (1983) Cinemtica y Dinmica de Mquinas. E.T.S.I.I,
Madrid.

Figura 14: Lamadrid, A.; de Corral, A. (1983) Cinemtica y Dinmica de Mquinas. E.T.S.I.I,
Madrid.

Figura 15: Lamadrid, A.; de Corral, A. (1983) Cinemtica y Dinmica de Mquinas. E.T.S.I.I,
Madrid.

Figura 16: Lamadrid, A.; de Corral, A. (1983) Cinemtica y Dinmica de Mquinas. E.T.S.I.I,
Madrid.

Figura 17: Gmez-Montero, X.; Khamashta, M.; Codina, E. (2014) Teora Bsica de
Engranajes Cilndricos Rectos. UPC-ETSEIAT, Terrassa, Barcelona.

Figura 18: Gmez-Montero, X.; Khamashta, M.; Codina, E. (2014) Teora Bsica de
Engranajes Cilndricos Rectos. UPC-ETSEIAT, Terrassa, Barcelona.

Figura 19: Lamadrid, A.; de Corral, A. (1983) Cinemtica y Dinmica de Mquinas. E.T.S.I.I,
Madrid.

75

Figura 20: Lamadrid, A.; de Corral, A. (1983) Cinemtica y Dinmica de Mquinas. E.T.S.I.I,
Madrid.

Figura 21: Lamadrid, A.; de Corral, A. (1983) Cinemtica y Dinmica de Mquinas. E.T.S.I.I,
Madrid.

Figura 22: https://play.google.com/store/apps/details?id=jfo.project.engranajesPro

Figura 23: https://play.google.com/store/apps/details?id=gear_check_work.gear_check


_work

Figura 24: http://ai2.appinventor.mit.edu/

Figura 25: Elaboracin propia

Figura 26: http://developer.android.com/about/dashboards/index.html

Figura 27: Elaboracin propia

Figura 28: Elaboracin propia

Figura 29: Elaboracin propia

Figura 30: Elaboracin propia

Figura 31: Elaboracin propia

Figura 32: Elaboracin propia

Figura 33: Elaboracin propia

Figura 34: Arikan, M.A. Sahir. (2000) Performance Rating and optimization of spur gear
drives with small number of teeth. Middle East Technical University, Ankara, Turkey.

Figura 35: Arikan, M.A. Sahir. (2000) Performance Rating and optimization of spur gear
drives with small number of teeth. Middle East Technical University, Ankara, Turkey.

Figura 36: Elaboracin propia

Figura 37: Elaboracin propia usando Gantt Project (http://www.ganttproject.biz)

Tablas:

Tabla 1: Elaboracin propia

Tabla 2: Elaboracin propia

Tabla 3: Elaboracin propia

Tabla 4: Elaboracin propia

Tabla 5: Elaboracin propia

Tabla 6: Elaboracin propia

Tabla 7: Elaboracin propia

Bibliografa:

http://es.wikipedia.org/wiki/Bomba_de_engranajes

Lamadrid, A.; de Corral, A. (1983) Cinemtica y Dinmica de Mquinas. E.T.S.I.I, Madrid.

Arikan, M.A. Sahir. (2000) Performance Rating and optimization of spur gear drives with
small number of teeth. Middle East Technical University, Ankara, Turkey.

Ivantysyn, J.; Ivantysynova, M. (2001) Hydrostatic pumps and motors: principles, design,
performance, modeling, analysis, control and testing. Akad Books Internat.

http://appinventor.mit.edu/explore/about-us.html

76

http://developer.android.com/tools/studio/index.html

http://developer.android.com/about/dashboards/index.html

http://www.android-graphview.org/

http://stackoverflow.com/questions/tagged/android

http://www.ganttproject.biz/

http://arboliza.es/compensar-co2/calculo-co2.html

http://blogs.technet.com/b/office2010/archive/2010/01/22/office-2010-systemrequirements.aspx

https://developer.android.com/sdk/index.html#Requirements

77

ANEXO I: Cdigo

78

I.1. Java
I.1.1. MainActivity.java
1
package com.manugd.gearpumps.app;
2
3
import android.app.Activity;
4
import android.content.Intent;
5
import android.os.Bundle;
6
import android.view.Gravity;
7
import android.view.LayoutInflater;
8
import android.view.View;
9
import android.view.ViewGroup;
10
import android.widget.Button;
11
import android.widget.EditText;
12
import android.widget.ImageView;
13
import android.widget.TextView;
14
import android.widget.Toast;
15
16
17
public class MainActivity extends Activity {
18
//Defino las variables a usar
19
TextView clic, resp, about, t_ndientes1, t_ndientes2, t_modulo, t_angulopresion, t_desplazamiento1, t_desplazamiento2, t_juegoradial,
t_distanciacentromontaje, t_longituddiente, t_radiocabezamecanizado;
20
EditText ndientes1, ndientes2, modulo, angulopresion, desplazamiento1, desplazamiento2, juegoradial, distanciacentromontaje, longituddiente,
radiocabezamecanizado;
21
22
@Override
23
protected void onCreate(Bundle savedInstanceState) {
24
super.onCreate(savedInstanceState);
25
setContentView(R.layout.activity_main);
26
//if (savedInstanceState == null) {
27
//
getSupportFragmentManager().beginTransaction()
28
//
.add(R.id.container, new PlaceholderFragment())
29
//
.commit();
30
//}
31
32
//Defino el valor de las variables desde los campos introducidos
33
ndientes1 = (EditText) findViewById(R.id.c_ndientes1);
34
ndientes2 = (EditText) findViewById(R.id.c_ndientes2);
35
modulo = (EditText) findViewById(R.id.c_modulo);

79

36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85

angulopresion = (EditText) findViewById(R.id.c_angulopresion);


desplazamiento1 = (EditText) findViewById(R.id.c_desplazamiento1);
desplazamiento2 = (EditText) findViewById(R.id.c_desplazamiento2);
juegoradial = (EditText) findViewById(R.id.c_juegoradial);
distanciacentromontaje = (EditText) findViewById(R.id.c_distanciacentromontaje);
longituddiente = (EditText) findViewById(R.id.c_longituddiente);
radiocabezamecanizado = (EditText) findViewById(R.id.c_radiocabezamecanizado);
//Doy nombre a los textos para pulsar
about = (TextView) findViewById(R.id.about);
resp = (TextView) findViewById(R.id.respons);
clic = (TextView) findViewById(R.id.clic);
t_ndientes1 = (TextView) findViewById(R.id.t_ndientes1);
t_ndientes2 = (TextView) findViewById(R.id.t_ndientes2);
t_modulo = (TextView) findViewById(R.id.t_modulo);
t_angulopresion = (TextView) findViewById(R.id.t_angulopresion);
t_desplazamiento1 = (TextView) findViewById(R.id.t_desplazamiento1);
t_desplazamiento2 = (TextView) findViewById(R.id.t_desplazamiento2);
t_juegoradial = (TextView) findViewById(R.id.t_juegoradial);
t_distanciacentromontaje = (TextView) findViewById(R.id.t_distanciacentromontaje);
t_longituddiente = (TextView) findViewById(R.id.t_longituddiente);
t_radiocabezamecanizado = (TextView) findViewById(R.id.t_radiocabezamecanizado);
//ESTABLECEMOS LAS IMAGENES
//Imagen ndientes1
t_ndientes1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//Crea layout del toast
LayoutInflater inflater = getLayoutInflater();
View layout = inflater.inflate(R.layout.custom_toast,
(ViewGroup) findViewById(R.id.custom_toast_layout_id));
//Establece la imagen
ImageView image = (ImageView) layout.findViewById(R.id.image);
image.setImageResource(R.drawable.ndientes1);
//Establece el texto
TextView text = (TextView) layout.findViewById(R.id.text);
text.setText("Nmero de dientes de la rueda pequea 1");
//Toast
Toast toast = new Toast(getApplicationContext());
toast.setGravity(Gravity.CENTER_VERTICAL, 0, 0);
toast.setDuration(Toast.LENGTH_LONG);
toast.setView(layout);
toast.show();
}

80

86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135

});
//Imagen ndientes2
t_ndientes2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//Crea layout del toast
LayoutInflater inflater = getLayoutInflater();
View layout = inflater.inflate(R.layout.custom_toast,
(ViewGroup) findViewById(R.id.custom_toast_layout_id));
//Establece la imagen
ImageView image = (ImageView) layout.findViewById(R.id.image);
image.setImageResource(R.drawable.ndientes2);
//Establece el texto
TextView text = (TextView) layout.findViewById(R.id.text);
text.setText("Nmero de dientes de la rueda grande 2");
//Toast
Toast toast = new Toast(getApplicationContext());
toast.setGravity(Gravity.CENTER_VERTICAL, 0, 0);
toast.setDuration(Toast.LENGTH_LONG);
toast.setView(layout);
toast.show();
}
});
//Imagen modulo
t_modulo.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//Crea layout del toast
LayoutInflater inflater = getLayoutInflater();
View layout = inflater.inflate(R.layout.custom_toast,
(ViewGroup) findViewById(R.id.custom_toast_layout_id));
//Establece la imagen
ImageView image = (ImageView) layout.findViewById(R.id.image);
image.setImageResource(R.drawable.modulo);
//Establece el texto
TextView text = (TextView) layout.findViewById(R.id.text);
text.setText("Mdulo del engranaje, relacin entre dimetro primitivo y nmero de dientes");
//Toast
Toast toast = new Toast(getApplicationContext());
toast.setGravity(Gravity.CENTER_VERTICAL, 0, 0);
toast.setDuration(Toast.LENGTH_LONG);
toast.setView(layout);

81

136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185

toast.show();
}
});
//Imagen angulopresion
t_angulopresion.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//Crea layout del toast
LayoutInflater inflater = getLayoutInflater();
View layout = inflater.inflate(R.layout.custom_toast,
(ViewGroup) findViewById(R.id.custom_toast_layout_id));
//Establece la imagen
ImageView image = (ImageView) layout.findViewById(R.id.image);
image.setImageResource(R.drawable.angulopresion);
//Establece el texto
TextView text = (TextView) layout.findViewById(R.id.text);
text.setText("ngulo de presin de los dientes del engranaje, ngulo de incidencia sobre el crculo primitivo");
//Toast
Toast toast = new Toast(getApplicationContext());
toast.setGravity(Gravity.CENTER_VERTICAL, 0, 0);
toast.setDuration(Toast.LENGTH_LONG);
toast.setView(layout);
toast.show();
}
});
//Imagen desplazamiento1
t_desplazamiento1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//Crea layout del toast
LayoutInflater inflater = getLayoutInflater();
View layout = inflater.inflate(R.layout.custom_toast,
(ViewGroup) findViewById(R.id.custom_toast_layout_id));
//Establece la imagen
ImageView image = (ImageView) layout.findViewById(R.id.image);
image.setImageResource(R.drawable.desplazamiento1);
//Establece el texto
TextView text = (TextView) layout.findViewById(R.id.text);
text.setText("Coeficiente de desplazamiento de la rueda pequea 1");
//Toast
Toast toast = new Toast(getApplicationContext());
toast.setGravity(Gravity.CENTER_VERTICAL, 0, 0);

82

186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235

toast.setDuration(Toast.LENGTH_LONG);
toast.setView(layout);
toast.show();
}
});
//Imagen desplazamiento2
t_desplazamiento2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//Crea layout del toast
LayoutInflater inflater = getLayoutInflater();
View layout = inflater.inflate(R.layout.custom_toast,
(ViewGroup) findViewById(R.id.custom_toast_layout_id));
//Establece la imagen
ImageView image = (ImageView) layout.findViewById(R.id.image);
image.setImageResource(R.drawable.desplazamiento2);
//Establece el texto
TextView text = (TextView) layout.findViewById(R.id.text);
text.setText("Coeficiente de desplazamiento de la rueda grande 2");
//Toast
Toast toast = new Toast(getApplicationContext());
toast.setGravity(Gravity.CENTER_VERTICAL, 0, 0);
toast.setDuration(Toast.LENGTH_LONG);
toast.setView(layout);
toast.show();
}
});
//Imagen juegoradial
t_juegoradial.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//Crea layout del toast
LayoutInflater inflater = getLayoutInflater();
View layout = inflater.inflate(R.layout.custom_toast,
(ViewGroup) findViewById(R.id.custom_toast_layout_id));
//Establece la imagen
ImageView image = (ImageView) layout.findViewById(R.id.image);
image.setImageResource(R.drawable.juegoradial);
//Establece el texto
TextView text = (TextView) layout.findViewById(R.id.text);
text.setText("Coeficiente de juego radial del engranaje");
//Toast

83

236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285

Toast toast = new Toast(getApplicationContext());


toast.setGravity(Gravity.CENTER_VERTICAL, 0, 0);
toast.setDuration(Toast.LENGTH_LONG);
toast.setView(layout);
toast.show();
}
});
//Imagen distanciacentromontaje
t_distanciacentromontaje.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//Crea layout del toast
LayoutInflater inflater = getLayoutInflater();
View layout = inflater.inflate(R.layout.custom_toast,
(ViewGroup) findViewById(R.id.custom_toast_layout_id));
//Establece la imagen
ImageView image = (ImageView) layout.findViewById(R.id.image);
image.setImageResource(R.drawable.distanciacentromontaje);
//Establece el texto
TextView text = (TextView) layout.findViewById(R.id.text);
text.setText("Distancia entre los centros de montaje de las ruedas dentadas");
//Toast
Toast toast = new Toast(getApplicationContext());
toast.setGravity(Gravity.CENTER_VERTICAL, 0, 0);
toast.setDuration(Toast.LENGTH_LONG);
toast.setView(layout);
toast.show();
}
});
//Imagen longituddiente
t_longituddiente.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//Crea layout del toast
LayoutInflater inflater = getLayoutInflater();
View layout = inflater.inflate(R.layout.custom_toast,
(ViewGroup) findViewById(R.id.custom_toast_layout_id));
//Establece la imagen
ImageView image = (ImageView) layout.findViewById(R.id.image);
image.setImageResource(R.drawable.longdiente);
//Establece el texto
TextView text = (TextView) layout.findViewById(R.id.text);
text.setText("Longitud del diente del engranaje, anchura de los dientes");

84

286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335

//Toast
Toast toast = new Toast(getApplicationContext());
toast.setGravity(Gravity.CENTER_VERTICAL, 0, 0);
toast.setDuration(Toast.LENGTH_LONG);
toast.setView(layout);
toast.show();
}
});
//Imagen radiocabezamecanizado
t_radiocabezamecanizado.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//Crea layout del toast
LayoutInflater inflater = getLayoutInflater();
View layout = inflater.inflate(R.layout.custom_toast,
(ViewGroup) findViewById(R.id.custom_toast_layout_id));
//Establece la imagen
ImageView image = (ImageView) layout.findViewById(R.id.image);
image.setImageResource(R.drawable.radiocabezamecanizado);
//Establece el texto
TextView text = (TextView) layout.findViewById(R.id.text);
text.setText("Radio de cabeza de la bomba, radio de mecanizacin");
//Toast
Toast toast = new Toast(getApplicationContext());
toast.setGravity(Gravity.CENTER_VERTICAL, 0, 0);
toast.setDuration(Toast.LENGTH_LONG);
toast.setView(layout);
toast.show();
}
});
//Defino el botn de calcular
Button btncalc = (Button) findViewById(R.id.btncalc);
//Escucha al evento botn
btncalc.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
//Comprueba si existen campos en blanco y muestra aviso
boolean vacio=false;
Toast alerta = Toast.makeText(getApplicationContext(), "Existen campos en blanco", Toast.LENGTH_SHORT);
if (ndientes1.getText().toString().trim().length() == 0){ndientes1.setError("Debe rellenar el campo"); vacio=true;}
if (ndientes2.getText().toString().trim().length() == 0){ndientes2.setError("Debe rellenar el campo"); vacio=true;}
if (modulo.getText().toString().trim().length() == 0){modulo.setError("Debe rellenar el campo"); vacio=true;}

85

336
if (angulopresion.getText().toString().trim().length() == 0){angulopresion.setError("Debe rellenar el campo"); vacio=true;}
337
if (desplazamiento1.getText().toString().trim().length() == 0){desplazamiento1.setError("Debe rellenar el campo"); vacio=true;}
338
if (desplazamiento2.getText().toString().trim().length() == 0){desplazamiento2.setError("Debe rellenar el campo"); vacio=true;}
339
if (juegoradial.getText().toString().trim().length() == 0){juegoradial.setError("Debe rellenar el campo"); vacio=true;}
340
if (distanciacentromontaje.getText().toString().trim().length() == 0){distanciacentromontaje.setError("Debe rellenar el campo");
vacio=true;}
341
if (longituddiente.getText().toString().trim().length() == 0){longituddiente.setError("Debe rellenar el campo"); vacio=true;}
342
if (radiocabezamecanizado.getText().toString().trim().length() == 0){radiocabezamecanizado.setError("Debe rellenar el campo");
vacio=true;}
343
if (vacio==true) alerta.show();
344
345
else {
346
//Inicia la actividad de los resultados
347
Intent Resultados = new Intent(getApplicationContext(), Resultados.class);
348
349
//Manda los datos a la actividad de los resultados
350
Resultados.putExtra("r_ndientes1", ndientes1.getText().toString());
351
Resultados.putExtra("r_ndientes2", ndientes2.getText().toString());
352
Resultados.putExtra("r_modulo", modulo.getText().toString());
353
Resultados.putExtra("r_angulopresion", angulopresion.getText().toString());
354
Resultados.putExtra("r_desplazamiento1", desplazamiento1.getText().toString());
355
Resultados.putExtra("r_desplazamiento2", desplazamiento2.getText().toString());
356
Resultados.putExtra("r_juegoradial", juegoradial.getText().toString());
357
Resultados.putExtra("r_distanciacentromontaje", distanciacentromontaje.getText().toString());
358
Resultados.putExtra("r_longituddiente", longituddiente.getText().toString());
359
Resultados.putExtra("r_radiocabezamecanizado", radiocabezamecanizado.getText().toString());
360
361
startActivity(Resultados);
362
}
363
}
364
});
365
366
//Acerca de
367
about.setOnClickListener(new View.OnClickListener() {
368
@Override
369
public void onClick(View v) {
370
Toast.makeText(getApplicationContext(),
371
"Aplicacin desarrollada por Manuel Gonzlez,con la colaboracin de Xavier Gmez-Montero, Javier Freire, Munir Khamashta y Esteve
Codina\n\nUPC-ETSEIAT 2015", Toast.LENGTH_LONG).show();
372
}
373
});
374
375
//Responsabilidad
376
resp.setOnClickListener(new View.OnClickListener() {
377
@Override
378
public void onClick(View v) {
379
Toast.makeText(getApplicationContext(),
380
"Esta aplicacin es de carcter orientativo y acadmico, para facilitar informacin til en cualquier momento. El equipo de
desarrollo no se hace responsable de los problemas derivados de los resultados obtenidos con esta aplicacin, as como de su mal uso. Para aplicaciones reales
se aconseja contrastar los resultados de clculo con otras fuentes.", Toast.LENGTH_LONG).show();

86

381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403

}
});
//Ver ejemplo
clic.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
ndientes1.setText("12");
ndientes2.setText("12");
modulo.setText("2.5");
angulopresion.setText("20");
desplazamiento1.setText("0.33");
desplazamiento2.setText("0.33");
juegoradial.setText("0.4");
distanciacentromontaje.setText("31.5");
longituddiente.setText("24.75");
radiocabezamecanizado.setText("18.7");
}
});
}
}

87

I.1.2. Resultados.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45

package com.manugd.gearpumps.app;
import
import
import
import
import
import

android.app.Activity;
android.content.Intent;
android.os.Bundle;
android.view.View;
android.widget.Button;
android.widget.EditText;

public class Resultados extends Activity {


@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_resultados);
//Defino los doubles de resultados
final double ndienteslimite, paso, pasodirector, fevolventeangulopresion, distanciacentros, desplazcremallera1, desplazcremallera2;
double parametrob, fevolventeangulov, angulov, distanciacentrov=0, modulov, pasopolarv, parametrobv, parametrok, sumadespl;
double angulomontaje, fevolventeangulomontaje, modulomontaje, pasomontaje;
String condengranajecero, condengranajev, condmontaje;
final double desplazamientomin1, radioprimitivo1, radiobase1, radiocabeza1, radiopie1, fevolventeangulolimite1, angulolimite1,
radioapuntamiento1, espesorprimitivo1, espesorcabeza1, espesorbase1, long2dientes1, long3dientes1, coefengrane1, coefengrane1comp;
final double radiocabezav1, radiocabezx1x2v1, radioprimitivov1, radiopiev1, fevolventeangulolimitev1, angulolimitev1, radioapuntamientov1,
espesorprimitivov1, espesorcabezav1, espesorbasev1, espesorcabeza1x, long2dientesv1, long3dientesv1, coefengranev1, coefengranev1comp;
double radioprimitivomontaje1, espesorpolarmontaje1, coefengranemontaje1, coefengranemontajerk1, holgurapolar1;
double desplazamientomin2, radioprimitivo2, radiobase2, radiocabeza2, radiopie2, fevolventeangulolimite2, angulolimite2, radioapuntamiento2,
espesorprimitivo2, espesorcabeza2, espesorbase2, long2dientes2, long3dientes2, coefengrane2, coefengrane2comp;
double radiocabezav2, radiocabezx1x2v2, radioprimitivov2, radiopiev2, fevolventeangulolimitev2, angulolimitev2, radioapuntamientov2,
espesorprimitivov2, espesorcabezav2, espesorbasev2, espesorcabeza2x, long2dientesv2, long3dientesv2, coefengranev2, coefengranev2comp;
double radioprimitivomontaje2, espesorpolarmontaje2, coefengranemontaje2, coefengranemontajerk2, holgurapolar2;
double coefengranecero, coefengranev, coefengranercv, coefengranerk, juegotangencial, holgurapolarmontaje, distanciavmontaje,
comppasov, compdistanciav, compdistanciamontaje, angulopresionv, angulopresionmontaje;
//Defino los campos de texto
EditText c_ndienteslimite = (EditText) findViewById(R.id.c_ndienteslimite);
EditText c_paso = (EditText) findViewById(R.id.c_paso);
EditText c_pasodirector = (EditText) findViewById(R.id.c_pasodirector);
final EditText c_fevolventeangulopresion = (EditText) findViewById(R.id.c_fevolventeangulopresion);
EditText c_distanciacentros = (EditText) findViewById(R.id.c_distanciacentros);
EditText c_desplazcremallera1 = (EditText) findViewById(R.id.c_desplazcremallera1);
EditText c_desplazcremallera2 = (EditText) findViewById(R.id.c_desplazcremallera2);
//Engranaje V

88

46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95

EditText c_parametrob = (EditText) findViewById(R.id.c_parametrob);


EditText c_fevolventeangulov = (EditText) findViewById(R.id.c_fevolventeangulov);
EditText c_angulov = (EditText) findViewById(R.id.c_angulov);
EditText c_distanciacentrov = (EditText) findViewById(R.id.c_distanciacentrov);
EditText c_modulov = (EditText) findViewById(R.id.c_modulov);
EditText c_pasopolarv = (EditText) findViewById(R.id.c_pasopolarv);
EditText c_parametrobv = (EditText) findViewById(R.id.c_parametrobv);
EditText c_parametrok = (EditText) findViewById(R.id.c_parametrok);
EditText c_sumadespl = (EditText) findViewById(R.id.c_sumadespl);
//Montaje
EditText c_angulomontaje = (EditText) findViewById(R.id.c_angulomontaje);
EditText c_fevolventeangulomontaje = (EditText) findViewById(R.id.c_fevolventeangulomontaje);
EditText c_modulomontaje = (EditText) findViewById(R.id.c_modulomontaje);
EditText c_pasomontaje = (EditText) findViewById(R.id.c_pasomontaje);
//Condicin rueda
EditText c_condengranajecero = (EditText) findViewById(R.id.c_condengranajecero);
EditText c_condengranajev = (EditText) findViewById(R.id.c_condengranajev);
EditText c_condmontaje = (EditText) findViewById(R.id.c_condmontaje);
//Rueda1 a CERO
EditText c_desplazamientomin1 = (EditText) findViewById(R.id.c_desplazamientomin1);
final EditText c_radioprimitivo1 = (EditText) findViewById(R.id.c_radioprimitivo1);
final EditText c_radiobase1 = (EditText) findViewById(R.id.c_radiobase1);
final EditText c_radiocabeza1 = (EditText) findViewById(R.id.c_radiocabeza1);
EditText c_radiopie1 = (EditText) findViewById(R.id.c_radiopie1);
EditText c_fevolventeangulolimite1 = (EditText) findViewById(R.id.c_fevolventeangulolimite1);
EditText c_angulolimite1 = (EditText) findViewById(R.id.c_angulolimite1);
EditText c_radioapuntamiento1 = (EditText) findViewById(R.id.c_radioapuntamiento1);
EditText c_espesorprimitivo1 = (EditText) findViewById(R.id.c_espesorprimitivo1);
EditText c_espesorcabeza1 = (EditText) findViewById(R.id.c_espesorcabeza1);
EditText c_espesorbase1 = (EditText) findViewById(R.id.c_espesorbase1);
EditText c_long2dientes1 = (EditText) findViewById(R.id.c_long2dientes1);
EditText c_long3dientes1 = (EditText) findViewById(R.id.c_long3dientes1);
EditText c_coefengrane1 = (EditText) findViewById(R.id.c_coefengrane1);
EditText c_coefengrane1comp = (EditText) findViewById(R.id.c_coefengrane1comp);
//Rueda1 en V
final EditText c_radiocabezav1 = (EditText) findViewById(R.id.c_radiocabezav1);
EditText c_radiocabezx1x2v1 = (EditText) findViewById(R.id.c_radiocabezx1x2v1);
EditText c_radioprimitivov1 = (EditText) findViewById(R.id.c_radioprimitivov1);
EditText c_radiopiev1 = (EditText) findViewById(R.id.c_radiopiev1);
final EditText c_fevolventeangulolimitev1 = (EditText) findViewById(R.id.c_fevolventeangulolimitev1);
EditText c_angulolimitev1 = (EditText) findViewById(R.id.c_angulolimitev1);
EditText c_radioapuntamientov1 = (EditText) findViewById(R.id.c_radioapuntamientov1);
EditText c_espesorprimitivov1 = (EditText) findViewById(R.id.c_espesorprimitivov1);
EditText c_espesorcabezav1 = (EditText) findViewById(R.id.c_espesorcabezav1);
EditText c_espesorbasev1 = (EditText) findViewById(R.id.c_espesorbasev1);
EditText c_espesorcabeza1x = (EditText) findViewById(R.id.c_espesorcabeza1x);
EditText c_long2dientesv1 = (EditText) findViewById(R.id.c_long2dientesv1);
EditText c_long3dientesv1 = (EditText) findViewById(R.id.c_long3dientesv1);
EditText c_coefengranev1 = (EditText) findViewById(R.id.c_coefengranev1);
EditText c_coefengranev1comp = (EditText) findViewById(R.id.c_coefengranev1comp);

89

96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145

//Rueda1 montaje
EditText c_radioprimitivomontaje1 = (EditText) findViewById(R.id.c_radioprimitivomontaje1);
EditText c_espesorpolarmontaje1 = (EditText) findViewById(R.id.c_espesorpolarmontaje1);
EditText c_coefengranemontaje1 = (EditText) findViewById(R.id.c_coefengranemontaje1);
EditText c_coefengranemontajerk1 = (EditText) findViewById(R.id.c_coefengranemontajerk1);
EditText c_holgurapolar1 = (EditText) findViewById(R.id.c_holgurapolar1);
//Rueda2 a CERO
EditText c_desplazamientomin2 = (EditText) findViewById(R.id.c_desplazamientomin2);
final EditText c_radioprimitivo2 = (EditText) findViewById(R.id.c_radioprimitivo2);
EditText c_radiobase2 = (EditText) findViewById(R.id.c_radiobase2);
final EditText c_radiocabeza2 = (EditText) findViewById(R.id.c_radiocabeza2);
EditText c_radiopie2 = (EditText) findViewById(R.id.c_radiopie2);
EditText c_fevolventeangulolimite2 = (EditText) findViewById(R.id.c_fevolventeangulolimite2);
EditText c_angulolimite2 = (EditText) findViewById(R.id.c_angulolimite2);
EditText c_radioapuntamiento2 = (EditText) findViewById(R.id.c_radioapuntamiento2);
EditText c_espesorprimitivo2 = (EditText) findViewById(R.id.c_espesorprimitivo2);
EditText c_espesorcabeza2 = (EditText) findViewById(R.id.c_espesorcabeza2);
EditText c_espesorbase2 = (EditText) findViewById(R.id.c_espesorbase2);
EditText c_long2dientes2 = (EditText) findViewById(R.id.c_long2dientes2);
EditText c_long3dientes2 = (EditText) findViewById(R.id.c_long3dientes2);
EditText c_coefengrane2 = (EditText) findViewById(R.id.c_coefengrane2);
EditText c_coefengrane2comp = (EditText) findViewById(R.id.c_coefengrane2comp);
//Rueda2 en V
EditText c_radiocabezav2 = (EditText) findViewById(R.id.c_radiocabezav2);
EditText c_radiocabezx1x2v2 = (EditText) findViewById(R.id.c_radiocabezx1x2v2);
EditText c_radioprimitivov2 = (EditText) findViewById(R.id.c_radioprimitivov2);
EditText c_radiopiev2 = (EditText) findViewById(R.id.c_radiopiev2);
EditText c_fevolventeangulolimitev2 = (EditText) findViewById(R.id.c_fevolventeangulolimitev2);
EditText c_angulolimitev2 = (EditText) findViewById(R.id.c_angulolimitev2);
EditText c_radioapuntamientov2 = (EditText) findViewById(R.id.c_radioapuntamientov2);
EditText c_espesorprimitivov2 = (EditText) findViewById(R.id.c_espesorprimitivov2);
EditText c_espesorcabezav2 = (EditText) findViewById(R.id.c_espesorcabezav2);
EditText c_espesorbasev2 = (EditText) findViewById(R.id.c_espesorbasev2);
EditText c_espesorcabeza2x = (EditText) findViewById(R.id.c_espesorcabeza2x);
EditText c_long2dientesv2 = (EditText) findViewById(R.id.c_long2dientesv2);
EditText c_long3dientesv2 = (EditText) findViewById(R.id.c_long3dientesv2);
EditText c_coefengranev2 = (EditText) findViewById(R.id.c_coefengranev2);
EditText c_coefengranev2comp = (EditText) findViewById(R.id.c_coefengranev2comp);
//Rueda2 montaje
EditText c_radioprimitivomontaje2 = (EditText) findViewById(R.id.c_radioprimitivomontaje2);
EditText c_espesorpolarmontaje2 = (EditText) findViewById(R.id.c_espesorpolarmontaje2);
EditText c_coefengranemontaje2 = (EditText) findViewById(R.id.c_coefengranemontaje2);
EditText c_coefengranemontajerk2 = (EditText) findViewById(R.id.c_coefengranemontajerk2);
EditText c_holgurapolar2 = (EditText) findViewById(R.id.c_holgurapolar2);
//Engranaje
EditText c_coefengranecero = (EditText) findViewById(R.id.c_coefengranecero);
EditText c_coefengranev = (EditText) findViewById(R.id.c_coefengranev);
EditText c_coefengranercv = (EditText) findViewById(R.id.c_coefengranercv);
EditText c_coefengranerk = (EditText) findViewById(R.id.c_coefengranerk);
EditText c_juegotangencial = (EditText) findViewById(R.id.c_juegotangencial);

90

146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195

EditText
EditText
EditText
EditText
EditText
EditText
EditText

c_holgurapolarmontaje = (EditText) findViewById(R.id.c_holgurapolarmontaje);


c_distanciavmontaje = (EditText) findViewById(R.id.c_distanciavmontaje);
c_comppasov = (EditText) findViewById(R.id.c_comppasov);
c_compdistanciav = (EditText) findViewById(R.id.c_compdistanciav);
c_compdistanciamontaje = (EditText) findViewById(R.id.c_compdistanciamontaje);
c_angulopresionv = (EditText) findViewById(R.id.c_angulopresionv);
c_angulopresionmontaje = (EditText) findViewById(R.id.c_angulopresionmontaje);

Intent i = getIntent();
//Recibo los datos iniciales introducidos
final String r_ndientes1 = i.getStringExtra("r_ndientes1");
final String r_ndientes2 = i.getStringExtra("r_ndientes2");
final String r_modulo = i.getStringExtra("r_modulo");
final String r_angulopresion = i.getStringExtra("r_angulopresion");
String r_desplazamiento1 = i.getStringExtra("r_desplazamiento1");
String r_desplazamiento2 = i.getStringExtra("r_desplazamiento2");
String r_juegoradial = i.getStringExtra("r_juegoradial");
String r_distanciacentromontaje = i.getStringExtra("r_distanciacentromontaje");
final String r_longituddiente = i.getStringExtra("r_longituddiente");
final String r_radiocabezamecanizado = i.getStringExtra("r_radiocabezamecanizado");
//Paso los datos
final double
final double
final double
final double
final double
final double
final double
final double
final double
final double

iniciales a nmeros
ndientes1 = Double.parseDouble(r_ndientes1);
ndientes2 = Double.parseDouble(r_ndientes2);
modulo = Double.parseDouble(r_modulo);
angulopresion = Double.parseDouble(r_angulopresion);
desplazamiento1 = Double.parseDouble(r_desplazamiento1);
desplazamiento2 = Double.parseDouble(r_desplazamiento2);
juegoradial = Double.parseDouble(r_juegoradial);
distanciacentromontaje = Double.parseDouble(r_distanciacentromontaje);
longituddiente = Double.parseDouble(r_longituddiente);
radiocabezamecanizado = Double.parseDouble(r_radiocabezamecanizado);

//Realizo los clculos


ndienteslimite = 2/Math.pow(Math.sin(Math.toRadians(angulopresion)),2);
paso = (Math.PI)*modulo;
pasodirector = paso*(Math.cos(Math.toRadians(angulopresion)));
fevolventeangulopresion = (Math.tan(Math.toRadians(angulopresion)))-Math.toRadians(angulopresion);
distanciacentros = (modulo/2)*(ndientes1+ndientes2);
desplazcremallera1 = desplazamiento1*modulo;
desplazcremallera2 = desplazamiento2*modulo;
//Engranaje V
parametrob = (2*(desplazamiento1+desplazamiento2))/(ndientes1+ndientes2);
fevolventeangulov = (parametrob*Math.tan(Math.toRadians(angulopresion)))+fevolventeangulopresion;
double deg=0;
double rad=0;
double evol=0;
for(deg=0; evol<fevolventeangulov; deg=deg+0.01){
rad = Math.toRadians(deg);

91

196
evol = Math.tan(rad)-rad;
197
}
198
angulov = Math.toDegrees(rad);
199
if ((distanciacentros*(Math.cos(Math.toRadians(angulopresion))/Math.cos(Math.toRadians(angulov))))>distanciacentromontaje){
200
c_distanciacentrov.setText("ERROR, imposible");
201
}else{
202
distanciacentrov = (distanciacentros*(Math.cos(Math.toRadians(angulopresion))/Math.cos(Math.toRadians(angulov))));
203
c_distanciacentrov.setText(Double.toString(distanciacentrov));
204
}
205
modulov = (distanciacentrov/distanciacentros)*modulo;
206
pasopolarv = modulov*Math.PI;
207
parametrobv = (distanciacentrov/distanciacentros)-1;
208
parametrok = (0.5)*(ndientes1+ndientes2)*(parametrob-parametrobv);
209
sumadespl = (parametrob*(ndientes1+ndientes2))/2;
210
//Montaje
211
angulomontaje = Math.toDegrees(Math.acos((distanciacentros/distanciacentromontaje)*Math.cos(Math.toRadians(angulopresion))));
212
fevolventeangulomontaje = Math.tan(Math.toRadians(angulomontaje))-Math.toRadians(angulomontaje);
213
modulomontaje = (distanciacentromontaje/distanciacentros)*modulo;
214
pasomontaje = modulomontaje*Math.PI;
215
//Condicin rueda
216
if ((ndientes1>=ndienteslimite)&&(ndientes2>=ndienteslimite)){condengranajecero="A CERO";}
217
else if ((ndientes1<ndienteslimite)&&((ndientes1+ndientes2)>=(2*ndienteslimite))){condengranajecero="EN V con x1=-x2";}
218
else {condengranajecero="EN V";}
219
if (distanciacentromontaje!=distanciacentros){condengranajev="EN V";}
220
else if ((ndientes1<ndienteslimite)&&(ndientes2<ndienteslimite)){condengranajev="EN V";}
221
else if ((ndientes1<ndienteslimite)&&((ndientes1+ndientes2)<(2*ndienteslimite))){condengranajev="EN V";}
222
else {condengranajev="A CERO o EN V";}
223
if (distanciacentromontaje!=distanciacentrov){condmontaje="SI JUEGO";}
224
else {condmontaje="NO JUEGO";}
225
//Rueda1 a CERO
226
desplazamientomin1 = (ndienteslimite-ndientes1)/ndienteslimite;
227
radioprimitivo1 = (modulo*ndientes1)/2;
228
radiobase1 = radioprimitivo1*Math.cos(Math.toRadians(angulopresion));
229
radiocabeza1 = modulo*((ndientes1/2)+1);
230
radiopie1 = radiocabeza1-(modulo*(2+juegoradial));
231
fevolventeangulolimite1 = (Math.PI/(2*ndientes1))+fevolventeangulopresion;
232
deg=0;
233
rad=0;
234
evol=0;
235
for(deg=0; evol<fevolventeangulolimite1; deg=deg+0.01){
236
rad = Math.toRadians(deg);
237
evol = Math.tan(rad)-rad;
238
}
239
angulolimite1 = Math.toDegrees(rad);
240
radioapuntamiento1 = radioprimitivo1*Math.cos(Math.toRadians(angulopresion))/Math.cos(Math.toRadians(angulolimite1));
241
espesorprimitivo1 = 2*radioprimitivo1*(fevolventeangulolimite1-(Math.tan(Math.acos(radiobase1/radioprimitivo1))(Math.acos(radiobase1/radioprimitivo1))));
242
espesorcabeza1 = 2*radiocabeza1*(fevolventeangulolimite1-(Math.tan(Math.acos(radiobase1/radiocabeza1))-(Math.acos(radiobase1/radiocabeza1))));
243
espesorbase1 = 2*radiobase1*fevolventeangulolimite1;
244
long2dientes1 = pasodirector+espesorbase1;

92

245
long3dientes1 = 2*pasodirector+espesorbase1;
246
coefengrane1 = ndientes1*(Math.tan(Math.acos(radiobase1/radiocabeza1))-Math.tan(Math.toRadians(angulopresion)))/(2*Math.PI);
247
coefengrane1comp = (Math.sqrt((ndientes1+2)*(ndientes1+2)ndientes1*ndientes1*Math.cos(Math.toRadians(angulopresion))*Math.cos(Math.toRadians(angulopresion)))ndientes1*Math.sin(Math.toRadians(angulopresion)))/(2*Math.PI*Math.cos(Math.toRadians(angulopresion)));
248
//Rueda1 en V
249
radiocabezav1 = modulo*(ndientes1/2+desplazamiento1+1);
250
radiocabezx1x2v1 = modulo*((0.5)*ndientes1+desplazamiento1+1+parametrok);
251
radioprimitivov1 = modulov*0.5*ndientes1;
252
radiopiev1 = radiocabezav1-modulo*(2+juegoradial);
253
fevolventeangulolimitev1 =
((Math.PI)/(2*ndientes1))+((2*desplazamiento1)/ndientes1)*Math.tan(Math.toRadians(angulopresion))+fevolventeangulopresion;
254
deg=0;
255
rad=0;
256
evol=0;
257
for(deg=0; evol<fevolventeangulolimitev1; deg=deg+0.01){
258
rad = Math.toRadians(deg);
259
evol = Math.tan(rad)-rad;
260
}
261
angulolimitev1 = Math.toDegrees(rad);
262
radioapuntamientov1 = radioprimitivov1*Math.cos(Math.toRadians(angulopresion))/Math.cos(Math.toRadians(angulolimitev1));
263
espesorprimitivov1 = 2*radioprimitivo1*(fevolventeangulolimitev1-fevolventeangulopresion);
264
espesorcabezav1 = 2*radiocabezav1*(fevolventeangulolimitev1-(Math.tan(Math.acos(radiobase1/radiocabezav1))(Math.acos(radiobase1/radiocabezav1))));
265
espesorbasev1 = 2*radiobase1*fevolventeangulolimitev1;
266
espesorcabeza1x = 2*radiocabezx1x2v1*(fevolventeangulolimitev1-(Math.tan(Math.acos(radiobase1/radiocabezx1x2v1))(Math.acos(radiobase1/radiocabezx1x2v1))));
267
long2dientesv1 = pasodirector+espesorbasev1;
268
long3dientesv1 = 2*pasodirector+espesorbasev1;
269
coefengranev1 = (radiobase1*(Math.tan(Math.acos(radiobase1/radiocabezav1))Math.tan(Math.toRadians(angulov))))/(Math.PI*modulo*Math.cos(Math.toRadians(angulopresion)));
270
coefengranev1comp = (Math.sqrt((ndientes1+2)*(ndientes1+2)ndientes1*ndientes1*Math.cos(Math.toRadians(angulov))*Math.cos(Math.toRadians(angulov)))ndientes1*Math.sin(Math.toRadians(angulov)))/(2*Math.PI*Math.cos(Math.toRadians(angulopresion)));
271
//Rueda1 montaje
272
radioprimitivomontaje1 = 0.5*modulomontaje*ndientes1;
273
espesorpolarmontaje1 = 2*radioprimitivomontaje1*(fevolventeangulolimitev1-fevolventeangulomontaje);
274
coefengranemontaje1 = (radiobase1*(Math.tan(Math.acos(radiobase1/radiocabezav1))Math.tan(Math.toRadians(angulomontaje))))/(Math.PI*modulo*Math.cos(Math.toRadians(angulopresion)));
275
coefengranemontajerk1 = (radiobase1*(Math.tan(Math.acos(radiobase1/radiocabezamecanizado))Math.tan(Math.toRadians(angulomontaje))))/(Math.PI*modulo*Math.cos(Math.toRadians(angulopresion)));
276
holgurapolar1 = (pasomontaje-2*espesorpolarmontaje1)/2;
277
//Rueda2 a CERO
278
desplazamientomin2 = (ndienteslimite-ndientes2)/ndienteslimite;
279
radioprimitivo2 = (modulo*ndientes2)/2;
280
radiobase2 = radioprimitivo2*Math.cos(Math.toRadians(angulopresion));
281
radiocabeza2 = modulo*((ndientes2/2)+1);
282
radiopie2 = radiocabeza2-(modulo*(2+juegoradial));
283
fevolventeangulolimite2 = (Math.PI/(2*ndientes2))+fevolventeangulopresion;
284
deg=0;

93

285
rad=0;
286
evol=0;
287
for(deg=0; evol<fevolventeangulolimite2; deg=deg+0.01){
288
rad = Math.toRadians(deg);
289
evol = Math.tan(rad)-rad;
290
}
291
angulolimite2 = Math.toDegrees(rad);
292
radioapuntamiento2 = radioprimitivo2*Math.cos(Math.toRadians(angulopresion))/Math.cos(Math.toRadians(angulolimite2));
293
espesorprimitivo2 = 2*radioprimitivo2*(fevolventeangulolimite2-(Math.tan(Math.acos(radiobase2/radioprimitivo2))(Math.acos(radiobase2/radioprimitivo2))));
294
espesorcabeza2 = 2*radiocabeza2*(fevolventeangulolimite2-(Math.tan(Math.acos(radiobase2/radiocabeza2))-(Math.acos(radiobase2/radiocabeza2))));
295
espesorbase2 = 2*radiobase2*fevolventeangulolimite2;
296
long2dientes2 = pasodirector+espesorbase2;
297
long3dientes2 = 2*pasodirector+espesorbase2;
298
coefengrane2 = ndientes2*(Math.tan(Math.acos(radiobase2/radiocabeza2))-Math.tan(Math.toRadians(angulopresion)))/(2*Math.PI);
299
coefengrane2comp = (Math.sqrt((ndientes2+2)*(ndientes2+2)ndientes2*ndientes2*Math.cos(Math.toRadians(angulopresion))*Math.cos(Math.toRadians(angulopresion)))ndientes2*Math.sin(Math.toRadians(angulopresion)))/(2*Math.PI*Math.cos(Math.toRadians(angulopresion)));
300
//Rueda2 en V
301
radiocabezav2 = modulo*(ndientes2/2+desplazamiento2+1);
302
radiocabezx1x2v2 = modulo*((0.5)*ndientes2+desplazamiento2+1+parametrok);
303
radioprimitivov2 = modulov*0.5*ndientes2;
304
radiopiev2 = radiocabezav2-modulo*(2+juegoradial);
305
fevolventeangulolimitev2 =
((Math.PI)/(2*ndientes2))+((2*desplazamiento2)/ndientes2)*Math.tan(Math.toRadians(angulopresion))+fevolventeangulopresion;
306
deg=0;
307
rad=0;
308
evol=0;
309
for(deg=0; evol<fevolventeangulolimitev2; deg=deg+0.01){
310
rad = Math.toRadians(deg);
311
evol = Math.tan(rad)-rad;
312
}
313
angulolimitev2 = Math.toDegrees(rad);
314
radioapuntamientov2 = radioprimitivov2*Math.cos(Math.toRadians(angulopresion))/Math.cos(Math.toRadians(angulolimitev2));
315
espesorprimitivov2 = 2*radioprimitivo2*(fevolventeangulolimitev2-fevolventeangulopresion);
316
espesorcabezav2 = 2*radiocabezav2*(fevolventeangulolimitev2-(Math.tan(Math.acos(radiobase2/radiocabezav2))(Math.acos(radiobase2/radiocabezav2))));
317
espesorbasev2 = 2*radiobase2*fevolventeangulolimitev2;
318
espesorcabeza2x = 2*radiocabezx1x2v2*(fevolventeangulolimitev2-(Math.tan(Math.acos(radiobase2/radiocabezx1x2v2))(Math.acos(radiobase2/radiocabezx1x2v2))));
319
long2dientesv2 = pasodirector+espesorbasev2;
320
long3dientesv2 = 2*pasodirector+espesorbasev2;
321
coefengranev2 = (radiobase2*(Math.tan(Math.acos(radiobase2/radiocabezav2))Math.tan(Math.toRadians(angulov))))/(Math.PI*modulo*Math.cos(Math.toRadians(angulopresion)));
322
coefengranev2comp = (Math.sqrt((ndientes2+2)*(ndientes2+2)ndientes2*ndientes2*Math.cos(Math.toRadians(angulov))*Math.cos(Math.toRadians(angulov)))ndientes2*Math.sin(Math.toRadians(angulov)))/(2*Math.PI*Math.cos(Math.toRadians(angulopresion)));
323
//Rueda2 montaje
324
radioprimitivomontaje2 = 0.5*modulomontaje*ndientes2;
325
espesorpolarmontaje2 = 2*radioprimitivomontaje2*(fevolventeangulolimitev2-fevolventeangulomontaje);

94

326
coefengranemontaje2 = (radiobase2*(Math.tan(Math.acos(radiobase2/radiocabezav2))Math.tan(Math.toRadians(angulomontaje))))/(Math.PI*modulo*Math.cos(Math.toRadians(angulopresion)));
327
coefengranemontajerk2 = (radiobase2*(Math.tan(Math.acos(radiobase2/radiocabezamecanizado))Math.tan(Math.toRadians(angulomontaje))))/(Math.PI*modulo*Math.cos(Math.toRadians(angulopresion)));
328
holgurapolar2 = (pasomontaje-2*espesorpolarmontaje2)/2;
329
//Engranaje
330
coefengranecero = coefengrane1+coefengrane2;
331
coefengranev = coefengranev1+coefengranev2;
332
coefengranercv = coefengranemontaje1+coefengranemontaje2;
333
coefengranerk = coefengranemontajerk1+coefengranemontajerk2;
334
juegotangencial = pasomontaje-(espesorpolarmontaje1+espesorpolarmontaje2);
335
holgurapolarmontaje = holgurapolar1+holgurapolar2;
336
distanciavmontaje = distanciacentromontaje-distanciacentrov;
337
comppasov = (espesorprimitivov1+espesorprimitivov2)-pasopolarv;
338
compdistanciav = (radioprimitivov1+radioprimitivov2)-distanciacentrov;
339
compdistanciamontaje = (radioprimitivomontaje1+radioprimitivomontaje2)-distanciacentromontaje;
340
angulopresionv = Math.toDegrees(Math.acos((radiobase1+radiobase2)/distanciacentrov));
341
angulopresionmontaje = Math.toDegrees(Math.acos((radiobase1+radiobase2)/distanciacentromontaje));
342
343
344
//Muestro los resultados
345
c_ndienteslimite.setText(Double.toString(ndienteslimite));
346
c_paso.setText(Double.toString(paso));
347
c_pasodirector.setText(Double.toString(pasodirector));
348
c_fevolventeangulopresion.setText(Double.toString(fevolventeangulopresion));
349
c_distanciacentros.setText(Double.toString(distanciacentros));
350
c_desplazcremallera1.setText(Double.toString(desplazcremallera1));
351
c_desplazcremallera2.setText(Double.toString(desplazcremallera2));
352
//Engranaje V
353
c_parametrob.setText(Double.toString(parametrob));
354
c_fevolventeangulov.setText(Double.toString(fevolventeangulov));
355
c_angulov.setText(Double.toString(angulov));
356
//c_distanciacentrov definido en "if"
357
c_modulov.setText(Double.toString(modulov));
358
c_pasopolarv.setText(Double.toString(pasopolarv));
359
c_parametrobv.setText(Double.toString(parametrobv));
360
c_parametrok.setText(Double.toString(parametrok));
361
c_sumadespl.setText(Double.toString(sumadespl));
362
//Montaje
363
c_angulomontaje.setText(Double.toString(angulomontaje));
364
c_fevolventeangulomontaje.setText(Double.toString(fevolventeangulomontaje));
365
c_modulomontaje.setText(Double.toString(modulomontaje));
366
c_pasomontaje.setText(Double.toString(pasomontaje));
367
//Condicin rueda
368
c_condengranajecero.setText(condengranajecero);
369
c_condengranajev.setText(condengranajev);
370
c_condmontaje.setText(condmontaje);
371
//Rueda 1 a CERO
372
c_desplazamientomin1.setText(Double.toString(desplazamientomin1));
373
c_radioprimitivo1.setText(Double.toString(radioprimitivo1));

95

374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423

c_radiobase1.setText(Double.toString(radiobase1));
c_radiocabeza1.setText(Double.toString(radiocabeza1));
c_radiopie1.setText(Double.toString(radiopie1));
c_fevolventeangulolimite1.setText(Double.toString(fevolventeangulolimite1));
c_angulolimite1.setText(Double.toString(angulolimite1));
c_radioapuntamiento1.setText(Double.toString(radioapuntamiento1));
c_espesorprimitivo1.setText(Double.toString(espesorprimitivo1));
c_espesorcabeza1.setText(Double.toString(espesorcabeza1));
c_espesorbase1.setText(Double.toString(espesorbase1));
c_long2dientes1.setText(Double.toString(long2dientes1));
c_long3dientes1.setText(Double.toString(long3dientes1));
c_coefengrane1.setText(Double.toString(coefengrane1));
c_coefengrane1comp.setText(Double.toString(coefengrane1comp));
//Rueda 1 en V
c_radiocabezav1.setText(Double.toString(radiocabezav1));
c_radiocabezx1x2v1.setText(Double.toString(radiocabezx1x2v1));
c_radioprimitivov1.setText(Double.toString(radioprimitivov1));
c_radiopiev1.setText(Double.toString(radiopiev1));
c_fevolventeangulolimitev1.setText(Double.toString(fevolventeangulolimitev1));
c_angulolimitev1.setText(Double.toString(angulolimitev1));
c_radioapuntamientov1.setText(Double.toString(radioapuntamientov1));
c_espesorprimitivov1.setText(Double.toString(espesorprimitivov1));
c_espesorcabezav1.setText(Double.toString(espesorcabezav1));
c_espesorbasev1.setText(Double.toString(espesorbasev1));
c_espesorcabeza1x.setText(Double.toString(espesorcabeza1x));
c_long2dientesv1.setText(Double.toString(long2dientesv1));
c_long3dientesv1.setText(Double.toString(long3dientesv1));
c_coefengranev1.setText(Double.toString(coefengranev1));
c_coefengranev1comp.setText(Double.toString(coefengranev1comp));
//Rueda 1 montaje
c_radioprimitivomontaje1.setText(Double.toString(radioprimitivomontaje1));
c_espesorpolarmontaje1.setText(Double.toString(espesorpolarmontaje1));
c_coefengranemontaje1.setText(Double.toString(coefengranemontaje1));
c_coefengranemontajerk1.setText(Double.toString(coefengranemontajerk1));
c_holgurapolar1.setText(Double.toString(holgurapolar1));
//Rueda 2 a CERO
c_desplazamientomin2.setText(Double.toString(desplazamientomin2));
c_radioprimitivo2.setText(Double.toString(radioprimitivo2));
c_radiobase2.setText(Double.toString(radiobase2));
c_radiocabeza2.setText(Double.toString(radiocabeza2));
c_radiopie2.setText(Double.toString(radiopie2));
c_fevolventeangulolimite2.setText(Double.toString(fevolventeangulolimite2));
c_angulolimite2.setText(Double.toString(angulolimite2));
c_radioapuntamiento2.setText(Double.toString(radioapuntamiento2));
c_espesorprimitivo2.setText(Double.toString(espesorprimitivo2));
c_espesorcabeza2.setText(Double.toString(espesorcabeza2));
c_espesorbase2.setText(Double.toString(espesorbase2));
c_long2dientes2.setText(Double.toString(long2dientes2));
c_long3dientes2.setText(Double.toString(long3dientes2));
c_coefengrane2.setText(Double.toString(coefengrane2));

96

424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473

c_coefengrane2comp.setText(Double.toString(coefengrane2comp));
//Rueda 2 en V
c_radiocabezav2.setText(Double.toString(radiocabezav2));
c_radiocabezx1x2v2.setText(Double.toString(radiocabezx1x2v2));
c_radioprimitivov2.setText(Double.toString(radioprimitivov2));
c_radiopiev2.setText(Double.toString(radiopiev2));
c_fevolventeangulolimitev2.setText(Double.toString(fevolventeangulolimitev2));
c_angulolimitev2.setText(Double.toString(angulolimitev2));
c_radioapuntamientov2.setText(Double.toString(radioapuntamientov2));
c_espesorprimitivov2.setText(Double.toString(espesorprimitivov2));
c_espesorcabezav2.setText(Double.toString(espesorcabezav2));
c_espesorbasev2.setText(Double.toString(espesorbasev2));
c_espesorcabeza2x.setText(Double.toString(espesorcabeza2x));
c_long2dientesv2.setText(Double.toString(long2dientesv2));
c_long3dientesv2.setText(Double.toString(long3dientesv2));
c_coefengranev2.setText(Double.toString(coefengranev2));
c_coefengranev2comp.setText(Double.toString(coefengranev2comp));
//Rueda 2 montaje
c_radioprimitivomontaje2.setText(Double.toString(radioprimitivomontaje2));
c_espesorpolarmontaje2.setText(Double.toString(espesorpolarmontaje2));
c_coefengranemontaje2.setText(Double.toString(coefengranemontaje2));
c_coefengranemontajerk2.setText(Double.toString(coefengranemontajerk2));
c_holgurapolar2.setText(Double.toString(holgurapolar2));
//Engranaje
c_coefengranecero.setText(Double.toString(coefengranecero));
c_coefengranev.setText(Double.toString(coefengranev));
c_coefengranercv.setText(Double.toString(coefengranercv));
c_coefengranerk.setText(Double.toString(coefengranerk));
c_juegotangencial.setText(Double.toString(juegotangencial));
c_holgurapolarmontaje.setText(Double.toString(holgurapolarmontaje));
c_distanciavmontaje.setText(Double.toString(distanciavmontaje));
c_comppasov.setText(Double.toString(comppasov));
c_compdistanciav.setText(Double.toString(compdistanciav));
c_compdistanciamontaje.setText(Double.toString(compdistanciamontaje));
c_angulopresionv.setText(Double.toString(angulopresionv));
c_angulopresionmontaje.setText(Double.toString(angulopresionmontaje));
//Defino el botn de grfica
Button btngraf = (Button) findViewById(R.id.btngraf);
//Escucha al evento botn
btngraf.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//Inicia la actividad del caudal
Intent Caudal = new Intent(getApplicationContext(), Caudal.class);
//Manda los datos necesarios para las grficas y clculos
Caudal.putExtra("g_radiobase1", c_radiobase1.getText().toString());

97

474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496

Caudal.putExtra("g_ndientes1", r_ndientes1);
Caudal.putExtra("g_ndientes2", r_ndientes2);
Caudal.putExtra("g_modulo", r_modulo);
Caudal.putExtra("g_fevolventeangulolimitev1", c_fevolventeangulolimitev1.getText().toString());
Caudal.putExtra("g_angulopresion", r_angulopresion);
Caudal.putExtra("g_fevolventeangulopresion", c_fevolventeangulopresion.getText().toString());
Caudal.putExtra("g_radiocabeza1", c_radiocabeza1.getText().toString());
Caudal.putExtra("g_radiocabeza2", c_radiocabeza2.getText().toString());
Caudal.putExtra("g_radioprimitivo1", c_radioprimitivo1.getText().toString());
Caudal.putExtra("g_radioprimitivo2", c_radioprimitivo2.getText().toString());
Caudal.putExtra("g_radiocabezav1", c_radiocabezav1.getText().toString());
Caudal.putExtra("g_radiocabezamecanizado", r_radiocabezamecanizado);
Caudal.putExtra("g_longituddiente", r_longituddiente);
//Inicia la actividad del caudal
startActivity(Caudal);
}
});
}
}

98

I.1.3. Caudal.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45

package com.manugd.gearpumps.app;
import
import
import
import
import
import
import
import
import
import
import
import

android.app.Activity;
android.app.AlertDialog;
android.content.Context;
android.content.Intent;
android.os.Bundle;
android.view.LayoutInflater;
android.view.View;
android.view.ViewGroup;
android.widget.Button;
android.widget.EditText;
android.widget.ImageView;
android.widget.TextView;

import java.io.FileWriter;
import java.io.IOException;
import java.util.Arrays;
public class Caudal extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_caudal);
//if (savedInstanceState == null) {
//
getSupportFragmentManager().beginTransaction()
//
.add(R.id.container, new PlaceholderFragment())
//
.commit();
//}
Intent i = getIntent();
//Recibo los datos de los resultados
String g_radiobase1 = i.getStringExtra("g_radiobase1");
String g_ndientes1 = i.getStringExtra("g_ndientes1");
String g_ndientes2 = i.getStringExtra("g_ndientes2");
String g_modulo = i.getStringExtra("g_modulo");
String g_fevolventeangulolimitev1 = i.getStringExtra("g_fevolventeangulolimitev1");
String g_angulopresion = i.getStringExtra("g_angulopresion");
String g_fevolventeangulopresion = i.getStringExtra("g_fevolventeangulopresion");
String g_radiocabeza1 = i.getStringExtra("g_radiocabeza1");
String g_radiocabeza2 = i.getStringExtra("g_radiocabeza2");
String g_radioprimitivo1 = i.getStringExtra("g_radioprimitivo1");

99

46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95

String
String
String
String

g_radioprimitivo2 = i.getStringExtra("g_radioprimitivo2");
g_radiocabezav1 = i.getStringExtra("g_radiocabezav1");
g_radiocabezamecanizado = i.getStringExtra("g_radiocabezamecanizado");
g_longituddiente = i.getStringExtra("g_longituddiente");

//Paso los datos a nmeros


final double gr_radiobase1 = Double.parseDouble(g_radiobase1);
final double gr_ndientes1 = Double.parseDouble(g_ndientes1);
final double gr_ndientes2 = Double.parseDouble(g_ndientes2);
final double gr_modulo = Double.parseDouble(g_modulo);
final double gr_fevolventeangulolimitev1 = Double.parseDouble(g_fevolventeangulolimitev1);
final double gr_angulopresion = Double.parseDouble(g_angulopresion);
final double gr_fevolventeangulopresion = Double.parseDouble(g_fevolventeangulopresion);
final double gr_radiocabeza1 = Double.parseDouble(g_radiocabeza1);
final double gr_radiocabeza2 = Double.parseDouble(g_radiocabeza2);
final double gr_radioprimitivo1 = Double.parseDouble(g_radioprimitivo1);
final double gr_radioprimitivo2 = Double.parseDouble(g_radioprimitivo2);
final double gr_radiocabezav1 = Double.parseDouble(g_radiocabezav1);
final double gr_radiocabezamecanizado = Double.parseDouble(g_radiocabezamecanizado);
final double gr_longituddiente = Double.parseDouble(g_longituddiente);
//Calculo los puntos del diente en V
double r_V;
final double[] posX_V = new double[210];
final double[] posY_V = new double[210];
int cont=0;
for (r_V=gr_radiobase1; r_V<gr_radiocabezav1; cont++ ) {
double ar_V = Math.acos(gr_radiobase1 / r_V);
double evar_V = Math.tan(ar_V) - ar_V;
double er_V = r_V * (gr_fevolventeangulolimitev1 - evar_V);
double br_V = er_V / r_V;
double xr_V = r_V * Math.sin(br_V);
double yr_V = r_V * Math.cos(br_V);
r_V = r_V+((gr_radiocabezav1-gr_radiobase1)/100);
posX_V[cont]=xr_V;
posY_V[cont]=yr_V;
}
int j=0;
for (cont=100; cont<=104; cont++){
posX_V[cont]=(posX_V[cont-1]-((posX_V[100])/4));
posY_V[cont]=Math.sqrt((gr_radiocabezav1*gr_radiocabezav1)-(posX_V[cont]*posX_V[cont]));
}
for(j=103; j>0; j=j-1){
posX_V[cont]=-(posX_V[j]);
posY_V[cont]=posY_V[j];
cont++;
}

100

96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145

System.out.println("PosXV: " + Arrays.toString(posX_V));


System.out.println("PosYV: " + Arrays.toString(posY_V));
//Calculo los puntos del diente a CERO
double r_C;
final double[] posX_C = new double[210];
final double[] posY_C = new double[210];
cont=0;
for (r_C=gr_radiobase1; r_C<gr_radiocabeza1; cont++ ) {
double ar_C = Math.acos(gr_radiobase1 / r_C);
double evar_C = Math.tan(ar_C) - ar_C;
double er_C = r_C*(((Math.PI/(2*gr_ndientes1))+((2*0)/gr_ndientes1)*Math.tan(gr_angulopresion)+gr_fevolventeangulopresion)-evar_C);
double br_C = er_C / r_C;
double xr_C = r_C * Math.sin(br_C);
double yr_C = r_C * Math.cos(br_C);
r_C = r_C+((gr_radiocabeza1-gr_radiobase1)/100);
posX_C[cont]=xr_C;
posY_C[cont]=yr_C;
}
j=0;
for (cont=100; cont<=104; cont++){
posX_C[cont]=(posX_C[cont-1]-((posX_C[100])/4));
posY_C[cont]=Math.sqrt((gr_radiocabeza1*gr_radiocabeza1)-(posX_C[cont]*posX_C[cont]));
}
for(j=103; j>0; j=j-1){
posX_C[cont]=-(posX_C[j]);
posY_C[cont]=posY_C[j];
cont++;
}
System.out.println("PosXC: " + Arrays.toString(posX_C));
System.out.println("PosYC: " + Arrays.toString(posY_C));
//Calculo los puntos del diente en V_Rk
double r_Vk;
final double[] posX_Vk = new double[210];
final double[] posY_Vk = new double[210];
cont=0;
for (r_Vk=gr_radiobase1; r_Vk<gr_radiocabezamecanizado; cont++ ) {
double ar_Vk = Math.acos(gr_radiobase1 / r_Vk);
double evar_Vk = Math.tan(ar_Vk) - ar_Vk;
double er_Vk = r_Vk * (gr_fevolventeangulolimitev1 - evar_Vk);
double br_Vk = er_Vk / r_Vk;
double xr_Vk = r_Vk * Math.sin(br_Vk);
double yr_Vk = r_Vk * Math.cos(br_Vk);
r_Vk = r_Vk+((gr_radiocabezamecanizado-gr_radiobase1)/100);
posX_Vk[cont]=xr_Vk;

101

146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195

posY_Vk[cont]=yr_Vk;
}
j=0;
for (cont=100; cont<=104; cont++){
posX_Vk[cont]=(posX_Vk[cont-1]-((posX_Vk[100])/4));
posY_Vk[cont]=Math.sqrt((gr_radiocabezamecanizado*gr_radiocabezamecanizado)-(posX_Vk[cont]*posX_Vk[cont]));
}
for(j=103; j>0; j=j-1){
posX_Vk[cont]=-(posX_Vk[j]);
posY_Vk[cont]=posY_Vk[j];
cont++;
}
System.out.println("PosXVk: " + Arrays.toString(posX_Vk));
System.out.println("PosYVk: " + Arrays.toString(posY_Vk));
//Calculo los puntos del diente a CERO_Rk
double r_Ck;
final double[] posX_Ck = new double[210];
final double[] posY_Ck = new double[210];
cont=0;
for (r_Ck=gr_radiobase1; r_Ck<gr_radiocabezamecanizado; cont++ ) {
double ar_Ck = Math.acos(gr_radiobase1 / r_Ck);
double evar_Ck = Math.tan(ar_Ck) - ar_Ck;
double er_Ck = r_Ck*(((Math.PI/(2*gr_ndientes1))+((2*0)/gr_ndientes1)*Math.tan(gr_angulopresion)+gr_fevolventeangulopresion)-evar_Ck);
double br_Ck = er_Ck / r_Ck;
double xr_Ck = r_Ck * Math.sin(br_Ck);
double yr_Ck = r_Ck * Math.cos(br_Ck);
r_Ck = r_Ck+((gr_radiocabezamecanizado-gr_radiobase1)/100);
posX_Ck[cont]=xr_Ck;
posY_Ck[cont]=yr_Ck;
}
j=0;
for (cont=100; cont<=104; cont++){
posX_Ck[cont]=(posX_Ck[cont-1]-((posX_Ck[100])/4));
posY_Ck[cont]=Math.sqrt((gr_radiocabezamecanizado*gr_radiocabezamecanizado)-(posX_Ck[cont]*posX_Ck[cont]));
}
for(j=103; j>0; j=j-1){
posX_Ck[cont]=-(posX_Ck[j]);
posY_Ck[cont]=posY_Ck[j];
cont++;
}
System.out.println("PosXCk: " + Arrays.toString(posX_Ck));
System.out.println("PosYCk: " + Arrays.toString(posY_Ck));
//Defino los botones
Button exp_V = (Button) findViewById(R.id.exp_V);
Button exp_C = (Button) findViewById(R.id.exp_C);
Button exp_Vk = (Button) findViewById(R.id.exp_Vk);

102

196
Button exp_Ck = (Button) findViewById(R.id.exp_Ck);
197
Button recalc = (Button) findViewById(R.id.recalc);
198
199
//Escucha al botn de recalcular
200
recalc.setOnClickListener(new View.OnClickListener() {
201
@Override
202
public void onClick(View recalc) {
203
204
//Calculo el caudal y la irregularidad
205
double to = gr_modulo*(Math.PI)*Math.cos(Math.toRadians(gr_angulopresion));
206
EditText c_caudalteorico = (EditText) findViewById(R.id.c_caudalteorico);
207
EditText c_irregularidad = (EditText) findViewById(R.id.c_irregularidad);
208
EditText c_velrotacion = (EditText) findViewById(R.id.c_velrotacion);
209
EditText c_capacidad = (EditText) findViewById(R.id.c_capacidad);
210
//Si el campo velocidad est en blanco ponerle valor cero
211
if (c_velrotacion.getText().toString().trim().length() == 0){c_velrotacion.setText("0");}
212
String velrotac = c_velrotacion.getText().toString(); //en rpm
213
double velrotacion = (Double.parseDouble(velrotac))/60; //en rps
214
double Qg = 0.00006*(gr_longituddiente*Math.PI*velrotacion*(Math.pow(gr_radiocabeza1,
2)+((gr_radioprimitivo1/gr_radioprimitivo2)*Math.pow(gr_radiocabeza2, 2))-(gr_radioprimitivo1*(gr_radioprimitivo1+gr_radioprimitivo2))(1+(gr_radioprimitivo1/gr_radioprimitivo2)*((Math.pow(to, 2))/12))));
215
double capacidad = 0.001*(gr_longituddiente*Math.PI*(Math.pow(gr_radiocabeza1,
2)+((gr_radioprimitivo1/gr_radioprimitivo2)*Math.pow(gr_radiocabeza2, 2))-(gr_radioprimitivo1*(gr_radioprimitivo1+gr_radioprimitivo2))(1+(gr_radioprimitivo1/gr_radioprimitivo2)*((Math.pow(to, 2))/12))));
216
double irreg =
100*((Math.PI*Math.PI*gr_modulo*gr_modulo*(1+(gr_ndientes1/gr_ndientes2))*Math.pow(Math.cos(Math.toRadians(gr_angulopresion)),
2))/(4*(Math.pow(gr_radiocabeza1, 2)+((gr_ndientes1/gr_ndientes2)*Math.pow(gr_radiocabeza2, 2))-(gr_radioprimitivo1*(gr_radioprimitivo1+gr_radioprimitivo2))(1+(gr_ndientes1/gr_ndientes2)*((Math.pow(to, 2))/12)))));
217
218
//Los muestro en sus campos
219
c_caudalteorico.setText(Double.toString(Qg));
220
c_irregularidad.setText(Double.toString(irreg));
221
c_capacidad.setText(Double.toString(capacidad));
222
223
}
224
});
225
226
//Escucha al botn V
227
exp_V.setOnClickListener(new View.OnClickListener() {
228
@Override
229
public void onClick(View exp_V) {
230
231
//Inicia la actividad de la grfica
232
Intent Grafica = new Intent(getApplicationContext(), Grafica.class);
233
234
//Manda los datos necesarios para la grfica
235
Grafica.putExtra("posX", posX_V);
236
Grafica.putExtra("posY", posY_V);
237
238
//Inicia la actividad

103

239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288

startActivity(Grafica);
}
});
//Escucha al botn C
exp_C.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View exp_C) {
//Inicia la actividad de la grfica
Intent Grafica = new Intent(getApplicationContext(), Grafica.class);
//Manda los datos necesarios para la grfica
Grafica.putExtra("posX", posX_C);
Grafica.putExtra("posY", posY_C);
//Inicia la actividad
startActivity(Grafica);
}
});
//Escucha al botn Vk
exp_Vk.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View exp_Vk) {
//Inicia la actividad de la grfica
Intent Grafica = new Intent(getApplicationContext(), Grafica.class);
//Manda los datos necesarios para la grfica
Grafica.putExtra("posX", posX_Vk);
Grafica.putExtra("posY", posY_Vk);
//Inicia la actividad
startActivity(Grafica);
}
});
//Escucha al botn Ck
exp_Ck.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View exp_Ck) {
//Inicia la actividad de la grfica
Intent Grafica = new Intent(getApplicationContext(), Grafica.class);
//Manda los datos necesarios para la grfica

104

289
290
291
292
293
294
295
296
297
298
299
300
301
302

Grafica.putExtra("posX", posX_Ck);
Grafica.putExtra("posY", posY_Ck);
//Inicia la actividad
startActivity(Grafica);
}
});
}
}

105

I.1.4. Grafica.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45

package com.manugd.gearpumps.app;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import com.jjoe64.graphview.GraphView;
import com.jjoe64.graphview.series.DataPoint;
import com.jjoe64.graphview.series.PointsGraphSeries;
import
import
import
import
import

java.io.File;
java.io.FileOutputStream;
java.io.IOException;
java.io.PrintWriter;
java.util.Arrays;

public class Grafica extends Activity {


@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.grafica);
//if (savedInstanceState == null) {
//
getSupportFragmentManager().beginTransaction()
//
.add(R.id.container, new PlaceholderFragment())
//
.commit();
//}
//Recibo
Intent i
double[]
double[]

los datos del botn pulsado


= getIntent();
posX = i.getDoubleArrayExtra("posX");
posY = i.getDoubleArrayExtra("posY");

//Guardo las coordenadas en el directorio GearPumps


File root = android.os.Environment.getExternalStorageDirectory();
File dir = new File(root.getAbsolutePath() + "/GearPumps");
dir.mkdirs();
File file = new File(dir, "Coordenadas.txt");
try {
FileOutputStream f = new FileOutputStream(file);
PrintWriter pw = new PrintWriter(f);
pw.println("PosX: " + Arrays.toString(posX) + "\n");
pw.println("PosY: " + Arrays.toString(posY));

106

46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66

pw.flush();
pw.close();
f.close();
} catch (IOException e) {
e.printStackTrace();
}
//Dibujo la grfica con los puntos
GraphView graph = (GraphView) findViewById(R.id.graph);
int cont;
for (cont=0; cont <= 207; cont++) {
PointsGraphSeries<DataPoint> series = new PointsGraphSeries<DataPoint>(new DataPoint[]{
new DataPoint(posX[cont], posY[cont])
});
graph.addSeries(series);
series.setSize(3);
}
}

107

I.2. XML
I.2.1. activity_main.xml
1
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
2
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
3
android:layout_height="match_parent"
android:paddingLeft="@dimen/activity_horizontal_margin"
4
android:paddingRight="@dimen/activity_horizontal_margin"
5
android:paddingTop="@dimen/activity_vertical_margin"
6
android:paddingBottom="@dimen/activity_vertical_margin"
7
tools:context=".MainActivity$PlaceholderFragment"
8
android:background="#ffc0eaff">
9
10
<TableLayout
11
android:layout_width="fill_parent"
12
android:id="@+id/lista"
13
android:layout_height="wrap_content"
14
android:touchscreenBlocksFocus="false">
15
16
<!-- Engranaje evolvente -->
17
<TableRow
18
android:layout_width="fill_parent"
19
android:layout_height="fill_parent"
20
android:layout_marginTop="10dp">
21
<TextView
22
style="@style/Titulo"
23
android:text="@string/tit.engevolvente"
24
android:layout_column="0" />
25
</TableRow>
26
<TableRow
27
android:layout_width="fill_parent"
28
android:layout_height="fill_parent"
29
android:layout_marginTop="10dp">
30
<TextView
31
style="@style/Nombre"
32
android:text="@string/clic"
33
android:textSize="10sp"
34
android:layout_column="0"
35
android:id="@+id/clic"/>
36
</TableRow>
37
<TableRow
38
android:layout_width="fill_parent"
39
android:layout_height="fill_parent"
40
android:layout_marginTop="10dp">
41
<TextView
42
style="@style/Nombre"
43
android:text="@string/ndientes1"
44
android:layout_column="0"
45
android:id="@+id/t_ndientes1"/>
46
</TableRow>
47
<TableRow
48
android:layout_width="fill_parent"
49
android:layout_height="fill_parent"
50
android:layout_marginTop="5dp">
51
<TextView
52
style="@style/Formula"
53
android:text="@string/f.ndientes1"
54
android:layout_column="1" />
55
<EditText
56
style="@style/Campo"
57
android:id="@+id/c.ndientes1"/>
58
<TextView
59
style="@style/Unidades"
60
android:text="@string/z"/>
61
</TableRow>
62
63
<TableRow
64
android:layout_width="fill_parent"
65
android:layout_height="fill_parent"
66
android:layout_marginTop="10dp">
67
<TextView
68
style="@style/Nombre"
69
android:text="@string/ndientes2"
70
android:layout_column="0"
71
android:id="@+id/t_ndientes2"/>
72
</TableRow>

108

73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156

<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="5dp">
<TextView
style="@style/Formula"
android:text="@string/f.ndientes2"
android:layout_column="1" />
<EditText
style="@style/Campo"
android:id="@+id/c.ndientes2"/>
<TextView
style="@style/Unidades"
android:text="@string/z"/>
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="10dp">
<TextView
style="@style/Nombre"
android:text="@string/modulo"
android:layout_column="0"
android:id="@+id/t_modulo"/>
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="5dp">
<TextView
style="@style/Formula"
android:text="@string/f.modulo"
android:layout_column="1" />
<EditText
style="@style/Campo"
android:id="@+id/c.modulo"/>
<TextView
style="@style/Unidades"
android:text="@string/mm"/>
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="10dp">
<TextView
style="@style/Nombre"
android:text="@string/angulopresion"
android:layout_column="0"
android:id="@+id/t_angulopresion"/>
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="5dp">
<TextView
style="@style/Formula"
android:text="@string/f.angulopresion"
android:layout_column="1" />
<EditText
style="@style/Campo"
android:id="@+id/c.angulopresion"/>
<TextView
style="@style/Unidades"
android:text="@string/deg"/>
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="10dp">
<TextView
style="@style/Nombre"
android:text="@string/desplazamiento1"
android:layout_column="0"
android:id="@+id/t_desplazamiento1"/>
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="5dp">
<TextView
style="@style/Formula"

109

157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240

android:text="@string/f.desplazamiento1"
android:layout_column="1" />
<EditText
style="@style/Campo"
android:id="@+id/c.desplazamiento1"
android:inputType="numberSigned|numberDecimal" />
<TextView
style="@style/Unidades"
android:text=""/>
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="10dp">
<TextView
style="@style/Nombre"
android:text="@string/desplazamiento2"
android:layout_column="0"
android:id="@+id/t_desplazamiento2"/>
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="5dp">
<TextView
style="@style/Formula"
android:text="@string/f.desplazamiento2"
android:layout_column="1" />
<EditText
style="@style/Campo"
android:id="@+id/c.desplazamiento2"
android:inputType="numberSigned|numberDecimal" />
<TextView
style="@style/Unidades"
android:text=""/>
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="10dp">
<TextView
style="@style/Nombre"
android:text="@string/juegoradial"
android:layout_column="0"
android:id="@+id/t_juegoradial"/>
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="5dp">
<TextView
style="@style/Formula"
android:text="@string/f.juegoradial"
android:layout_column="1" />
<EditText
style="@style/Campo"
android:id="@+id/c.juegoradial"/>
<TextView
style="@style/Unidades"
android:text=""/>
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="10dp">
<TextView
style="@style/Nombre"
android:text="@string/distanciacentromontaje"
android:layout_column="0"
android:id="@+id/t_distanciacentromontaje"/>
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="5dp">
<TextView
style="@style/Formula"
android:text="@string/f.distanciacentromontaje"
android:layout_column="1" />
<EditText
style="@style/Campo"

110

241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324

android:id="@+id/c.distanciacentromontaje"/>
<TextView
style="@style/Unidades"
android:text="@string/mm"/>
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="10dp">
<TextView
style="@style/Nombre"
android:text="@string/longituddiente"
android:layout_column="0"
android:id="@+id/t_longituddiente"/>
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="5dp">
<TextView
style="@style/Formula"
android:text="@string/f.longituddiente"
android:layout_column="1" />
<EditText
style="@style/Campo"
android:id="@+id/c.longituddiente"/>
<TextView
style="@style/Unidades"
android:text="@string/mm"/>
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="10dp">
<TextView
style="@style/Nombre"
android:text="@string/radiocabezamecanizado"
android:layout_column="0"
android:id="@+id/t_radiocabezamecanizado"/>
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="5dp">
<TextView
style="@style/Formula"
android:text="@string/f.radiocabezamecanizado"
android:layout_column="1" />
<EditText
style="@style/Campo"
android:id="@+id/c.radiocabezamecanizado"/>
<TextView
style="@style/Unidades"
android:text="@string/mm"/>
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="10dp">
<Button
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="Calcular"
android:id="@+id/btncalc"
android:layout_weight="1"
android:gravity="center"
android:layout_span="1"
android:clickable="true"
android:layout_gravity="center"
android:width="100dp"/>
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="10dp"
android:layout_weight="1"
android:gravity="center">
<TextView
android:id="@+id/about"
android:text="Acerca de GearPumps"

111

325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340

android:textAlignment="gravity"
android:gravity="center"
android:textSize="10sp"
android:textColor="#ff0000ff" />
<TextView
android:id="@+id/respons"
android:text=" // Responsabilidad"
android:textAlignment="gravity"
android:gravity="center"
android:textSize="10sp"
android:textColor="#ff0000ff" />
</TableRow>
</TableLayout>
</ScrollView>

112

I.2.2. activity_resultados.xml
1
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
2
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
3
android:layout_height="match_parent"
android:paddingLeft="@dimen/activity_horizontal_margin"
4
android:paddingRight="@dimen/activity_horizontal_margin"
5
android:paddingTop="@dimen/activity_vertical_margin"
6
android:paddingBottom="@dimen/activity_vertical_margin"
7
android:background="#ffc0eaff">
8
9
<TableLayout
10
android:layout_width="fill_parent"
11
android:id="@+id/lista"
12
android:layout_height="wrap_content"
13
android:touchscreenBlocksFocus="false">
14
15
<!-- Engranaje evolvente -->
16
<TableRow
17
android:layout_width="fill_parent"
18
android:layout_height="fill_parent"
19
android:layout_marginTop="10dp">
20
<TextView
21
style="@style/Titulo"
22
android:text="@string/tit.caracengranaje"
23
android:layout_column="0" />
24
</TableRow>
25
<TableRow
26
android:layout_width="fill_parent"
27
android:layout_height="fill_parent"
28
android:layout_marginTop="10dp">
29
<TextView
30
style="@style/Nombre"
31
android:text="@string/ndienteslimite"
32
android:layout_column="0" />
33
</TableRow>
34
<TableRow
35
android:layout_width="fill_parent"
36
android:layout_height="fill_parent"
37
android:layout_marginTop="5dp">
38
<TextView
39
style="@style/Formula"
40
android:text="@string/f.ndienteslimite"
41
android:layout_column="1" />
42
<EditText
43
style="@style/Campo"
44
android:id="@+id/c.ndienteslimite"/>
45
<TextView
46
style="@style/Unidades"
47
android:text="@string/z"/>
48
</TableRow>
49
<TableRow
50
android:layout_width="fill_parent"
51
android:layout_height="fill_parent"
52
android:layout_marginTop="10dp">
53
<TextView
54
style="@style/Nombre"
55
android:text="@string/paso"
56
android:layout_column="0" />
57
</TableRow>
58
<TableRow
59
android:layout_width="fill_parent"
60
android:layout_height="fill_parent"
61
android:layout_marginTop="5dp">
62
<TextView
63
style="@style/Formula"
64
android:text="@string/f.paso"
65
android:layout_column="1" />
66
<EditText
67
style="@style/Campo"
68
android:id="@+id/c.paso"/>
69
<TextView
70
style="@style/Unidades"
71
android:text="@string/mm"/>
72
</TableRow>
73
<TableRow
74
android:layout_width="fill_parent"
75
android:layout_height="fill_parent"
76
android:layout_marginTop="10dp">
77
<TextView
78
style="@style/Nombre"
79
android:text="@string/pasodirector"
80
android:layout_column="0" />

113

81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164

</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="5dp">
<TextView
style="@style/Formula"
android:text="@string/f.pasodirector"
android:layout_column="1" />
<EditText
style="@style/Campo"
android:id="@+id/c.pasodirector"/>
<TextView
style="@style/Unidades"
android:text="@string/mm"/>
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="10dp">
<TextView
style="@style/Nombre"
android:text="@string/fevolventeangulopresion"
android:layout_column="0" />
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="5dp">
<TextView
style="@style/Formula"
android:text="@string/f.fevolventeangulopresion"
android:layout_column="1" />
<EditText
style="@style/Campo"
android:id="@+id/c.fevolventeangulopresion"/>
<TextView
style="@style/Unidades"
android:text="@string/rad"/>
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="10dp">
<TextView
style="@style/Nombre"
android:text="@string/distanciacentros"
android:layout_column="0" />
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="5dp">
<TextView
style="@style/Formula"
android:text="@string/f.distanciacentros"
android:layout_column="1" />
<EditText
style="@style/Campo"
android:id="@+id/c.distanciacentros"/>
<TextView
style="@style/Unidades"
android:text="@string/mm"/>
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="10dp">
<TextView
style="@style/Nombre"
android:text="@string/desplazcremallera1"
android:layout_column="0" />
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="5dp">
<TextView
style="@style/Formula"
android:text="@string/f.desplazcremallera1"
android:layout_column="1" />
<EditText
style="@style/Campo"
android:id="@+id/c.desplazcremallera1"/>

114

165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248

<TextView
style="@style/Unidades"
android:text="@string/mm"/>
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="10dp">
<TextView
style="@style/Nombre"
android:text="@string/desplazcremallera2"
android:layout_column="0" />
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="5dp">
<TextView
style="@style/Formula"
android:text="@string/f.desplazcremallera2"
android:layout_column="1" />
<EditText
style="@style/Campo"
android:id="@+id/c.desplazcremallera2"/>
<TextView
style="@style/Unidades"
android:text="@string/mm"/>
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="10dp">
<TextView
style="@style/Titulo"
android:text="@string/tit.engranajev"
android:layout_column="0" />
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="10dp">
<TextView
style="@style/Nombre"
android:text="@string/parametrob"
android:layout_column="0" />
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="5dp">
<TextView
style="@style/Formula"
android:text="@string/f.parametrob"
android:layout_column="1" />
<EditText
style="@style/Campo"
android:id="@+id/c.parametrob"/>
<TextView
style="@style/Unidades"
android:text=""/>
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="10dp">
<TextView
style="@style/Nombre"
android:text="@string/fevolventeangulov"
android:layout_column="0" />
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="5dp">
<TextView
style="@style/Formula"
android:text="@string/f.fevolventeangulov"
android:layout_column="1" />
<EditText
style="@style/Campo"
android:id="@+id/c.fevolventeangulov"/>
<TextView
style="@style/Unidades"
android:text="@string/rad"/>

115

249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332

</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="10dp">
<TextView
style="@style/Nombre"
android:text="@string/angulov"
android:layout_column="0" />
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="5dp">
<TextView
style="@style/Formula"
android:text="@string/f.angulov"
android:layout_column="1" />
<EditText
style="@style/Campo"
android:id="@+id/c.angulov"/>
<TextView
style="@style/Unidades"
android:text="@string/deg"/>
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="10dp">
<TextView
style="@style/Nombre"
android:text="@string/distanciacentrov"
android:layout_column="0" />
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="5dp">
<TextView
style="@style/Formula"
android:text="@string/f.distanciacentrov"
android:layout_column="1" />
<EditText
style="@style/Campo"
android:id="@+id/c.distanciacentrov"/>
<TextView
style="@style/Unidades"
android:text="@string/mm"/>
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="10dp">
<TextView
style="@style/Nombre"
android:text="@string/modulov"
android:layout_column="0" />
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="5dp">
<TextView
style="@style/Formula"
android:text="@string/f.modulov"
android:layout_column="1" />
<EditText
style="@style/Campo"
android:id="@+id/c.modulov"/>
<TextView
style="@style/Unidades"
android:text="@string/mm"/>
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="10dp">
<TextView
style="@style/Nombre"
android:text="@string/pasopolarv"
android:layout_column="0" />
</TableRow>
<TableRow
android:layout_width="fill_parent"

116

333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416

android:layout_height="fill_parent"
android:layout_marginTop="5dp">
<TextView
style="@style/Formula"
android:text="@string/f.pasopolarv"
android:layout_column="1" />
<EditText
style="@style/Campo"
android:id="@+id/c.pasopolarv"/>
<TextView
style="@style/Unidades"
android:text="@string/mm"/>
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="10dp">
<TextView
style="@style/Nombre"
android:text="@string/parametrobv"
android:layout_column="0" />
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="5dp">
<TextView
style="@style/Formula"
android:text="@string/f.parametrobv"
android:layout_column="1" />
<EditText
style="@style/Campo"
android:id="@+id/c.parametrobv"/>
<TextView
style="@style/Unidades"
android:text=""/>
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="10dp">
<TextView
style="@style/Nombre"
android:text="@string/parametrok"
android:layout_column="0" />
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="5dp">
<TextView
style="@style/Formula"
android:text="@string/f.parametrok"
android:layout_column="1" />
<EditText
style="@style/Campo"
android:id="@+id/c.parametrok"/>
<TextView
style="@style/Unidades"
android:text=""/>
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="10dp">
<TextView
style="@style/Nombre"
android:text="@string/sumadespl"
android:layout_column="0" />
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="5dp">
<TextView
style="@style/Formula"
android:text="@string/f.sumadespl"
android:layout_column="1" />
<EditText
style="@style/Campo"
android:id="@+id/c.sumadespl"/>
<TextView
style="@style/Unidades"
android:text=""/>

117

417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500

</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="10dp">
<TextView
style="@style/Titulo"
android:text="@string/tit.montaje"
android:layout_column="0" />
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="10dp">
<TextView
style="@style/Nombre"
android:text="@string/angulomontaje"
android:layout_column="0" />
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="5dp">
<TextView
style="@style/Formula"
android:text="@string/f.angulomontaje"
android:layout_column="1" />
<EditText
style="@style/Campo"
android:id="@+id/c.angulomontaje"/>
<TextView
style="@style/Unidades"
android:text="@string/deg"/>
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="10dp">
<TextView
style="@style/Nombre"
android:text="@string/fevolventeangulomontaje"
android:layout_column="0" />
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="5dp">
<TextView
style="@style/Formula"
android:text="@string/f.fevolventeangulomontaje"
android:layout_column="1" />
<EditText
style="@style/Campo"
android:id="@+id/c.fevolventeangulomontaje"/>
<TextView
style="@style/Unidades"
android:text="@string/rad"/>
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="10dp">
<TextView
style="@style/Nombre"
android:text="@string/modulomontaje"
android:layout_column="0" />
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="5dp">
<TextView
style="@style/Formula"
android:text="@string/f.modulomontaje"
android:layout_column="1" />
<EditText
style="@style/Campo"
android:id="@+id/c.modulomontaje"/>
<TextView
style="@style/Unidades"
android:text="@string/mm"/>
</TableRow>
<TableRow
android:layout_width="fill_parent"

118

501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584

android:layout_height="fill_parent"
android:layout_marginTop="10dp">
<TextView
style="@style/Nombre"
android:text="@string/pasomontaje"
android:layout_column="0" />
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="5dp">
<TextView
style="@style/Formula"
android:text="@string/f.pasomontaje"
android:layout_column="1" />
<EditText
style="@style/Campo"
android:id="@+id/c.pasomontaje"/>
<TextView
style="@style/Unidades"
android:text="@string/mm"/>
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="10dp">
<TextView
style="@style/Titulo"
android:text="@string/tit.condrueda"
android:layout_column="0" />
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="10dp">
<TextView
style="@style/Nombre"
android:text="@string/condengranajecero"
android:layout_column="0" />
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="5dp">
<TextView
style="@style/Formula"
android:text=""
android:layout_column="1" />
<EditText
style="@style/Campo"
android:id="@+id/c.condengranajecero"/>
<TextView
style="@style/Unidades"
android:text=""/>
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="10dp">
<TextView
style="@style/Nombre"
android:text="@string/condengranajev"
android:layout_column="0" />
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="5dp">
<TextView
style="@style/Formula"
android:text=""
android:layout_column="1" />
<EditText
style="@style/Campo"
android:id="@+id/c.condengranajev"/>
<TextView
style="@style/Unidades"
android:text=""/>
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="10dp">
<TextView

119

585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668

style="@style/Nombre"
android:text="@string/condmontaje"
android:layout_column="0" />
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="5dp">
<TextView
style="@style/Formula"
android:text=""
android:layout_column="1" />
<EditText
style="@style/Campo"
android:id="@+id/c.condmontaje"/>
<TextView
style="@style/Unidades"
android:text=""/>
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="10dp">
<TextView
style="@style/Titulo"
android:text="@string/tit.rueda1cero"
android:layout_column="0" />
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="10dp">
<TextView
style="@style/Nombre"
android:text="@string/desplazamientomin1"
android:layout_column="0" />
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="5dp">
<TextView
style="@style/Formula"
android:text="@string/f.desplazamientomin1"
android:layout_column="1" />
<EditText
style="@style/Campo"
android:id="@+id/c.desplazamientomin1"/>
<TextView
style="@style/Unidades"
android:text=""/>
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="10dp">
<TextView
style="@style/Nombre"
android:text="@string/radioprimitivo1"
android:layout_column="0" />
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="5dp">
<TextView
style="@style/Formula"
android:text="@string/f.radioprimitivo1"
android:layout_column="1" />
<EditText
style="@style/Campo"
android:id="@+id/c.radioprimitivo1"/>
<TextView
style="@style/Unidades"
android:text="@string/mm"/>
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="10dp">
<TextView
style="@style/Nombre"
android:text="@string/radiobase1"
android:layout_column="0" />

120

669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752

</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="5dp">
<TextView
style="@style/Formula"
android:text="@string/f.radiobase1"
android:layout_column="1" />
<EditText
style="@style/Campo"
android:id="@+id/c.radiobase1"/>
<TextView
style="@style/Unidades"
android:text="@string/mm"/>
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="10dp">
<TextView
style="@style/Nombre"
android:text="@string/radiocabeza1"
android:layout_column="0" />
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="5dp">
<TextView
style="@style/Formula"
android:text="@string/f.radiocabeza1"
android:layout_column="1" />
<EditText
style="@style/Campo"
android:id="@+id/c.radiocabeza1"/>
<TextView
style="@style/Unidades"
android:text="@string/mm"/>
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="10dp">
<TextView
style="@style/Nombre"
android:text="@string/radiopie1"
android:layout_column="0" />
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="5dp">
<TextView
style="@style/Formula"
android:text="@string/f.radiopie1"
android:layout_column="1" />
<EditText
style="@style/Campo"
android:id="@+id/c.radiopie1"/>
<TextView
style="@style/Unidades"
android:text="@string/mm"/>
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="10dp">
<TextView
style="@style/Nombre"
android:text="@string/fevolventeangulolimite1"
android:layout_column="0" />
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="5dp">
<TextView
style="@style/Formula"
android:text="@string/f.fevolventeangulolimite1"
android:layout_column="1" />
<EditText
style="@style/Campo"
android:id="@+id/c.fevolventeangulolimite1"/>

121

753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836

<TextView
style="@style/Unidades"
android:text="@string/rad"/>
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="10dp">
<TextView
style="@style/Nombre"
android:text="@string/angulolimite1"
android:layout_column="0" />
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="5dp">
<TextView
style="@style/Formula"
android:text="@string/f.angulolimite1"
android:layout_column="1" />
<EditText
style="@style/Campo"
android:id="@+id/c.angulolimite1"/>
<TextView
style="@style/Unidades"
android:text="@string/deg"/>
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="10dp">
<TextView
style="@style/Nombre"
android:text="@string/radioapuntamiento1"
android:layout_column="0" />
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="5dp">
<TextView
style="@style/Formula"
android:text="@string/f.radioapuntamiento1"
android:layout_column="1" />
<EditText
style="@style/Campo"
android:id="@+id/c.radioapuntamiento1"/>
<TextView
style="@style/Unidades"
android:text="@string/mm"/>
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="10dp">
<TextView
style="@style/Nombre"
android:text="@string/espesorprimitivo1"
android:layout_column="0" />
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="5dp">
<TextView
style="@style/Formula"
android:text="@string/f.espesorprimitivo1"
android:layout_column="1" />
<EditText
style="@style/Campo"
android:id="@+id/c.espesorprimitivo1"/>
<TextView
style="@style/Unidades"
android:text="@string/mm"/>
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="10dp">
<TextView
style="@style/Nombre"
android:text="@string/espesorcabeza1"
android:layout_column="0" />

122

837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920

</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="5dp">
<TextView
style="@style/Formula"
android:text="@string/f.espesorcabeza1"
android:layout_column="1" />
<EditText
style="@style/Campo"
android:id="@+id/c.espesorcabeza1"/>
<TextView
style="@style/Unidades"
android:text="@string/mm"/>
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="10dp">
<TextView
style="@style/Nombre"
android:text="@string/espesorbase1"
android:layout_column="0" />
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="5dp">
<TextView
style="@style/Formula"
android:text="@string/f.espesorbase1"
android:layout_column="1" />
<EditText
style="@style/Campo"
android:id="@+id/c.espesorbase1"/>
<TextView
style="@style/Unidades"
android:text="@string/mm"/>
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="10dp">
<TextView
style="@style/Nombre"
android:text="@string/long2dientes1"
android:layout_column="0" />
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="5dp">
<TextView
style="@style/Formula"
android:text="@string/f.long2dientes1"
android:layout_column="1" />
<EditText
style="@style/Campo"
android:id="@+id/c.long2dientes1"/>
<TextView
style="@style/Unidades"
android:text="@string/mm"/>
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="10dp">
<TextView
style="@style/Nombre"
android:text="@string/long3dientes1"
android:layout_column="0" />
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="5dp">
<TextView
style="@style/Formula"
android:text="@string/f.long3dientes1"
android:layout_column="1" />
<EditText
style="@style/Campo"
android:id="@+id/c.long3dientes1"/>

123

921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004

<TextView
style="@style/Unidades"
android:text="@string/mm"/>
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="10dp">
<TextView
style="@style/Nombre"
android:text="@string/coefengrane1"
android:layout_column="0" />
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="5dp">
<TextView
style="@style/Formula"
android:text="@string/f.coefengrane1"
android:layout_column="1" />
<EditText
style="@style/Campo"
android:id="@+id/c.coefengrane1"/>
<TextView
style="@style/Unidades"
android:text=""/>
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="10dp">
<TextView
style="@style/Nombre"
android:text="@string/coefengrane1comp"
android:layout_column="0" />
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="5dp">
<TextView
style="@style/Formula"
android:text="@string/f.coefengrane1comp"
android:layout_column="1" />
<EditText
style="@style/Campo"
android:id="@+id/c.coefengrane1comp"/>
<TextView
style="@style/Unidades"
android:text=""/>
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="10dp">
<TextView
style="@style/Titulo"
android:text="@string/tit.rueda1v"
android:layout_column="0" />
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="10dp">
<TextView
style="@style/Nombre"
android:text="@string/radiocabezav1"
android:layout_column="0" />
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="5dp">
<TextView
style="@style/Formula"
android:text="@string/f.radiocabezav1"
android:layout_column="1" />
<EditText
style="@style/Campo"
android:id="@+id/c.radiocabezav1"/>
<TextView
style="@style/Unidades"
android:text="@string/mm"/>

124

1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088

</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="10dp">
<TextView
style="@style/Nombre"
android:text="@string/radiocabezx1x2v1"
android:layout_column="0" />
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="5dp">
<TextView
style="@style/Formula"
android:text="@string/f.radiocabezx1x2v1"
android:layout_column="1" />
<EditText
style="@style/Campo"
android:id="@+id/c.radiocabezx1x2v1"/>
<TextView
style="@style/Unidades"
android:text="@string/mm"/>
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="10dp">
<TextView
style="@style/Nombre"
android:text="@string/radioprimitivov1"
android:layout_column="0" />
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="5dp">
<TextView
style="@style/Formula"
android:text="@string/f.radioprimitivov1"
android:layout_column="1" />
<EditText
style="@style/Campo"
android:id="@+id/c.radioprimitivov1"/>
<TextView
style="@style/Unidades"
android:text="@string/mm"/>
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="10dp">
<TextView
style="@style/Nombre"
android:text="@string/radiopiev1"
android:layout_column="0" />
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="5dp">
<TextView
style="@style/Formula"
android:text="@string/f.radiopiev1"
android:layout_column="1" />
<EditText
style="@style/Campo"
android:id="@+id/c.radiopiev1"/>
<TextView
style="@style/Unidades"
android:text="@string/mm"/>
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="10dp">
<TextView
style="@style/Nombre"
android:text="@string/fevolventeangulolimitev1"
android:layout_column="0" />
</TableRow>
<TableRow
android:layout_width="fill_parent"

125

1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172

android:layout_height="fill_parent"
android:layout_marginTop="5dp">
<TextView
style="@style/Formula"
android:text="@string/f.fevolventeangulolimitev1"
android:layout_column="1" />
<EditText
style="@style/Campo"
android:id="@+id/c.fevolventeangulolimitev1"/>
<TextView
style="@style/Unidades"
android:text="@string/rad"/>
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="10dp">
<TextView
style="@style/Nombre"
android:text="@string/angulolimitev1"
android:layout_column="0" />
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="5dp">
<TextView
style="@style/Formula"
android:text="@string/f.angulolimitev1"
android:layout_column="1" />
<EditText
style="@style/Campo"
android:id="@+id/c.angulolimitev1"/>
<TextView
style="@style/Unidades"
android:text="@string/deg"/>
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="10dp">
<TextView
style="@style/Nombre"
android:text="@string/radioapuntamientov1"
android:layout_column="0" />
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="5dp">
<TextView
style="@style/Formula"
android:text="@string/f.radioapuntamientov1"
android:layout_column="1" />
<EditText
style="@style/Campo"
android:id="@+id/c.radioapuntamientov1"/>
<TextView
style="@style/Unidades"
android:text="@string/mm"/>
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="10dp">
<TextView
style="@style/Nombre"
android:text="@string/espesorprimitivov1"
android:layout_column="0" />
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="5dp">
<TextView
style="@style/Formula"
android:text="@string/f.espesorprimitivov1"
android:layout_column="1" />
<EditText
style="@style/Campo"
android:id="@+id/c.espesorprimitivov1"/>
<TextView
style="@style/Unidades"
android:text="@string/mm"/>

126

1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256

</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="10dp">
<TextView
style="@style/Nombre"
android:text="@string/espesorcabezav1"
android:layout_column="0" />
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="5dp">
<TextView
style="@style/Formula"
android:text="@string/f.espesorcabezav1"
android:layout_column="1" />
<EditText
style="@style/Campo"
android:id="@+id/c.espesorcabezav1"/>
<TextView
style="@style/Unidades"
android:text="@string/mm"/>
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="10dp">
<TextView
style="@style/Nombre"
android:text="@string/espesorbasev1"
android:layout_column="0" />
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="5dp">
<TextView
style="@style/Formula"
android:text="@string/f.espesorbasev1"
android:layout_column="1" />
<EditText
style="@style/Campo"
android:id="@+id/c.espesorbasev1"/>
<TextView
style="@style/Unidades"
android:text="@string/mm"/>
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="10dp">
<TextView
style="@style/Nombre"
android:text="@string/espesorcabeza1x"
android:layout_column="0" />
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="5dp">
<TextView
style="@style/Formula"
android:text="@string/f.espesorcabeza1x"
android:layout_column="1" />
<EditText
style="@style/Campo"
android:id="@+id/c.espesorcabeza1x"/>
<TextView
style="@style/Unidades"
android:text="@string/mm"/>
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="10dp">
<TextView
style="@style/Nombre"
android:text="@string/long2dientesv1"
android:layout_column="0" />
</TableRow>
<TableRow
android:layout_width="fill_parent"

127

1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340

android:layout_height="fill_parent"
android:layout_marginTop="5dp">
<TextView
style="@style/Formula"
android:text="@string/f.long2dientesv1"
android:layout_column="1" />
<EditText
style="@style/Campo"
android:id="@+id/c.long2dientesv1"/>
<TextView
style="@style/Unidades"
android:text="@string/mm"/>
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="10dp">
<TextView
style="@style/Nombre"
android:text="@string/long3dientesv1"
android:layout_column="0" />
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="5dp">
<TextView
style="@style/Formula"
android:text="@string/f.long3dientesv1"
android:layout_column="1" />
<EditText
style="@style/Campo"
android:id="@+id/c.long3dientesv1"/>
<TextView
style="@style/Unidades"
android:text="@string/mm"/>
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="10dp">
<TextView
style="@style/Nombre"
android:text="@string/coefengranev1"
android:layout_column="0" />
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="5dp">
<TextView
style="@style/Formula"
android:text="@string/f.coefengranev1"
android:layout_column="1" />
<EditText
style="@style/Campo"
android:id="@+id/c.coefengranev1"/>
<TextView
style="@style/Unidades"
android:text=""/>
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="10dp">
<TextView
style="@style/Nombre"
android:text="@string/coefengranev1comp"
android:layout_column="0" />
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="5dp">
<TextView
style="@style/Formula"
android:text="@string/f.coefengranev1comp"
android:layout_column="1" />
<EditText
style="@style/Campo"
android:id="@+id/c.coefengranev1comp"/>
<TextView
style="@style/Unidades"
android:text=""/>

128

1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424

</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="10dp">
<TextView
style="@style/Titulo"
android:text="@string/tit.rueda1montaje"
android:layout_column="0" />
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="10dp">
<TextView
style="@style/Nombre"
android:text="@string/radioprimitivomontaje1"
android:layout_column="0" />
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="5dp">
<TextView
style="@style/Formula"
android:text="@string/f.radioprimitivomontaje1"
android:layout_column="1" />
<EditText
style="@style/Campo"
android:id="@+id/c.radioprimitivomontaje1"/>
<TextView
style="@style/Unidades"
android:text="@string/mm"/>
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="10dp">
<TextView
style="@style/Nombre"
android:text="@string/espesorpolarmontaje1"
android:layout_column="0" />
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="5dp">
<TextView
style="@style/Formula"
android:text="@string/f.espesorpolarmontaje1"
android:layout_column="1" />
<EditText
style="@style/Campo"
android:id="@+id/c.espesorpolarmontaje1"/>
<TextView
style="@style/Unidades"
android:text="@string/mm"/>
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="10dp">
<TextView
style="@style/Nombre"
android:text="@string/coefengranemontaje1"
android:layout_column="0" />
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="5dp">
<TextView
style="@style/Formula"
android:text="@string/f.coefengranemontaje1"
android:layout_column="1" />
<EditText
style="@style/Campo"
android:id="@+id/c.coefengranemontaje1"/>
<TextView
style="@style/Unidades"
android:text=""/>
</TableRow>
<TableRow
android:layout_width="fill_parent"

129

1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508

android:layout_height="fill_parent"
android:layout_marginTop="10dp">
<TextView
style="@style/Nombre"
android:text="@string/coefengranemontajerk1"
android:layout_column="0" />
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="5dp">
<TextView
style="@style/Formula"
android:text="@string/f.coefengranemontajerk1"
android:layout_column="1" />
<EditText
style="@style/Campo"
android:id="@+id/c.coefengranemontajerk1"/>
<TextView
style="@style/Unidades"
android:text=""/>
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="10dp">
<TextView
style="@style/Nombre"
android:text="@string/holgurapolar1"
android:layout_column="0" />
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="5dp">
<TextView
style="@style/Formula"
android:text="@string/f.holgurapolar1"
android:layout_column="1" />
<EditText
style="@style/Campo"
android:id="@+id/c.holgurapolar1"/>
<TextView
style="@style/Unidades"
android:text="@string/mm"/>
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="10dp">
<TextView
style="@style/Titulo"
android:text="@string/tit.rueda2cero"
android:layout_column="0" />
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="10dp">
<TextView
style="@style/Nombre"
android:text="@string/desplazamientomin2"
android:layout_column="0" />
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="5dp">
<TextView
style="@style/Formula"
android:text="@string/f.desplazamientomin2"
android:layout_column="1" />
<EditText
style="@style/Campo"
android:id="@+id/c.desplazamientomin2"/>
<TextView
style="@style/Unidades"
android:text=""/>
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="10dp">
<TextView

130

1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592

style="@style/Nombre"
android:text="@string/radioprimitivo2"
android:layout_column="0" />
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="5dp">
<TextView
style="@style/Formula"
android:text="@string/f.radioprimitivo2"
android:layout_column="1" />
<EditText
style="@style/Campo"
android:id="@+id/c.radioprimitivo2"/>
<TextView
style="@style/Unidades"
android:text="@string/mm"/>
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="10dp">
<TextView
style="@style/Nombre"
android:text="@string/radiobase2"
android:layout_column="0" />
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="5dp">
<TextView
style="@style/Formula"
android:text="@string/f.radiobase2"
android:layout_column="1" />
<EditText
style="@style/Campo"
android:id="@+id/c.radiobase2"/>
<TextView
style="@style/Unidades"
android:text="@string/mm"/>
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="10dp">
<TextView
style="@style/Nombre"
android:text="@string/radiocabeza2"
android:layout_column="0" />
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="5dp">
<TextView
style="@style/Formula"
android:text="@string/f.radiocabeza2"
android:layout_column="1" />
<EditText
style="@style/Campo"
android:id="@+id/c.radiocabeza2"/>
<TextView
style="@style/Unidades"
android:text="@string/mm"/>
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="10dp">
<TextView
style="@style/Nombre"
android:text="@string/radiopie2"
android:layout_column="0" />
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="5dp">
<TextView
style="@style/Formula"
android:text="@string/f.radiopie2"
android:layout_column="1" />

131

1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676

<EditText
style="@style/Campo"
android:id="@+id/c.radiopie2"/>
<TextView
style="@style/Unidades"
android:text="@string/mm"/>
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="10dp">
<TextView
style="@style/Nombre"
android:text="@string/fevolventeangulolimite2"
android:layout_column="0" />
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="5dp">
<TextView
style="@style/Formula"
android:text="@string/f.fevolventeangulolimite2"
android:layout_column="1" />
<EditText
style="@style/Campo"
android:id="@+id/c.fevolventeangulolimite2"/>
<TextView
style="@style/Unidades"
android:text="@string/rad"/>
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="10dp">
<TextView
style="@style/Nombre"
android:text="@string/angulolimite2"
android:layout_column="0" />
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="5dp">
<TextView
style="@style/Formula"
android:text="@string/f.angulolimite2"
android:layout_column="1" />
<EditText
style="@style/Campo"
android:id="@+id/c.angulolimite2"/>
<TextView
style="@style/Unidades"
android:text="@string/deg"/>
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="10dp">
<TextView
style="@style/Nombre"
android:text="@string/radioapuntamiento2"
android:layout_column="0" />
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="5dp">
<TextView
style="@style/Formula"
android:text="@string/f.radioapuntamiento2"
android:layout_column="1" />
<EditText
style="@style/Campo"
android:id="@+id/c.radioapuntamiento2"/>
<TextView
style="@style/Unidades"
android:text="@string/mm"/>
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="10dp">
<TextView

132

1677
1678
1679
1680
1681
1682
1683
1684
1685
1686
1687
1688
1689
1690
1691
1692
1693
1694
1695
1696
1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
1707
1708
1709
1710
1711
1712
1713
1714
1715
1716
1717
1718
1719
1720
1721
1722
1723
1724
1725
1726
1727
1728
1729
1730
1731
1732
1733
1734
1735
1736
1737
1738
1739
1740
1741
1742
1743
1744
1745
1746
1747
1748
1749
1750
1751
1752
1753
1754
1755
1756
1757
1758
1759
1760

style="@style/Nombre"
android:text="@string/espesorprimitivo2"
android:layout_column="0" />
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="5dp">
<TextView
style="@style/Formula"
android:text="@string/f.espesorprimitivo2"
android:layout_column="1" />
<EditText
style="@style/Campo"
android:id="@+id/c.espesorprimitivo2"/>
<TextView
style="@style/Unidades"
android:text="@string/mm"/>
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="10dp">
<TextView
style="@style/Nombre"
android:text="@string/espesorcabeza2"
android:layout_column="0" />
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="5dp">
<TextView
style="@style/Formula"
android:text="@string/f.espesorcabeza2"
android:layout_column="1" />
<EditText
style="@style/Campo"
android:id="@+id/c.espesorcabeza2"/>
<TextView
style="@style/Unidades"
android:text="@string/mm"/>
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="10dp">
<TextView
style="@style/Nombre"
android:text="@string/espesorbase2"
android:layout_column="0" />
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="5dp">
<TextView
style="@style/Formula"
android:text="@string/f.espesorbase2"
android:layout_column="1" />
<EditText
style="@style/Campo"
android:id="@+id/c.espesorbase2"/>
<TextView
style="@style/Unidades"
android:text="@string/mm"/>
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="10dp">
<TextView
style="@style/Nombre"
android:text="@string/long2dientes2"
android:layout_column="0" />
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="5dp">
<TextView
style="@style/Formula"
android:text="@string/f.long2dientes2"
android:layout_column="1" />

133

1761
1762
1763
1764
1765
1766
1767
1768
1769
1770
1771
1772
1773
1774
1775
1776
1777
1778
1779
1780
1781
1782
1783
1784
1785
1786
1787
1788
1789
1790
1791
1792
1793
1794
1795
1796
1797
1798
1799
1800
1801
1802
1803
1804
1805
1806
1807
1808
1809
1810
1811
1812
1813
1814
1815
1816
1817
1818
1819
1820
1821
1822
1823
1824
1825
1826
1827
1828
1829
1830
1831
1832
1833
1834
1835
1836
1837
1838
1839
1840
1841
1842
1843
1844

<EditText
style="@style/Campo"
android:id="@+id/c.long2dientes2"/>
<TextView
style="@style/Unidades"
android:text="@string/mm"/>
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="10dp">
<TextView
style="@style/Nombre"
android:text="@string/long3dientes2"
android:layout_column="0" />
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="5dp">
<TextView
style="@style/Formula"
android:text="@string/f.long3dientes2"
android:layout_column="1" />
<EditText
style="@style/Campo"
android:id="@+id/c.long3dientes2"/>
<TextView
style="@style/Unidades"
android:text="@string/mm"/>
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="10dp">
<TextView
style="@style/Nombre"
android:text="@string/coefengrane2"
android:layout_column="0" />
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="5dp">
<TextView
style="@style/Formula"
android:text="@string/f.coefengrane2"
android:layout_column="1" />
<EditText
style="@style/Campo"
android:id="@+id/c.coefengrane2"/>
<TextView
style="@style/Unidades"
android:text=""/>
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="10dp">
<TextView
style="@style/Nombre"
android:text="@string/coefengrane2comp"
android:layout_column="0" />
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="5dp">
<TextView
style="@style/Formula"
android:text="@string/f.coefengrane2comp"
android:layout_column="1" />
<EditText
style="@style/Campo"
android:id="@+id/c.coefengrane2comp"/>
<TextView
style="@style/Unidades"
android:text=""/>
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="10dp">
<TextView

134

1845
1846
1847
1848
1849
1850
1851
1852
1853
1854
1855
1856
1857
1858
1859
1860
1861
1862
1863
1864
1865
1866
1867
1868
1869
1870
1871
1872
1873
1874
1875
1876
1877
1878
1879
1880
1881
1882
1883
1884
1885
1886
1887
1888
1889
1890
1891
1892
1893
1894
1895
1896
1897
1898
1899
1900
1901
1902
1903
1904
1905
1906
1907
1908
1909
1910
1911
1912
1913
1914
1915
1916
1917
1918
1919
1920
1921
1922
1923
1924
1925
1926
1927
1928

style="@style/Titulo"
android:text="@string/tit.rueda2v"
android:layout_column="0" />
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="10dp">
<TextView
style="@style/Nombre"
android:text="@string/radiocabezav2"
android:layout_column="0" />
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="5dp">
<TextView
style="@style/Formula"
android:text="@string/f.radiocabezav2"
android:layout_column="1" />
<EditText
style="@style/Campo"
android:id="@+id/c.radiocabezav2"/>
<TextView
style="@style/Unidades"
android:text="@string/mm"/>
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="10dp">
<TextView
style="@style/Nombre"
android:text="@string/radiocabezx1x2v2"
android:layout_column="0" />
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="5dp">
<TextView
style="@style/Formula"
android:text="@string/f.radiocabezx1x2v2"
android:layout_column="1" />
<EditText
style="@style/Campo"
android:id="@+id/c.radiocabezx1x2v2"/>
<TextView
style="@style/Unidades"
android:text="@string/mm"/>
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="10dp">
<TextView
style="@style/Nombre"
android:text="@string/radioprimitivov2"
android:layout_column="0" />
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="5dp">
<TextView
style="@style/Formula"
android:text="@string/f.radioprimitivov2"
android:layout_column="1" />
<EditText
style="@style/Campo"
android:id="@+id/c.radioprimitivov2"/>
<TextView
style="@style/Unidades"
android:text="@string/mm"/>
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="10dp">
<TextView
style="@style/Nombre"
android:text="@string/radiopiev2"
android:layout_column="0" />

135

1929
1930
1931
1932
1933
1934
1935
1936
1937
1938
1939
1940
1941
1942
1943
1944
1945
1946
1947
1948
1949
1950
1951
1952
1953
1954
1955
1956
1957
1958
1959
1960
1961
1962
1963
1964
1965
1966
1967
1968
1969
1970
1971
1972
1973
1974
1975
1976
1977
1978
1979
1980
1981
1982
1983
1984
1985
1986
1987
1988
1989
1990
1991
1992
1993
1994
1995
1996
1997
1998
1999
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012

</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="5dp">
<TextView
style="@style/Formula"
android:text="@string/f.radiopiev2"
android:layout_column="1" />
<EditText
style="@style/Campo"
android:id="@+id/c.radiopiev2"/>
<TextView
style="@style/Unidades"
android:text="@string/mm"/>
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="10dp">
<TextView
style="@style/Nombre"
android:text="@string/fevolventeangulolimitev2"
android:layout_column="0" />
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="5dp">
<TextView
style="@style/Formula"
android:text="@string/f.fevolventeangulolimitev2"
android:layout_column="1" />
<EditText
style="@style/Campo"
android:id="@+id/c.fevolventeangulolimitev2"/>
<TextView
style="@style/Unidades"
android:text="@string/rad"/>
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="10dp">
<TextView
style="@style/Nombre"
android:text="@string/angulolimitev2"
android:layout_column="0" />
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="5dp">
<TextView
style="@style/Formula"
android:text="@string/f.angulolimitev2"
android:layout_column="1" />
<EditText
style="@style/Campo"
android:id="@+id/c.angulolimitev2"/>
<TextView
style="@style/Unidades"
android:text="@string/deg"/>
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="10dp">
<TextView
style="@style/Nombre"
android:text="@string/radioapuntamientov2"
android:layout_column="0" />
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="5dp">
<TextView
style="@style/Formula"
android:text="@string/f.radioapuntamientov2"
android:layout_column="1" />
<EditText
style="@style/Campo"
android:id="@+id/c.radioapuntamientov2"/>

136

2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
2027
2028
2029
2030
2031
2032
2033
2034
2035
2036
2037
2038
2039
2040
2041
2042
2043
2044
2045
2046
2047
2048
2049
2050
2051
2052
2053
2054
2055
2056
2057
2058
2059
2060
2061
2062
2063
2064
2065
2066
2067
2068
2069
2070
2071
2072
2073
2074
2075
2076
2077
2078
2079
2080
2081
2082
2083
2084
2085
2086
2087
2088
2089
2090
2091
2092
2093
2094
2095
2096

<TextView
style="@style/Unidades"
android:text="@string/mm"/>
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="10dp">
<TextView
style="@style/Nombre"
android:text="@string/espesorprimitivov2"
android:layout_column="0" />
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="5dp">
<TextView
style="@style/Formula"
android:text="@string/f.espesorprimitivov2"
android:layout_column="1" />
<EditText
style="@style/Campo"
android:id="@+id/c.espesorprimitivov2"/>
<TextView
style="@style/Unidades"
android:text="@string/mm"/>
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="10dp">
<TextView
style="@style/Nombre"
android:text="@string/espesorcabezav2"
android:layout_column="0" />
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="5dp">
<TextView
style="@style/Formula"
android:text="@string/f.espesorcabezav2"
android:layout_column="1" />
<EditText
style="@style/Campo"
android:id="@+id/c.espesorcabezav2"/>
<TextView
style="@style/Unidades"
android:text="@string/mm"/>
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="10dp">
<TextView
style="@style/Nombre"
android:text="@string/espesorbasev2"
android:layout_column="0" />
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="5dp">
<TextView
style="@style/Formula"
android:text="@string/f.espesorbasev2"
android:layout_column="1" />
<EditText
style="@style/Campo"
android:id="@+id/c.espesorbasev2"/>
<TextView
style="@style/Unidades"
android:text="@string/mm"/>
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="10dp">
<TextView
style="@style/Nombre"
android:text="@string/espesorcabeza2x"
android:layout_column="0" />

137

2097
2098
2099
2100
2101
2102
2103
2104
2105
2106
2107
2108
2109
2110
2111
2112
2113
2114
2115
2116
2117
2118
2119
2120
2121
2122
2123
2124
2125
2126
2127
2128
2129
2130
2131
2132
2133
2134
2135
2136
2137
2138
2139
2140
2141
2142
2143
2144
2145
2146
2147
2148
2149
2150
2151
2152
2153
2154
2155
2156
2157
2158
2159
2160
2161
2162
2163
2164
2165
2166
2167
2168
2169
2170
2171
2172
2173
2174
2175
2176
2177
2178
2179
2180

</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="5dp">
<TextView
style="@style/Formula"
android:text="@string/f.espesorcabeza2x"
android:layout_column="1" />
<EditText
style="@style/Campo"
android:id="@+id/c.espesorcabeza2x"/>
<TextView
style="@style/Unidades"
android:text="@string/mm"/>
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="10dp">
<TextView
style="@style/Nombre"
android:text="@string/long2dientesv2"
android:layout_column="0" />
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="5dp">
<TextView
style="@style/Formula"
android:text="@string/f.long2dientesv2"
android:layout_column="1" />
<EditText
style="@style/Campo"
android:id="@+id/c.long2dientesv2"/>
<TextView
style="@style/Unidades"
android:text="@string/mm"/>
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="10dp">
<TextView
style="@style/Nombre"
android:text="@string/long3dientesv2"
android:layout_column="0" />
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="5dp">
<TextView
style="@style/Formula"
android:text="@string/f.long3dientesv2"
android:layout_column="1" />
<EditText
style="@style/Campo"
android:id="@+id/c.long3dientesv2"/>
<TextView
style="@style/Unidades"
android:text="@string/mm"/>
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="10dp">
<TextView
style="@style/Nombre"
android:text="@string/coefengranev2"
android:layout_column="0" />
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="5dp">
<TextView
style="@style/Formula"
android:text="@string/f.coefengranev2"
android:layout_column="1" />
<EditText
style="@style/Campo"
android:id="@+id/c.coefengranev2"/>

138

2181
2182
2183
2184
2185
2186
2187
2188
2189
2190
2191
2192
2193
2194
2195
2196
2197
2198
2199
2200
2201
2202
2203
2204
2205
2206
2207
2208
2209
2210
2211
2212
2213
2214
2215
2216
2217
2218
2219
2220
2221
2222
2223
2224
2225
2226
2227
2228
2229
2230
2231
2232
2233
2234
2235
2236
2237
2238
2239
2240
2241
2242
2243
2244
2245
2246
2247
2248
2249
2250
2251
2252
2253
2254
2255
2256
2257
2258
2259
2260
2261
2262
2263
2264

<TextView
style="@style/Unidades"
android:text=""/>
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="10dp">
<TextView
style="@style/Nombre"
android:text="@string/coefengranev2comp"
android:layout_column="0" />
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="5dp">
<TextView
style="@style/Formula"
android:text="@string/f.coefengranev2comp"
android:layout_column="1" />
<EditText
style="@style/Campo"
android:id="@+id/c.coefengranev2comp"/>
<TextView
style="@style/Unidades"
android:text=""/>
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="10dp">
<TextView
style="@style/Titulo"
android:text="@string/tit.rueda2montaje"
android:layout_column="0" />
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="10dp">
<TextView
style="@style/Nombre"
android:text="@string/radioprimitivomontaje2"
android:layout_column="0" />
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="5dp">
<TextView
style="@style/Formula"
android:text="@string/f.radioprimitivomontaje2"
android:layout_column="1" />
<EditText
style="@style/Campo"
android:id="@+id/c.radioprimitivomontaje2"/>
<TextView
style="@style/Unidades"
android:text="@string/mm"/>
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="10dp">
<TextView
style="@style/Nombre"
android:text="@string/espesorpolarmontaje2"
android:layout_column="0" />
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="5dp">
<TextView
style="@style/Formula"
android:text="@string/f.espesorpolarmontaje2"
android:layout_column="1" />
<EditText
style="@style/Campo"
android:id="@+id/c.espesorpolarmontaje2"/>
<TextView
style="@style/Unidades"
android:text="@string/mm"/>

139

2265
2266
2267
2268
2269
2270
2271
2272
2273
2274
2275
2276
2277
2278
2279
2280
2281
2282
2283
2284
2285
2286
2287
2288
2289
2290
2291
2292
2293
2294
2295
2296
2297
2298
2299
2300
2301
2302
2303
2304
2305
2306
2307
2308
2309
2310
2311
2312
2313
2314
2315
2316
2317
2318
2319
2320
2321
2322
2323
2324
2325
2326
2327
2328
2329
2330
2331
2332
2333
2334
2335
2336
2337
2338
2339
2340
2341
2342
2343
2344
2345
2346
2347
2348

</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="10dp">
<TextView
style="@style/Nombre"
android:text="@string/coefengranemontaje2"
android:layout_column="0" />
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="5dp">
<TextView
style="@style/Formula"
android:text="@string/f.coefengranemontaje2"
android:layout_column="1" />
<EditText
style="@style/Campo"
android:id="@+id/c.coefengranemontaje2"/>
<TextView
style="@style/Unidades"
android:text=""/>
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="10dp">
<TextView
style="@style/Nombre"
android:text="@string/coefengranemontajerk2"
android:layout_column="0" />
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="5dp">
<TextView
style="@style/Formula"
android:text="@string/f.coefengranemontajerk2"
android:layout_column="1" />
<EditText
style="@style/Campo"
android:id="@+id/c.coefengranemontajerk2"/>
<TextView
style="@style/Unidades"
android:text=""/>
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="10dp">
<TextView
style="@style/Nombre"
android:text="@string/holgurapolar2"
android:layout_column="0" />
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="5dp">
<TextView
style="@style/Formula"
android:text="@string/f.holgurapolar2"
android:layout_column="1" />
<EditText
style="@style/Campo"
android:id="@+id/c.holgurapolar2"/>
<TextView
style="@style/Unidades"
android:text="@string/mm"/>
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="10dp">
<TextView
style="@style/Titulo"
android:text="@string/tit.engranaje"
android:layout_column="0" />
</TableRow>
<TableRow
android:layout_width="fill_parent"

140

2349
2350
2351
2352
2353
2354
2355
2356
2357
2358
2359
2360
2361
2362
2363
2364
2365
2366
2367
2368
2369
2370
2371
2372
2373
2374
2375
2376
2377
2378
2379
2380
2381
2382
2383
2384
2385
2386
2387
2388
2389
2390
2391
2392
2393
2394
2395
2396
2397
2398
2399
2400
2401
2402
2403
2404
2405
2406
2407
2408
2409
2410
2411
2412
2413
2414
2415
2416
2417
2418
2419
2420
2421
2422
2423
2424
2425
2426
2427
2428
2429
2430
2431
2432

android:layout_height="fill_parent"
android:layout_marginTop="10dp">
<TextView
style="@style/Nombre"
android:text="@string/coefengranecero"
android:layout_column="0" />
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="5dp">
<TextView
style="@style/Formula"
android:text="@string/f.coefengranecero"
android:layout_column="1" />
<EditText
style="@style/Campo"
android:id="@+id/c.coefengranecero"/>
<TextView
style="@style/Unidades"
android:text=""/>
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="10dp">
<TextView
style="@style/Nombre"
android:text="@string/coefengranev"
android:layout_column="0" />
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="5dp">
<TextView
style="@style/Formula"
android:text="@string/f.coefengranev"
android:layout_column="1" />
<EditText
style="@style/Campo"
android:id="@+id/c.coefengranev"/>
<TextView
style="@style/Unidades"
android:text=""/>
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="10dp">
<TextView
style="@style/Nombre"
android:text="@string/coefengranercv"
android:layout_column="0" />
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="5dp">
<TextView
style="@style/Formula"
android:text="@string/f.coefengranercv"
android:layout_column="1" />
<EditText
style="@style/Campo"
android:id="@+id/c.coefengranercv"/>
<TextView
style="@style/Unidades"
android:text=""/>
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="10dp">
<TextView
style="@style/Nombre"
android:text="@string/coefengranerk"
android:layout_column="0" />
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="5dp">
<TextView

141

2433
2434
2435
2436
2437
2438
2439
2440
2441
2442
2443
2444
2445
2446
2447
2448
2449
2450
2451
2452
2453
2454
2455
2456
2457
2458
2459
2460
2461
2462
2463
2464
2465
2466
2467
2468
2469
2470
2471
2472
2473
2474
2475
2476
2477
2478
2479
2480
2481
2482
2483
2484
2485
2486
2487
2488
2489
2490
2491
2492
2493
2494
2495
2496
2497
2498
2499
2500
2501
2502
2503
2504
2505
2506
2507
2508
2509
2510
2511
2512
2513
2514
2515
2516

style="@style/Formula"
android:text="@string/f.coefengranerk"
android:layout_column="1" />
<EditText
style="@style/Campo"
android:id="@+id/c.coefengranerk"/>
<TextView
style="@style/Unidades"
android:text=""/>
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="10dp">
<TextView
style="@style/Nombre"
android:text="@string/juegotangencial"
android:layout_column="0" />
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="5dp">
<TextView
style="@style/Formula"
android:text="@string/f.juegotangencial"
android:layout_column="1" />
<EditText
style="@style/Campo"
android:id="@+id/c.juegotangencial"/>
<TextView
style="@style/Unidades"
android:text="@string/mm"/>
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="10dp">
<TextView
style="@style/Nombre"
android:text="@string/holgurapolarmontaje"
android:layout_column="0" />
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="5dp">
<TextView
style="@style/Formula"
android:text="@string/f.holgurapolarmontaje"
android:layout_column="1" />
<EditText
style="@style/Campo"
android:id="@+id/c.holgurapolarmontaje"/>
<TextView
style="@style/Unidades"
android:text="@string/mm"/>
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="10dp">
<TextView
style="@style/Nombre"
android:text="@string/distanciavmontaje"
android:layout_column="0" />
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="5dp">
<TextView
style="@style/Formula"
android:text=""
android:layout_column="1" />
<EditText
style="@style/Campo"
android:id="@+id/c.distanciavmontaje"/>
<TextView
style="@style/Unidades"
android:text="@string/mm"/>
</TableRow>
<TableRow
android:layout_width="fill_parent"

142

2517
2518
2519
2520
2521
2522
2523
2524
2525
2526
2527
2528
2529
2530
2531
2532
2533
2534
2535
2536
2537
2538
2539
2540
2541
2542
2543
2544
2545
2546
2547
2548
2549
2550
2551
2552
2553
2554
2555
2556
2557
2558
2559
2560
2561
2562
2563
2564
2565
2566
2567
2568
2569
2570
2571
2572
2573
2574
2575
2576
2577
2578
2579
2580
2581
2582
2583
2584
2585
2586
2587
2588
2589
2590
2591
2592
2593
2594
2595
2596
2597
2598
2599
2600

android:layout_height="fill_parent"
android:layout_marginTop="10dp">
<TextView
style="@style/Nombre"
android:text="@string/comppasov"
android:layout_column="0" />
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="5dp">
<TextView
style="@style/Formula"
android:text=""
android:layout_column="1" />
<EditText
style="@style/Campo"
android:id="@+id/c.comppasov"/>
<TextView
style="@style/Unidades"
android:text="@string/mm"/>
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="10dp">
<TextView
style="@style/Nombre"
android:text="@string/compdistanciav"
android:layout_column="0" />
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="5dp">
<TextView
style="@style/Formula"
android:text=""
android:layout_column="1" />
<EditText
style="@style/Campo"
android:id="@+id/c.compdistanciav"/>
<TextView
style="@style/Unidades"
android:text="@string/mm"/>
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="10dp">
<TextView
style="@style/Nombre"
android:text="@string/compdistanciamontaje"
android:layout_column="0" />
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="5dp">
<TextView
style="@style/Formula"
android:text=""
android:layout_column="1" />
<EditText
style="@style/Campo"
android:id="@+id/c.compdistanciamontaje"/>
<TextView
style="@style/Unidades"
android:text="@string/mm"/>
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="10dp">
<TextView
style="@style/Nombre"
android:text="@string/angulopresionv"
android:layout_column="0" />
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="5dp">
<TextView

143

2601
style="@style/Formula"
2602
android:text="@string/f.angulopresionv"
2603
android:layout_column="1" />
2604
<EditText
2605
style="@style/Campo"
2606
android:id="@+id/c.angulopresionv"/>
2607
<TextView
2608
style="@style/Unidades"
2609
android:text="@string/deg"/>
2610
</TableRow>
2611
<TableRow
2612
android:layout_width="fill_parent"
2613
android:layout_height="fill_parent"
2614
android:layout_marginTop="10dp">
2615
<TextView
2616
style="@style/Nombre"
2617
android:text="@string/angulopresionmontaje"
2618
android:layout_column="0" />
2619
</TableRow>
2620
<TableRow
2621
android:layout_width="fill_parent"
2622
android:layout_height="fill_parent"
2623
android:layout_marginTop="5dp">
2624
<TextView
2625
style="@style/Formula"
2626
android:text="@string/f.angulopresionmontaje"
2627
android:layout_column="1" />
2628
<EditText
2629
style="@style/Campo"
2630
android:id="@+id/c.angulopresionmontaje"/>
2631
<TextView
2632
style="@style/Unidades"
2633
android:text="@string/deg"/>
2634
</TableRow>
2635
<TableRow
2636
android:layout_width="fill_parent"
2637
android:layout_height="fill_parent"
2638
android:layout_marginTop="10dp">
2639
2640
<Button
2641
android:layout_width="match_parent"
2642
android:layout_height="match_parent"
2643
android:text="Ver caudal y engranaje"
2644
android:id="@+id/btngraf"
2645
android:layout_weight="1"
2646
android:gravity="center"
2647
android:layout_span="1"
2648
android:clickable="true"
2649
android:layout_gravity="center"
2650
android:width="100dp"/>
2651
</TableRow>
2652
2653
2654
</TableLayout>
2655 </ScrollView>
2656

144

I.2.3. activity_caudal.xml
1
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
2
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
3
android:layout_height="match_parent"
android:paddingLeft="@dimen/activity_horizontal_margin"
4
android:paddingRight="@dimen/activity_horizontal_margin"
5
android:paddingTop="@dimen/activity_vertical_margin"
6
android:paddingBottom="@dimen/activity_vertical_margin"
7
tools:context=".MainActivity$PlaceholderFragment"
8
android:background="#ffc0eaff">
9
10
<TableLayout
11
android:layout_width="fill_parent"
12
android:layout_height="wrap_content"
13
android:touchscreenBlocksFocus="false">
14
<TableRow
15
android:layout_width="fill_parent"
16
android:layout_height="fill_parent"
17
android:layout_marginTop="10dp">
18
<TextView
19
style="@style/Titulo"
20
android:text="EXPORTA EL ENGRANAJE"
21
android:layout_column="0" />
22
</TableRow>
23
<TableRow
24
android:layout_width="fill_parent"
25
android:layout_height="fill_parent"
26
android:layout_marginTop="10dp">
27
<TextView
28
style="@style/Nombre"
29
android:text="Exporta en un archivo de texto las coordenadas de los
dientes de los diferentes engranajes:"
30
android:inputType="textMultiLine"
31
android:layout_column="0"/>
32
</TableRow>
33
<TableRow
34
android:layout_width="fill_parent"
35
android:layout_height="fill_parent"
36
android:layout_marginTop="20dp">
37
38
<Button
39
android:layout_width="match_parent"
40
android:layout_height="match_parent"
41
android:text="Engranaje en V"
42
android:id="@+id/exp_V"
43
android:layout_weight="1"
44
android:gravity="center"
45
android:clickable="true"
46
android:layout_gravity="center"
47
android:width="100dp"/>
48
</TableRow>
49
<TableRow
50
android:layout_width="fill_parent"
51
android:layout_height="fill_parent"
52
android:layout_marginTop="10dp">
53
54
<Button
55
android:layout_width="match_parent"
56
android:layout_height="match_parent"
57
android:text="Engranaje a CERO"
58
android:id="@+id/exp_C"
59
android:layout_weight="1"
60
android:gravity="center"
61
android:layout_span="1"
62
android:clickable="true"
63
android:layout_gravity="center"
64
android:width="100dp"/>
65
</TableRow>
66
<TableRow
67
android:layout_width="fill_parent"
68
android:layout_height="fill_parent"
69
android:layout_marginTop="10dp">
70
71
<Button
72
android:layout_width="match_parent"
73
android:layout_height="match_parent"
74
android:text="Engranaje en V con Rk"
75
android:id="@+id/exp_Vk"
76
android:layout_weight="1"
77
android:gravity="center"
78
android:clickable="true"
79
android:layout_gravity="center"

145

80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163

android:width="100dp"/>
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="10dp">
<Button
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="Engranaje a CERO con Rk"
android:id="@+id/exp_Ck"
android:layout_weight="1"
android:gravity="center"
android:layout_span="1"
android:clickable="true"
android:layout_gravity="center"
android:width="100dp"/>
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="30dp">
<TextView
style="@style/Titulo"
android:text="DATOS DE CAUDAL"
android:layout_column="0" />
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="10dp">
<TextView
style="@style/Nombre"
android:text="Definir velocidad de rotacin:"
android:layout_column="0"
android:id="@+id/t_velrotacion"/>
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="5dp">
<TextView
style="@style/Formula"
android:text="n"
android:layout_column="1" />
<EditText
style="@style/Campo"
android:id="@+id/c.velrotacion"/>
<TextView
style="@style/Unidades"
android:text="rpm"/>
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="10dp">
<TextView
style="@style/Nombre"
android:text="Caudal terico"
android:layout_column="0"
android:id="@+id/t_caudalteorico"/>
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="5dp">
<TextView
style="@style/Formula"
android:text="Qg"
android:layout_column="1" />
<EditText
style="@style/Campo"
android:id="@+id/c.caudalteorico"/>
<TextView
style="@style/Unidades"
android:text="L/min"/>
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="10dp">
<TextView
style="@style/Nombre"

146

164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226

android:text="Capacidad volumtrica"
android:layout_column="0"
android:id="@+id/t_capacidad"/>
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="5dp">
<TextView
style="@style/Formula"
android:text="V"
android:layout_column="1" />
<EditText
style="@style/Campo"
android:id="@+id/c.capacidad"/>
<TextView
style="@style/Unidades"
android:text="cm3/rev"/>
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="10dp">
<TextView
style="@style/Nombre"
android:text="Irregularidad de caudal"
android:layout_column="0"
android:id="@+id/t_irregularidad"/>
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="5dp">
<TextView
style="@style/Formula"
android:text="Q"
android:layout_column="1" />
<EditText
style="@style/Campo"
android:id="@+id/c.irregularidad"/>
<TextView
style="@style/Unidades"
android:text="%"/>
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="10dp">
<Button
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="Recalcular"
android:id="@+id/recalc"
android:layout_weight="1"
android:gravity="center"
android:layout_span="1"
android:clickable="true"
android:layout_gravity="center"
android:width="100dp"/>
</TableRow>
</TableLayout>
</ScrollView>

147

I.2.4. grafica.xml
1
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
2
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
3
android:layout_height="match_parent"
android:paddingLeft="@dimen/activity_horizontal_margin"
4
android:paddingRight="@dimen/activity_horizontal_margin"
5
android:paddingTop="@dimen/activity_vertical_margin"
6
android:paddingBottom="@dimen/activity_vertical_margin"
7
tools:context=".MainActivity$PlaceholderFragment"
8
android:background="#ffc0eaff">
9
10
<TableLayout
11
android:layout_width="fill_parent"
12
android:layout_height="wrap_content"
13
android:touchscreenBlocksFocus="false">
14
<TableRow
15
android:layout_width="fill_parent"
16
android:layout_height="fill_parent"
17
android:layout_marginTop="10dp">
18
<TextView
19
style="@style/Titulo"
20
android:text="VISTA PREVIA DEL ENGRANAJE"
21
android:layout_column="0" />
22
</TableRow>
23
<TableRow
24
android:layout_width="fill_parent"
25
android:layout_height="fill_parent"
26
android:layout_marginTop="30dp">
27
<com.jjoe64.graphview.GraphView
28
android:layout_width="300dp"
29
android:layout_height="300dp"
30
android:layout_gravity="center"
31
android:gravity="center"
32
android:id="@+id/graph" />
33
</TableRow>
34
<TableRow
35
android:layout_width="fill_parent"
36
android:layout_height="fill_parent"
37
android:layout_marginTop="20dp">
38
<TextView
39
style="@style/Nombre"
40
android:text="Las coordenadas del engranaje han sido guardadas en la
carpeta GearPumps de su dispositivo."
41
android:inputType="textMultiLine"
42
android:singleLine="false"
43
android:layout_column="0"/>
44
</TableRow>
45
46
</TableLayout>
47
</ScrollView>

148

I.2.5. styles.xml
Archivo XML donde se han definido los estilos de la interfaz grfica de la aplicacin.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74

<resources>
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
</style>
<!-- Estilos propios -->
<style name="Titulo" parent="@android:style/TextAppearance.Medium">
<item name="android:layout_width">0dp</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:textColor">#ff000000</item>
<item name="android:typeface">sans</item>
<item name="android:layout_column">0</item>
<item name="android:layout_gravity">left</item>
<item name="android:layout_weight">1</item>
<item name="android:singleLine">true</item>
<item name="android:textStyle">bold</item>
<item name="android:textSize">20sp</item>
</style>
<style name="Nombre" parent="@android:style/TextAppearance.Small">
<item name="android:layout_width">0dp</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:textColor">#ff000000</item>
<item name="android:typeface">sans</item>
<item name="android:layout_column">0</item>
<item name="android:layout_gravity">left</item>
<item name="android:layout_weight">1</item>
<item name="android:singleLine">true</item>
<item name="android:textSize">15sp</item>
</style>
<style name="Formula" parent="@android:style/TextAppearance.Small">
<item name="android:layout_width">0dp</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:typeface">sans</item>
<item name="android:layout_column">0</item>
<item name="android:gravity">right</item>
<item name="android:layout_weight">5</item>
<item name="android:singleLine">true</item>
<item name="android:textStyle">italic</item>
<item name="android:layout_marginRight">5dp</item>
<item name="android:textSize">15sp</item>
</style>
<style name="Campo">
<item name="android:layout_width">0dp</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:inputType">numberDecimal</item>
<item name="android:ems">10</item>
<item name="android:layout_column">2</item>
<item name="android:layout_gravity">right</item>
<item name="android:layout_weight">3</item>
<item name="android:autoText">false</item>
<item name="android:background">#ffffffff</item>
<item name="android:editable">true</item>
<item name="android:layout_span">1</item>
<item name="android:gravity">right</item>
<item name="android:singleLine">true</item>
<item name="android:textColor">#ff000000</item>
<item name="android:textStyle">normal</item>
<item name="android:layout_margin">5dp</item>
<item name="android:textSize">15sp</item>
</style>
<style name="Unidades" parent="@android:style/TextAppearance.Small">
<item name="android:layout_width">0dp</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:textColor">#ff000000</item>
<item name="android:typeface">monospace</item>
<item name="android:layout_column">2</item>
<item name="android:layout_gravity">right</item>
<item name="android:layout_weight">3</item>
<item name="android:singleLine">true</item>
</style>
</resources>

149

I.2.6. strings.xml
Archivo XML donde se han definido los textos para usar referenciados en la aplicacin.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78

<?xml version="1.0" encoding="utf-8"?>


<resources>
<string name="app_name">GearPumps</string>
<string name="action_settings">Settings</string>
<!-- Texto unidades -->
<string name="z">dientes</string>
<string name="mm">mm</string>
<string name="rad">rad</string>
<string name="deg"></string>
<!-- Texto campos -->
<string name="tit.engevolvente">ENGRANAJE EVOLVENTE</string>
<string name="ndientes1">N dientes rueda pequea 1</string>
<string name="ndientes2">N dientes rueda grande 2</string>
<string name="modulo">Mdulo</string>
<string name="angulopresion">ngulo de presin</string>
<string name="desplazamiento1">Coeficiente desplazamiento rueda 1</string>
<string name="desplazamiento2">Coeficiente desplazamiento rueda 2</string>
<string name="juegoradial">Coeficiente juego radial (pie diente)</string>
<string name="distanciacentromontaje">Distancia entre centros de montaje</string>
<string name="longituddiente">Longitud del diente</string>
<string name="radiocabezamecanizado">Radio cabeza bomba (mecanizacin)</string>
<string name="tit.caracengranaje">CARACTERSTICAS ENGRANAJE</string>
<string name="ndienteslimite">N lmite de dientes</string>
<string name="paso">Paso (circunferencia primitiva)</string>
<string name="pasodirector">Paso en base/director</string>
<string name="fevolventeangulopresion">Evolvente ngulo presin herramienta</string>
<string name="distanciacentros">Distancia entre centros en engranaje a cero</string>
<string name="desplazcremallera1">Desplazamiento de la cremallera rueda 1</string>
<string name="desplazcremallera2">Desplazamiento de la cremallera rueda 2</string>
<string name="tit.engranajev">ENGRANAJE V</string>
<string name="parametrob">Parmetro B</string>
<string name="fevolventeangulov">Evolvente ngulo V</string>
<string name="angulov">ngulo de presin V</string>
<string name="distanciacentrov">Distancia entre centros V</string>
<string name="modulov">Mdulo V</string>
<string name="pasopolarv">Paso polar V</string>
<string name="parametrobv">Parmetro Bv</string>
<string name="parametrok">Parmetro K</string>
<string name="sumadespl">Suma coeficientes desplazamiento</string>
<string name="tit.montaje">MONTAJE</string>
<string name="angulomontaje">ngulo de presin montaje</string>
<string name="fevolventeangulomontaje">Funcin evolvente ngulo montaje</string>
<string name="modulomontaje">Mdulo montaje</string>
<string name="pasomontaje">Paso montaje</string>
<string name="tit.condrueda">CONDICIN RUEDA</string>
<string name="condengranajecero">Condicin engranaje a cero</string>
<string name="condengranajev">Condicin engranaje en V</string>
<string name="condmontaje">Condicin montaje</string>
<string name="tit.rueda1cero">RUEDA 1 A CERO</string>
<string name="desplazamientomin1">Coeficiente desplazamiento mnimo</string>
<string name="radioprimitivo1">Radio primitivo/polar</string>
<string name="radiobase1">Radio base/director</string>
<string name="radiocabeza1">Radio cabeza</string>
<string name="radiopie1">Radio pie</string>
<string name="fevolventeangulolimite1">Funcin evolvente ngulo lmite</string>
<string name="angulolimite1">ngulo lmite apuntamiento</string>
<string name="radioapuntamiento1">Radio lmite de apuntamiento</string>
<string name="espesorprimitivo1">Espesor primitivo/polar</string>
<string name="espesorcabeza1">Espesor cabeza</string>
<string name="espesorbase1">Espesor base</string>
<string name="long2dientes1">Longitud entre 2 dientes</string>
<string name="long3dientes1">Longitud entre 3 dientes</string>
<string name="coefengrane1">Coeficiente de engrane</string>
<string name="coefengrane1comp">Coeficiente de engrane (comprobacin)</string>
<string name="tit.rueda1v">RUEDA 1 EN V</string>
<string name="radiocabezav1">Radio cabeza V</string>
<string name="radiocabezx1x2v1">Radio cabeza por desplazamientos distintos</string>
<string name="radioprimitivov1">Radio primitivo/polar V</string>
<string name="radiopiev1">Radio pie V</string>
<string name="fevolventeangulolimitev1">Funcin evolvente ngulo lmite V</string>
<string name="angulolimitev1">ngulo lmite V</string>
<string name="radioapuntamientov1">Radio lmite de apuntamiento</string>
<string name="espesorprimitivov1">Espesor primitivo/polar V</string>
<string name="espesorcabezav1">Espesor cabeza V</string>
<string name="espesorbasev1">Espesor base V</string>

150

79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162

<string
<string
<string
<string
<string
<string
<string
<string
<string
<string
<string
<string
<string
<string
<string
<string
<string
<string
<string
<string
<string
<string
<string
<string
<string
<string
<string
<string
<string
<string
<string
<string
<string
<string
<string
<string
<string
<string
<string
<string
<string
<string
<string
<string
<string
<string
<string
<string
<string
<string
<string
<string
<string
<string
<string
<string
<string
<string
<string
<string
<string
<string

name="espesorcabeza1x">Espesor cabeza por desplazamientos distintos</string>


name="long2dientesv1">Longitud entre 2 dientes V</string>
name="long3dientesv1">Longitud entre 3 dientes V</string>
name="coefengranev1">Coeficiente de engrane V</string>
name="coefengranev1comp">Coeficiente de engrane V (comprobacin)</string>
name="tit.rueda1montaje">RUEDA 1 MONTAJE</string>
name="radioprimitivomontaje1">Radio primitivo/polar montaje</string>
name="espesorpolarmontaje1">Espesor circunferencia polar montaje</string>
name="coefengranemontaje1">Coeficiente de engrane montaje</string>
name="coefengranemontajerk1">Coeficiente de engrane radio cabeza Rk</string>
name="holgurapolar1">Holgura circunferencia polar montaje</string>
name="tit.rueda2cero">RUEDA 2 A CERO</string>
name="desplazamientomin2">Coeficiente desplazamiento mnimo</string>
name="radioprimitivo2">Radio primitivo/polar</string>
name="radiobase2">Radio base/director</string>
name="radiocabeza2">Radio cabeza</string>
name="radiopie2">Radio pie</string>
name="fevolventeangulolimite2">Funcin evolvente ngulo lmite</string>
name="angulolimite2">ngulo lmite apuntamiento</string>
name="radioapuntamiento2">Radio lmite de apuntamiento</string>
name="espesorprimitivo2">Espesor primitivo/polar</string>
name="espesorcabeza2">Espesor cabeza</string>
name="espesorbase2">Espesor base</string>
name="long2dientes2">Longitud entre 2 dientes</string>
name="long3dientes2">Longitud entre 3 dientes</string>
name="coefengrane2">Coeficiente de engrane</string>
name="coefengrane2comp">Coeficiente de engrane (comprobacin)</string>
name="tit.rueda2v">RUEDA 2 EN V</string>
name="radiocabezav2">Radio cabeza V</string>
name="radiocabezx1x2v2">Radio cabeza por desplazamientos distintos</string>
name="radioprimitivov2">Radio primitivo/polar V</string>
name="radiopiev2">Radio pie V</string>
name="fevolventeangulolimitev2">Funcin evolvente ngulo lmite V</string>
name="angulolimitev2">ngulo lmite V</string>
name="radioapuntamientov2">Radio lmite de apuntamiento</string>
name="espesorprimitivov2">Espesor primitivo/polar V</string>
name="espesorcabezav2">Espesor cabeza V</string>
name="espesorbasev2">Espesor base V</string>
name="espesorcabeza2x">Espesor cabeza por desplazamientos distintos</string>
name="long2dientesv2">Longitud entre 2 dientes V</string>
name="long3dientesv2">Longitud entre 3 dientes V</string>
name="coefengranev2">Coeficiente de engrane V</string>
name="coefengranev2comp">Coeficiente de engrane V (comprobacin)</string>
name="tit.rueda2montaje">RUEDA 2 MONTAJE</string>
name="radioprimitivomontaje2">Radio primitivo/polar montaje</string>
name="espesorpolarmontaje2">Espesor circunferencia polar montaje</string>
name="coefengranemontaje2">Coeficiente de engrane montaje</string>
name="coefengranemontajerk2">Coeficiente de engrane radio cabeza Rk</string>
name="holgurapolar2">Holgura circunferencia polar montaje</string>
name="tit.engranaje">ENGRANAJE</string>
name="coefengranecero">Coeficiente engrane total a cero</string>
name="coefengranev">Coeficiente engrane total V</string>
name="coefengranercv">Coeficiente engrane total radio cabeza V</string>
name="coefengranerk">Coeficiente engrane total radio cabeza Rk</string>
name="juegotangencial">Juego tangencial montaje</string>
name="holgurapolarmontaje">Holgura circunferencia polar montaje</string>
name="distanciavmontaje">Diferencia distancia centros V y montaje</string>
name="comppasov">Margen error paso V</string>
name="compdistanciav">Margen error distancia V</string>
name="compdistanciamontaje">Margen error distancia montaje</string>
name="angulopresionv">ngulo presin V</string>
name="angulopresionmontaje">ngulo presin montaje</string>

<!-- Texto frmulas -->


<string name="f.ndientes1">z1</string>
<string name="f.ndientes2">z2</string>
<string name="f.modulo">m</string>
<string name="f.angulopresion"></string>
<string name="f.desplazamiento1">x1</string>
<string name="f.desplazamiento2">x2</string>
<string name="f.juegoradial">j</string>
<string name="f.distanciacentromontaje">\'=m</string>
<string name="f.longituddiente">b</string>
<string name="f.radiocabezamecanizado">Rk</string>
<string name="f.ndienteslimite">zl</string>
<string name="f.paso">p</string>
<string name="f.pasodirector">pb=pd</string>
<string name="f.fevolventeangulopresion">Ev </string>
<string name="f.distanciacentros">0</string>
<string name="f.desplazcremallera1">1=x1m</string>
<string name="f.desplazcremallera2">2=x2m</string>
<string name="f.parametrob">B</string>
<string name="f.fevolventeangulov">Ev v</string>
<string name="f.angulov">v</string>

151

163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246

<string
<string
<string
<string
<string
<string
<string
<string
<string
<string
<string
<string
<string
<string
<string
<string
<string
<string
<string
<string
<string
<string
<string
<string
<string
<string
<string
<string
<string
<string
<string
<string
<string
<string
<string
<string
<string
<string
<string
<string
<string
<string
<string
<string
<string
<string
<string
<string
<string
<string
<string
<string
<string
<string
<string
<string
<string
<string
<string
<string
<string
<string
<string
<string
<string
<string
<string
<string
<string
<string
<string
<string
<string
<string
<string
<string
<string
<string
<string
<string
<string
<string
<string
<string

name="f.distanciacentrov">v</string>
name="f.modulov">mv</string>
name="f.pasopolarv">p\'</string>
name="f.parametrobv">Bv</string>
name="f.parametrok">K</string>
name="f.sumadespl">(x1+x2)</string>
name="f.angulomontaje">m</string>
name="f.fevolventeangulomontaje">Ev m</string>
name="f.modulomontaje">m,m</string>
name="f.pasomontaje">p\'m</string>
name="f.desplazamientomin1">x1 min</string>
name="f.radioprimitivo1">R1</string>
name="f.radiobase1">1</string>
name="f.radiocabeza1">Rc1</string>
name="f.radiopie1">Rp1</string>
name="f.fevolventeangulolimite1">Ev L1</string>
name="f.angulolimite1">L1</string>
name="f.radioapuntamiento1">RL1</string>
name="f.espesorprimitivo1">e1</string>
name="f.espesorcabeza1">ec1</string>
name="f.espesorbase1">eb1</string>
name="f.long2dientes1">L2k1</string>
name="f.long3dientes1">L3k1</string>
name="f.coefengrane1">1</string>
name="f.coefengrane1comp">1</string>
name="f.radiocabezav1">RcV1</string>
name="f.radiocabezx1x2v1">Rc1x</string>
name="f.radioprimitivov1">RV1</string>
name="f.radiopiev1">RpV1</string>
name="f.fevolventeangulolimitev1">Ev LV1</string>
name="f.angulolimitev1">LV1</string>
name="f.radioapuntamientov1">RLV1</string>
name="f.espesorprimitivov1">eV1</string>
name="f.espesorcabezav1">ecV1</string>
name="f.espesorbasev1">ebV1</string>
name="f.espesorcabeza1x">ec1x</string>
name="f.long2dientesv1">L2kV1</string>
name="f.long3dientesv1">L3kV1</string>
name="f.coefengranev1">V1</string>
name="f.coefengranev1comp">V1</string>
name="f.radioprimitivomontaje1">R\'m1</string>
name="f.espesorpolarmontaje1">e\'m1</string>
name="f.coefengranemontaje1">\'m1</string>
name="f.coefengranemontajerk1">\'mRk1</string>
name="f.holgurapolar1">hc2</string>
name="f.desplazamientomin2">x2 min</string>
name="f.radioprimitivo2">R2</string>
name="f.radiobase2">2</string>
name="f.radiocabeza2">Rc2</string>
name="f.radiopie2">Rp2</string>
name="f.fevolventeangulolimite2">Ev L2</string>
name="f.angulolimite2">L2</string>
name="f.radioapuntamiento2">RL2</string>
name="f.espesorprimitivo2">e2</string>
name="f.espesorcabeza2">ec2</string>
name="f.espesorbase2">eb2</string>
name="f.long2dientes2">L2k2</string>
name="f.long3dientes2">L3k2</string>
name="f.coefengrane2">2</string>
name="f.coefengrane2comp">2</string>
name="f.radiocabezav2">RcV2</string>
name="f.radiocabezx1x2v2">Rc2x</string>
name="f.radioprimitivov2">RV2</string>
name="f.radiopiev2">RpV2</string>
name="f.fevolventeangulolimitev2">Ev LV2</string>
name="f.angulolimitev2">LV2</string>
name="f.radioapuntamientov2">RLV2</string>
name="f.espesorprimitivov2">eV2</string>
name="f.espesorcabezav2">EcV2</string>
name="f.espesorbasev2">Eb\'2</string>
name="f.espesorcabeza2x">Ec2x</string>
name="f.long2dientesv2">L2kV2</string>
name="f.long3dientesv2">L3kV2</string>
name="f.coefengranev2">V2</string>
name="f.coefengranev2comp">V2</string>
name="f.radioprimitivomontaje2">R\'m2</string>
name="f.espesorpolarmontaje2">e\'m2</string>
name="f.coefengranemontaje2">\'m2</string>
name="f.coefengranemontajerk2">\'mRk2</string>
name="f.holgurapolar2">hc2</string>
name="f.coefengranecero"></string>
name="f.coefengranev">\'</string>
name="f.coefengranercv">\'m</string>
name="f.coefengranerk">\'mRk</string>

152

247
<string name="f.juegotangencial">J</string>
248
<string name="f.holgurapolarmontaje">hc</string>
249
<string name="f.angulopresionv">V</string>
250
<string name="f.angulopresionmontaje">m</string>
251
<string name="title_activity_resultados">Resultados</string>
252
<string name="clic">Pulse en los campos para ms informacin // Vea valores de
ejemplo</string>
253
<string name="disclaimer">Esta aplicacin es de carcter orientativo y acadmico,
para facilitar informacin til en cualquier momento. El equipo de desarrollo no se hace
responsable de los problemas derivados de los resultados obtenidos con esta aplicacin, as
como de su mal uso. Para aplicaciones reales se aconseja contrastar los resultados de clculo
con otras fuentes.</string>
254
255 </resources>
256

153

I.2.7. custom_toast.xml
Archivo XML donde se han definido las caractersticas de la ventana emergente (Toast) para el
mensaje de ayuda de los campos de la pantalla 1.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25

<?xml version="1.0" encoding="utf-8"?>


<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/custom_toast_layout_id"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/borde"
android:orientation="vertical"
android:padding="5dp">
<ImageView
android:id="@+id/image"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:layout_marginRight="5dp"
android:layout_gravity="center_horizontal" />
<TextView
android:id="@+id/text"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:textColor="#000"
android:textAlignment="center"
android:layout_gravity="center_horizontal" />
</LinearLayout>

154

También podría gustarte