68

Proyecto de Ingeniería Electrónica I y II148.206.53.84/tesiuami/UAMI12633.pdf · ¾ Diseñar los circuitos electrónicos para el control de todos los motores- ... Proyecto Terminal

  • Upload
    builiem

  • View
    215

  • Download
    1

Embed Size (px)

Citation preview

Proyecto de Ingeniería Electrónica I y II

Sonda Rover

Alumnos: Alberto E. Neria Aguirre 96220283 José Jesús Rivera Barrera 96323856 José A. Hernández Peralta 97215844 Yeimi Juárez Hernández 98217548 Asesor: Dr. Fausto Casco Sánchez

Diciembre 2005

Universidad Autónoma Metropolitana Iztapalapa Proyecto Terminal I y II Emulación de la Sonda Rover

2

P Índice

Capitulo I

1.1 Justificación ……...…...………….…………………….……………………...5 1.2 Objetivo ………………….………………………….……………………......6 1.3 Descripción del proyecto …………….……………..…………..….…..…..7 1.4 Como esta conformado el bus del puerto paralelo…………….…….….…..…8 1.5Acceso directo al puerto …..…………………………….……………..........10 1.6 Registro de estado (S) …………………….…………….…………….……11 1.7 Registro de control (C) ………..………………….………………….…......11 1.8 Bit de puerto bidireccional ………………………....……………….…........12

Capitulo II 2.1 Programación del puerto paralelo 2.2 Obtención del puerto ……………………….………………………………..12 2.3 Acceso a los puertos ..……...………….…………………….……………...14 2.4 Detección del tipo de puerto …...………………………………..…………..15 2.5 Puertos extendidos …………………...………………………….………….16

Capitulo III 3.1 EL SERVO MOTOR ..……………………………………..……………….19 3.2 ¿Como trabaja un servo? ………..…………………………..……………....20 3.3 ¿Cómo se debe comunicar el ángulo al cual el servo debe posicionarse? ……… …….…………………………………………………………..…………………21 3.4Características generales ……………………………………….……..….…21 3.5 Control …………………..…………………………………...…..….…........22 3.6 Supongamos que queremos mover el servo a 30 grados ……….….…..…....22 3.7Circuito controlador del Servo …………..……………………………….….23 3.8 ¿Pero cual CABLE es cual? ………….…………………………….…..…...24 3.9 Suministro de Voltaje ………..………………………………………………24

Capitulo IV 4.1 Motores de corriente continua ……………….…………………………..….25 4.2 Contenido del motor de DC ………………………………………..…….…26

Universidad Autónoma Metropolitana Iztapalapa Proyecto Terminal I y II Emulación de la Sonda Rover

3

4.3 Ejemplos de control para los motores D.C. Control mediante H-Bridge con regulador de velocidad ……….………………………………………….......…..29 4.4 Control mediante microrelevadores ……………….…………………......…30

Capitulo V 5.1 Sensores en Robótica ……..…………………………………………..…….32 5.2 Introducción …………..…………………………….………………..….....32 5.3 Valores de salida de los sensores ……………………………..………..…...32 5.4 Conversión Analógica/Digital ………………………………………….....34 5.5 Sensores Analógicos más frecuentes ………..…………………..………..….36 5.6 Fotorresistencia ………………………………………………………..….36 5.7Potenciómetros ........….…………………………….………………….......37 5.8 Sensores Digitales de uso general ………...………….………………….….38 5.9 Switchs o llaves …………………………………….………………..….....38 5.10 Microswitch ……...…………………………………………………...…38 5.11 Sensores infrarrojos optoacoplados ……….………………………....…...39 5.12 Sensor de Efecto Hall …………………………………………………......41

Capitulo VI 6.0.Pruebas y conclusiones …..…..……………………………………………..42 6.1 ¿Cómo funciona nuestro robot? .…….………………………………..……42 6.2 Etapa de potencia . ………….………………………….………………......42 6.3 Periscopio ……….………………………………………….………………..45 6.4 Dirección de las ruedas frontales ………..………………………………..…45 6.5 Brazo mecánico ..……………………………………………………..……..45 6.6 ¿Quién controla todo esto? …..……..…………………………………...45 6.7 Vistas en 3d …..…….……………………………………………………....45 6.8 Placa para la conexión de motores ……………………………………….…47 6.9 Tabla de movimientos ………..……………………………………………48 6.10 Circuitos diseñados …..……..……………………………………………..53 6.11 Conclusiones ………………………………………………………………62 6.12 Perspectivas …….…………………………………………………….….64 6.13 Bibliografía ……………………………………………………………..65

Universidad Autónoma Metropolitana Iztapalapa Proyecto Terminal I y II Emulación de la Sonda Rover

4

Universidad Autónoma Metropolitana Iztapalapa Proyecto Terminal I y II Emulación de la Sonda Rover

5

Capitulo I

1.1 Justificación.

Desde que en 1917 el escritor Karel Capek1 usara el término robot para referirse a unas máquinas en forma de humanoide, han tenido que aparecer numerosos avances tecnológicos y pasar más de medio siglo, para que este proyecto se pudiera realizar, un robot articulado en un espacio de tiempo relativamente corto y con un presupuesto reducido. En el libro Robótica Industrial Fundamentos y aplicaciones2 se define la robótica como “una ciencia aplicada que surge de la combinación de la tecnología de las máquinas-herramienta y de la informática”. Y en el año de 1979 el Robot Institute of America lo definía cómo “un manipulador reprogramable y multifuncional diseñado para transportar materiales, piezas, herramientas o aparatos específicos a través de una serie de movimientos programados para llevar a cabo dichas tareas”. Casi treinta años mas tarde, la Encarta de Microsoft da la siguiente definición: “Máquina controlada por computadora y programada para moverse, manipular objetos y realizar trabajos a la vez que interacciona con su entorno. Los robots son capaces de realizar tareas repetitivas de forma más rápida, barata y precisa que los seres humanos”. Una máquina-herramienta se define como “una máquina que efectúa cualquier trabajo manual, y la informática como la ciencia del tratamiento automático y racional de la información” (Ibid Robótica industrial Fundamentos y aplicaciones). Uniendo ambos conceptos la robótica surge al automatizar de manera racional las máquinas-herramienta, es decir al permitir que un programa informático controle las operaciones que antes realizaba un operario. Ligado a la robótica aparece el robot, si lo primero es la ciencia lo segundo es el objeto. Para que un robot se considere como un ser inteligente autónomo debe de cumplir con dos cosas:

1 Karel Capek utilizó en su obra teatral ’Rossum’s Universal Robots’ la palabra ’robota’, que en checo significa trabajador forzado o siervo.. Cuando este libro se tradujo al inglés apareció el término ROBOT. 2 ROBÓTICA INDUSTRIAL. FUNDAMENTOS Y APLICACIONES. Arantxa Rentería Bilbao; María Rivas Ardisana (Editorial McGraw-Hill). Primera edición 2000.cap I pag 17

Universidad Autónoma Metropolitana Iztapalapa Proyecto Terminal I y II Emulación de la Sonda Rover

6

o Autonomía: el sistema de navegación debe de estar en la misma máquina, interna o externamente sin contar con ninguna conexión a equipos secundarios.

o Inteligencia: el robot posee capacidad de razonar hasta el punto de ser capaz de tomar sus propias decisiones y de seleccionar, fusionar e integrar las medidas de todos sus sensores.

Hoy en día los avances tecnológicos en el campo de la electrónica marcan el grado de desarrollo en el que se puede encontrar cualquier país del orbe; México no puede ser la excepción y por lo tanto no puede quedar marginado del desarrollo tecnológico, por tal motivo, es sumamente importante que en los centros de investigación del país se produzca tecnología de punta capaz de competir con la de otros países y sea capaz de revolucionar el desarrollo tecnológico del país. Es por esto que las universidades tienen un papel preponderante en la educación de sus estudiantes para que al egresar sean capaces de volcar todo el conocimiento técnico obtenido en las aulas y traducirlo en la producción, innovación o investigación tecnológica más barata y rentable. Al hacer esto se logra que México sea capaz de producir su propia tecnología y cada vez dependa menos tecnológicamente de otros países mayor desarrollados y con tecnología más avanzada.

1.2 Objetivo. Los robots son maquinas dotadas de un sistema computacional que le permite percibir el entorno e interactuar con el mismo en función del programa que le introducimos y que podemos modificar según nuestras necesidades. En las últimas décadas del siglo pasado, particularmente después de la segunda guerra mundial se empieza a introducir a los robots en la industria como respuesta a la necesidad de automatizar el proceso de producción. Los robots manipuladores eran capaces de realizar tareas repetitivas mucho más rápido que los seres humanos y con mayor precisión. Sin embargo, se requiere automatizar tareas que requieren que el mismo robot se desplace solo. Así empiezan a surgir los primeros vehículos guiados automáticamente, de esta manera empieza la era de la robótica. La gama de aplicaciones que podría cubrir la robótica con sus modelos tridimensionales es bastante amplia, tales como: -Automatización de la industria -Clasificaciones de áreas peligrosas para el ser humano -Control de calidad _Identificación de piezas, partículas de material peligroso.

Universidad Autónoma Metropolitana Iztapalapa Proyecto Terminal I y II Emulación de la Sonda Rover

7

Además también puede resultar útil en el campo de la medicina, biomédica, astronomía (en la investigación de otros planetas), en lugares de difícil acceso para el ser humano o donde se pone en riesgo su integridad física (tales como cavernas, en construcciones después de un siniestro como terremoto o en la lucha armamentista). El presente proyecto pretende colaborar en el estudio del control automatizado mediante la construcción del similar del robot espacial que viajo al planeta Marte para su investigación, la sonda espacial Rover, el presente trabajo no pretende competir con este robot pues primeramente los accesorios con los que cuenta el robot original son innecesarios en muchas áreas, solo pretendemos emular el proyecto con tecnología mexicana. Para el presente proyecto se han fijado los siguientes objetivos.

Diseñar la carcaza del robot calculando que sea capaz de soportar aproximadamente 25 kgs, esto debido al peso de una laptop, motores, batería, fotoceldas y otros accesorios.

Buscar y acoplar motores de DC y ruedas capaces de soportar tal peso y tener la fuerza suficiente para la tracción.

Acoplar las ruedas a los motores seleccionados haciendo uso de engranes, cadenas o lo que sea necesario.

Acoplar un brazo mecánico al cuerpo del robot Acoplar un periscopio al cuerpo del robot y en la parte superior adaptar

una cámara web inalámbrica configurada a la laptop de a bordo. Diseñar los circuitos electrónicos para el control de todos los motores-

motores de tracción (4), dirección (2), periscopio(3), cámara web (1), brazo (3)

Diseñar los circuitos electrónicos para el control de los sensores que controlarán la posición de los motores del periscopio, brazo mecánico, y motores de dirección.

Alimentar los circuitos con paneles de energía solar conectados a una batería de motocicleta para mantener el voltaje adecuado.

1.3 Descripción del proyecto.

Es indispensable conocer el funcionamiento del puerto paralelo ya que haremos uso de este dispositivo para transmitir las órdenes al robot tales como movimientos de las ruedas de tracción, dirección, periscopio y brazo, todas estas órdenes serán enviadas por un programa gráfico y después las directivas tendrán que ser ejecutadas en tiempo real por los mecanismos y dispositivos electrónicos contenidos dentro del cuerpo del robot. Cabe aclarar que dentro del robot estará contenida una Laptop con características adecuadas para el buen funcionamiento del robot, tales como la cantidad de memoria RAM en este caso es de 256MB y una tarjeta de video adecuada para el envío de imágenes en tiempo real, esta

Universidad Autónoma Metropolitana Iztapalapa Proyecto Terminal I y II Emulación de la Sonda Rover

8

computadora cuenta con una tarjeta de red inalámbrica de acceso a Internet que estará enviando datos para que sean controlados todos los movimientos del robot de manera externa, es decir, la laptop se comportará como servidor de Internet y se podrá interactuar con ella desde otra computadora con acceso a Internet. Los programas se encuentran disponibles en la sección de anexos al final del documento El puerto paralelo3 es ideal para el control de movimiento de equipos tales como robots en donde es necesario controlar los movimientos de manera independiente sin verse afectadas otras funciones implementadas. Este puerto contiene un bus de 8 bits además de otras señales de control de entrada o de salida que también pueden ser habilitadas y usadas según nuestros requerimientos. Para programar el puerto paralelo4 en un programa de computadora, únicamente se requiere conocer la dirección hexadecimal donde se encuentra mapeado el puerto paralelo, en este caso la dirección es igual a 0x378 (888 en decimal), en caso de que la computadora no reconozca esta dirección se tiene que manipular el bios de la computadora y corregir el problema, esto es escribiendo la dirección arriba mencionada en donde aparece la leyenda de LPT1 en caso de existir otra dirección modificarla y en caso de que no se pueda manipular el bios o no se tenga la experiencia necesaria, es recomendable modificar el programa de reconocimiento del puerto paralelo que mas adelante se lista.

1.4 Como esta conformado el bus del puerto paralelo. En la siguiente figura se describe de manera bastante somera la distribución del puerto paralelo, los bits de información van de la pata 2 a la pata 8 del conector DB25 hembra, mientras que los demás pines son señales de control.

3 http://www.lvr.com/parprtib.htm#Chapter1 4 Parallel port complete: Programming, interfacing, and using the PC´s parallel printer port Jan Axelson. 1996, Lakeview Research.

Universidad Autónoma Metropolitana Iztapalapa Proyecto Terminal I y II Emulación de la Sonda Rover

9

Imagen tomada de http://www.rafal.waw.pl/wynalazki/porty/ Si deseamos escribir un dato en el bus de salida de datos (pin 2 a 9) solo debemos escribir el byte correspondiente en la dirección hexadecimal 0X378 (888 en decimal) cuando trabajamos con el LPT1. Los distintos pins (bits) de salida correspondientes al bus de datos no pueden ser escritos en forma independiente, por lo que siempre que se desee modificar uno se deberán escribir los ocho bits nuevamente. Para leer el estado de los pins de entrada (10, 12, 13 y 15) se debe realizar una lectura a la dirección hexadecimal 0x379 (889 en decimal) si trabajamos con el LPT1. La lectura será devuelta en un byte en donde el bit 6 corresponde al pin 10, el bit 5 corresponde al pin 12, el bit 4 corresponde al pin 13 y el bit 3 corresponde al pin 15. En la siguiente tabla se puede ver lo antedicho en una forma más gráfica: Escritura: Salida de Datos

Escritura en dirección 0x378 (LPT1) o 0x278 (LPT2)

DATO BIT 7 BIT 6 BIT 5 BIT 4 BIT 3 BIT 2 BIT 1 BIT 0

DB25 Pin 9 Pin 8 Pin 7 Pin 6 Pin 5 Pin 4 Pin 3 Pin2

CN5 TTL 7 TTL 6 TTL 5 TTL 4 TTL 3 TTL 2 TTL 1 TTL 0

CN4 No usar HP 6 HP 5 HP 4 HP 3 HP 2 HP 1 HP 0

Universidad Autónoma Metropolitana Iztapalapa Proyecto Terminal I y II Emulación de la Sonda Rover

10

Lectura: Entrada de Datos

Lectura en dirección 0x379 (LPT1) o 0x279 (LPT2)

DATO BIT 7 BIT 6 BIT 5 BIT 4 BIT 3 BIT 2 BIT 1 BIT 0

DB 25 No usar Pin 10 Pin 12 Pin 13 Pin 15 No

usar No usar No usar

CN6 No usar

Input 3

Input 2

Input 1

Input 0

No usar

No usar No usar

Desde el punto de vista del software, el puerto paralelo son tres registros de 8 bits cada uno, ocupando tres direcciones de I/O consecutivas de la arquitectura x86. Desde el punto de vista de hardware, el puerto es un conector hembra DB25 con doce salidas latcheadas (que tienen memoria/buffer intermedio) y cinco entradas, con 8 líneas de tierra. La función normal es transferir datos a una impresora a través de las 8 líneas de datos, usando las señales restantes como control de flujo.

1.5 Acceso directo al puerto El puerto, como se mencionó antes, consiste de tres registros de 8 bits ubicados en direcciones adyacentes del espacio de I/O de la PC. Los registros se definen relativos a la dirección de I/O base (variable IOBase) y son: IOBase+0 : registro de datos IOBase+1 : registro de estado IOBase+2 : registro de control En el puerto paralelo se puede leer y escribir, esto se hace mediante lenguajes de programación, al escribir un dato en el registro causa que el mismo aparezca en los pines 2 al 9 del conector del puerto. Leyendo el registro, se lee el último dato escrito (NO lee el estado de los pines; para ello hay que usar un puerto bidireccional). Nro.Bit 7 6 5 4 3 2 1 0 Descripción x . . . . . . . D7 (pin 9), 1=Alto, 0=Bajo . x . . . . . . D6 (pin 8), 1=Alto, 0=Bajo . . x . . . . . D5 (pin 7), 1=Alto, 0=Bajo . . . x . . . . D4 (pin 6), 1=Alto, 0=Bajo . . . . x . . . D3 (pin 5), 1=Alto, 0=Bajo . . . . . x . . D2 (pin 4), 1=Alto, 0=Bajo . . . . . . x . D1 (pin 3), 1=Alto, 0=Bajo . . . . . . . x D0 (pin 2), 1=Alto, 0=Bajo

Universidad Autónoma Metropolitana Iztapalapa Proyecto Terminal I y II Emulación de la Sonda Rover

11

Cuando se indica Alto o Bajo se refiere a la tensión de salida (5V para el 1 físico y 0V para el 0 físico, respectivamente). Esto es porque la lógica puede ser positiva (un 1 lógico equivale a Alto o 5V) o negada (un 0 lógico equivale a Bajo o 0V). Con respecto a esto debemos decir que para negar algo le anteponemos el carácter / (representando la barra que se coloca encima). El estándar es que las salidas sean LS TTL (low schottky TTL), aunque las hay que son de tipo OC (colector abierto). La corriente que pueden entregar (source) es de 2.6mA máximo y pueden absorber (sink) un máximo de 24mA. En el puerto original de IBM hay condensadores de 2.2nF a tierra. Las tensiones para el nivel bajo son entre 0 y 0,8V y el nivel alto entre 2,4V y 5V.

1.6 Registro de estado (S) El registro de estado está en IOBase+1. Es de sólo lectura (las escrituras serán ignoradas). La lectura da el estado de los cinco pines de entrada al momento de la lectura. En la tabla siguiente los nombres de los pines se dejaron en inglés porque es como generalmente se identifican. Nro.Bit 7 6 5 4 3 2 1 0 Descripción x . . . . . . . S7 : Busy (pin 11), 0=Alto, 1=Bajo . x . . . . . . S6 : Ack (pin 10), 1=Alto, 0=Bajo . . x . . . . . S5 : No paper (pin 12), 1=Alto, 0=Bajo . . . x . . . . S4 : Selected (pin 13), 1=Alto, 0=Bajo . . . . x . . . S3 : Error (pin 15), 1=Alto, 0=Bajo . . . . . x x x Sin definir La línea Busy tiene, generalmente, una resistencia de pull-up interna. El estándar es que sean entradas tipo LS TTL.

1.7 Registro de control (C) El registro de control se encuentra en IOBase+2. Es de lectura/escritura. Nro.Bit 7 6 5 4 3 2 1 0 x x . . . . . . Sin usar . . x . . . . . C5 : Control puerto bidireccional . . . x . . . . C4 : Interrupt control, 1=enable, 0=disable . . . . x . . . C3 : Select (pin 17), 1=Bajo, 0=Alto . . . . . x . . C2 : Initialize (pin 16), 1=Alto, 0=Bajo . . . . . . x . C1 : Auto Feed (pin 14), 1=Bajo, 0=Alto . . . . . . . x C0 : Strobe (pin 01), 1=Bajo, 0=Alto

Universidad Autónoma Metropolitana Iztapalapa Proyecto Terminal I y II Emulación de la Sonda Rover

12

Los cuatro bits inferiores son salidas. La lectura devuelve lo último que se escribió a dichos bits. Son TTL a colector abierto con resistencias de pull-up de 4700 ohms, por lo que un dispositivo externo puede forzar el estado de los pines sin dañar el driver. Esto permite utilizar estas cuatro líneas como entradas. Para ello, ponemos en alto las cuatro salidas (escribiendo 0000100b en IOBase+2) lo que hace que las salidas “floten”. Ahora, un dispositivo externo puede forzar a bajo alguna de las salidas con lo que, leyendo el puerto, sabemos si esto sucedió o no. Es posible realizar esta técnica en salidas totem-pole (como D0-D7) pero no recomendamos su uso porque habría que tener un conocimiento preciso de la corriente ya que se pueden sobrecargar los transistores de salida, dañando el driver (especialmente en puertos integrados LSI).

1.8 Bit de puerto bidireccional (compatible PS/2) El bit C5, está disponible sólo si se trata de un puerto bidireccional; en los puertos comunes actúa como los bits C6 y C7. Si C5=1, el buffer de los datos de salida se pone en alta impedancia, “desconectando” dicho buffer de los pines 2 a 9 del conector del puerto (D0 a D7). Si se escribe al registro de datos, se escribe al buffer pero no a la salida. Esto permite que al leer el puerto, se lea el estado de las entradas y no lo que hay en buffer. En las computadoras IBM PS/2, para habilitar el puerto paralelo bidireccional, además de lo antes descrito, se debe poner a 1 el bit 7 del registro del puerto 102h (opciones de configuración). En computadoras que no tengan puerto paralelo bidireccional compatible PS/2 hay que modificar uno o más bits de algún puerto específico correspondiente al chipset de la placa. A veces se habilita por setup o por jumper en la placa del puerto.

Capitulo II

2.1Programación del puerto paralelo5.

2.2 Obtención del puerto

Las direcciones de I/O de los puertos paralelo se almacenan en una tabla ubicada en 40h:8h (0h:408h). Entonces, éste sería un método de obtener las direcciones. A continuación se muestra como obtener dichas direcciones en distintos lenguajes. Ensamblador ;en SI tengo la dirección de memoria: 5 Programming the Parallel Port: Interfacing the PC for Data Acquisition & Process Control.by Dhananjay V. Gadre.1998, CMP Books 308 pagesIncludes source code in C for DOS and Linux.

Universidad Autónoma Metropolitana Iztapalapa Proyecto Terminal I y II Emulación de la Sonda Rover

13

;LPT1 = 0408h ;LPT2 = 0408h + 2h = 040Ah ;LPT3 = 040Ah + 2h = 040Ch mov si,0408h ;SI = 0408h xor ax,ax ;AX = 0 push ds ;Mete DS en la pila mov ds,ax ;DS = AX = 0 mov ax,word ptr [SI] ;AX = [0h:SI] pop ds ;recupero DS de la pila ;ahora en AX tengo la dirección base C /* En portnum debo guardar el número de puerto (1,2,3). En la variable lptadr, tipo unsigned, obtengo la dirección.*/ portnum--; lptadr = peek(0x0040,0x0008+portnum*2); Windows En entorno Windows, se complica un poco ya que tenemos varios métodos. 1- Verificar en las direcciones estándar que el puerto tenga retención de datos escritos en él. Es armar la tabla que realiza la BIOS por nosotros mismos. Este método falla si el puerto es bidireccional (o ECP o EPP), si algún controlador prohíbe el acceso, si estamos bajo WinNT o si el puerto está en una dirección no estándar. Ver la sección Acceso a los puertos para más detalles y véase la sección Detección del tipo de puerto, para buscar por uno mismo las direcciones (y de paso detectar que tipo de puerto es). Ahora lo único que podría hacer fallar la prueba es si algún controlador de dispositivo prohíbe el acceso (o WinNT, claro). 2- Tener la posibilidad de leer la tabla que la BIOS genera cuando arranca la máquina. Debemos contar con alguna función que nos permita leer una dirección de memoria como si estuviéramos en modo real de la CPU. En entornos de 16 bit esto se facilita. En otros lenguajes desconozco, pero para Visual Basic hay una DLL (Vbasm.dll), que tiene la función Peek como en QuickBasic. 3- Bajo WinNT, podemos obtener (mediante las funciones de la API, RegOpenKey y RegQueryValue) la información del registro de: [HKEY_LOCAL_MACHINE\Enum\Root\ [HKEY_LOCAL_MACHINE\Enum\BIOS\ [HKEY_DYN_DATA\Config Manager\Enum\

Universidad Autónoma Metropolitana Iztapalapa Proyecto Terminal I y II Emulación de la Sonda Rover

14

4- En Win9x,Me, podemos hacer el enfoque de la opción 2, pero con la API de Windows. Utilizamos la función de la API Toolhelp32ReadProcessMemory (que reside en Kernel32 y que no se encuentra en NT). A continuación se muestra un fragmento de código escrito por Bill McCarthy: Declare Function Toolhelp32ReadProcessMemory Lib "KERNEL32" (ByVal th32ProcessID As Long, ByVal lpBaseAddress As Long, lpBuffer As Any, ByVal cbRead As Long, ByRef lpNumberOfBytesRead As Long) As Long Sub Main() Dim i As Long, rtn As Long Dim portAddresses(3) As Integer Dim cbLen As Long cbLen = 8 rtn = Toolhelp32ReadProcessMemory(0&,&H408&,portAddresses(0),8,cbLen) 'Debug.Print rtn, cbLen For i = 0 To 3 If portAddresses(i) = 0 Then Exit For Debug.Print "port address " & i & " = &H" & Hex$(portAddresses(i)) Next i End Sub

2.3 Acceso a los puertos. A continuación se darán las funciones a utilizar para leer y escribir puertos en distintos lenguajes de programación. En Ms-Dos no tenemos ningún tipo de restricción de acceder a los puertos. En Windows 3.x, 9x y Me tampoco hay restricciones (a no ser que el puerto esté bajo el control de un controlador de dispositivo virtual). En Windows NT, el sistema operativo tiene control total sobre la máquina por lo que hay que pedir un permiso que se hace mediante un driver.

Ensamblador

Los opcodes IN y OUT permiten leer y escribir, respectivamente, datos a un puerto cualquiera. La secuencia a seguir para leer podría ser: mov dx,Puerto ’DX = Puerto (puede ser cte. o ref. de ’memoria si es variable.

Universidad Autónoma Metropolitana Iztapalapa Proyecto Terminal I y II Emulación de la Sonda Rover

15

in al,dx ’Leo del puerto DX y lo guardo en AL Y para escribir: mov dx,Puerto ’DX = Puerto (puede ser cte. o ref. de ’memoria si es variable. out dx,al ’Manda AL al puerto DX C Se utilizan las funciones outportb() e inportb().

2.4 Detección del tipo de puerto En esta sección indicaremos los pasos a seguir para detectar si el puerto es SPP (común), bidireccional compatible PS/2, ECP o EPP. Para una referencia acerca de los puertos EPP y ECP. Describiremos los pasos generales; luego se tendrá que adaptar al lenguaje en uso. Se testea en orden descendente de complejidad, es decir primero ECP, luego EPP, bidireccional y finalmente SPP (esto se debe realizar así para no fallar en la detección).

Detectando ECP Este es el método que recomienda Microsoft: Leer el control de registro extendido (ECR) en Base+402h. Base se refiere a la dirección inicial donde se comienza a mapear el puerto (03BCh,0378h y 0278h). Verificar que el bit 0 sea 1 (FIFO vacía) y que el bit 1 sea 0 (FIFO no está llena). Estos bits podrían ser distintos a los bits correspondientes en el puerto de control (Base+2h). Para verificar esto, cambiamos el estado de algún bit del puerto Base+2h y verificamos que no haya cambiado en Base+402h. Una prueba adicional es escribir 34h al ECR y leerlo. Los bits 0 y 1 son de sólo lectura, por lo tanto, si leemos 35h, es probable que tengamos un puerto ECP.

Detectando EPP Además de los tres registros de un puerto SPP, un puerto EPP tiene cinco registros más mapeados desde Base+3h a Base+7h. Estos registros adicionales proveen una manera de probar la presencia de un EPP, escribiendo ciertos valores y leyendo el resultado (de la misma manera que se testea un puerto SPP). Al igual que al detectar puertos SPP, se recomienda escribir un par de valores y leerlos. Dichos valores podrían ser 55h y AAh. Hay que asegurarse de poner S0 a 0 (EPP timeout), antes de leer o escribir a estas

Universidad Autónoma Metropolitana Iztapalapa Proyecto Terminal I y II Emulación de la Sonda Rover

16

direcciones extendidas. Otro dato importante es que no existen puertos EPP en la dirección base 03BCh.

Detectando SPP Para detectar si es SPP, hacemos el procedimiento que realiza la BIOS al arranque. Verificamos la retención del puerto, que será posible en un puerto SPP. Para ello escribimos un par de valores (55h y AAh) a las direcciones base (03BCh,0378h y 0278h) y leemos el registro verificando que sean los mismo valores escritos.

Detectando puerto bidireccional (PS/2) Aquí debemos habilitar el puerto bidireccional (con C5=1) y hacer la misma prueba que para un SPP para verificar que no haya retención.

2.5 Puertos extendidos

Puerto bidireccional (compatible PS/2) Véase la sección Bit de puerto bidireccional. Puerto EPP (Enhanced Parallel Port) Pueden leer y escribir datos a la velocidad del bus ISA. Este tipo de puerto se define por el estándar EPP 1.7. Son tan rápidos como el bus del sistema y pueden alcanzar transferencias por encima de 1 Mbyte/seg. El EPP fue desarrollado por Intel, Xircom y Zenith. Otros fabricantes comenzaron a introducir EPP que no eran del todo compatibles con el introducido por Intel. De ahí que se formó un comité para estandarizar el puerto, formando el estándar EPP 1.7. Luego se mezcló con el estándar IEEE 1284 que describe puertos bidireccionales de alta velocidad para impresoras. Pero no se aceptó el EPP 1.7 original por lo que se modificó y ahora se llama IEEE 1284 EPP, teniendo ahora dos estándares. Un puerto paralelo estilo IEEE 1284 soporta múltiples modos. Es decir que tenemos en un único puerto, los modos SPP, bidireccional PS/2, EPP (versión 1.7 y/o 1284) y ECP. EPP se mapea por encima de las direcciones estándar, en cinco registros (de Base+3h a Base+7h). No hay EPP en la dirección estándar 03BCh (ya que se traslapa con las direcciones dedicadas a video): Base + Descripción 0 puerto de datos (como SPP) 1 puerto de estado (como SPP) 2 puerto de control (como SPP)

Universidad Autónoma Metropolitana Iztapalapa Proyecto Terminal I y II Emulación de la Sonda Rover

17

3 address strobe 4 data strobe 0 4 data strobe 1 4 data strobe 2 4 data strobe 3

Puerto ECP (Enhanced Capability Port)

Pueden, como EPP, leer y escribir a la velocidad del bus. Fue desarrollado por Microsoft y Hewlett Packard. Se distinguen por poseer capacidad de DMA, FIFO y compresión de datos. La velocidad puede superar fácilmente el Mbyte/seg. y en el futuro se ampliará. La ventaja de estos puertos es que tienen la emulación de otros modos como SPP y bidireccional PS/2. En la especificación original no está contemplado EPP, pero los fabricantes utilizan algún bit no utilizado por ECP para poder configurar como EPP. El uso externo de ECP está definido en IEEE 1284 como el modo ECP de 1284. El puerto se mapea en Base+400h. En Base+402h tenemos el registro ECR (Extended Control Register). Con este registro podemos configurar los distintos modos. La siguiente tabla muestra el significado de cada bit: Bit(s) Descripción 7-5 ECP mode 000 ISA-compatible (SPP) 001 PS/2-compatible (bidirectional port) 010 ISA-compatible FIFO (fast centronics) 011 ECP 100 reserved (EPP) 101 reserved 110 test 111 configuration 4 disable ERROR interrupts 3 enable DMA when bit 3 set and bit 2 clear, an interrupt is generated on the DMA terminal-count condition; this bit must be cleared to reset the TC interrupt 2 disable FIFO/TerminalCount service interrupts 1 (read-only) FIFO is full 0 (read-only) FIFO is empty Notas: Si estamos en el modo 000 o 001, podemos cambiar a otro modo. Si estamos en otro modo distinto de 000 o 001, debemos cambiar al modo 000 o 001 y luego

Universidad Autónoma Metropolitana Iztapalapa Proyecto Terminal I y II Emulación de la Sonda Rover

18

cambiar al modo deseado. Si actualmente estamos en el modo 010 a 111 y el bit de dirección está a cero, debemos esperar a que la FIFO se borre antes de cambiar a los modos 000 o 001. En el modo 111, la dirección Base+400h será el registro de configuración A y la dirección Base+401h será el registro de configuración B. A continuación se describen: Configuración A de ECP: Bit(s) Descripción 7-4 (read-only) implementation identification bit 7: ISA-style interrupt bit 4: eight-bit implementation 3-0 reserved Configuración B de ECP: Bit(s) Descripción 7 reserved (0) 6 IRQ status (refleja el valor actual ya sea en IRQ5 o IRQ7; se usa para chequear conflictos de interrupciones) 5-0 reserved (0) Nota: C4 debe valer 0 antes de que el bit 6 muestre el estado de la interrupción.

Universidad Autónoma Metropolitana Iztapalapa Proyecto Terminal I y II Emulación de la Sonda Rover

19

Capitulo III

3.1 EL SERVO MOTOR6

Imagen de un servo marca futaba

Un Servo es un dispositivo pequeño que tiene un eje de rendimiento controlado. Este puede ser llevado a posiciones angulares específicas al enviar una señal codificada. Con tal de que una señal codificada exista en la línea de entrada, el servo mantendrá la posición angular del engranaje. Cuando la señal codificada cambia, la posición angular de los piñones cambia. En la práctica, se usan servos para posicionar superficies de control como el movimiento de palancas, pequeños ascensores y timones. Ellos también se usan en radio control, títeres, y por supuesto, en robots. Los Servos son sumamente útiles en robótica. Los motores son pequeños, cuando usted observa la foto de arriba, tiene internamente una circuitería de control interna y es sumamente poderoso para su tamaño. Un servo normal o Standard como el HS-300 de Hitec tiene 42 onzas por pulgada o mejor dicho3kg por cm. de torque que es bastante fuerte para su tamaño. También potencia proporcional para cargas mecánicas. Un servo, por consiguiente, no consume mucha energía. Se muestra la composición interna de un servo motor en el cuadro de abajo. Podrá observar la circuitería de control, el motor, un juego de piñones, y la caja. También puede ver los 3 alambres de conexión externa. Uno es para alimentación Vcc (+5volts), conexión a tierra GND y el alambre blanco es el alambre de control.

6 Imágenes de servo marca futaba

Universidad Autónoma Metropolitana Iztapalapa Proyecto Terminal I y II Emulación de la Sonda Rover

20

Un servo desmontado.(marca Futaba)

3.2 ¿Como trabaja un servo? El motor del servo tiene algunos circuitos de control y un potenciómetro (una resistencia variable) esta es conectada al eje central del servo motor. En la figura se puede observar al lado derecho del circuito. Este potenciómetro permite a la circuitería de control, supervisar el ángulo actual del servo motor. Si el eje está en el ángulo correcto, entonces el motor está apagado. Si el circuito chequea que el ángulo no es el correcto, el motor girará en la dirección adecuada hasta llegar al ángulo correcto. El eje del servo es capaz de llegar alrededor de los 180 grados. Normalmente, en algunos llega a los 210 grados, pero varía según el fabricante. Un servo normal se usa para controlar un movimiento angular de entre 0 y 180 grados. Un servo normal no es mecánicamente capaz de retornar a su lugar, si hay un mayor peso que el sugerido por las especificaciones del fabricante.

La cantidad de voltaje aplicado al motor es proporcional a la distancia que éste necesita viajar. Así, si el eje necesita regresar una distancia grande, el motor regresará a toda velocidad. Si este necesita regresar sólo una pequeña cantidad, el motor correrá a una velocidad más lenta. A esto se le llama control proporcional.

Universidad Autónoma Metropolitana Iztapalapa Proyecto Terminal I y II Emulación de la Sonda Rover

21

3.3 ¿Cómo se debe comunicar el ángulo al cual el servo debe posicionarse?

El cable de control se usa para comunicar el ángulo. El ángulo está determinado por la duración de un pulso que se aplica al alambre de control. A esto se le llama PCM Modulación codificada de Pulsos. El servo espera ver un pulso cada 20 milisegundos (.02 segundos). La longitud del pulso determinará los giros de motor. Un pulso de 1.5ms., por ejemplo, hará que el motor se torne a la posición de 90 grados (llamado la posición neutra). Si el pulso es menor de 1.5ms., entonces el motor se acercará a los 0 grados. Si el pulso es mayor de 1.5ms, el eje se acercará a los 180 grados.

Como se observa en la figura, la duración del pulso indica o dictamina el ángulo del eje (mostrado como un círculo verde con flecha). Nótese que las ilustraciones y los tiempos reales dependen del fabricante de motor. El principio, sin embargo, es el mismo. Para los Hitec: 0.50ms = 0 grados, 1.50ms = 90 grados y 2.5ms = 180 grados.

3.4 Características generales: Esta parte del documento trata acerca del control de servos. Estos servos tienen un amplificador, servo motor, Piñonería de reducción y un potenciómetro de realimentación; todo incorporado en el mismo conjunto. Esto es un servo de posición (lo cual significa que uno le indica a qué posición debe ir), con un rango de aproximadamente 180 grados. Ellos tienen tres cables de conexión eléctrica; Vcc, GND, y entrada de control.

Universidad Autónoma Metropolitana Iztapalapa Proyecto Terminal I y II Emulación de la Sonda Rover

22

3.5 Control

Para controlar un servo, usted le ordena un cierto ángulo, medido desde 0 grados. Usted le envía una serie de pulsos. En un tiempo ON de pulso indica el ángulo al que debe posicionarse; 1ms = 0 grados, 2.0ms = máx. grado (cerca de 120) y algún valor entre ellos da un ángulo de salida proporcional. Generalmente se considera que en 1.5ms está el "centro." Entre límites de 1 ~ 2ms son las recomendaciones de los fabricantes; usted normalmente puede usar un rango mayor de 1.5ms para obtener un ángulo mayor e incluso de 2ms para un ángulo de rendimiento de 180 grados o más. El factor limitante es el tope del potenciómetro y los límites mecánicos construidos en el servo. Un sonido de zumbido normalmente indica que usted está forzando por encima al servo, entonces debe disminuir un poco. El tiempo de OFF en el servo no es crítico; puede estar alrededor de los 20ms. Hemos usado entre 10ms y 30ms. Esto No tiene que ser de ésta manera, puede variar de un pulso a otro. Los pulsos que ocurren frecuentemente en el tiempo de OFF pueden interferir con el sincronismo interno del servo y podría escucharse un sonido de zumbido o alguna vibración en el eje. Si el espacio del pulso es mayor de 50ms (depende del fabricante), entonces el servo podría estar en modo SLEEP entre los pulsos. Entraría a funcionar en pasos pequeños y el rendimiento no sería el óptimo. Este es un ejemplo de la señal que debería tener el servo:

El tiempo de OFF está variando, como se puede observar. Esto no tiene efectos adversos con tal de que esté entre 10 ~ 30ms. El tiempo de ON determina la posición del brazo de salida. Tenga mucho cuidado que hay servos viejos que usan polaridad de pulso invertido (es decir donde tiempo de OFF es importante). Ellos son difíciles de conseguir en estos días. También, hay algunos servos que tienen el "centro" en posición diferente y rangos de tiempo diferentes. No es común. ¡Pero si usted llega a tener uno de estos servos, todo lo que tiene que hacer es cambiar su tiempo de pulso o polaridad! El resto es lo mismo.

3.6 Supongamos que queremos mover el servo a 30 grados Para controlarlo a 30 grados; se debe calcular la longitud (ancho) del pulso: En 0 grados =1ms, 120 grados = 2ms => 30 grados =1.16ms. Relación lineal. Así, si seguimos enviándole pulsos de 1.16ms, incrementaremos su posición en 30 grados. Si hay una fuerza externa que intenta bloquearlo, el servo intentará resistir activamente (es decir, sí el brazo se mueve externamente, el servo dará entradas al motor para corregir el error).

Universidad Autónoma Metropolitana Iztapalapa Proyecto Terminal I y II Emulación de la Sonda Rover

23

También es posible dejar de enviar pulsos después que el servo se ha movido a su posición. Si dejamos de enviar pulsos por más de 50ms (dependiendo del servo), este podría caerse. Esto significa, que este no estaría aplicando ninguna entrada al motor, o activamente resistiendo fuerzas externas; solamente la fricción sostendrá el brazo (del servo) en su lugar.

3.7 Circuito controlador del Servo Esta es una versión. Puede usarse para jugar con servos, para verificar que ellos funcionen, o para conectarle servos a un Robot. Lo primero para este Driver es encontrar los pulsos requeridos con un osciloscopio para programarlo en un microcontrolador.

Circuito activador del servo.

Este usa un IC TIMER 555. El nombre usual es NE555 o LM555, casi todos los fabricantes de IC´s lo han hecho. El circuito esquemático lo encuentra en las hojas de datos de los manuales ECG, National, Motorola u otros, con los valores de resistor/capacitor calculados por los fabricantes. La única diferencia es la presencia del potenciómetro P1, el cual cambia el tiempo constantemente como usted lo mueva. La señal de salida del IC (pin3) tiene mala polaridad. Para Invertir esta, es necesario el transistor. El transistor se conecta en configuración "colector común" y se usa en modo de saturación (esto significa APAGADO ó ENCENDIDO), así podría usar cualquier transistor npn para trabajar sin problemas (en nuestro caso usamos un C1959Y). En caso de que usted no pueda leer los valores, aquí está una lista de las partes: R1: 220K

Universidad Autónoma Metropolitana Iztapalapa Proyecto Terminal I y II Emulación de la Sonda Rover

24

R2: 15K R3: 10K R4: 10K P1: 10K C1: 100nF C2: 100nF V1: 4~6V Pilas o baterías 4 AA ó usar una fuente de voltaje a 5 Voltios. Cualquier transistor npn de baja señal.

3.8 ¿Pero cual CABLE es cual? Los cables del servo son normalmente codificados en colores como en el esquemático. Hitec, Futaba y Hobbico usan la misma convención. JR y Graupner tienen el control de color Naranja(Pero el orden de la instalación eléctrica es igual que Futaba). Otros como Sanwa (Airtronics) tienen la línea de GND azul. Otros Sanwa tienen todos los cables negros, con la raya roja a un lado. El alambre rayado es Vcc, el siguiente es GND y el último es la señal de control (clasificación diferente que Futaba). Los Hitec, Futaba o Hobbico tienen esta distribución: Señal de control (Amarillo o Blanco) Vcc (Rojo) GND (Negro). Los números y las posiciones de los cables en el esquemático son arbitrarias, verifique su propio servo antes de conectarlo. Una señal de voltaje mal polarizada puede dañar el servo.

3.9 Suministro de Voltaje

El voltaje nominal es el que proporcionan unas pilas de 4x1.2V de NiCd puede dar; 4.8V. En la práctica, esto puede variar significativamente. Algunas compañías de Servos producen paquetes de pilas de 5 unidades de NiCd, con un voltaje nominal de 6.0V, pero tienen entre 6.5 ~ 7V cuando están recién cargadas. Futaba da especificaciones de Servo velocidad/torque para 6V Consideremos 7V como un máximo seguro. También supongamos que los servos trabajan con un paquete de pilas NiCd de 4 unidades, a 4.4V. Pero la respuesta sería algo lenta. Así que se puede trabajar entre 4.4 V y 7.0 V,. Eso lo decide cada cual. Recomendamos usar 5V sin problemas. Se puede usar una fuente de voltaje de 5V, incluso usar integrados reguladores, como el 7805; no sólo alimenta el protoboard o su circuito impreso con un buen desempeño, sino que también puede alimentar dos servos. La

Universidad Autónoma Metropolitana Iztapalapa Proyecto Terminal I y II Emulación de la Sonda Rover

25

corriente que requiere depende del tamaño del servo. Normalmente el fabricante indica cual es la corriente que consume el Servo. Eso no significa mucho si todos los servos van a estar moviéndose todo el tiempo. La corriente depende principalmente del torque usado por el servo motor y puede exceder más de un amperio si el servo está enclavado. Es mejor medir las especificaciones del servo.

Capitulo IV

4.1 Motores de corriente continua (DC)7

En la imagen anterior se pueden observar algunos motores de DC (Direct Current) o también llamados CC (corriente continua) este tipo de motores son usados generalmente en robótica. Los hay de distintos tamaños, formas y potencias, pero todos se basan en el mismo principio de funcionamiento. Para poner a funcionar un motor DC es muy simple y solo se necesita aplicar una tensión de alimentación entre sus bornes, esta tensión puede variar dependiendo del tipo de motor, y la velocidad que necesitemos. Para invertir el sentido de giro basta con invertir la polaridad de la alimentación y el motor comenzará a girar en sentido opuesto. A diferencia de los motores paso a paso y los servomecanismos, los motores DC no pueden ser posicionados y/o enclavados en una posición específica. Estos simplemente giran a la máxima velocidad y en el sentido que la alimentación aplicada se los permite.

7 http://pdf.rincondelvago.com/motores-de-corriente-continua.html

Universidad Autónoma Metropolitana Iztapalapa Proyecto Terminal I y II Emulación de la Sonda Rover

26

El motor de corriente continua está compuesto de 2 piezas fundamentales: Rotor Estator

Dentro de éstas se ubican los demás componentes como:

• Escobillas y porta escobillas • Colector • Eje • Núcleo y devanado del rotor • Imán Permanente • Armazón • Tapas o campanas

4.2 Contenido del motor de DC La siguiente tabla muestra la distribución de las piezas del motor:

Rotor Constituye la parte móvil del motor, proporciona el torque para mover a la carga. Está formado por:

Eje: Formado por una barra de acero fresada. Imparte la rotación al núcleo, devanado y al colector.

Núcleo: Se localiza sobre el eje. Fabricado con capas laminadas de acero, su función es proporcionar un trayecto magnético entre los polos para que el flujo magnético del devanado circule. Las laminaciones tienen por

Universidad Autónoma Metropolitana Iztapalapa Proyecto Terminal I y II Emulación de la Sonda Rover

27

objeto reducir las corrientes parásitas en el núcleo. El acero del núcleo debe ser capaz de mantener bajas las pérdidas por histéresis. Este núcleo laminado contiene ranuras a lo largo de su superficie para albergar al devanado de la armadura (bobinado).

Devanado: Consta de bobinas aisladas entre sí y entre el núcleo de la armadura. Estas bobinas están alojadas en las ranuras, y están conectadas eléctricamente con el colector, el cual debido a su movimiento rotatorio, proporciona un camino de conducción conmutado.

Colector: Denominado también conmutador, está constituido de láminas de material conductor (delgadas), separadas entre sí y del centro del eje por un material aislante, para evitar cortocircuito con dichos elementos. El colector se encuentra sobre uno de los extremos del eje del rotor, de modo que gira con éste y está en contacto con las escobillas. La función del colector es recoger la tensión producida por el devanado inducido, transmitiéndola al circuito por medio de las escobillas (llamadas también cepillos)

Estator Constituye la parte fija de la máquina. Su función es suministrar el flujo magnético que será usado por el bobinado del rotor para realizar su movimiento giratorio. Está formado por:

Armazón: Denominado también yugo, tiene dos funciones primordiales: servir como soporte y proporcionar una trayectoria de retorno al flujo

Universidad Autónoma Metropolitana Iztapalapa Proyecto Terminal I y II Emulación de la Sonda Rover

28

magnético del rotor y del imán permanente, para completar el circuito magnético.

Imán permanente: Compuesto de material ferromagnético altamente remanente, se encuentra fijado al armazón o carcaza del estator. Su función es proporcionar un campo magnético uniforme al devanado del rotor o armadura, de modo que interactúe con el campo formado por el bobinado, y se origine el movimiento del rotor como resultado de la interacción de estos campos.

Escobillas: Las escobillas están fabricadas de carbón, y poseen una dureza menor que la del colector, para evitar que éste se desgaste rápidamente. Se encuentran albergadas por los porta escobillas. Ambos, escobillas y porta escobillas, se encuentran en una de las tapas del estator. La función de las escobillas es transmitir la tensión y corriente de la fuente de alimentación hacia el colector y, por consiguiente, al bobinado del rotor. La función del

Universidad Autónoma Metropolitana Iztapalapa Proyecto Terminal I y II Emulación de la Sonda Rover

29

porta escobillas es mantener a las escobillas en su posición de contacto firme con los segmentos del colector. Esta función se realiza por medio de resortes, los cuales hacen una presión moderada sobre las escobillas contra el colector. Esta presión debe mantenerse en un nivel intermedio pues, de ser excesiva, la fricción desgastaría tanto a las escobillas como al colector; por otro lado, de ser mínima esta presión, se produciría lo que se denomina "chisporroteo", que es cuando aparecen chispas entre las superficies del colector y las escobillas, debido a que no existe un buen contacto.

4.3 Ejemplos de control para los motores D.C. Control mediante H-Bridge con regulador de velocidad: En la siguiente figura podemos apreciar un circuito basado en el uso de dos H-Bridge BA6286 de Rohm para controlar dos motores DC.

Circuito tomado de las hojas de especificaciones del fabricante en el sitio de Internet

http://pdf.alldatasheet.co.kr/datasheet-pdf/view/36081/ROHM/BA6286.html

Universidad Autónoma Metropolitana Iztapalapa Proyecto Terminal I y II Emulación de la Sonda Rover

30

Como podemos apreciar en el diagrama anterior, este circuito posee dos resistencias variables (preset) denominadas RV1 y RV2, que se utilizan para variar en forma independiente la velocidad de los motores izquierdo y derecho respectivamente. VM es la tensión que alimenta los motores, el valor de VM depende de los motores usados, en general debe ser un poco más alta para compensar la caída de tensión producida en el HBridge. Por otro lado variando RV1 y RV2, se varía la tensión real que es aplicada a los motores, con lo cual se regula su velocidad de giro. La tensión de alimentación VCC es una tensión TTL clásica de 5v, la cual sería también usada para el resto de la lógica de control que se agregase a este circuito. El BA6286 soporta una carga máxima de 1A, por lo que se debe tener en consideración al momento de seleccionar los motores a usar.

4.4 Control mediante micro relevadores. En el siguiente circuito podemos apreciar otra alternativa de control para dos motores DC.

Universidad Autónoma Metropolitana Iztapalapa Proyecto Terminal I y II Emulación de la Sonda Rover

31

Diagrama tomado de la hoja de especificaciones del circuito ULN2003 descargado del sitio http://pdf.alldatasheet.co.kr/datasheet-pdf/view/25575/STMICROELECTRONICS/ULN2003.html En este caso el sentido de giro es controlado por dos micro relevadores del tipo doble inversor (RL2 y RL3). Y combinado a otro micro relevador simple (RL1), se obtiene el control total de los motores. Los relevadores son accionados mediante un arreglo de transistores Darlington (ULN2003), el cual amplifica los pulsos de control generados por la etapa lógica, en este caso realizada con compuertas OR (74HC32). Este método posee la ventaja de no producir caídas de tensión, por lo que VM en este caso se puede usar dentro del rango de tensión soportada por los motores. VCC, al igual que en el método anterior, debe ser un valor TTL válido (5v). Es recomendable conseguir micro relevadores cuyas bobinas se activen con 5v, de esta manera pueden ser accionados directamente por VCC, evitando así trabajar con tantas tensiones distintas. Si los relevadores a usar son de 12v, entonces el pin 9 del ULN2003 deberá ser conectado a 12v, así como también el extremo libre de la bobina de los relevadores (en el circuito anterior conectados a VCC). Cabe aclarar que este método puede resultar más económico y hasta más simple de comprender, pero su desventaja radica en la imposibilidad de regular la velocidad (excepto que se agregue un circuito adicional para este fin tipo PWM). Por otro lado al trabajar con elementos mecánicos (que es el caso de un relevador) los riesgos de fallas aumentan y la vida útil del circuito disminuye.

Universidad Autónoma Metropolitana Iztapalapa Proyecto Terminal I y II Emulación de la Sonda Rover

32

Capitulo V

5.1 Sensores en Robótica

5.2 Introducción. Una parte importante a la hora de construir un robot es la incorporación de sensores. Los sensores trasladan la información desde el mundo real al mundo abstracto de los microcontroladores. En esta parte del documento se explican los conceptos fundamentales de los sensores mas comúnmente usados.

5.3 Valores de salida de los sensores: Los sensores ayudan a trasladar los atributos del mundo físico en valores que la controladora de un robot puede usar. En general, la mayoría de los sensores pueden ser divididos en dos grandes grupos: 1. Sensores analógicos 2. Sensores Digitales Un sensor analógico es aquel que puede entregar una salida variable dentro de un determinado rango (ver figura 1). Un Sensor analógico, como por ejemplo una Fotorresistencia (estos componentes miden intensidad de luz), puede ser cableado en un circuito que pueda interpretar sus variaciones y entregar una salida variable con valores entre 0 y 5 volts.

Universidad Autónoma Metropolitana Iztapalapa Proyecto Terminal I y II Emulación de la Sonda Rover

33

Figura 1

Un sensor digital es aquel que entrega una salida del tipo discreta (ver figura 2). Es decir, que el sensor posee una salida que varía dentro de un determinado rango de valores, pero a diferencia de los sensores analógicos, esta señal varía a pequeños pasos pre-establecidos.

Figura 2

Por ejemplo consideremos un botón pulsador, el cual es uno de los sensores más básicos. Posee una salida discreta de tan solo dos valores, estos pueden ser abierto o cerrado. Otros sensores discretos pueden entregar una salida del tipo binario, como es el caso de un conversor Analógico/Digital, el cual entrega una salida de 8 bits capaz de subdividir las variaciones de la entrada en hasta 256 escalones. Los sensores discretos mas comúnmente usados en robótica entregan una salida del tipo binaria las cuales poseen dos estados posibles (0 y 1). De aquí en adelante asumiremos que una salida digital es una salida del tipo binaria. La distinción entre analógico y digital es muy importante a la hora de tomar la decisión para determinar que sensores se usarán. Esta decisión depende en gran medida de la capacidad y características de la controladora que se usará.

Universidad Autónoma Metropolitana Iztapalapa Proyecto Terminal I y II Emulación de la Sonda Rover

34

5.4 Conversión Analógica/Digital: Los microcontroladores generalmente operan con valores discretos. Los controladores como el Motorola 68HC11, el PIC 16F84, etc., trabajan con valores binarios de 8 bits. Una parte importante a la hora de trabajar con señales analógica es la posibilidad de transformar las mismas en señales digitales mediante el uso de un conversor A/D (analógico/digital) y entregar su salida sobre un bus de 8 bits (1 Byte). Esto permitirá al microcontrolador poder tomar decisiones en base a la lectura obtenida. Cabe destacar que en la actualidad existen microcontroladores que ya poseen este conversor integrado en si mismos, lo que permite ahorrar espacio y simplificar el diseño. En la siguiente figura se puede ver un ejemplo de como se comportaría un conversor A/D (analógico/digital):

Podemos ver como para distintos rangos de valores de entrada, se obtiene un valor de salida binario. Si nuestro rango de entrada está entre 0 y 5 volts, un conversor A/D de 8 bits podrá dividir la tensión de entrada en 256 valores binarios. Esto resulta en un escalón de 0.0195 volts. Esto se puede ver claramente en la tabla anterior, si bien solo están representados los primeros cinco niveles.

Universidad Autónoma Metropolitana Iztapalapa Proyecto Terminal I y II Emulación de la Sonda Rover

35

El gráfico anterior muestra el resultado de una conversión A/D para 14 muestreos. El número del muestreo es mostrado en el eje X en la parte inferior. El lado izquierdo del eje Y indica el voltaje de la entrada analógica que está siendo muestreada. Sobre el lado derecho del eje Y podemos ver el valor digital de 8 bits asignado a cada punto del muestreo. (Visto en formato decimal). Existen una gran variedad de conversores A/D en el mercado. Los de 8 bits se usan comúnmente con microcontroladores, pero también existen de 10 bits, capaces de tomar hasta 1024 muestras. Y de 12 bits, capaces de tomar hasta 65356 muestras.

Universidad Autónoma Metropolitana Iztapalapa Proyecto Terminal I y II Emulación de la Sonda Rover

36

A mayor cantidad de muestras mayor será la precisión obtenida, por lo que la elección del conversor A/D adecuado dependerá de que tan exacto deberá ser nuestra lectura del sensor.

5.5 Sensores Analógicos más frecuentes: Recuerde que para usar con éxito un sensor analógico, deberá poseer alguna forma de convertir la salida generada por este en una señal digital capaz de ser interpretada por un sistema microcontrolado. Todos los circuitos mostrados en esta sección están pensados para ser usados conectándolos a un conversor A/D. Recuerde que muchos microcontroladores ya traen integrado estos conversores, en caso contrario se deberá agregar externamente uno como por ejemplo el ADC0801 de National Semiconductores (http://www.national.com/) o similares.

5.6 Fotorresistencia: Estos fotorresistores (también llamados LDR) poseen la capacidad de variar su valor acorde a la cantidad de luz que incide sobre ellos. El LDR mostrado como P1 en el diagrama siguiente posee una resistencia de 10K operando con una iluminación intermedia. Junto con R1 que también es de 10K, producen un divisor resistivo. La tensión medida en el punto medio de este divisor variará según varíe la luz que incida sobre el LDR. Debido a que el valor resistivo del LDR decrece a medida que la luz aumenta, en consecuencia la tensión en el punto medio disminuirá también a medida que la luz aumente y viceversa.

A modo de ejemplo supongamos que hay suficiente iluminación para llevar el valor del LDR a 2K. En este caso la tensión medida en el punto medio (considerando VCC=5v) sería: V= P1*(VCC/(P1+R1)) Entonces V=2K*(5/(2K+10K))= 0.83v

Universidad Autónoma Metropolitana Iztapalapa Proyecto Terminal I y II Emulación de la Sonda Rover

37

Si la salida del punto medio la transformáramos a Digital mediante el Conversor A/D comentado anteriormente obtendríamos una lectura aproximadamente igual a 42 (valor digital) en decimal (2A Hexadecimal). Lo cual podría ser perfectamente interpretado por un sistema microcontrolado y de esta forma poder medir la intensidad de luz presente.

5.7 Potenciómetros:

Otro sensor muy comúnmente usado y que a veces no se le considera es el clásico potenciómetro. Estos son muy útiles para medir movimientos y determinar la posición de un mecanismo determinado como por ejemplo el eje de una articulación de un brazo mecánico. Debido a que los potenciómetros poseen un ángulo de giro de aproximadamente 270°, no es posible usarlos en mecanismos que deben realizar un giro completo o bien mas de una vuelta sobre su eje. Como se aprecia en el diagrama, la forma de conexión es similar al caso del LDR, con la simple diferencia que en este caso el Potenciómetro es un divisor resistivo en si mismo y R3 se usa como simple limitador de corriente. Los valores son a modo de ejemplo y pueden usarse cualquier valor dentro de rangos aceptables. No muy bajos para no provocar un elevado consumo (10K es lo mas bajo recomendable) y no muy elevado ya que la corriente sería demasiado baja (no mas de 1.5M).

Existen dos tipos de potenciómetros en el mercado: Lineares y Logarítmicos (estos últimos usados normalmente en audio). Los del tipo linear varían su valor en forma constante (linealmente), los del tipo logarítmicos poseen una curva de variación del tipo logarítmica, esto es decir que

Universidad Autónoma Metropolitana Iztapalapa Proyecto Terminal I y II Emulación de la Sonda Rover

38

su valor aumenta lentamente en los extremos y luego los valores cambian cada vez más rápidamente. Los mas recomendados a la hora de sensar posiciones de mecanismos son los del tipo linear.

5.8 Sensores Digitales de uso general: Existe una gran variedad de sensores digitales. Muchos de ellos se conectan en forma similar, la cual es haciendo uso de una resistencia de Pull-Up conectada a VCC para mantener la entrada forzada a nivel alto, con lo cual el sensor la forzaría a nivel bajo cuando se active.

5.9 Switchs o llaves Uno de los sensores más básicos son los switchs (llaves o pulsadores). En la siguiente figura se puede apreciar el conexionado clásico de un switch a una entrada digital:

Para evitar pulsos de rebote al accionar el switch se puede usar un capacitor de bajo valor (0.1uF a 1uF) en paralelo con los bornes del switch.

5.10 Microswitch: Un tipo de switch muy útil en robótica es el microswitch como el que se puede apreciar en la siguiente figura:

Universidad Autónoma Metropolitana Iztapalapa Proyecto Terminal I y II Emulación de la Sonda Rover

39

Al presionar la lámina, el borne común C pasa a conectarse con el borne activado A. Si la lámina no está presionada, el borne C está unido con R (reposo). En la práctica el borne R viene identificado como NC (normal closed) y el borne A viene identificado como NO (normal open). La forma de conectar un microswitch a una entrada digital es la misma usada para todo tipo de switch (ver punto anterior). En la siguiente figura podemos ver uno de los usos característicos de estos microswitch:

En este ejemplo se los utiliza para la detección de obstáculos en un pequeño robot.

5.11 Sensores infrarrojos optoacoplados:

Existen dos tipos de sensores infrarrojos: reflectivo y de ranura. En ambos casos estos se basan en un conjunto formado por un fototransistor (transistor activado por luz) y un LED infrarrojo.

Universidad Autónoma Metropolitana Iztapalapa Proyecto Terminal I y II Emulación de la Sonda Rover

40

Reflectivo: Este tipo de sensor presenta una cara frontal en la cual se encuentran tanto el LED como el Fototransistor. Debido que no están colocados en forma enfrentada, la única forma posible para que la luz generada por el LED active el Fototransistor es haciendo reflejar esta luz en una superficie reflectiva. Teniendo en cuenta esto, estos sensores son muy útiles para detectar por ejemplo una línea negra sobre una superficie blanca o viceversa. Debido a que el fototransistor es afectado no solo por la luz del diodo sino por la luz ambiental, se deben desarrollar circuitos de filtrado para evitar una falsa activación debido a la luz ambiente.

De Ranura: En este tipo de sensor, ambos elementos (LED y Fototransistor) se encuentran alineados a la misma altura enfrentados a través de la ranura. El fototransistor se encontrará activado siempre que no se introduzca ningún elemento que obture la ranura.

En la figura de abajo se aprecia un uso clásico para este tipo de sensores.

Universidad Autónoma Metropolitana Iztapalapa Proyecto Terminal I y II Emulación de la Sonda Rover

41

El motor posee un disco ranurado acoplado a su eje. De esta forma podemos detectar el movimiento del motor, ya que al girar irá obturando y liberando el haz de luz entre el LED y el Fototransistor. En la siguiente figura se aprecia un conexionado típico para este tipo de sensores. En el caso del reflectivo se debería además modular el encendido del LED para luego poder realizar el filtrado necesario para evitar la activación por luz ambiente.

5.12 Sensor de Efecto Hall: Otro sensor muy útil y simple de usar es el de efecto Hall. Se trata de un semiconductor que actúa como detector de proximidad al enfrentarse al polo sur de un imán. Utilizando el efecto Hall para proporcionar una conmutación sin rebotes.

Universidad Autónoma Metropolitana Iztapalapa Proyecto Terminal I y II Emulación de la Sonda Rover

42

La distancia a la que produce la conmutación el campo magnético del imán es de alrededor de 2mm (dependiendo del modelo usado). Son muy usados en circuitos lógicos en donde se precisa conmutar sin que se produzcan rebotes, o en donde se quiera evitar el contacto mecánico. Como por ejemplo es posible realizar un circuito que mida las revoluciones a las que está girando una rueda.

Capitulo VI

6.1 Pruebas y conclusiones

6.2 ¿Cómo funciona nuestro robot?

6.3 Etapa de potencia. Para la etapa de potencia hemos implementado el circuito integrado L298N que soporta una corriente de hasta 4A y para nuestro propósito tiene un margen muy grande con respecto a la corriente que consumen nuestros motores; la máxima corriente que requiere manejar cada integrado es de 1.4A, este consumo se lleva a cabo en la etapa de tracción, debido a que, un solo integrado controla 4 motores, este arreglo se simplificó debido a que los 4 motores eran requeridos para llevar a cabo la misma instrucción, es decir, únicamente tienen 2 opciones –hacia delante o hacia atrás— y requieren llevar a cabo al mismo tiempo la misma opción. A continuación se presenta la tabla de verdad que utiliza este tipo de circuito

Universidad Autónoma Metropolitana Iztapalapa Proyecto Terminal I y II Emulación de la Sonda Rover

43

integrado y enseguida se presenta el circuito que hemos usado para la etapa de tracción, cabe hacer la aclaración que dentro del recuadro que emula al circuito integrado se encuentra la leyenda ½ L298N, esto lo único que nos quiere decir, es que como únicamente esta controlando un motor, utiliza únicamente la mitad del circuito integrado; es por eso que nosotros hemos hecho 2 figuras para controlar 2 motores y la unión de ambas representa un solo circuito integrado. La información dada fue tomada de hojas técnicas de ST Semiconductors y se encuentra disponible en la página electrónica del fabricante, este tipo de circuito también es fabricado por otras empresas como National Semiconductors o Motorola.

Universidad Autónoma Metropolitana Iztapalapa Proyecto Terminal I y II Emulación de la Sonda Rover

44

Diagrama de conexión del L298N para controlar las cuatro ruedas de tracción

Universidad Autónoma Metropolitana Iztapalapa Proyecto Terminal I y II Emulación de la Sonda Rover

45

6.4 Periscopio. Para la parte del movimiento de la cámara web y del brazo mecánico se han usado el mismo tipo de circuito y su conexión es similar. La diferencia de esta parte con la parte de tracción motriz es que aquí se cuenta con sensores para conocer la ubicación del motor a cada momento y nos sirve para que los motores no sigan avanzando y provoquen daño a la cámara debido a que el periscopio giraría sin ningún control.

6.5 Dirección de las ruedas frontales. Para la etapa de dirección se usan 2 servomotores con un ángulo máximo de 30º hacia la izquierda y 30º hacia la derecha, es decir un ángulo total de 60º. Estos servos están controlados por el un microcontrolador, el 68HC11. Los motores son alimentados por pulsos directos del microcontrolador.

6.6 Brazo mecánico. Esta parte del proyecto intenta emular la condición de un brazo humano con todas las limitantes como son presión que ejerce una mano, giro máximo del codo en una sola dimensión, y ángulo máximo del hombro, para lograr esto en el robot se ha dotado de sensores infrarrojos de ranura para evitar que los movimientos continúen sin control y de esta manera lograr un ángulo adecuado. Esta parte del proyecto utiliza drivers L298N

6.7 ¿Quién controla todo esto? Para controlar todo esto se hace uso de una LapTop que cuenta con un puerto paralelo mediante el cual se enviarán los datos u órdenes a ejecutar de las opciones que nos presenta un programa hecho en lenguaje C y con un ambiente gráfico que nos ofrece diversas opciones de movimiento y con diferentes grados de libertad para el robot.

6.8 Vistas en 3d. A continuación se presentan algunos isométricos del robot para una comprensión más amplia.

Universidad Autónoma Metropolitana Iztapalapa Proyecto Terminal I y II Emulación de la Sonda Rover

46

En esta vista lateral en 3D se ilustran el número de ruedas, también cuenta con un periscopio conteniendo en la parte superior una cámara web inalámbrica. El periscopio cuenta con 3 tipos de movimiento, horizontal al piso, vertical para subir o bajar la cámara y la cámara cuenta también con un motor que la hace girar en modo vertical al piso. Imagen creada con el software K3D.

En esta vista frontal en 3d se aprecia de frente un brazo articulado con tres movimientos asemejando un hombro humano, cuenta con un movimiento de hombro, codo y contiene una pequeña mano al frente que hace capaz al robot de tomar cosas pequeñas. El brazo también cuenta con sensores para que al llegar a cierto límite en sus movimientos el motor se detiene evitando posibles riesgos tales como la descomposición de los motores. Imagen creada con el software K3D

Universidad Autónoma Metropolitana Iztapalapa Proyecto Terminal I y II Emulación de la Sonda Rover

47

En esta vista trasera se puede apreciar el brazo mecánico y la cámara web adaptada en la parte superior del periscopio. Imagen creada con el software K3D

6.9 Placa para la conexión de motores

En seguida se muestra la forma de conexión de los motores a una tabla de fibra de vidrio para circuitos. No. Pin Código Descripción 1 – 2 MA1 motor 1 tracción (avance y retroceso del spirit) 3 – 4 MA2 motor 2 tracción (avance y retroceso del spirit) 4 – 6 MA3 motor 3 tracción (avance y retroceso del spirit) 7 – 8 MA4 motor 4 tracción (avance y retroceso del spirit) 9 – 10 Libre 11 – 12 MB1 Motor brazo 1 (soporte brazo) 13 – 14 MB2 Motor brazo 2 (extensión brazo) 15 – 16 MB3 Motor brazo 3 (manita) 17 – 18 Libre 19 – 20 MC1 Motor cámara (giro cámara) 21 – 22 MC2 Motor periscopio (arriba – abajo)

Universidad Autónoma Metropolitana Iztapalapa Proyecto Terminal I y II Emulación de la Sonda Rover

48

23 – 24 MC3 Motor periscopio (derecha - izquierda) 25 – 26 Libre 27 – 28 MD1 Motor dirección 1 (giro izquierda- derecha) 29 – 30 MD2 Motor dirección 2 (giro izquierda- derecha)

Para una mejor comprensión se muestran todas las posibles opciones de movimiento para el robot en la siguiente tabla con sus respectivos valores en binario y hexadecimal. También se incluyen los sensores y una breve descripción del sitio en que fueron colocados.

6.10 Tabla de movimientos

Universidad Autónoma Metropolitana Iztapalapa Proyecto Terminal I y II Emulación de la Sonda Rover

49

ENTRADAS

PUERTO A D7 D6 D5 D4 D3 D2 D1 D0 PA7 PA6 PA5 PA4 PA3 PA2 PA1 PA0 HEX OBSERVACION 0 0 0 0 0 0 0 0 00 Standby 0 0 0 0 0 0 0 1 01 Movimiento de Carro hacia delante 0 0 0 0 0 0 1 0 02 Movimiento de Carro hacia Atrás 0 0 0 0 0 0 1 1 03 Llantas de dirección giran derecha 0 0 0 0 0 1 0 0 04 Llantas de dirección giran izquierda 0 0 0 0 0 1 0 1 05 Llantas al centro (Alineación ) 0 0 0 0 0 1 1 0 06 Indefinido 0 0 0 0 0 1 1 1 07 Indefinido 0 0 0 0 1 0 0 0 08 Movimiento de Hombro Abajo 0 0 0 0 1 0 0 1 09 Movimiento de Hombro Arriba 0 0 0 0 1 0 1 0 0A Movimiento de codo Abajo 0 0 0 0 1 0 1 1 0B Movimiento de codo Arriba 0 0 0 0 1 1 0 0 0C Movimiento de mano Abajo 0 0 0 0 1 1 0 1 0D Movimiento de mano Arriba 0 0 0 0 1 1 1 0 0E Indefinido 0 0 0 0 1 1 1 1 0F Indefinido 0 0 0 1 0 0 0 0 10 Movimiento de Periscopio Abajo 0 0 0 1 0 0 0 1 11 Movimiento de Periscopio Arriba

0 0 0 1 0 0 1 0 12 Movimiento de Periscopio giro izquierda

0 0 0 1 0 0 1 1 13 Movimiento de Periscopio giro derecha 0 0 0 1 0 1 0 0 14 Movimiento Cámara abajo 0 0 0 1 0 1 0 1 15 Movimiento Cámara arriba 0 0 0 1 0 1 1 0 16 Indefinido 0 0 0 1 0 1 1 1 17 Indefinido 0 0 0 1 1 0 0 0 18 Retrocede carro y giro izquierdo 0 0 0 1 1 0 0 1 19 Retrocede carro y giro derecho 0 0 0 1 1 0 1 0 1A Avance carro y giro izquierdo 0 0 0 1 1 0 1 1 1B Avance carro y giro derecho

0 0 0 1 1 1 0 0 1C *Retrocede carro y alineación de llantas

0 0 0 1 1 1 0 1 1D *Avanza carro y alineación de llantas

0 0 0 1 1 1 1 0 1E Abajo hombro y abajo codo 0 0 0 1 1 1 1 1 1F Abajo hombro y arriba codo 0 0 1 0 0 0 0 0 20 Arriba hombro y abajo codo 0 0 1 0 0 0 0 1 21 Arriba hombro y arriba codo 0 0 1 0 0 0 1 0 22 Abajo hombro y abajo mano 0 0 1 0 0 0 1 1 23 Abajo hombro y arriba mano 0 0 1 0 0 1 0 0 24 Arriba hombro y abajo mano 0 0 1 0 0 1 0 1 25 Arriba hombro y arriba mano 0 0 1 0 0 1 1 0 26 Abajo codo y abajo mano 0 0 1 0 0 1 1 1 27 Abajo codo y arriba mano 0 0 1 0 1 0 0 0 28 Arriba codo y abajo mano 0 0 1 0 1 0 0 1 29 Arriba codo y arriba mano 0 0 1 0 1 0 1 0 2A Abajo periscopio y abajo cámara 0 0 1 0 1 0 1 1 2B Abajo periscopio y arriba cámara 0 0 1 0 1 1 0 0 2C Arriba periscopio y abajo cámara

Universidad Autónoma Metropolitana Iztapalapa Proyecto Terminal I y II Emulación de la Sonda Rover

50

SALIDAS

PUERTO F M4B M4A M3B M3A M2B M2A M1B M1A PB7 PB6 PB5 PB4 PB3 PB2 PB1 PB0 HEX OBSERVACION 0 0 0 0 0 0 0 0 00 Sin movimiento

0 0 0 0 0 0 0 1 01 Movimiento de Carro hacia Adelante

0 0 0 0 0 0 1 0 02 Movimiento de Carro hacia Atrás

0 0 0 0 0 1 0 0 04 Llantas de dirección giran derecha

0 0 0 0 1 0 0 0 08 Llantas de dirección giran izquierda

0 0 0 0 1 1 0 0 0C Llantas de dirección se alinean al centro

0 0 0 1 0 0 0 0 10 Movimiento de Hombro Arriba

0 0 1 0 0 0 0 0 20 Movimiento de Hombro Abajo

0 1 0 0 0 0 0 0 40 Movimiento de codo Arriba 1 0 0 0 0 0 0 0 80 Movimiento de codo Abajo 1 0 1 0 0 0 0 0 A0 Motores indicados se mueven

PUERTO B M8B M8A M7B M7A M6B M6A M5B M5A PF7 PF6 PF5 PF4 PF3 PF2 PF1 PF0 HEX OBSERVACION 0 0 0 0 0 0 0 0 00 Sin movimiento 0 0 0 0 0 0 0 1 01 Hacia la derecha mano 0 0 0 0 0 0 1 0 02 Hacia la izquierda mano

0 0 0 0 0 1 0 0 04 Movimiento de Periscopio Arriba

0 0 0 0 1 0 0 0 08 Movimiento de Periscopio Abajo

0 0 0 1 0 0 0 0 10 Movimiento de Periscopio giro derecha

0 0 1 0 0 0 0 0 20 Movimiento de Periscopio giro izquierda

Universidad Autónoma Metropolitana Iztapalapa Proyecto Terminal I y II Emulación de la Sonda Rover

51

0 1 0 0 0 0 0 0 40 Movimiento Cámara arriba 1 0 0 0 0 0 0 0 80 Movimiento Cámara abajo 1 0 1 0 1 0 0 0 A8 Motores indicados se mueven

PUERTO D PD7 PD6 PD5 PD4 PD3 PD2 PD1 PD0 HEX OBSERVACION 0 0 0 0 0 0 0 0 00 Sin movimiento

0 0 0 0 0 0 1 1 01 Habilitación de motores de avance

Después de resolver el problema de cual o cuales movimientos deseábamos que ejecutara el robot procedimos a realizar un diagrama para una comprensión rápida de cómo debía de estructurarse el robot. Esto fue hecho para más tarde avocarse a la solución e implementación electrónica, sin duda que antes de hacer circuitos siempre es bueno y una buena costumbre realizar un diagrama previo para conocer el problema a fondo y la solución resultará más fácil.

Universidad Autónoma Metropolitana Iztapalapa Proyecto Terminal I y II Emulación de la Sonda Rover

52

Vale dar una breve descripción del diagrama, empezando por la parte superior encontramos una laptop conteniendo un puerto paralelo, como este puerto paralelo entrega poca corriente es necesario colocar unos optoacopladores –un optoacoplador por cada bit de salida- después nos encontramos con un microprocesador el 68HC11F1 que es el encargado del control total de los dispositivos periféricos tales como sensores, drivers para los motores y dirección, también nos encontramos con el control de los servomotores que son utilizados por la dirección, el control se logra mediante un pic; el 16F628 controlado por el micro mediante solo 2 bits de control –solo tiene 3 opciones derecha, izquierda o centro- nuevamente encontramos optoacopladores para evitar que el micro sufra daños debido a que los drivers consumen hasta 1A de corriente .los reguladores de voltaje son del tipo variable, el LM317 , mientras que para surtir energía cuenta con paneles solares colocados en arreglos que surten 12V a la batería que es una de las usadas en motocicletas, esta a su vez cuenta con un circuito indicador de voltaje cuando el voltaje desciende hasta 8V, suena una chicharra avisadora o se enciende un led como es este caso, para que la batería se recargue, esto debido a

Universidad Autónoma Metropolitana Iztapalapa Proyecto Terminal I y II Emulación de la Sonda Rover

53

que los paneles solares no surten la corriente necesaria para el buen funcionamiento del robot.

6.11 Circuitos diseñados

Circuito interfaz para el puerto paralelo que fue usado en el proyecto.

En la figura anterior se muestra el circuito interfaz para el puerto paralelo, a veces es necesario colocar optoacopladores para proyectos grandes que dependan del puerto paralelotas salidas de corriente del uln2003 nos proveen hasta 0.5A capaz de mover motores grandes, mientras que la parte de abajo del circuito con el 74ls245 es ideal para controlar servomotores.

Universidad Autónoma Metropolitana Iztapalapa Proyecto Terminal I y II Emulación de la Sonda Rover

54

Para la conexión de los drivers se diseñó el siguiente circuito, cuenta con un microprocesador el 68HC11F1 dedicado al control total de los dispositivos, también se muestra la imagen lista para ser impresa en una tabla de circuitos en tamaño real. En el diseño de circuitos se utilizó el software Tagle, en la bibliografía se indica el sitio de Internet donde usted puede conseguir el software.

Circuito de control de los motores totales del robot

Universidad Autónoma Metropolitana Iztapalapa Proyecto Terminal I y II Emulación de la Sonda Rover

55

Universidad Autónoma Metropolitana Iztapalapa Proyecto Terminal I y II Emulación de la Sonda Rover

56

Universidad Autónoma Metropolitana Iztapalapa Proyecto Terminal I y II Emulación de la Sonda Rover

57

Para el circuito indicador de batería baja se diseñó el siguiente circuito, usando un Op Amp 741 como comparador y con el potenciómetro de 100kΩ decidimos el

Universidad Autónoma Metropolitana Iztapalapa Proyecto Terminal I y II Emulación de la Sonda Rover

58

nivel de bajo voltaje, cuando la batería llega a este voltaje se enciende el led o suena el buzzer, dependiendo que se haya conectado.

Circuito indicador de batería baja.

Fotografías del robot en tamaño natural

Universidad Autónoma Metropolitana Iztapalapa Proyecto Terminal I y II Emulación de la Sonda Rover

59

Fotografía de frente del robot.

Universidad Autónoma Metropolitana Iztapalapa Proyecto Terminal I y II Emulación de la Sonda Rover

60

Fotografía parte trasera del robot

Universidad Autónoma Metropolitana Iztapalapa Proyecto Terminal I y II Emulación de la Sonda Rover

61

En plena construcción del robot.

Universidad Autónoma Metropolitana Iztapalapa Proyecto Terminal I y II Emulación de la Sonda Rover

62

6.12 Conclusiones Es mucho lo que se ha hecho en el área de la programación para la robótica; sin embargo aún no existe un lenguaje ideal para la programación de los robots. Son muchos los lenguajes creados hasta ahora, en parte las causas principales de esta amplia gama de lenguajes inadecuados o poco efectivos son:

1. Cada lenguaje se ha diseñado tomando como base un robot diseñado específicamente para que realice determinada tarea, lo que anula su universalidad y la posibilidad de emplearlo en modelos diferentes.

2. Los lenguajes, en muchos casos, se dirigen hacia aplicaciones diferentes, lo que limita grandemente su utilización para la programación de otras tareas.

Hoy en el mundo existe un interés general para lograr un sistema de percepción del entorno cada vez más avanzado. Para esto se hace necesaria la ampliación de la Inteligencia Artificial, que interviene en la valoración del espacio exterior o entorno y determina los planes de acción alternativos o lo que es lo mismo la respuesta a la interacción con ese medio. Por otra parte, cada vez más vemos máquinas interactuando en nuestro medio de vida como por ejemplo robots automatizando la producción industrial, o nos enteramos que se llevan a cabo actividades de manera remota como las operaciones quirúrgicas, por lo que no debe de sorprendernos que en un futuro no muy lejano encontremos robots capaces de realizar actividades por sí mismos sin la necesidad de que los humanos los programen. Los límites de la robótica actual se pueden apreciar en contraste con las expectativas previstas por Joseph Engelberger8 para la robótica de los ochenta:

a) Seis articulaciones de precisión entre la base del robot y el extremo de un manipulador.

b) Programación sencilla e intuitiva. c) Adaptación al medio mediante estímulos sensoriales. d) Margen de movimientos de 0.3mm. e) Capacidad de manipular pesos de hasta 150 Kg. f) Control de movimiento punto a punto y de seguimiento de trayectorias. g) Sincronización con blancos móviles. h) Compatibilidad con ordenadores personales. i) Alta fiabilidad (durante al menos 400 horas de trabajo). j) Visión artificial que incluya al menos capacidad de orientación y

reconocimiento. k) Sensores táctiles. l) Coordinación de las distintas partes de la unidad.

8 Joseph Engelberg fue el primero en presentar un brazo mecánico, anteriormente había creado la primera empresa de robots junto con George Devil.

Universidad Autónoma Metropolitana Iztapalapa Proyecto Terminal I y II Emulación de la Sonda Rover

63

m) Capacidad de corrección de trayectorias en línea. n) Movilidad. o) Optimización de movimiento. p) Conservación de la energía. q) Partes de propósito general. r) Comunicación por voz.

Engelberger aseguraba que los primeros diez puntos ya se habían conseguido a principios de los ochenta. Los sistemas sensoriales por visión y tacto, si bien existen, se limitan a aplicaciones muy básicas y específicas con bajo nivel de detalle debido a la enorme carga computacional inherente al procesado de imagen. En lo que respecta al movimiento, se progresa, aunque con menor precisión de la deseable debido a imperfecciones, deslizamiento y problemas mecánicos en general. La energía necesaria para operar una unidad robótica ha disminuido mucho desde los años 70, y se han conseguido unidades capaces de funcionar con baterías solares. No obstante debe seguirse trabajando en este punto, especialmente en robots destinados a desplazarse en exteriores y entornos hostiles, donde la autonomía del agente es un factor crítico. Respecto a la comunicación por voz, en tanto que existe la compatibilidad con ordenadores personales y estos soportan paquetes de reconocimiento de voz distribuidos de forma comercial, es un problema resuelto de forma cada vez más satisfactoria. Para lograr que este proyecto llegara a feliz término debimos de superar varios obstáculos que se fueron presentando en el transcurso del diseño y ejecución del proyecto, como por ejemplo que actualmente y debido al poco interés para crear robots es muy difícil conseguir motores de DC adecuados, por el momento se debe de echar mano del ingenio y la habilidad para lograr una buena adaptación de este tipo de materiales, por otra parte para conseguir engranajes que cumplieran con las expectativas formadas para el robot fue sumamente complicado debido a que casi no los hacen y mandarlos a hacer representa un gasto bastante elevado, probablemente uno de los problemas por resolver a futuro sea el diseñar este tipo de piezas para hacer que los costos bajen, para lograr acoplar todas las partes que usaban este tipo de dispositivos, utilizamos engranes de casi cualquier cosa, desde engranes de aluminio que contienen las copiadoras hasta engranes de teflón usados por las impresoras antiguas. Otro problema que debimos de resolver fue la utilización de los servomotores ya que los que existen actualmente son muy pequeños y demasiado caros es por esto que usamos motores de DC adaptados con los circuitos de los servomotores y ya únicamente fue conocer el tiempo de los pulsos que eran enviados por el microntrolador 68HC11 para saber que ángulo nos darían y modificarlos según nuestras necesidades.

Universidad Autónoma Metropolitana Iztapalapa Proyecto Terminal I y II Emulación de la Sonda Rover

64

Actualmente las soluciones para producir energía eléctrica de manera alternativa mantienen un costo elevado y esto representa un problema a la hora de diseñar circuitos alimentados con energía solar tal como sucedió en la elaboración de este proyecto donde debido al alto costo de paneles solares de alta eficiencia nos vimos obligados a utilizar celdas solares de kits educativos diseñados para convertir energía solar a energía eléctrica con una baja eficiencia.

6.13 Perspectivas Las perspectivas para equipos robóticos son impresionantes, ya que su desarrollo acompaña el Progreso de equipos de computación, las exigencias de la exploración espacial y muchas otras aplicaciones de gran riesgo para el hombre o directamente imposibles para él. Es ahí donde los robots del siglo XXI, podrán mostrar su capacidad operativa y su condición de “imprescindibles” en el actual desarrollo de la civilización humana.

Universidad Autónoma Metropolitana Iztapalapa Proyecto Terminal I y II Emulación de la Sonda Rover

65

6.14 Bibliografía Páginas de Internet visitadas para la realización de este documento. http://www.futaba-rc.com/ http://www.motorola.com/ http://www.hitecrcd.com/ http://www.hobbico.com/ http://www.national.com/ http://www.alldatasheets.com http://www.lvr.com/parprtib.htm#Chapter1 http://www.x-robotics.com/sensores.htm http://www.superrobotica.com/Sensores.htm http://www.superrobotica.com/Sensores.htm http://www.micropik.com/provisional/pag_sensores.htm http://www.thetech.org/robotics/universal/page02.html http://www.microrobotna.com/discription/hexapod.htm http://www.parallaxinc.com http://www.stampsenclase.com http://www.mundobot.com Libros usados en el presente trabajo Maquinas y accionamientos eléctricos. Roberto Faure Benito. Primera Edición. 2000 ROBÓTICA INDUSTRIAL. FUNDAMENTOS Y APLICACIONES. Arantxa Rentería Bilbao; María Rivas Ardisana (Editorial McGraw-Hill). Primera edición 2000. COIFFET, P.: Elementos de robótica. Editorial Revolucionaria. ANGULO, J. M.: Curso de robótica. Editorial Revolucionaria. DUEÑAS, F. A.: La Robótica. www.monografias.com FGL "Robótica: Control, Detección, Visión e Inteligencia", K.S. Fu, R.C. González, C.S.G. Lee. McGraw-Hill, ISBN 84-7615-214-0

Universidad Autónoma Metropolitana Iztapalapa Proyecto Terminal I y II Emulación de la Sonda Rover

66

GWNO "Robótica Industrial: Tecnología, programación y aplicaciones", M. P. Groover, M. Weiss, R. N. Nagel, N. G. Odrey, McGraw-Hill, ISBN 0-07-024989-X Tay "Control Robótico", P. M. Taylor, Eds. Ceac, ISBN 0-333043821-3 Min "Robótica: La última frontera de la alta tecnología", M. Minsky et al., Ed. Planeta, ISBN 84-320-7885-9 Oll "Evolución y perspectivas de la Robótica", A. Olero, Sec. de publicaciones Univ. de Málaga, ISBN 84-7496-216-1 The ultimate palm robot. Kevin Mukhar, Dave Jhonson. McGraw Hill.2003. PDA Robotics. Douglas H. Williams. Mc Graw Hill. 2003 CANDELAS, S.(UNAM) : Lenguajes de programación de los Robots http://www.monografias.com Parallel Port Complete: Programming, interfacing, and using the PC´s parallel printer port Jan Axelson. 1996, Lakeview Research. Programming the Parallel Port: Interfacing the PC for Data Acquisition & Process Control.by Dhananjay V. Gadre.1998, CMP Books 308 pagesIncludes source code in C for DOS and Linux. Software utilizado en la realización de este trabajo. Diseño gráfico. K3D http://k3d.org Solid Edge http://www.solidedge.com/ Diseño de circuitos

Universidad Autónoma Metropolitana Iztapalapa Proyecto Terminal I y II Emulación de la Sonda Rover

67

Eagle www.cadsoft.de Otros Apuntes Universidad La Salle – Ing. Cibernética Universidad de Valencia. Robótica