lunes, 25 de mayo de 2009

Deformación

Temas de Resistencia de Materiales

domingo, 17 de mayo de 2009

Mecatronico y Puerto Paralelo...

El mekatronico puede utilizar una computadora como centro de control (creo que para eso me dan clases de programación) con la cual tendremos un numero ilimitado de posibilidades en el diseño de nuestros proyectos.

En una computadora hay muchas formas de comunicación con periféricos por ejemplo: un puerto USB, infrarrojo, puerto serial, puerto paralelo, Bluetooth, Wii-fi...

Como soy solo un pequeño pato y voy apenas iniciando mi tercer cuatrimestre de la carrera solo he tenido experiencia con el puerto paralelo y serial, programando en Windows con Visual Basic, lenguaje C y Visual C++, En linux con MONOdeveloped y Gambas 2.

Dare un aporte de mis trabajos de programación y por otra parte la electrónica para el control :P

El puerto paralelo como ya sabemos esta compuesto por:

# 8 Pines de Salida [D0 hasta D7]
# 5 Pines de Status [S4 hasta S7 y S3]
# 4 Pines de Control [C0 hasta C3]
# 8 Pines de Tierra [18 hasta 25]

Estos pines pueden tener dos estados 1 ó 0 (prendido ó Apagado)
1=5v 0=0v

Pondré un pequeño ejemplo de una Aplicación, recuerden que son infinitas...

“” Somos los encargados de diseñar un sistema de luces para un Antro. Queremos diseñar varias secuencias de las luces para lograr los mejores efectos posibles””

¿Como lo logro?

una opción de muchas posibles seria :

Cada pin de salida controle todas las luces del mismo color, tendría 8 colores. [D0-D7]
Los pines de entrada (Status) los utilizare para seleccionar la combinación deseada. [S4-S7yS3]
Utilizando la programación de Software diseñare las secuencias en las que mandare las señales por el puerto estas secuencias dependerán de la combinación active en las señales de entrada por ejemplo:

Al tener en estado “0” las entradas S4 y S5, las salidas D0 a D7 tendrán la secuencia

D0 , D2, D4, D6 en estado “1” (prendidos estos 4 colores de luz)
D0 y D4 en estado “0” (se apagan 2 luces y 2 se mantienen encendidas)
D1 y D3 en estado “1” (se suman 2 nuevos colores)
D2 y D6 en estado “0” (se apagan 2 luces y 2 se mantienen encendidas)
Se repite todo el ciclo

Con esto logramos que mientras se mantengan las señales “0” en S4 y S5 la secuencia se gira reiniciando sin cambiar, pero si cambio los estados de entrada se ejecutara otra secuencia con lo cual podremos programar muchísimas secuencias.

Como veras es una Aplicación en luces pero puede se aplicada en otro proyecto, que tal mover un robot, un poseso industrial, Automatismo, etc

¡Pero como puede encender un Motor eléctrico con solo 5V que manda la computadora!!!!

Pues la corriente del puerto es muy baja solo de unos miliAmperes, que son suficientes para entender por ejemplo un LED (foquito electrónico). Pero si conectamos por ejemplo un Relevador, un motor de CD, etc directo a nuestro puerto podríamos ocasionar un daño a nuestra computadora. Hay que tener cuidado con eso!!

La solución es utilizar una Interfaz Entre el puerto paralelo y la carga a controlar. De esta forma podremos alimentar la carga con mayor intensidad de corriente y con nuestro puerto seguro de sufrir algún daño.

Esta señal se pueden diseñar con Transmisores-Receptores Octales, yo utilizo el Circuito integrado 74LS245, este CI puede manejar ocho señales con tensiones de 5V

http://www.datasheetcatalog.org/datasheets/105/488347_DS.pdf'

El 74LS245 es muy funcional en la mayoría de los proyectos electrónicos, pero si necesitamos mas corriente podemos optar por el Circuito Integrad ULN2803 que es capas de manejar de 6V a 16V
Enlace
http://www.ucontrol.com.ar/wiki/index.php/M%C3%B3dulo_Reles_x_4

Todo diseño de la interfaz dependerá de la Aplicación deseada!!

***********************************************
Por la parte de la programación!!!!!!!!!!!!!!!

En Sistemas Operativos (SO) Windows XP, Windows 2000 , Vista y lógico el Windows 7 también se cambia la forma en la que el SO interactúa con los puertos serie y paralelo ya que no es de forma directa como en los Windows anteriores como el ME, el W98, W95, etc.
y como la mayoría usamos W XP o mas nuevo debemos hacer que nuestros SO puedan interactuar con estos puertos.

Para lograrlo es necesario instalar librerías de control, yo me he familiarizado con la librería “ IO.DLL” la he probado solo en XP no se como trabaje en SO posteriores, pero existen otras como “INPOUT32.DLL” y demás que andan por la red

Para instalar librerías en Win XP debemos copiar nuestra Libreria.DLL en el directorio
c:/windows/system32 (tener cuenta de administrador para poder modificar estas carpetas)
LISTO YA PUEDES PROGRAMAR EN TU XP EL PUERTO PARALELO!!!!!

Con Visual Basic -----------

Visual Basic es un IDE muy fasil de utilizar y por lo tanto podremos diseñar programas muy rápidamente. En la UTN me dieron clases con la versión VB 6, pero como soy bien necio comense a utilizar el VB 2008, este programa lo puedes descargar desde la pagina web oficial de forma gratuita

http://www.microsoft.com/express/download/Enlace

Si no sabes utilizar VB intenta estudiar un poco lo básico, próximamente daré algunos apuntes :D

Muy bien daremos lo primero
crea un proyecto nuevo
Debes agregar un Modulo a tu proyecto este modulo sera el que defina la librería IO.DLL
creas tu formulario y agregas los controles con el siguiente código

(No explicare el código en este texto ya que no tengo tiempo, pero mas adelante are una nueva entrada de como programar en VB desde cero)

'Esto va en el módulo bas

Public Declare Sub PortOut Lib "io.dll" (ByVal Port As Integer, ByVal Data As Byte)
Public Declare Sub PortWordOut Lib "io.dll" (ByVal Port As Integer, ByVal Data As Integer)
Public Declare Sub PortDWordOut Lib "io.dll" (ByVal Port As Integer, ByVal Data As Long)
Public Declare Function PortIn Lib "io.dll" (ByVal Port As Integer) As Byte
Public Declare Function PortWordIn Lib "io.dll" (ByVal Port As Integer) As Integer
Public Declare Function PortDWordIn Lib "io.dll" (ByVal Port As Integer) As Long
Public Declare Sub SetPortBit Lib "io.dll" (ByVal Port As Integer, ByVal Bit As Byte)
Public Declare Sub ClrPortBit Lib "io.dll" (ByVal Port As Integer, ByVal Bit As Byte)
Public Declare Sub NotPortBit Lib "io.dll" (ByVal Port As Integer, ByVal Bit As Byte)
Public Declare Function GetPortBit Lib "io.dll" (ByVal Port As Integer, ByVal Bit As Byte) As Boolean
Public Declare Function RightPortShift Lib "io.dll" (ByVal Port As Integer, ByVal Val As Boolean) As Boolean
Public Declare Function LeftPortShift Lib "io.dll" (ByVal Port As Integer, ByVal Val As Boolean) As Boolean
Public Declare Function IsDriverInstalled Lib "io.dll" () As Boolean
Public lpt1 As String
------------------------------------------------------------
'Esto va en el Form

Private Sub Command1_Click()
'------------------CONVERSIONES----------------------------------
'------------------BINARIO A DECIMAL-----------------------------
'CONVERTIR LPT1
total1 = 0
lpt1 = Text1.Text
If Mid(lpt1, 1, 1) = "1" Then total1 = (1 * 2) ^ 7
If Mid(lpt1, 2, 1) = "1" Then total1 = total1 + ((1 * 2) ^ 6)
If Mid(lpt1, 3, 1) = "1" Then total1 = total1 + ((1 * 2) ^ 5)
If Mid(lpt1, 4, 1) = "1" Then total1 = total1 + ((1 * 2) ^ 4)
If Mid(lpt1, 5, 1) = "1" Then total1 = total1 + ((1 * 2) ^ 3)
If Mid(lpt1, 6, 1) = "1" Then total1 = total1 + ((1 * 2) ^ 2)
If Mid(lpt1, 7, 1) = "1" Then total1 = total1 + ((1 * 2) ^ 1)
If Mid(lpt1, 8, 1) = "1" Then total1 = total1 + ((1 * 2) ^ 0)
PortOut &H378, total1
Label5.Caption = total1
End Sub

Private Sub Command2_Click()
PortOut &H378, 0
End
End Sub

Private Sub Form_Load()
Text1.Text = ""
Text2.Text = ""
Text3.Text = ""
Label5.Caption = "Esperando una Entrada"
End Sub


Private Sub Timer1_Timer()
'------------------DECIMAL A BINARIO-----------------------------
Dim i As Long, J As Long, K As Long, A As Long, H As Long
Dim Cadena
On Error Resume Next
A = PortIn(&H379)
For J = 7 To 0 Step -1
If A And 2 ^ J Then
H = 1
Else
H = 0
End If
Cadena = Cadena & H
Label49.Caption = Cadena
Next
Text2.Text = Cadena
Text3.Text = PortIn(&H379)
End Sub





Como veras el comando de control es “PortOut (Salida) y PortIn (entrada)”
La dirección del Hadware D0 a D7 es con la dirección H378 y las entradas S4a S7 y S13 con H379

En caso de querer mandar una señal esta debe ser en Forma Decimal. por ejemplo:
Si queremos poner todas las señales de salida con Estado “1”
en binario seria 11111111 (las 8 salidas en 1) la conversión de binario a Decimal sera 255 por lo tanto para mandar esta señal sera de esta forma PortOut (&H378, 255)

Si queremos poner todas las señales de salida con Estado “0”
en binario seria 00000000 (las 8 salidas en 0) la conversión de binario a Decimal sera 0 por lo tanto para mandar esta señal sera de esta forma PortOut (&H378, 0)

Si queremos poner otro orden de salida de salida con combinación de Estados
ejemplo 01101100 = 108 decimal
esto significa que D0=0,D1=1,D2=1,D3=0, ETC
la orden sera PortOut (&H378, 108)

Date cuenta que en el código anterior se maneja el valor del decimal con constantes y con variables

Emc2 (Enhanced Machine Controller project)

Aplicación de control numérico por computador (CNC) gratuita, que trabaja con el sistema operativo Linux.














Este programa sera parte de mi proyecto de carrera, que consta de diseñar y construir una cortadora CNC de 3 ejes con nivel profesional.


Como se indica sera la parte de control sobre los 3 motores paso a paso que utilizara la cortadora, para lograr los movimientos precisos sobre los tres ejes (X , Y , Z).

la instalación de EMC2.

En la pagina Oficial de EmC2 se encuentran los archivos fuente (source) de el programa necesarios para compilar el programa en tu sistema linux, ya sabes los pasos..
,/configure
make
make install

Pero si eres flojonazo como yo, no tienes un sistema linux o de plano no sabes nada sobre linux :D
hay otra opción que se encuentra en la misma pagina, se trata de de un disco de Instalación que contiene:

  • Sistema operativo linux (distribución Ubuntu)
  • Software EMC2
  • Un montón de aplicaciones básicas (programas de oficina tipo word, exel, navegador de internet, cliente de mensajería tipo messenger, programas de dibujo, calculadora y 100 mas

Por lo tanto tendrás un sistema operativo con un sin fin de utilidades y además Gratuito

Este programa cuenta con varias opciones de configuración muy simples con lo que se facilita obtener el mejor rendimiento sobre los motores a utilizar.

El programa utiliza el puerto paralelo (DB25, conector de 25 pines color rosa) de la computadora para mandar los Bites de control.

Este programa no funciona con Puerto serie (DB9) que yo sepa pero me da flojera investigar...


En el caso de este proyecto sera suficiente el Paralelo ya que para cada eje se ocuparan solo 2 señales de salida y el puerto paralelo puede mandar de 1 a 8 señales(pines del 2 al 9 del puerto) ó mas.

Por otra parte existen las señales de entrada, estas serán utilizadas para que el programa EMC2 pueda detectar señales que mande nuestra maquina cortadora a la computadora por ejemplo:

  • Un limite de carrera de cualquier eje. mandar una señal el EMC2 detendrá el poseso de los motores evitando daños mecánicos sobre la maquina. pueden ser utilizados simples interruptores hasta sensores ópticos
  • Una señal de paro de emergencia, en caso de que sea necesario detener por completo la maquina. Nunca faltan los accidentes o los tentones....
  • Algun sistema de seguridad extra.


El puerto paralelo cuenta con 5 lineas de entrada (pines 10, 11, 12, 13 y 15)

----------------------------------------------------------------


Instalación desde el CD descargado

Primo que nada hay que grabar la imagen de disco que descargamos del EMC2, se trata de un archivo de tipo .ISO por lo tanto hay que utilizar un programa de grabación de discos, por ejemplo Nero, UltraIso, Alcohol, Etc. Si no sabes como grabar una imagen de disco aquí te dejo un manual:

MANUAL AQUI

El segundo paso sera arrancar tu computadora pero desde la unidad de discos CD-Rom (obvio con el disco ya grabado dentro).

1. Introduces tu disco

2. Reinicias tu computadora
¿tu computadora inicio de forma distinta y muestra unas imagen con el logotipo”UBUNTU”?

Si=Pasa al paso 3

No= Debes modificar el orden en el que arranca tu computadora esto se hace configurando la BIOS de tu Computadora, intenta presionar la tecla “SUPR” unos segundos después de presionar el botón de encendido de tu computador así podrás entrar ala configuración de la BIOS.

3.Selecciona la opción Instalar (este poseso tardara un buen ratito)

4.una ves que veas un entorno de ventanas notaras que hay un Icono en la parte izquierda que dice instalar, Dele doble click

5.Debes ir llenando todos los formularios de configuración que se van mostrando(idioma, tipo de teclado, etc.
la parte de particionado del disco duro, te recomiendo que busque en google información si es que no sabes mucho, yo personal mente tengo 3 particiones una para Windows la segunda para linux y una pequeña para Swap (memoria virtual de linux).

6.Comenzara el poseso que instalara tu nuevo sistema operativo. una ves que termine, se te pedirá que retires el disco de instalación y presiones ENTER.

YA tienes tu sistema Linux con el EMC2!!!!!

Aplicaciones > CNC > EMC2 :P

Al arrancar el programa te pedirá un tipo de configuración del entorno de ventanas. Yo personalmente prefiero la opción “STEPPER-XYZA” . Es elección de funciones que uno necesite por eso recomiendo ir probando todas.


Soy Benjamin, soy Cordero y soy Mekatronico

benjamin-cordero@hotmail.com

Saludos