Está en la página 1de 18

1

Universidad de Guadalajara
Centro Universitario de Ciencias Exactas e Ingenieras

Proyecto final:
Gonimetro digital, controlado por una
base de datos en lenguaje C#.











Programacin para interfaces
Prof. Hassem Rubn, Brambila Macas.

De Alba, Irina.
Daz, Jos Miguel
Romo, Ivn.
Diciembre 2013


2


ndice General.
Introduccin 3

Objetivo 3

Introduccin 3

Marco terico 4

Enconder (Tipos y Funcionamiento) 6

Funcionamiento del arduino 6

Procedimiento para el armado del gonimetro 7

Materiales y Costos 8

Programa del arduino 8

Base de datos 9

Diagrama Entidad- Relacin 9

Programa de la base de datos 10

Imgenes de la interfaz 17

Conclusiones 17

Trabajo terminado 18








3


INTRODUCCIN.
Objetivo.
Crear un aparato electrnico que permita medir el ngulo entre el brazo y el
antebrazo para fines de rehabilitacin controlado por una base de datos que
permite al operador obtener los datos importantes del paciente para su diagnstico
y otros fines prcticos.

La amplitud de los diferentes movimientos articulares se mide con ayuda del
gonimetro en forma precisa. Tomando como base el conocimiento anatmico y
de la biomecnica que permite interpretar, analizar y aplicar el movimiento con
proyeccin a su especialidad. La amplitud disponible ante la lesin es la amplitud
de movimiento completa es el valor mximo de los grados de libertad de la
articulacin aunque no sea la amplitud total anatmicamente hablando, esa
amplitud es la que se emplea para asignar el grado de balance muscular.
El balance articular debe preceder al balance muscular antes de asegurarse el
grado de amplitud pasiva de los movimientos.
La goniometra resulta ser una tcnica til en medicina veterinaria, tanto como en
Medicina Humana, siempre y cuando se realice el anlisis global y analtico en
forma correcta para que el balance articular tenga valor objetivo.
De esta manera se pudo demostrar el registro de progreso en la evolucin de la
articulacin del codo. La goniometra es un mtodo fiable y objetivo para
determinar rango de movilidad articular. Es decir que adems de ayudar al mdico
a diagnosticar la prdida funcional del paciente, proporciona un criterio objetivo
para determinar la eficacia de la rehabilitacin.










4


Marco Terico.
El gonimetro es un instrumento de medicin que se utiliza para medir ngulos en
muchos campos de la ciencia, comprobacin de conos y puesta a punto de las
mquinas-herramientas de los talleres de mecanizado.
Existen varios tipos de gonimetros aplicables en funcin de la anatoma de las
articulaciones a evaluar y de los movimientos que se est midiendo. Est formado
por dos brazos articulados que se unen en el centro de un semicrculo graduado.
Si bien existen diferentes convenciones en la medicin, la tcnica general consiste
en ubicar los brazos del gonimetro sobre el eje medio de los huesos proximal y
distal de la articulacin a explorar, localizando el centro del gonimetro sobre el
eje de flexin articular el cual se determina tras realizar suaves movimientos de
flexin y extensin.



GONIOMETRO MANUAL.

Para realizar una valoracin articular en general, y particularmente, una
goniomtrica, se deben tener en cuenta ciertas premisas.
Conocer las posibilidades normales de cada articulacin en los tres planos del
espacio, para lo que es necesario conocer de qu depende esa amplitud de
movimiento: Elasticidad de la cpsula y ligamentos articulares, distensin de los
msculos antagonistas, contacto de las partes blandas y tope seo entre las dos
palancas. Hay otros determinantes, importantes a tener en cuenta, como son: Tipo
de movimiento realizado: pasivo, activo, forzado, aparicin de dolor durante el
recorrido articular. Aplicacin de resistencia y Existencia de movimientos
anormales o desviaciones axiales.
5


Es til en la evaluacin de los pacientes con limitacin funcional articular y es
empleada con frecuencia para la evaluacin de ngulos articulares con distintos
fines como determinar la presencia de disfuncin, establecer el diagnstico,
documentar progreso, modificar tratamiento o dar el alta mdica.
En este dispositivo se utiliz un encoder ptico, rotatorio e incremental. El
encoder rotatorio es un dispositivo usado para convertir la posicin angular de un
eje a un cdigo digital, lo que lo convierte en una clase de transductor. Nota:
tambin existe el lineal que sirve para medir el avance en una superficie lineal
Se puede clasificar en:
Absoluto: Produce un cdigo binario nico por cada ngulo. Tiene la
ventaja de que cuando lo vuelves a prender no reinicia en cero sino en el
ngulo en el que te habas quedado. No se compr un encoder absoluto
porque eran mucho ms caros, entre el doble y el triple de uno incremental
de la misma precisin.

Incremental: Suelen producir 2 seales A y B cuadradas, donde A y B
estn desfasadas por 90 grados y generan un determinado nmero de
pulsos por vuelta (dependiendo de la precisin del encoder). Se opt por
un encoder de 64 pulsos por revolucin, lo que implica que en una vuelta
cada seal emitir 64 pulsos.
Otra clasificacin:
Mecnico: Son mucho ms baratos, algunos de hasta 10 pesos pero tienen
2 desventajas por las cuales no lo compramos, existe el efecto rebote el cual
llega a dar una seal falsa y son de mucho menor precisin con un mximo
de 24 pulsos por revolucin. Este encoder de baja precisin suele utilizarse
por ejemplo en el volumen de la radio donde se ocupa que haya pocos
pulsos en cada vuelta (que cambie poco a poco, sera malo que aumentara a
360 en 1 vuelta el volumen).

Magntico: Es utilizado en la industria por ser menos sensible al polvo y es
para trabajo pesado, era mucho ms caro.


ptico: Funciona con un LED, 2 fotoreceptores y un disco con el nmero
de agujeros que le dan la precisin (el nuestro al ser de 64 pulsos por
revolucin tiene 64 agujeros) entonces cada que pasa la luz a travs del
agujero emite un pulso y como son 2 fotoreceptores son 2 seales que
tienen un pulso cuadrado a continuacin se muestra en la imagen:
6





Funcionamiento del encoder ptico.






Arduino.
Es una plataforma de electrnica abierta para
la creacin de prototipos basada en software
y hardware flexibles y fciles de usar. Se cre
para artistas, diseadores, aficionados y
cualquiera interesado en crear entornos u
objetos interactivos.
Arduino puede tomar informacin del
entorno a travs de sus pines de entrada de
toda una gama de sensores y puede afectar
aquello que le rodea controlando luces,
motores y otros actuadores.

El microcontrolador en la placa Arduino se programa mediante el lenguaje de
programacin Arduino (basado en Wiring) y el entorno de desarrollo Arduino
(basado en Processing). Los proyectos hechos con Arduino pueden ejecutarse sin
necesidad de conectar a un ordenador, si bien tienen la posibilidad de hacerlo y
comunicar con diferentes tipos de software (p.ej. Flash, Processing, MaxMSP).



7



PROCEDIMIENTO PARA EL ARMADO DEL GONIOMETRO.
Recibamos la seal A y B del encoder, mediante el arduino UNO que es una
tarjeta controladora la seal la convertamos a datos se podra decir que es un tipo
de transductor y mediante a un anlisis dimensional la seal la convertamos a
grados. Y por ltimo vemos que en la imagen se encuentra un puerto USB que
sale del arduino y se conecta directamente al CPU donde se dise el programa
para manejar al gonimetro y manejar la base de datos.










En esta otra imagen se visualiza como se conecta el encoder al arduino para que se
obtenga la seal, debe de ser especficamente de esta forma.








8



Materiales y costos:
$250 encoder y $70 l envi del mismo.
$50 brazos de acrlico y contactel.
$640 paquete arduino (tarjeta, conectores, cable USB, etc).
Cables, equipo para soldar, silicn, pistola para silicn, laptop, programa de
visual studio 2010, Wamp server, SQL.



Programa del ARDUINO UNO.


Del lado derecho tenemos el
programa para manejar al encoder
por medio de la tarjeta controlador
arduino y convertir las seales en
grados con una precisin de 1.4
grados.

Observamos que primeramente se
agregan las libreras para identificar a
los puertos y las funciones que se
requieren, se observa que est
conectado a la LCD pero para
comunicarlo con la base de datos
solo se necesita la conexin al puerto
USB y as mantener la relacin.





9


Base de datos.-


Diagrama Entidad Relacin.









10


Programa para base de datos.

namespace WindowsFormsApplication1
{ partial class Form1
{ /// <summary>
/// Variable del diseador requerida.
/// </summary>
private
System.ComponentModel.IContainer
components = null;
/// <summary>
/// Limpiar los recursos que se estn
utilizando.
/// </summary>
/// <param name="disposing">true si los
recursos administrados se deben eliminar;
false en caso contrario, false.</param>
protected override void Dispose(bool
disposing)
{
if (disposing && (components !=
null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Cdigo generado por el
Diseador de Windows Forms
/// <summary>
/// Mtodo necesario para admitir el
Diseador. No se puede modificar

/// el contenido del mtodo con el editor
de cdigo.

/// </summary>
private void InitializeComponent()
{
this.components = new
System.ComponentModel.Container();
this.serialPort1 = new
System.IO.Ports.SerialPort(this.components
);
this.boxGrados = new
System.Windows.Forms.TextBox();
this.button1 = new
System.Windows.Forms.Button();
this.label1 = new
System.Windows.Forms.Label();
this.timer1 = new
System.Windows.Forms.Timer(this.compon
ents);
this.newBut = new
System.Windows.Forms.Button();
this.boxId = new
System.Windows.Forms.TextBox();
this.boxName = new
System.Windows.Forms.TextBox();
this.boxPhone = new
System.Windows.Forms.TextBox();
this.boxMail = new
System.Windows.Forms.TextBox();
this.boxArt = new
System.Windows.Forms.TextBox();
11


this.delBut = new
System.Windows.Forms.Button();
this.searchBut = new
System.Windows.Forms.Button();
this.searchBox = new
System.Windows.Forms.TextBox();
this.updateBut = new
System.Windows.Forms.Button();
this.saveBut = new
System.Windows.Forms.Button();
this.label2 = new
System.Windows.Forms.Label();
this.label3 = new
System.Windows.Forms.Label();
this.label4 = new
System.Windows.Forms.Label();
this.label5 = new
System.Windows.Forms.Label();
this.label6 = new
System.Windows.Forms.Label();
this.saveAndUpdateBut = new
System.Windows.Forms.Button();
this.SuspendLayout();
//
// serialPort1
//
this.serialPort1.PortName =
"COM10";
//
// boxGrados
//
this.boxGrados.Font = new
System.Drawing.Font("Century Gothic",
14.25F, System.Drawing.FontStyle.Bold,
System.Drawing.GraphicsUnit.Point,
((byte)(0)));
this.boxGrados.Location = new
System.Drawing.Point(132, 231);
this.boxGrados.Name =
"boxGrados";
this.boxGrados.Size = new
System.Drawing.Size(135, 31);
this.boxGrados.TabIndex = 0;
//
// button1
//
this.button1.Font = new
System.Drawing.Font("Arial Rounded MT
Bold", 14.25F,
System.Drawing.FontStyle.Regular,
System.Drawing.GraphicsUnit.Point,
((byte)(0)));
this.button1.Location = new
System.Drawing.Point(292, 228);
this.button1.Name = "button1";
this.button1.Size = new
System.Drawing.Size(89, 34);
this.button1.TabIndex = 1;
this.button1.Text = "LEER";

this.button1.UseVisualStyleBackColor =
true;
this.button1.Click += new
System.EventHandler(this.button1_Click);
//
// label1
//
this.label1.AutoSize = true;
12


this.label1.Font = new
System.Drawing.Font("Arial Rounded MT
Bold", 14.25F,
System.Drawing.FontStyle.Regular,
System.Drawing.GraphicsUnit.Point,
((byte)(0)));
this.label1.Location = new
System.Drawing.Point(12, 235);
this.label1.Name = "label1";
this.label1.Size = new
System.Drawing.Size(95, 22);
this.label1.TabIndex = 2;
this.label1.Text = "GRADOS";
//
// timer1
//
this.timer1.Tick += new
System.EventHandler(this.timer1_Tick);
//
// newBut
//
this.newBut.BackColor =
System.Drawing.SystemColors.Highlight;
this.newBut.Location = new
System.Drawing.Point(542, 12);
this.newBut.Name = "newBut";
this.newBut.Size = new
System.Drawing.Size(100, 55);
this.newBut.TabIndex = 3;
this.newBut.Text = "Nuevo";

this.newBut.UseVisualStyleBackColor =
false;
this.newBut.Click += new
System.EventHandler(this.newBut_Click);
//
// boxId
//
this.boxId.Location = new
System.Drawing.Point(132, 12);
this.boxId.Name = "boxId";
this.boxId.Size = new
System.Drawing.Size(68, 20);
this.boxId.TabIndex = 8;
//
// boxName
//
this.boxName.Location = new
System.Drawing.Point(132, 47);
this.boxName.Name = "boxName";
this.boxName.Size = new
System.Drawing.Size(262, 20);
this.boxName.TabIndex = 9;
//
// boxPhone
//
this.boxPhone.Location = new
System.Drawing.Point(132, 86);
this.boxPhone.Name = "boxPhone";
this.boxPhone.Size = new
System.Drawing.Size(262, 20);
this.boxPhone.TabIndex = 10;
//
// boxMail
//
13


this.boxMail.Location = new
System.Drawing.Point(132, 127);
this.boxMail.Name = "boxMail";
this.boxMail.Size = new
System.Drawing.Size(262, 20);
this.boxMail.TabIndex = 11;
//
// boxArt
//
this.boxArt.Location = new
System.Drawing.Point(132, 172);
this.boxArt.Name = "boxArt";
this.boxArt.Size = new
System.Drawing.Size(262, 20);
this.boxArt.TabIndex = 12;
//
// delBut
//
this.delBut.BackColor =
System.Drawing.SystemColors.AppWorksp
ace;
this.delBut.Location = new
System.Drawing.Point(542, 73);
this.delBut.Name = "delBut";
this.delBut.Size = new
System.Drawing.Size(100, 33);
this.delBut.TabIndex = 13;
this.delBut.Text = "Eliminar";
this.delBut.UseVisualStyleBackColor =
false;
this.delBut.Click += new
System.EventHandler(this.delBut_Click);
//
// searchBut
//
this.searchBut.BackColor =
System.Drawing.SystemColors.ActiveCaptio
n;
this.searchBut.Location = new
System.Drawing.Point(542, 112);
this.searchBut.Name = "searchBut";
this.searchBut.Size = new
System.Drawing.Size(100, 33);
this.searchBut.TabIndex = 14;
this.searchBut.Text = "Buscar";

this.searchBut.UseVisualStyleBackColor =
false;
this.searchBut.Click += new
System.EventHandler(this.searchBut_Click);
//
// searchBox
//
this.searchBox.Location = new
System.Drawing.Point(669, 121);
this.searchBox.Name = "searchBox";
this.searchBox.Size = new
System.Drawing.Size(31, 20);
this.searchBox.TabIndex = 15;
//
// updateBut
//
this.updateBut.BackColor =
System.Drawing.SystemColors.ActiveCaptio
n;
this.updateBut.Location = new
System.Drawing.Point(542, 153);
14


this.updateBut.Name = "updateBut";
this.updateBut.Size = new
System.Drawing.Size(100, 28);
this.updateBut.TabIndex = 16;
this.updateBut.Text = "Modificar";

this.updateBut.UseVisualStyleBackColor =
false;
this.updateBut.Click += new
System.EventHandler(this.updateBut_Click)
; //
// saveBut
//
this.saveBut.BackColor =
System.Drawing.SystemColors.Highlight;
this.saveBut.Location = new
System.Drawing.Point(478, 202);
this.saveBut.Name = "saveBut";
this.saveBut.Size = new
System.Drawing.Size(100, 55);
this.saveBut.TabIndex = 17;
this.saveBut.Text = "GUARDAR
NUEVO";

this.saveBut.UseVisualStyleBackColor =
false;
this.saveBut.Click += new
System.EventHandler(this.saveBut_Click);
//
// label2
//
this.label2.AutoSize = true;
this.label2.Location = new
System.Drawing.Point(72, 15);
this.label2.Name = "label2";
this.label2.Size = new
System.Drawing.Size(18, 13);
this.label2.TabIndex = 18;
this.label2.Text = "ID";
//
// label3
//
this.label3.AutoSize = true;
this.label3.Location = new
System.Drawing.Point(72, 179);
this.label3.Name = "label3";
this.label3.Size = new
System.Drawing.Size(62, 13);
this.label3.TabIndex = 19;
this.label3.Text = "Articulacin";
//
// label4
//
this.label4.AutoSize = true;
this.label4.Location = new
System.Drawing.Point(72, 130);
this.label4.Name = "label4";
this.label4.Size = new
System.Drawing.Size(36, 13);
this.label4.TabIndex = 20;
this.label4.Text = "E-Mail";
//
// label5
//
this.label5.AutoSize = true;
15


this.label5.Location = new
System.Drawing.Point(72, 93);
this.label5.Name = "label5";
this.label5.Size = new
System.Drawing.Size(49, 13);
this.label5.TabIndex = 21;
this.label5.Text = "Telefono";
//
// label6
//
this.label6.AutoSize = true;
this.label6.Location = new
System.Drawing.Point(72, 54);
this.label6.Name = "label6";
this.label6.Size = new
System.Drawing.Size(44, 13);
this.label6.TabIndex = 22;
this.label6.Text = "Nombre";
// // saveAndUpdateBut
//
this.saveAndUpdateBut.BackColor =
System.Drawing.SystemColors.Highlight;
this.saveAndUpdateBut.Location =
new System.Drawing.Point(584, 202);
this.saveAndUpdateBut.Name =
"saveAndUpdateBut";
this.saveAndUpdateBut.Size = new
System.Drawing.Size(100, 55);
this.saveAndUpdateBut.TabIndex =
23;
this.saveAndUpdateBut.Text =
"GUARDAR MODIFICO";

this.saveAndUpdateBut.UseVisualStyleBack
Color = false;
this.saveAndUpdateBut.Click +=
new
System.EventHandler(this.saveAndUpdateB
ut_Click);
// // Form1 //
this.AutoScaleDimensions = new
System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode =
System.Windows.Forms.AutoScaleMode.Fo
nt;
this.ClientSize = new
System.Drawing.Size(722, 283);
this.Controls.Add(this.saveAndUpdateBut);
this.Controls.Add(this.label6);
this.Controls.Add(this.label5);
this.Controls.Add(this.label4);
this.Controls.Add(this.label3);
this.Controls.Add(this.label2);
this.Controls.Add(this.saveBut);
this.Controls.Add(this.updateBut);
this.Controls.Add(this.searchBox);
this.Controls.Add(this.searchBut);
this.Controls.Add(this.delBut);
this.Controls.Add(this.boxArt);
this.Controls.Add(this.boxMail);
this.Controls.Add(this.boxPhone);
this.Controls.Add(this.boxName);
this.Controls.Add(this.boxId);
this.Controls.Add(this.newBut);
this.Controls.Add(this.label1);
16


this.Controls.Add(this.button1);
this.Controls.Add(this.boxGrados);
this.Name = "Form1";
this.Text = "Form1";
this.Load += new
System.EventHandler(this.Form1_Load);
this.ResumeLayout(false);
this.PerformLayout(); }
#endregion
private System.IO.Ports.SerialPort
serialPort1;
private
System.Windows.Forms.TextBox
boxGrados;
private System.Windows.Forms.Button
button1;
private System.Windows.Forms.Label
label1;
private System.Windows.Forms.Timer
timer1;
private System.Windows.Forms.Button
newBut;
private
System.Windows.Forms.TextBox boxId;
private
System.Windows.Forms.TextBox
boxName;
private
System.Windows.Forms.TextBox
boxPhone;
private
System.Windows.Forms.TextBox boxMail;
private
System.Windows.Forms.TextBox boxArt;
private System.Windows.Forms.Button
delBut;
private System.Windows.Forms.Button
searchBut;
private
System.Windows.Forms.TextBox
searchBox;
private System.Windows.Forms.Button
updateBut;
private System.Windows.Forms.Button
saveBut;
private System.Windows.Forms.Label
label2;
private System.Windows.Forms.Label
label3;
private System.Windows.Forms.Label
label4;
private System.Windows.Forms.Label
label5;
private System.Windows.Forms.Label
label6;
private System.Windows.Forms.Button
saveAndUpdateBut;}}




17


INTERFAS DEL PROGRAMA.

CONCLUSIONES.
La amplitud de los diferentes movimientos se mide con ayuda del gonimetro y en
forma ms precisa de una manera digital como lo hicimos en este caso.
La Biomecnica, tomando como base el conocimiento anatmico, permite
interpretar, analizar y aplicar el movimiento con proyeccin a su especialidad.
La goniometra resulta ser una tcnica til en medicina veterinaria, tanto como en
Medicina Humana, siempre y cuando se realice el anlisis global y analtico en
forma correcta para que el balance articular tenga valor objetivo. De esta manera
se pudo demostrar el registro de progreso en la evolucin de cualquier
articulacin. Estamos de acuerdo que la goniometra es un mtodo fiable y
objetivo para determinar rango de movilidad articular. Es decir que adems de
ayudar al mdico a diagnosticar la prdida funcional del paciente, proporciona un
criterio objetivo para determinar la eficacia de la rehabilitacin. Y por ltima al
agregarle a este instrumento una base de datos, utilizarlas es una forma muy
eficiente de administrar informacin, permite organizar mejor la informacin y
visualizarla cuando sea necesario solo ingresando un dato o una llave que lo
identifique y lo diferencie de los dems. En el caso de nuestro proyecto permite
controlar la informacin que se adquiere al realizar la medicin, y almacenarla
para posteriormente realizar un seguimiento de los avances en la recuperacin del
paciente.

18



TRABAJO TERMINADO.


En la imagen se ve conectado a una LCD solo se configur para conectarlo
directamente a la laptop por medio del puerto USB, para que la base de datos
detectara al arduino.

También podría gustarte