You are on page 1of 39

INSTITUTO POLITECNICO NACIONAL Escuela Superior de Cmputo

Materia: Instrumentacin

Proyecto final

Fecha: Viernes, 8 de junio de 2011

Alumnos: Flores Domnguez Adrin Garca Martnez Luis Alberto Ortiz Gonzlez Jorge Erik

Nombre de la profesora: Rosario Rocha Bernab

Grupo: 3CM4

INSTITUTO POLITECNICO NACIONAL


Escuela Superior de Cmputo
Proyecto final

Objetivo
Implementar un sistema con interfaz grfica en el cual se muestren los datos recopilados de 3 sensores, utilizando un sistema de adquisicin de datos, con todos sus componentes: Transductor, Acondicionamiento de seal, Convertidor Analgico Digital, Etapa de Salida (Interfaz con la lgica).

Introduccin
Caractersticas de un sensor de temperatura Componentes: Sensor LM35
LM35

El LM35 es un sensor de temperatura con una precisin calibrada de 1 C y un rango que abarca desde -55C a 150C. El sensor se presenta en diferentes encapsulados, pero el ms comn es el to-92 de igual forma que un tpico transistor de 3 patas. La salida es lineal y equivale a 10 mV/C por lo tanto: 1500mV = 150C 250mV = 25C Sus caractersticas ms relevantes son: Precisin de aprox. 1.5C (peor caso), 0.5C garantizados a 25C. No linealidad de aprox. 0.5C (peor caso). Baja corriente de alimentacin (60uA). Amplio rango de funcionamiento (desde -55C a 150C). Bajo costo. Baja impedancia de salida.

Su tensin de salida es proporcional a la temperatura, en la escala Celsius. No necesita calibracin externa y es de bajo conto. Funciona en el rango de alimentacin comprendido entre 4 y 30 voltios. Adems, el LM35 no requiere de circuitos adicionales para su calibracin externa cuando se desea obtener una precisin de orden de (+ -) 0.25C a temperatura ambiente. Debido a su baja corriente de alimentacin (60uA), se produce un efecto de auto calentamiento reducido, menos de 0.1 C en situacin de aire estacionario. Caractersticas de un sensor de velocidad Componentes: Sensor Infrarrojo (opto interruptor). Convertidor frecuencia/voltaje (LM2907). Modulador por ancho de pulsos (PWM).
Opto interruptor Este es uno de tantos tipos de opto acopladores para uso especial. Existen varios tipos pero los ms importantes son los switch de ranura pticos y los sensores reflejantes pticos. El opto interruptor de ranura tienen el emisor y el sensor insertados en el paquete, este paquete sirve para mantener el alineamiento ptico. El espacio entre ellos forma el rea sensible, estos dispositivos tienen la misma funcin que los optos pero tienen un mecanismo de interrupcin mecnico. Este dispositivo puede detectar la presencia de un objeto o su velocidad. Se fabrica en diferentes tipos de empaque para poderlo acomodar en un rango de tamaos y restricciones de montaje.

El principio de funcionamiento de un encoder es el hacer girar un disco con partes transparentes y opacas, lo cual interrumpe un haz de luz captado por foto receptores, luego stos transforman los impulsos luminosos en impulsos elctricos.
Convertidor de frecuencia a voltaje Los convertidores de frecuencia a voltaje son circuitos integrados que convierten un voltaje de entrada anlogo en un tren de pulsos cuya frecuencia de salida es proporcional al nivel de entrada. Se utilizan en aplicaciones de conversin A/D donde la velocidad no es un factor crtico, tambin operan como convertidores de frecuencia a voltaje y pueden ser utilizados como convertidores de seales digitales a anlogas de baja frecuencia. Dentro de los

convertidores de seales de voltaje a frecuencia o de frecuencia a voltaje se encuentran: LM2907 de National semiconductor AD650 de Analog Devices VFC32 de Burn Brown XR4151 de Exar
Caractersticas del PWM El PWM por sus siglas en ingls PULSE-WIDTH MODULATION, de una seal o fuente de energa es una tcnica en la que se modifica el ciclo de trabajo de una seal peridica, ya sea para transmitir informacin a travs de un canal de comunicaciones o para controlar la cantidad de energa que se enva a una carga.

El ciclo de trabajo de una seal peridica es el ancho relativo de su parte positiva en relacin con el perodo. Expresado matemticamente: Dnde: D es el ciclo de trabajo. Es el tiempo en que la funcin es positiva (ancho del pulso). T es el perodo de la funcin. Algunos parmetros importantes de un PWM son: La relacin de amplitudes entre la seal portadora y la moduladora, siendo recomendable que la ltima no supere el valor pico de la portadora y est centrada en el valor medio de sta. La relacin de frecuencias, donde en general se recomienda que la relacin entre la frecuencia de la portadora y la de seal sea de 10 a 1. Sin embargo, cuando se utilizan servomotores hay que tener cuidado en las marcas comerciales ya que hay ocasiones en que los valores varan entre 1ms y 2ms y estos valores propician errores. La modulacin por ancho de pulsos es una tcnica utilizada para regular la velocidad de giro de los motores elctricos de induccin o asncronos. Mantiene el par motor constante y no supone un desaprovechamiento de la energa elctrica. Se utiliza tanto en corriente continua como en alterna, como su nombre lo indica, al controlar: un momento alto (encendido o alimentado) y un

momento bajo (apagado o desconectado), controlado normalmente por relevadores (baja frecuencia) o MOSFET o tiristores (alta frecuencia). Otros sistemas para regular la velocidad modifican la tensin elctrica, con lo que disminuye el par motor; o interponen una resistencia elctrica, con lo que se pierde energa en forma de calor en esta resistencia. Otra forma de regular el giro del motor es variando el tiempo entre pulsos de duracin constante, lo que se llama modulacin por frecuencia de pulsos. En los motores de corriente alterna tambin se puede utilizar la variacin de frecuencia. La modulacin por ancho de pulsos tambin se usa para controlar servomotores, los cuales modifican su posicin de acuerdo al ancho del pulso enviado cada un cierto perodo que depende de cada servo motor. Esta informacin puede ser enviada utilizando un microprocesador como el Z80, o un micro controlador (por ejemplo, un PIC 16F877A de la empresa Microchip). Caractersticas de un sensor de humedad Componentes: Oscilador 555
LM555 El circuito integrado 555 es un circuito integrado de bajo costo y de grandes prestaciones. Inicialmente fue desarrollado por la firma Signetics. En la actualidad es construido por muchos otros fabricantes. Entre sus aplicaciones principales cabe destacar las de multivibrador astable (dos estados metaestables) y monoestable (un estado estable y otro metaestable), detector de impulsos, etctera.

Lista de material
Sensor de temperatura 1 LM35 1 resistencia de 10k Sensor de velocidad Convertidor de frecuencia a voltaje 1 resistencia de 3.3k 3 resistencia de 10k 1 resistencia de 92k 2 capacitores de 1F 1 capacitor de 1nF 1 Motor de D.C 1 LM2907 (CFV) 1 encoder de 8 ranuras 1 optointerruptor de ranura
PWM

2 resistencias de 5.6k 2 resistencias de 10k 2 resistencias de 3.9k 1 resistencia de 39k 1 resistencia de 100k 1 resistencia de 56k 3 capacitores de 0.1F 1 capacitor de 1F 2 LM741 1 OP07 1 transistor IRF510 1 diodo 1N4001 1 potencimetro de 10k

Sensor de humedad 1 LM555 1 LED 1 potencimetro de 1M (resistencia de 430k) 1 resistencia de 3.3k

3 resistencia de 10k 1 resistencia de 92k 2 capacitores de 1F 3 capacitores de 0.1F 1 LM2907 (CFV)

Desarrollo
Explicacin bsica de los circuitos realizados Temperatura Es un circuito armado con su configuracin normal, que no requiere de otras etapas de acondicionamiento ya que su salida es lineal, proporciona un voltaje equivalente a su salida de la entrada.
Velocidad Al empezar el circuito se debe de calcular la frecuencia con la que el motor gira (con el mximo voltaje) esto para conocer posteriormente las revoluciones por minuto mximo del motor, esto se hace una vez armado el circuito para el opto interruptor de ranura. Una vez hecho esto, se calculan voltajes con el circuito convertidor de frecuencia a voltaje (en su salida correspondiente), el cual convertir rangos de frecuencia que se ingresaran con el generador de seales (el rango de frecuencias a ingresar dependi de lo calculado de la frecuencia otorgada por el primer circuito).

La parte final es un PWM que controla la velocidad del motor anteriormente ocupado acoplndolo al circuito del encoder que ya se realizo y que en su salida genera una frecuencia y que la salida del encoder le proporciona la entrada al CFV ya tambin realizado y que finalmente nos entrega un voltaje correspondiente a la frecuencia de entrada.
Humedad Al quedar en el aire las puntas de prueba, se ve una alta resistencia (resistencia del aire), por lo que no logra que el LM555 oscile. Al introducir las puntas de prueba en un ambiente con humedad, la resistencia entre las puntas baja, al ocurrir esta disminucin en la resistencia, se logra poner a oscilar el LM555. La velocidad de oscilacin ser proporciona al grado de humedad del material a medir, es decir cunto ms hmedo, ms rpido ser la oscilacin.

Diagramas elctricos de los sensores Temperatura

Velocidad

Convertidor de frecuencia a voltaje


+12V

R1
3.3K

D1
LED

Fototransistor

Q1
2N3390

Encoder

R2
10k

B C D

+12V

Entrada

C3
1 1u 11 TACHO-

9 TACHO+ V+ C E OPINOPIN+ GND 12 FLT

U1
8 5 10 4 3

Salida

CC

R3
10k

LM2907

C1
1n 150K

R1

R2 C2
1u 10k

Vo=Vcc*Fin*C1*R1*k

PWM
+12

+12

R3

10k

C1 R6
39K
+12

R1
0.1u
IC=3 -12

R5
3.9k
+12

Motor 12 Vdc
D1
1N4001

5.6k

C3
0.1u

U3
7 1 4 5

U1 R4
10k
7 1

U2 C2
3 6 2

3 6 2
4 5

2 6 3

Q2
IRF510

1u LM741
7 1

RV1
4 8

LM741
+12
0%

OP07

-12

10k

R2
5.6k

R7
3.9k

A B C D

Humedad

Placas elctricas de los sensores (traseras) Temperatura

Velocidad

Convertidor de frecuencia a voltaje

PWM

Humedad

Placas elctricas de los sensores (frontales) Temperatura

Velocidad

Convertidor de frecuencia a voltaje

PWM

Humedad

Pruebas de funcionamiento

Especificaciones tcnicas de la tarjeta El sistema de adquisicin de datos est construido con una tarjeta de desarrollo para la familia de microcontroladores MSP430, la tarjeta es la MSP-EXP430G2, de la que se muestra la disposicin de sus componentes en la figura 1, que permite la compilacin, depuracin y prueba fsica de programas para esta familia de micro controladores.

Esta aplicacin especfica se dise con un microcontrolador MSP430G2231, el cual es un C (micro controlador) de 14 pines y ofrece entre otras caractersticas, un convertidor A/D de 8 canales, de los cuales tiene disponibles 3 (pines libres) en la tarjeta de desarrollo, as mismo 10 terminales de entrada salida, de los cuales estn disponibles 2, los cuales estn conectados en la tarjeta de desarrollo a 2 LEDs, pero que pueden ser desconectados y se pueden utilizar como terminales de propsito general. As mismo, como parte del diseo del sistema, ste se dise de manera que pueda conectarse a la computadora a travs de un puerto serie. Para lograr esto, se aprovech la caracterstica del sistema de desarrollo que ofrece un puerto serie emulado por USB, siendo solamente necesario configurar este puerto para enviar y recibir informacin desde y hacia el C (micro controlador).

La salida digital estar disponible si se retiran los JUMPERS del peine J5, los cuales desconectan los LEDs incluidos en la tarjeta y dejan disponibles los pines correspondientes a P1.0 (pin 2 del conector J1) y P1.6 (pin 14 del conector J2). Para utilizar esta tarjeta no es necesario tener acceso a las terminales TxD y RxD, debido a que estas estn conectadas internamente en el sistema de desarrollo. La alimentacin del sistema de desarrollo se toma del puerto USB (5 V) y al utilizar reguladores (internos) el C se alimenta con 3.6 V, por lo que los voltajes de entrada a la tarjeta, analgicos y digitales no pueden exceder de este valor.

Interfaz
La interfaz fue desarrollada en el lenguaje de programacin Visual Basic .NET 2010, que corre a travs de la suite de Visual Studio 2010 de la plataforma de .NET Framework.

Interfaz inicial que permite la espera del dispositivo hasta que el usuario coloque en el puerto USB la tarjeta de adquisicin.

Cuando el usuario coloca la tarjeta, el programa en su interfaz inicial detecta el puerto serial de manera automtica para ser usada la tarjeta en el programa.

Le muestra al usuario una confirmacin de que el dispositivo est listo para usarse y le indica el puerto en donde el sistema lo coloco.

La interfaz principal para un solo sensor est conformada por tres partes principales: 1. Barra de herramientas (parte superior). 2. Barra de progreso (donde se observa el cambio de voltaje que se obtiene de la tarjeta). 3. Etiqueta donde se muestra el dato de variacin.

La interfaz principal para un sensor de temperatura.

La interfaz principal para un sensor de velocidad.

La interfaz principal para un sensor de humedad.

La barra de herramientas est conformada por cinco herramientas: 1. Selector de sensor. Permite cambiar el sensor de donde recibimos datos de la tarjeta de adquisicin. 2. Selector de tipo de datos. Permite cambiar el formato del dato que se muestra, puede ser el voltaje, decimal o hexadecimal (los dos ltimos, los que se reciben de forma automtica de la tarjeta). 3. Cambia entre la forma normal y la compacta del programa. 4. Prenden o apagan los LEDs de la tarjeta.

5. Muestra la ventana tpica Acerca de o cierra el programa.

Cdigo de la interfaz
Cdigo para el formulario 1 Form 1

Public Class Form1 Public tema As String = "Nada" Dim cadena() As String Dim cadenaaux() As String Dim puerto As String = "" Dim idPuerto As String = 0 Dim intervalo As Integer Dim proceso As Integer Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Dim tema As String = "Hola" Dim numero As New Random Dim num As New Integer num = numero.Next(1, 9) If num = 1 Then tema = "Azul" End If If num = 2 Then tema = "Amarillo" End If If num = 3 Then tema = "Rosa" End If If num = 4 Then

tema = "Morado" End If If num = 5 Then tema = "Rojo" End If If num = 6 Then tema = "Verde" End If If num = 7 Then tema = "Cafe" End If If num = 8 Then tema = "Negro" End If Me.tema = tema cadena = My.Computer.Ports.SerialPortNames.ToArray() PictureBox1.ImageLocation = Application.StartupPath + "\cargando.gif" PictureBox2.ImageLocation = Application.StartupPath + "\principal" + tema + ".jpg" PictureBox1.Visible = True ProgressBar1.Visible = False

Label1.Visible = True Label2.Visible = True Label2.Text = "Esperando respuesta del dispositivo" Timer1.Interval = 1000 Timer1.Enabled = True Timer1.Start() End Sub Public Sub barraestado(ByVal intervalo As Integer, ByVal proceso As Integer) Me.intervalo = intervalo Me.proceso = proceso ProgressBar1.Visible = True ProgressBar1.Minimum = 0 ProgressBar1.Maximum = intervalo Timer2.Interval = 1000 Timer2.Enabled = True Timer2.Start() End Sub Public Sub puertodetectado(ByVal x As Integer) puerto = cadenaaux(x) idPuerto = x PictureBox1.Visible = False Label2.Text = "Configurando dispositivo y abriendo el puerto" barraestado(3, 1) End Sub Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick cadenaaux = Nothing cadenaaux = My.Computer.Ports.SerialPortNames.ToArray

Dim x As Integer = 0 If cadenaaux.Length > cadena.Length Then x = 0 While x <= cadenaaux.Length - 1 Try If cadena(x) <> cadenaaux(x) Then Timer1.Stop() puertodetectado(x) Exit While End If x = x + 1 Catch ex As Exception Timer1.Stop() puertodetectado(x) Exit While End Try End While End If End Sub Private Sub Timer2_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer2.Tick If ProgressBar1.Value = intervalo Then Timer2.Stop() ProgressBar1.Value = 0 ProgressBar1.Minimum = 0 ProgressBar1.Maximum = 0 Timer2.Enabled = False If proceso = 1 Then Me.Hide() MessageBox.Show("Dispositivo configurado en el puerto " + puerto, "Puerto detectado, configurado y listo para usarse", MessageBoxButtons.OK, MessageBoxIcon.Information) Form2.Show() Form2.ponerdatos(puerto, idPuerto, tema) End If End If Try ProgressBar1.Value += 1 Catch exc As Exception End Try End Sub End Class

Cdigo para el formulario 2 Form 2

Imports System.Security.Permissions Public Class Form2 Public puerto As String Public id As Integer Public abierto As Integer Public ledred As Integer = 0 Public ledverde As Integer = 0 Public datosPuerto As String Public datosDecimal As String Public datoVoltaje As Double Public canalEntrada As String = "0" Public tema As String = "Nada" Dim voltaje1 As Double = 0.0 Dim voltaje2 As Double = 0.0 Dim etiquetaVoltaje As String Dim formato As Integer Dim botoncerrar As Boolean = False Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Me.ToolStripComboBox1.SelectedIndex = Convert.ToInt32(canalEntrada) Me.ToolStripComboBox2.SelectedIndex = 2 formato = 2 Me.ToolStrip1.ImageList = Me.ImageList1 Me.ToolStripButton1.ImageIndex = 0 Me.ToolStripButton1.ToolTipText = "Prender el LED Rojo" Me.ToolStripButton2.ImageIndex = 0 Me.ToolStripButton2.ToolTipText = "Prender el LED Verde" Me.ToolStripButton3.ImageIndex = 3 Me.ToolStripButton4.ImageIndex = 4 Me.ToolStripSplitButton1.ImageIndex = 5 Me.ModoToolStripMenuItem.Text = "Modo compacto" Me.ModoToolStripMenuItem.Checked = False

PictureBox2.ImageLocation = Application.StartupPath + "\sensor1.ico" StatusStrip1.Visible = False Label1.Parent = PictureBox1 PictureBox2.Parent = PictureBox1 Label2.Parent = PictureBox1 PictureBox3.Parent = PictureBox1 Label3.Parent = PictureBox1 PictureBox4.Parent = PictureBox1 Label1.Text = "" Label2.Text = "" Label3.Text = "" etiquetaVoltaje = "0.8" ToolStripProgressBar1.Minimum = 0 ToolStripProgressBar1.Maximum = 3000 ProgressBar1.Minimum = 0 ProgressBar1.Maximum = 3600 ProgressBar2.Minimum = 0 ProgressBar2.Maximum = 3000 ProgressBar3.Minimum = 0 ProgressBar3.Maximum = 3000 End Sub Private Sub Principal_Closing(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles MyBase.Closing If botoncerrar Then e.Cancel = True End End If End Sub <PermissionSetAttribute(SecurityAction.Demand, Name:="FullTrust")> _ Protected Overrides Sub WndProc(ByRef m As System.Windows.Forms.Message) Const WM_SYSCOMMAND As Integer = &H112 Const SC_CLOSE As Integer = &HF060 Select Case m.Msg Case WM_SYSCOMMAND If m.WParam.ToInt32 = SC_CLOSE Then botoncerrar = True End If End Select MyBase.WndProc(m) End Sub Public Sub ponerdatos(ByVal puerto As String, ByVal id As Integer, ByVal tema As String) Me.tema = tema Me.puerto = puerto Me.id = id PictureBox1.ImageLocation = Application.StartupPath + "\principal" + tema + ".jpg" Detectar_Estado()

End Sub Public Sub Detectar_Estado() Try SerialPort1 = My.Computer.Ports.OpenSerialPort(My.Computer.Ports.SerialPortNames(id)) Timer1.Interval = 100 Timer1.Enabled = True Timer1.Start() Catch ex As Exception MessageBox.Show("Esta siendo usado el dispositivo por otro programa. Necesita cerrar el programa en uso y volver a ejecutar el programa.", "Estado del puerto", MessageBoxButtons.OK, MessageBoxIcon.Information) End End Try Configurar_Puerto() End Sub Public Sub Configurar_Puerto() SerialPort1.BaudRate = 9600 SerialPort1.DataBits = 8 SerialPort1.Parity = IO.Ports.Parity.None SerialPort1.StopBits = IO.Ports.StopBits.One End Sub Private Sub SerialPort1_DataReceived(ByVal sender As Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived Dim aux As String Dim conversion As String aux = SerialPort1.ReadByte() conversion = Hex(Val(aux)).ToString datosPuerto = datosPuerto + conversion End Sub Private Sub ToolStripButton4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ToolStripButton4.Click SerialPort1.Close() End End Sub Private Sub ToolStripButton1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ToolStripButton1.Click If ledred = 0 Then SerialPort1.WriteLine("3") ledred = 1 Me.ToolStripButton1.ImageIndex = 1 Me.ToolStripButton1.ToolTipText = "Apagar el LED Rojo" Else SerialPort1.WriteLine("4") ledred = 0 Me.ToolStripButton1.ImageIndex = 0 Me.ToolStripButton1.ToolTipText = "Prender el LED Rojo" End If End Sub

Private Sub ToolStripButton2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ToolStripButton2.Click If ledverde = 0 Then SerialPort1.WriteLine("5") ledverde = 1 Me.ToolStripButton2.ImageIndex = 2 Me.ToolStripButton2.ToolTipText = "Apagar el LED Verde" Else SerialPort1.WriteLine("6") ledverde = 0 Me.ToolStripButton2.ImageIndex = 0 Me.ToolStripButton2.ToolTipText = "Prender el LED Verde" End If End Sub Private Sub ToolStripComboBox1_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles ToolStripComboBox1.SelectedIndexChanged If ToolStripComboBox1.SelectedIndex = 0 Then canalEntrada = "0" activar_uno(canalEntrada) End If If ToolStripComboBox1.SelectedIndex = 1 Then canalEntrada = "1" activar_uno(canalEntrada) End If If ToolStripComboBox1.SelectedIndex = 2 Then canalEntrada = "2" activar_uno(canalEntrada) End If If ToolStripComboBox1.SelectedIndex = 3 Then activar_todos() End If End Sub Private Sub ToolStripComboBox2_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles ToolStripComboBox2.SelectedIndexChanged If ToolStripComboBox2.Text = "Hexadecimal" Then formato = "0" End If If ToolStripComboBox2.Text = "Decimal" Then formato = "1" End If If ToolStripComboBox2.Text = "Voltaje" Then formato = "2" End If End Sub Private Sub ToolStripButton3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ToolStripButton3.Click Form3.Show() Form3.ponerdatos(tema) End Sub

Private Sub ModoToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ModoToolStripMenuItem.Click If ModoToolStripMenuItem.Checked = False Then ModoToolStripMenuItem.Checked = True StatusStrip1.Visible = True Me.Height = 85 Else ModoToolStripMenuItem.Checked = False StatusStrip1.Visible = False Me.Height = 600 End If End Sub Private Sub activar_uno(sensor As String) Timer1.Enabled = True Timer2.Enabled = False Timer3.Enabled = False Timer4.Enabled = False PictureBox2.Visible = False PictureBox3.Visible = True PictureBox4.Visible = False ProgressBar1.Visible = False ProgressBar2.Visible = True ProgressBar3.Visible = False Label1.Visible = False Label2.Visible = True Label3.Visible = False ToolStripSplitButton1.Enabled = True StatusStrip1.Visible = False ModoToolStripMenuItem.Checked = False Me.Height = 600 PictureBox3.ImageLocation = Application.StartupPath + "\sensor" + sensor + ".ico" End Sub Private Sub activar_todos() Timer1.Enabled = False Timer2.Enabled = True Timer3.Enabled = True Timer4.Enabled = True 'Timer3.Enabled = True 'Timer4.Enabled = True PictureBox2.Visible = True PictureBox3.Visible = True PictureBox4.Visible = True ProgressBar1.Visible = True ProgressBar2.Visible = True ProgressBar3.Visible = True Label1.Visible = True Label2.Visible = True Label3.Visible = True ToolStripSplitButton1.Enabled = False

StatusStrip1.Visible = False ModoToolStripMenuItem.Checked = False Me.Height = 600 PictureBox2.ImageLocation = Application.StartupPath + "\sensor0.ico" PictureBox3.ImageLocation = Application.StartupPath + "\sensor1.ico" PictureBox4.ImageLocation = Application.StartupPath + "\sensor2.ico" End Sub Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick If canalEntrada <> 4 Then canalEntrada = Hex(Val(canalEntrada)).ToString SerialPort1.Write(canalEntrada) datosDecimal = Convert.ToInt32(datosPuerto, 16) datoVoltaje = (Convert.ToDouble(datosDecimal) * 3.6) / 1024 If datoVoltaje > 0 Then If formato = 0 Then Label2.Text = datosPuerto StatusStrip1.Items.Item(0).Text = datosPuerto End If If formato = 1 Then Label2.Text = datosDecimal StatusStrip1.Items.Item(0).Text = datosDecimal End If If datoVoltaje > 3 And datoVoltaje < 0 Then datoVoltaje = 0 Else Dim voltajeAuxiliar As String = etiquetaVoltaje voltaje2 = Convert.ToDouble(voltajeAuxiliar.ToString) voltaje1 = datoVoltaje Dim x As Double x = datoVoltaje 'x = 3.6 - Convert.ToDouble(datoVoltaje) If formato = 2 Then Dim hi As Double = Convert.ToDouble(x.ToString) Format(hi, "##,##0.00") Label2.Text = hi.ToString("##,##0.00") + " V" StatusStrip1.Items.Item(0).Text = hi.ToString("##,##0.00") + " V" End If Dim barra As Double barra = Convert.ToInt32(Convert.ToDouble(x.ToString) * 1000) If barra < 3000 And barra > 0 Then ProgressBar2.Value = barra ToolStripProgressBar1.Value = barra End If End If End If

datosPuerto = Nothing End If End Sub Private Sub Timer2_Tick(sender As System.Object, e As System.EventArgs) Handles Timer2.Tick canalEntrada = Hex(Val("0")).ToString SerialPort1.Write(canalEntrada) datosDecimal = Convert.ToInt32(datosPuerto, 16) datoVoltaje = (Convert.ToDouble(datosDecimal) * 3.6) / 1024 If datoVoltaje > 0 Then If formato = 0 Then Label1.Text = datosPuerto StatusStrip1.Items.Item(0).Text = datosPuerto End If If formato = 1 Then Label1.Text = datosDecimal StatusStrip1.Items.Item(0).Text = datosDecimal End If If datoVoltaje > 3.6 And datoVoltaje < 0.8 Then datoVoltaje = 0 Else Dim voltajeAuxiliar As String = etiquetaVoltaje voltaje2 = Convert.ToDouble(voltajeAuxiliar.ToString) voltaje1 = datoVoltaje Dim x As Double x = datoVoltaje 'x = 3.6 - Convert.ToDouble(datoVoltaje) If formato = 2 Then Dim hi As Double = Convert.ToDouble(x.ToString) Format(hi, "##,##0.00") Label1.Text = hi.ToString("##,##0.00") + " V" StatusStrip1.Items.Item(0).Text = hi.ToString("##,##0.00") + " V" End If Dim barra As Double Try barra = Convert.ToInt32(Convert.ToDouble(x.ToString) * 1000) Catch ex As Exception barra = 0 End Try If barra < 3000 And barra > 0 Then ProgressBar1.Value = barra End If End If End If datosPuerto = Nothing End Sub

Private Sub Timer3_Tick(sender As System.Object, e As System.EventArgs) Handles Timer3.Tick canalEntrada = Hex(Val("1")).ToString SerialPort1.Write(canalEntrada) datosDecimal = Convert.ToInt32(datosPuerto, 16) datoVoltaje = (Convert.ToDouble(datosDecimal) * 3.6) / 1024 If datoVoltaje > 0 Then If formato = 0 Then Label2.Text = datosPuerto StatusStrip1.Items.Item(0).Text = datosPuerto End If If formato = 1 Then Label2.Text = datosDecimal StatusStrip1.Items.Item(0).Text = datosDecimal End If If datoVoltaje > 3 And datoVoltaje < 0.8 Then datoVoltaje = 0 Else Dim voltajeAuxiliar As String = etiquetaVoltaje voltaje2 = Convert.ToDouble(voltajeAuxiliar.ToString) voltaje1 = datoVoltaje Dim x As Double x = 3 - Convert.ToDouble(datoVoltaje) If formato = 2 Then Dim hi As Double = Convert.ToDouble(x.ToString) Format(hi, "##,##0.00") Label2.Text = hi.ToString("##,##0.00") + " V" StatusStrip1.Items.Item(0).Text = hi.ToString("##,##0.00") + " V" End If Dim barra As Double Try barra = Convert.ToInt32(Convert.ToDouble(x.ToString) * 1000) Catch ex As Exception barra = 0 End Try If barra < 3000 And barra > 0 Then ProgressBar2.Value = barra End If End If End If datosPuerto = Nothing End Sub Private Sub Timer4_Tick(sender As System.Object, e As System.EventArgs) Handles Timer4.Tick canalEntrada = Hex(Val("2")).ToString SerialPort1.Write(canalEntrada) datosDecimal = Convert.ToInt32(datosPuerto, 16)

datoVoltaje = (Convert.ToDouble(datosDecimal) * 3.6) / 1024 If datoVoltaje > 0 Then If formato = 0 Then Label3.Text = datosPuerto StatusStrip1.Items.Item(0).Text = datosPuerto End If If formato = 1 Then Label3.Text = datosDecimal StatusStrip1.Items.Item(0).Text = datosDecimal End If If datoVoltaje > 3 And datoVoltaje < 0 Then datoVoltaje = 0 Else Dim voltajeAuxiliar As String = etiquetaVoltaje voltaje2 = Convert.ToDouble(voltajeAuxiliar.ToString) voltaje1 = datoVoltaje

Dim x As Double x = datoVoltaje If formato = 2 Then Dim hi As Double = Convert.ToDouble(x.ToString) Format(hi, "##,##0.00") Label3.Text = hi.ToString("##,##0.00") + " V" StatusStrip1.Items.Item(0).Text = hi.ToString("##,##0.00") + " V" End If Dim barra As Double Try barra = Convert.ToInt32(Convert.ToDouble(x.ToString) * 1000) Catch ex As Exception barra = 0 End Try If barra < 3000 And barra > 0 Then ProgressBar3.Value = barra End If End If End If datosPuerto = Nothing End Sub End Class

Cdigo para el formulario 3 Form 3

Public Class Form3 Private Sub Form3_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load PictureBox1.ImageLocation = Application.StartupPath + "\ipn.gif" PictureBox3.ImageLocation = Application.StartupPath + "\unidad.png" Label1.Parent = PictureBox2 Label2.Parent = PictureBox2 Label3.Parent = PictureBox2 Label4.Parent = PictureBox2 Label5.Parent = PictureBox2 Label6.Parent = PictureBox2 Label7.Parent = PictureBox2 PictureBox1.Parent = PictureBox2 PictureBox3.Parent = PictureBox2 End Sub Public Sub ponerdatos(tema As String) PictureBox2.ImageLocation = Application.StartupPath + "\principal" + tema + ".jpg" End Sub End Class

Conclusiones
Flores Domnguez Adrin Los sistemas de adquisicin de datos son fundamentales a la hora de querer procesar, analizar, mostrar, etc., datos en computadoras o en sistemas digitales, ya que pueden ser usados en muchos campos aplicados, como en Biologa, Medicina, Arquitectura, etc. Algunos ejemplos son: La temperatura en un cuarto, esto podra ayudar para mantener una temperatura en un invernadero, en una casa, etc. El grado de humedad que tienen una muestra de tierra o cualquier otra materia, en el caso de la tierra esto podra ayudar en cultivos hidropnicos, para poder controlar el grado de humedad ptimo. Detectar la velocidad de un motor, este sistema junto con el de temperatura podra controlar la temperatura de una habitacin, activando un ventilador y controlando la velocidad de este, por ejemplo. La dificultad para procesar esto datos depende mucho del lenguaje de programacin, puesto que es muy diferente como es el proceso de cmo obtener los datos de un puesto USB, as como de las herramientas que nos brindan el lenguaje y la sencillez de estas. Las complicaciones que se pudieron observar, son: El programa del micro puede alterar la adquisicin de datos. Al conectar todos los sensores, pueden alterar a los dems puertos que meten ruido adicional. Errores al adquirir los datos en conjunto. Cuando se mostraba solo los datos de un sensor estos eran mostrados correctamente, pero a la hora de mostrar los datos de los 3 sensores, no se lograba mostrar los datos correctamente. Garca Martnez Luis Alberto Este proyecto me pareci demasiado interesante desde el aspecto del manejo de sensores, que me permiti el aprendizaje del acondicionamiento de sensores adems del desarrollo del tema de adquisicin de datos, que permita desplegar el valor de voltaje a la salida de tres sensores por medio de una interfaz grafica que se conectaba a un emulador de puerto serial a la tarjeta de

adquisicin. El reto en el software fue que obtuviera los tres valores de voltaje en la tarjeta lo cual significaba tiempo de ejecucin costoso y errores por sobrecarga de valores, sin embargo se pudo resolver al final. Antes que nada, realizamos las placas con los circuitos ya realizados en las prcticas anteriores, por lo que los diagramas elctricos no significo ningn problema, solamente por el sensor de humedad que se tuvo que investigar el diagrama y su funcionamiento. Una vez terminadas las placas, se procedi a probarlas y confirmar que su salida no daba ms de 3 V. Finalmente se colocaron en la tarjeta y se observo el dato. Ortiz Gonzlez Jorge Erik Este proyecto fue muy interesante y un tanto estresante, ya que en algunas ocasiones no se obtenan los valores deseado en los sensores que acondicionamos, esto debido a posiblemente algunos factores que se producen en el laboratorio con la temperatura y la h humedad del lugar, y que no podamos controlar del todo, como fuese el ruido en el sensor de velocidad y en el de humedad, ya que estos utilizaban un convertidor de frecuencia a voltaje, el cual procesaba la frecuencia de entrada de los circuitos generadores de seales peridicas, en la cual se acoplaba un seal de ruido que modificaba la frecuencia de estos circuitos y no se poda obtener el valor deseado. Fue muy ilustrativo el desarrollo de las interfaces, ya que convertamos un voltaje de entrada en una seal digital y luego esa seal digital se procesaba para poder mostrar en el programa el valor que se adquiri por medio de la tarjeta de adquisicin de datos. Para concluir, le quiero agradecer por compartirnos sus conocimientos y ensearnos todo lo que hemos aprendido a lo largo de este semestre, para poder llevar a cabo este proyecto.

You might also like