licenciatura en ingenierÍa electrÓnica148.206.53.84/tesiuami/uami14305.pdf · 2.3 circuito...

54
DIVISIÓN DE CIENCIAS BÁSICAS E INGENIERÍA LICENCIATURA EN INGENIERÍA ELECTRÓNICA PROYECTO TERMINAL “INTERFAZ PARA MANEJO VEHICULAR ORIENTADO A PARAPLEJICOS” ASESORES: LAURA EUGENIA ORTIZ BALBUENA ALEJANDRO MARTÍNEZ GONZÁLEZ ALUMNO: CÉSAR VILLEDAS SÁNCHEZ AÑO DE ELABORACIÓN: 2007

Upload: lymien

Post on 07-Oct-2018

214 views

Category:

Documents


0 download

TRANSCRIPT

DIVISIÓN DE CIENCIAS BÁSICAS E INGENIERÍA

LICENCIATURA EN INGENIERÍA ELECTRÓNICA

PROYECTO TERMINAL

“INTERFAZ PARA MANEJO VEHICULAR ORIENTADO A PARAPLEJICOS”

ASESORES:

LAURA EUGENIA ORTIZ BALBUENA ALEJANDRO MARTÍNEZ GONZÁLEZ

ALUMNO:

CÉSAR VILLEDAS SÁNCHEZ

AÑO DE ELABORACIÓN:

2007

- 1 -

A mi madre Rosa María, Por estar siempre ahí cuando

Más la necesito, aún allá, En el paraíso.

A mi padre Hipólito,

Por su ejemplo, cariño, Apoyo y confianza.

A mis tíos Esther y Facundo,

Por darme el trato que se le da a un hijo.

A mis Hermanos Nicolás, Hugo, Esther, Gloria, Juanita, Oscar y demás personas importantes en mi vida.

En memoria de mi abuelita Leonor y de mi tío Margarito.

- 2 -

Índice

INTRODUCCION ............................................................................................................................................ - 3 -

CAPITULO I. NIVEL DE REACCIÓN........................................................................................................... - 5 -

1.1 CODIFICADOR DE POSICIÓN ....................................................................................................................... - 6 -

1.2 INDICADOR DE POSICIÓN INICIAL .............................................................................................................. - 9 -

CAPITULO II. NIVEL DE CONTROL ......................................................................................................... - 10 -

2.1 ESQUEMA DE LA INTERFAZ...................................................................................................................... - 11 -

2.2 ESTRATEGIA A SEGUIR ............................................................................................................................ - 11 -

2.3 CIRCUITO ELECTRÓNICO DE LA INTERFAZ ............................................................................................... - 14 -

2.4 EL DRIVER L293B................................................................................................................................... - 14 -

2.5 CONFIGURACIÓN DE LOS PUERTOS DEL PIC16F84A ............................................................................... - 16 -

2.6 PROGRAMA DE LA INTERFAZ ................................................................................................................... - 17 -

2.6.1 Principal......................................................................................................................................... - 17 -

2.6.2 Acelerador en posición inicial AEPI.............................................................................................. - 18 -

2.6.3 Freno en posición inicial FEPI ...................................................................................................... - 19 -

2.6.4 Acelera ó frena Acelera_Frena ..................................................................................................... - 20 -

2.6.5 Acelera ........................................................................................................................................... - 21 -

2.6.6 Frena .............................................................................................................................................. - 23 -

2.6.7 Retardo_100ms............................................................................................................................... - 24 -

2.6.8 Código completo ............................................................................................................................ - 26 -

CAPITULO III. NIVEL FÍSICO ................................................................................................................... - 29 -

3.1 MOTORES DE C.C. ................................................................................................................................... - 30 -

3.2 CIRCUITOS IMPRESOS ............................................................................................................................. - 31 -

3.3 COMPONENTES ELECTRÓNICOS. .............................................................................................................. - 33 -

3.4 ASPECTO FÍSICO DE LA INTERFAZ ............................................................................................................ - 34 -

CAPITULO IV. ANEXOS .............................................................................................................................. - 35 -

4.1 SISTEMAS EXISTENTES ........................................................................................................................... - 36 -

4.2 CARACTERÍSTICAS PRINCIPALES: L293B, PIC16F84A, CNY70 Y M7404.............................................. - 38 -

4.2.1 El PIC16F84A................................................................................................................................ - 38 -

4.2.2 El sensor óptico CNY70 ................................................................................................................. - 41 -

4.2.3 EL Driver L293B............................................................................................................................ - 45 -

4.2.4 La compuerta inversora M7404 ..................................................................................................... - 49 -

CONCLUSIONES Y RECOMENDACIONES............................................................................................ - 51 -

BIBLIOGRAFÍA ............................................................................................................................................ - 52 -

- 3 -

INTRODUCCION

En el presente reporte se describe el diseño de una interfaz, que adaptada a un automóvil automático, ayuda a una persona parapléjica a conducir dicho vehículo. El proyecto desarrollado tiene como uno de sus objetivos mejorar la movilidad de personas discapacitadas, pues pensamos que el automóvil como medio de transporte resulta de gran importancia para lograr una poca de libertad para quienes, ya de por si, tienen limitada su movilidad.

En 1901 Carl Benz, padre del automóvil, aseguraba que “no más de un millón de personas en el mundo serían capaces de aprender a conducir”. De esta forma, hoy en día se ha demostrado que no se requiere tener características especiales para poder conducir un automóvil, ni el número de personas capaces está por debajo del millón, sino que cualquier ser humano, después de un breve periodo de formación y sin especial incidencia de sexo, edad o condición social, puede aprender a conducir sin demasiadas dificultades. Por otro lado, la movilidad para los discapacitados es un derecho bien asentado, tanto en los párrafos de la constitución política de México; en la cual en su articulo primero menciona lo siguiente: “Queda prohibida toda discriminación motivada por origen étnico o nacional, el género, la edad, las capacidades diferentes, la condición social, las condiciones de salud, la religión, las opiniones, las preferencias, el estado civil o cualquier otra que atente contra la dignidad humana y tenga por objeto anular o menoscabar los derechos y libertades de las personas”; como en los derechos humanos de las personas con discapacidad en los cuales se hace referencia al derecho al libre desplazamiento. Cuando se trata de diseñar un sistema que emule la función de una extremidad física del cuerpo humano, es necesario detenerse a pensar en los movimientos, como los realizamos y la forma en que se ejecutan de manera natural. De forma específica, en la interfaz realizada, las extremidades inferiores son las que se ven sustituidas por el sistema diseñado. Esté sistema es controlado por una palanca, la cual cuenta con un punto neutro; sí la palanca es empujada hacia delante el auto acelera de acuerdo a la distancia que se alejó la palanca del punto neutro; sí se hace otro movimiento alejando aun más la palanca, el auto acelera más; y sí en otro movimiento la palanca es acercada al punto neutro, entonces el auto desacelera; la manera de frenar es jalando la palanca, de manera similar a acelerar la magnitud del frenado depende de la distancia que separa a la palanca del punto neutro. De está forma la persona que conduce no puede acelerar y frenar a la vez, tal como lo haría cualquier persona que conduce un automóvil automático. Al plantear la construcción de la interfaz del automóvil retomamos la clasificación de la TorreBot, la cual cuenta con seis niveles, de los cuales el nivel físico, el nivel de reacción y el nivel de control son los que utilizamos para diseñar y construir dicha interfaz. Los componentes electrónicos básicos en nuestro diseño son: un microcontrolador PIC16F84A, cuatro sensores ópticos CNY70 que se en cargan de formar una palabra que nos indica la posición de la palanca de control de velocidad, y el driver L293B que controla la dirección de giro de dos motores de corriente continua, los cuales actúan directamente en los sistemas de acelerado y frenado del automóvil.

- 4 -

Aunque existe gran cantidad de opciones en sistemas para las minusvalías inferiores, México cuenta con escasas o nulas compañías que se dediquen a realizar estas adaptaciones, es por ello que los discapacitados tienen que utilizar la creatividad para hacerle las adaptaciones, algunas improvisadas, a sus vehículos y son pocos los que tienen la posibilidad de colocar dispositivos adecuados. Creemos que el diseño que reportamos, es una opción adecuada y que además puede ser la base para desarrollos más complejos en este tipo de sistemas.

- 5 -

Capitulo I. Nivel de reacción

Nivel de reacción

- 6 -

El nivel de reacción esta formado por el conjunto de sensores y los sistemas básicos para el manejo de la interfaz, esto se refiere a las diferentes señales de entrada que recibirá el microcontrolador PIC16F84A.

1.1 Codificador de posición

Nos interesa generar una señal que nos indique la posición en que se encuentra la

palanca de control de velocidad, es decir, si se le esta indicando al sistema que acelere, frene ó que se encuentra en una posición neutral. Para ello el sensor óptico CNY70 en conjunto con una numeración impresa en código binario nos son suficientes.

El CNY70 es un sensor óptico reflexivo con salida a transistor, donde el emisor de luz

y el receptor están colocados en la misma dirección para detectar la presencia de un objeto por medio del empleo de la reflexión del haz de luz infrarroja sobre el objeto, la distancia del objeto reflectante debe estar entre los 5 y 10 mm de distancia.

Fig. 1-1 Sensor óptico reflexivo con salida a transistor CNY70

Para conectar estos dispositivos hay que polarizarlos, ésa es la función de las

resistencias del circuito de la figura 1-2, donde se muestra la conexión para la cual la salida en alto es cuando detecta el color blanco.

Fig. 1-2 Circuito de conexión del CNY70

- 7 -

Funcionamiento del circuito: Detecta blanco → transistor saturado → entrada al inversor “0” → entrada al µC “1” Detecta negro → transistor en corte → entrada al inversor “1” → entrada al µC “0”

Debido a que cuando actuamos con las piernas sobre los pedales de un automóvil, el desplazamiento que hacemos en éstos, no se realiza con demasiada precisión, podemos hacer una división de la distancia que recorren los pedales en siete partes, es decir siete niveles para acelerar y siete para frenar. Éste número de movimientos son los mismos que retomamos para identificar la posición de la palanca de control de velocidad.

Es suficiente utilizar cuatro sensores CNY70 y un código binario de cuatro bits

impreso en papel fotográfico de la forma que se muestra en la figura 1-3, para enviar la señal de posición al microcontrolador.

15

14

13

12

11

10

9

8

7

6

5

4

3

2

1

Fig. 1-3 Código binario con 4 bits

En la palanca de control de velocidad se ubica un conector que contiene un arreglo de cuatro sensores CNY70, ésta se desplaza sobre la superficie del papel fotográfico que contiene el código binario, generando así la señal de posición que recibirá el microcontrolador.

Fig. 1-4 Circuito con sensores CNY70, cuatro bits

µC

- 8 -

Determinamos como punto neutro, cuando los sensores esten ubicados en un 8 decimal, del 9 al 15 se indica que el sistema debe acelerar y del 1 al 7 se indica que debe frenar.

15

14

13

12

11

10

9

8

7

6

5

4

3

2

1

Fig. 1-5 Funcionamiento del codificador de posición, cuatro bits

En un bus de cuatro bits se envía la posición de la palanca de control de velocidad, codificada en numeración binaria, hacia el microprocesador.

a) b)

Fig. 1-6 a) Codificador de posición, b) Arreglo de sensores CNY70

Arreglo de sensores CNY70

Acelera

Frena

Punto neutro

- 9 -

1.2 Indicador de posición inicial

Un par de interruptores nos ayudan a inicializar los motores que actúan sobre los sistemas para acelerar y frenar del automóvil en un punto inicial, es decir en el punto neutro. Utilizamos dos interruptores como los que se muestran en la figura 1-7, uno para el sistema de frenado y otro para el de acelerado. La importancia de éstos la explicaremos en los dos siguientes capítulos

Fig. 1-7 Switch, indica posición inicial

De manera general el funcionamiento de estos interruptores es el siguiente: cuando se enciende la interfaz el microcontrolador envía la señal de mover los motores en dirección de la posición inicial correspondiente, hasta que los interruptores se cierren y así el microcontrolador reciba la señal de que han sido ubicados en dicho estado. El siguiente circuito genera la señal de posicionamiento inicial del sistema.

Fig. 1-8 Circuito de conexión del switch

Funcionamiento del circuito: Switch cerrado → Pedal en posición inicial → Entrada al inversor “0”→ Entrada al µC “1” Switch abierto → Pedal fuera de posición inicial → Entrada al inversor “1” → Entrada al µC “0”

S. A S. F

µC µC

- 10 -

Capitulo II. Nivel de control

Nivel de control

- 11 -

El nivel de control incluye los circuitos que relacionan las salidas de los sensores con las unidades motoras. Partiendo de un microcontrolador busca dotar al sistema de la capacidad para procesar la información obtenida por los sensores, así como actuar de una manera controlada sobre las unidades motoras.

2.1 Esquema de la interfaz

En general la interfaz esta conformada por tres bloques: palanca de control de

velocidad, microcontrolador y las unidades motoras, visto desde otro punto, el electrónico, la interfaz la componen un codificador de posición, el microcontrolador que procesa los datos y dos motores de corriente continua.

Fig. 2-1 Diagrama a bloques de la interfaz La palanca de control cuenta con un codificador de posición que transmite la señal al microcontrolador, la información es procesada y traducida para que al final llegue a los motores, del bloque de las unidades motoras se envía una señal al microcontrolador que trataremos mas adelante.

2.2 Estrategia a seguir

Antes de realizar el programa fijamos la estrategia que debe seguir la interfaz, para

ello antes desarrollamos tres conceptos primordiales que se mencionan en el desarrollo de la estrategia.

Posición inicial, este concepto esta ligado básicamente a la posición de los motores

que actúan sobre los pedales del automóvil y nos indica la posición natural de cada uno de los pedales.

Posición neutral, hace regencia a la posición de la palanca de control de velocidad, en

este caso nos dice que no se acelere, y no se frene, es decir ubicar los motores en posición inicial.

MICROCONTROLADOR

PALANCA DE CONTROL DE VELOCIDAD

UNIDADES MOTORAS

- 12 -

Estado anterior, se refiere a la posición inmediata anterior de la palanca de control de velocidad.

Además es preciso recordar que el codificador de posición entrega, en este caso al

microcontrolador, la magnitud de un número, lo que nos permite hacer comparaciones matemáticas y procesar la información.

Como ya hemos mencionado anteriormente, para realizar la estrategia de cualquier

diseño de algún sistema que remplace total ó parcialmente al ser humano, es necesario detenerse a pensar en los movimientos lógicos y naturales que se realizan en situación normal. Para nuestro diseño, tomamos en cuenta que nunca se acelere y frene el automóvil al mismo tiempo, además, cuando el conductor desee acelerar la palanca de control deberá desplazarse hacia adelante y sí en el caso contrario desea frenar, el movimiento de la palanca deberá ser hacia atrás.

Vamos a utilizar algunas variables que van a contener posiciones de la palanca de

control, estas son: posición anterior de acelerador (PAA), posición anterior de freno (PAF), posición de palanca (P), estado anterior (A), y también hacemos uso de la constante posición neutral (N) igual al valor de posición inicial, en este caso tiene el valor 8.

Cuando encendemos el auto el sistema debe de asegurarse de entrar en posición

inicial, esto nos permitirá tener siempre la misma referencia de inicio. Primeramente se posiciona el motor del acelerador y la variable PAF se carga con el valor de posición inicial, enseguida se posiciona el motor del freno y la variable PAA se carga con el valor de posición inicial, una vez sucedido lo anterior se inicia la lectura cíclica de la posición de la palanca de control de velocidad.

El ciclo comienza cuando el microcontrolador lee la posición de la palanca de control,

entonces se compara la posición de la palanca con la posición neutra, sí estas son iguales el microcontrolador vuelve a leer la posición de la palanca, hasta que la posición sea diferente a la posición neutra, como consecuencia existen dos opciones:

1.- El valor de la posición de la palanca de control es menor a la posición neutra. 2.- El valor de la posición de la palanca de control es mayor a la posición neutra. En el primero de los casos el motor del acelerador se ubica en posición inicial,

entonces se comparan los valores de PAF con la posición actual de la palanca (P), y en este punto existen dos opciones. Sí PAF es menor que P entonces se reduce la magnitud del freno, por el contrario, sí PAF es mayor que P entonces se frena con mayor intensidad. El valor de la posición actual pasa a ser la PAF, al igual que la variable de estado anterior, el ciclo vuelve a iniciar con la lectura de la posición de la palanca de control de velocidad.

En la segunda opción primeramente el motor del freno se ubica en la posición inicial,

enseguida se compara PAA y P, sí la posición de la palanca es menor a la posición anterior del acelerador se reduce el nivel de aceleración, por el contrario si PAA es mayor a P se acelera con mayor magnitud. El valor que contiene P es otorgado a PAA al igual que a la variable de estado anterior. El ciclo vuelve a iniciar con la lectura de la posición actual.

- 13 -

Fig. 2.2 Diagrama de flujo de estrategia

P<N

PAF<P PAF>P PAA>P PAA<P

Encendido

El motor del freno se ubica en posición inicial

El motor del acelerador se ubica en posición inicial

Posición anterior de acelerador (PAA) igual a posición inicial

Posición anterior de freno (PAF) igual a posición inicial

El microprocesador checa la posición de la palanca de control de velocidad

Compara posición de palanca (P) con

posición

neutral (N)

El motor del acelerador se ubica en posición inicial

El motor del freno se ubica en posición inicial

Compara PAF con P

Compara PAA con P

Aumenta acelerador Reduce acelerador Aumenta freno Reduce freno

PAF igual a P PAA igual a P

P=N P>N

Estado Anterior (A) igual a P

- 14 -

2.3 Circuito electrónico de la interfaz

El circuito está constituido con el codificador de posición, los indicadores de posición inicial, el microcontrolador PIC16F84A, el driver L293B, dos motores de corriente continua, y otros dispositivos necesarios para el funcionamiento de los dispositivos antes mencionados.

Fig. 2-3 Circuito electrónico de la interfaz

Como podemos observar en la figura anterior, el codificador de posición y los interruptores indicadores de posición inicial se encuentran incluidos en el diagrama con cada uno de sus componentes.

Para poder conformar la señales de los sensores CNY70 a la entrada del microcontrolador hemos utilizado compuertas inversoras, que además tienen la ventaja que en el mismo chip 74LS04 contamos con seis inversores.

2.4 El driver L293B

El L293B es un driver de cuatro canales capaz de proporcionar una corriente de salida de hasta 1 A por canal. Cada canal es controlado por señales de entrada compatibles TTL y cada pareja de canales dispone de una señal de habilitación que desconecta las salidas de los mismos.

Fig. 2-4 Diagrama del driver L293B

PIC16F84A

L293B

- 15 -

La señal de control EN1 activa o desactiva la pareja de canales formada por los drivers 1 y 2, la señal EN2 controla la pareja de drivers 3 y 4. Las salidas OUTn se asocian con las correspondientes INn. Nos interesa que el giro de los motores sea en ambos sentidos, de esta manera se puede incrementar o disminuir el frenar y acelerar del automóvil. Es suficiente utilizar un chip L293B para controlar las dos unidades motores, enseguida veremos la forma de conexión para el funcionamiento deseado.

Fig. 2-5 Circuito de control para el doble giro de un motor c.c.

• Cuando la entrada C está a nivel bajo y la D a nivel alto, el motor gira en un sentido. • Cambiando la entrada a nivel alto y la D a nivel bajo se cambia el sentido de giro del

motor al contrario. En la siguiente tabla se muestra el modo de funcionamiento del circuito

Vinh C D Motor H L L Parada rápida del motor H H H Parada rápida del motor H L H Giro a la izquierda H H L Giro a la derecha L X X Motor desconectado, giro libre

Fig. 2-6 Modo de funcionamiento del circuito de la figura 2-5

Como protección conectamos cuatro diodos a cada motor de la manera siguiente.

Fig. 2-7 Conexión de diodos de protección al circuito de la figura 2-5

- 16 -

2.5 Configuración de los puertos del PIC16F84A

El PIC16F84A dispone de dos puertos paralelos bidireccionales A y B. El puerto A está constituido por cinco líneas RA4:RA0, mientras que el puerto B es un puerto de 8 bits RB7:RB0. En este proyecto se configura al puerto B como entrada y al puerto A como salida. La configuración de los bits del puerto A como salida es la siguiente:

Fig. 2-8 Configuración del puerto A como salida

La configuración de los bits del puerto B como entrada se muestra en la figura 2-8

Fig. 2-9 Configuración del puerto B como entrada

Tomando como referencia la configuración de los bits del puerto A, podemos determinar en sentido de giro de los motores, para ello tomemos en cuenta la siguiente figura.

Fig. 2-10 Sentido de giro de los motores

- 17 -

2.6 Programa de la interfaz

El proceso de programación lo desarrollamos dividiendo el programa principal en

programas más elementales para realizar códigos de programa más cortos y eficaces, asignándoles una tarea especifica a cada modulo, es decir hicimos un programa modulado y estructurado. Para la construcción del algoritmo realizamos diagramas de flujo que nos ayudaron a resolver el problema de manera grafica. De la misma manera y siguiendo el orden en que se escribió el programa vamos a desarrollar cada parte del algoritmo por separado permitiéndonos concentrar la atención en pequeños detalles.

2.6.1 Principal

En este bloque del programa se contiene toda la rutina del código, iniciando desde la configuración de los puertos A y B, enseguida debe inicializar el sistema asignándole por ser la primera ejecución el valor de Einicial = ”8” al registro Anterior y después ubicar los motores de acelerador y freno. El bucle que se estará repitiendo siempre inicia con la lectura de la posición de la palanca de control de velocidad, la compara con la posición anterior, si no detecta ningún movimiento vuelve a leer el puerto de entrada hasta detectar cambio en la posición de la palanca, en cuanto sucede un cambio el programa se encarga de interpretar los datos y tomar la decisión de acelerar o frenar, la posición actual deja de serlo para llamarse posición anterior, el bucle vuelve a iniciar.

Fig. 2-11 diagrama de flujo de rutina principal

Control

Configura:

• Port B como entrada • Port A como salida

Anterior ← Einicial

AEPI Acelerador En Posición Inicial

FEPI Freno En Posición Inicial

“Principal”

Lee posición de la palanca de control

Presente ← Port B and b’00001111’

Compara la posición actual con la anterior

W ← Presente - Anterior

¿Posición diferente a anterior? STATUS Z =‘0’

No Si

Acelera_Frena

Anterior ← Presente

- 18 -

El código de este bloque se escribe a continuación.

***************************************************************************************************************** Inicio bsf STATUS,RP0

clrf PORTA ;inicializamos puerto A como salida movlw b'11111111' movwf PORTB ;inicializamos puerto A como salida bcf STATUS,RP0 movlw Einicial movwf Anterior ;anterior igual a Einicial (se inicializa) call AEPI call FEPI

Principal movf PORTB,W ;lee puerto B la posición del la palanca de control andlw b'00001111' ;validad los primeros cuatro bits de entrada movwf Presente movf Anterior,W subwf Presente,W ;presente menos anterior, nos indica si hay cambio btfsc STATUS,Z ;de posición en la posición de la palanca goto Principal ;si el resultado de la operación es cero vuelve a leer la entrada(no hubo movimiento) call Acelera_Frena ;el resulta fue diferente de cero y se debe acelerar o frenar movf Presente,0 movwf Anterior ;guarda la posición en el registro anterior para tener una referencia de la posición del motor goto Principal

*****************************************************************************************************************

2.6.2 Acelerador en posición inicial AEPI

La subrutina de acelerador en posición inicial precisamente se encarga de ubicar al motor del acelerador al punto donde no se accione el acelerador. En esta parte del programa se hace uso de otro registro que guarda la posición anterior del acelerador llamado AntAcelerador. Se inicia el modulo copiando el valor de la posición inicial (Einicial) en el registro AntAcelerador. Recordemos que el bit 6 del puerto B esta conectado a un switch que nos indica la posición inicial del motor, cuando el switch se cierra nos envía al microcontrolador un “1” lógico, la subrutina pregunta sí el bit 6 recibe un”1”, en caso que la respuesta es no, se activa al motor indicándole que se ubique en la posición requerida, esto sucede hasta que el bit 6 detecte la bandera en alto; sí la respuesta es afirmativa el motor ya se encuentra en posición inicial.

El código de la subrutina es el siguiente ***************************************************************************************************************** AEPI

movlw Einicial movwf AntAcelerador ;se carga con el valor de Einicial btfss PORTB,6 ;checa que si el motor del acelerador está en posición inicial goto posicionalo1 ;mueve a posición inicial al motor del acelerador movlw b'00000000' movwf PORTA ;inmoviliza motores return

posicionalo1 movlw b'00000010' ;activa al motor de acelerado en dirección movwf PORTA ;de la posición inicial

PosicionaAce btfss PORTB,6 ;pregunta si ya se posiciono el motor goto PosicionaAce ;y sigue moviendo al motor movlw b'00000000' movwf PORTA ;una vez posicionado el motor lo detiene return *****************************************************************************************************************

- 19 -

Fig. 2-12 Diagrama de flujo de AEPI

2.6.3 Freno en posición inicial FEPI

La subrutina FEPI inicia asignándole en valor de Einicial al registro AntFreno, enseguida se pregunta sí el bit 7 del puerto B, que al igual que el motor del acelerador cuenta con un switch, recibe un “1” lógico (bandera que indica motor en posición inicial), si no es así se activa al motor del freno haciéndolo girar en la dirección de la posición inicial, esto sucede hasta que el bit 7 detecte un “1”.

Fig. 2-13 Diagrama de flujo de FEPI

FEPI Freno en Posición Inicial

AntFreno ← Einicial

¿Posición inicial?

Bit 7 del Puerto B =‘1’

Envía b’00000000’ Por puerto A Posicionalo2

Envía b’00001000’ por puerto A

PosicionaFre Return

¿Posición inicial?

Bit 7 del Puerto B =‘1’

Si

Si

No

No

AEPI Acelerador En Posición Inicial

AntAceclerador ← Einicial

¿Posición inicial? Bit 6 del

Puerto B =‘1’

Envía b’00000000’ Por puerto A Posicionalo1

Envía b’00000010’ por puerto A

PosicionaAce Return

¿Posición inicial?

Bit 6 del Puerto B =‘1’

Si

Si

No

No

- 20 -

Código de la subrutina FEPI *************************************************************************** FEPI movlw Einicial movwf AntFreno ; se carga con el valor de Einicial btfss PORTB,7 ;checa que si el motor del freno está en posición inicial goto posicionalo2 ;mueve a posición inicial al motor del freno movlw b'00000000' movwf PORTA ;inmoviliza motores return posicionalo2 movlw b'00001000' ;activa al motor de freno en dirección movwf PORTA ;de la posición inicial PosicionaFre btfss PORTB,7 ;pregunta si ya se posiciono el motor goto PosicionaFre ;y sigue moviendo al motor movlw b'00000000' movwf PORTA ;una vez posicionado el motor lo detiene return *****************************************************************************************************************

2.6.4 Acelera ó frena Acelera_Frena

Una de las subrutinas más importantes del programa es esta, pues su función es identificar la acción que se le pide ejecutar al programa, entre las opciones son activar el acelerador, el freno y poner en posición inicial a ambos.

La subrutina inicia comparando el valor de la posición actual de la palanca de control

de velocidad con la posición neutral, Einicial, si son iguales se llama a otra subrutina que posiciona al motor del freno y al del acelerador en posición inicial. En caso de resultar diferentes se hace otra comparación de la cual resulta lo siguiente:

• La posición actual es mayor a Einicial, en este caso se llama a FEPI para no frenar al

mismo tiempo de acelerar, enseguida se llama a la subrutina Acelera. • La posición actual es menor a Einicial, en este caso se llama a AEPI para no acelerar

al mismo tiempo de frenar, enseguida se llama a la subrutina Frena. El código de la subrutina es el siguiente. ***************************************************************************************************************** Acelera_Frena movf Presente,W sublw Einicial ; esta rutina se encarga de investigar si el valor detectado btfsc STATUS,Z ;se convertirá en una instrucción para acelerar o frenar goto NFNA ;o dejar en posición inicial los motores movlw Einicial subwf Presente,W btfss STATUS,C goto Frenado call FEPI ;se manda al motor del freno a posición inicial call Acelera return Frenado call AEPI ;se manda al motor del acelerador a posición inicial call Frena return NFNA call AEPI ;ambos motores a posición inicial call FEPI return *****************************************************************************************************************

- 21 -

Fig. 2-14 Diagrama de flujo de Acelera_Frena

2.6.5 Acelera

En la subrutina Acelera se determina si la posición de la palanca de control de velocidad está enviando la orden de incrementar el nivel de aceleración ó disminuirlo, tomando en cuenta el valor de la posición anterior de acelerador.

La subrutina inicia comparando el valor de la posición actual de la palanca de control

de velocidad con el valor que guarda el registro AntAcelerador que contiene la posición anterior del motor del acelerador; sí resulta menor el valor de la posición actual, se obtiene la diferencia entre AntAcelerador y Presente para calcular el número de ciclos de 100 ms durante los cuales se acciona el motor del acelerador haciéndolo girar en la dirección en que disminuye el nivel de aceleración; por el contrario, cuando el valor de la posición actual es mayor se obtiene la diferencia entre Presente y AntAcelerador, el resultado de la misma forma sirve para calcular el tiempo en que se acciona el motor, sólo que en sentido contrario aumentando el nivel de aceleración; al final de la subrutina el valor de la posición actual pasa al registro de AntAcelerador.

Enseguida se escribe el código de la subrutina

*************************************************************************** Acelera movf AntAcelerador,W subwf Presente,W ;Presente - AntAcelerador para verificar un aumento o reducción del acelerador btfss STATUS,C goto Acelera2 Acelera1 ;se incrementa la aceleración movf AntAcelerador,W subwf Presente,0 ;calcula el numero de ciclos de 100 ms movwf ciclo movlw b'00000001' movwf PORTA ;pone en la posición indicada al motor

‘Frenado’

Acelera_Frena

W ← Einicial - Presente

¿Posición inicial?

STATUS Z =’1’

Si No

NFNA No Frena, No Acelera

Return

W ← Presente - Einicial

¿Posición actual mayor a Einicial?

STATUS C =’1’

Si No

FEPI AEPI

Acelera Frena

Return Return

- 22 -

call lazo1 return Acelera2 ;se reduce la aceleración movf Presente,W subwf AntAcelerador,0 ;calcula el numero de ciclos de 100 ms movwf ciclo movlw b'00000010' movwf PORTA ;pone en la posición indicada al motor call lazo1 return lazo1 call Retardo_100ms ;envía la instrucción de mover en motor durante el numero de posiciones decfsz ciclo,F ;resultantes de la diferencia de presente y antacelerador goto lazo1 movlw b'00000000' movwf PORTA movf Presente,0 movwf AntAcelerador ;el valor actual de Presente es copiado en el registro de AntAcelerador return ;permitiendo mantener la guardada la posición del motor *****************************************************************************************************************

Fig. 2-15 Diagrama de flujo de Acelera

Ciclo ← Presente - AntAcelerador

Acelera

W ← Presente - AntAcelerador

¿Posición actual menor a posición anterior?

STATUS C =’1’

Si No

Acelera 2

Ciclo ← AntAcelerador - Presente

Ciclo = ‘0’

Si No

Retardo_100 ms

Return

Acelera 1

Port A ← b’00000010’ Port A ← b’00000001’

‘lazo 1’

Decrementa ciclo

Port A ← b’00000000’

AntAcelerador ← Presente

- 23 -

2.6.6 Frena

En esta subrutina se decodifica la posición de la palanca de control de tal forma que una vez que la subrutina que decide si la posición de la palanca de control de velocidad se encuentra de zona de freno, la subrutina decide si se reduce o se debe incrementar la intensidad con que se frena el automóvil.

En un inicio la subrutina compara el valor anterior del freno con el valor de la posición

actual de la palanca de control de velocidad, entonces se generan los dos siguientes casos: La posición actual es mayor a la posición anterior del freno. En esta situación se

calcula el número de ciclos de 100 ms durante los cuales estará activado el motor del freno en dirección a la cual se reduce la intensidad con que se frena obteniendo la diferencia entre el valor de la posición actual y el valor del registro AntFreno que contiene la posición anterior del freno.

La posición actual es menor a la posición anterior del freno. Es este caso

primeramente se calcula la diferencia entre el valor de la posición anterior del freno y el valor de la posición actual, el resultado indica el tiempo durante el cual el motor del freno estará activado girando en dirección en la que se aumente la intensidad del freno.

Al final de la subrutina el valor de la posición actual se guarda en AntFreno.

Enseguida se lista el código de la subrutina. *****************************************************************************************************************

Frena movf Presente,W subwf AntFreno,W ;Presente - AntFreno para verificar un aumento o reducción del acelerador btfss STATUS,C goto Frena2 Frena1 ;se incrementa el nivel de frenado movf Presente,W subwf AntFreno,0 ;calcula el numero de ciclos de 100 ms movwf ciclo movlw b'00000100' movwf PORTA ;pone en la posición indicada al motor call lazo2 return Frena2 ;se reduce el frenado movf AntFreno,W subwf Presente,0 ;calcula el numero de ciclos de 100 ms movwf ciclo movlw b'00001000' movwf PORTA ;pone en la posición indicada al motor call lazo2 return lazo2 call Retardo_100ms ;envía la instrucción de mover en motor durante el numero de posiciones decfsz ciclo,F ;resultantes de la diferencia de presente y antfreno goto lazo2 movlw b'00000000' movwf PORTA movf Presente,0 movwf AntFreno ;el valor actual de Presente es copiado en el registro de AntFreno return ;permitiendo mantener la guardada la posición del motor

*****************************************************************************************************************

- 24 -

Fig. 2-16 Diagrama de flujo de Frena

2.6.7 Retardo_100ms

La subrutina de retardo genera tiempos de espera, utilizados para mantener en alto la señal que hace girar los motores. Para conseguir un retardo de 100 ms hacemos uso de lazos anidados, repitiendo cien veces una rutina que genera retardos de 1 ms.

Para el PIC16F84A un ciclo de maquina equivale a cuatro ciclos de reloj, por lo tanto,

el tiempo que tarda en producirse un ciclo de maquina es igual a cuatro veces el periodo del oscilador, para la interfaz utilizamos un oscilador a cristal de cuarzo de 4 MHz, por lo tanto un ciclo de maquina tarda 1µs. Las instrucciones en el microcontrolador necesitan un ciclo de maquina para ejecutarse, excepto las de salto que necesitan dos ciclos de maquina.

En la subrutina utilizamos las variables R_ContA y R_ContB, la primera va ligada al

bucle interno, para cuestiones de calculo del tiempo le llamamos K, la segunda lleva el conteo de un bucle externo y lo consideramos como M.

Ciclo ← AntFreno - Presente

Frena

W ← AntFreno - Presente

¿Posición actual menor a posición anterior?

STATUS C =’1’

No Si

Frena 2

Ciclo ← Presente - AntFreno

Ciclo = ‘0’ Si No

Retardo_100 ms

Return

Frena 1

Port A ← b’00001000’ Port A ← b’00000100’

‘lazo 2’

Decrementa ciclo

Port A ← b’00000000’

AntFreno ← Presente

- 25 -

El código del programa se desarrolla a continuación. ***************************************************************************************************************** Retardo_100ms ; la llamada call aporta dos ciclos de maquina movlw d'100' ; aporta un ciclo de maquina, este es el valor de M movwf R_ContB ; aporta un ciclo de maquina R1ms_bucleExterno movlw d'249' ; aporta Mx1 ciclos de maquina, este es el valor de K movwf R_ContA ; aporta Mx1 ciclos de maquina R1ms_BucleInterno nop ; aporta KxMx1 ciclos de maquina decfsz R_ContA,F ;(K-1)xMx1 ciclos de maquina cuando no salta + Mx2 al saltar goto R1ms_BucleInterno ;aporta (k-1)xMx2 ciclos de maquina decfsz R_ContB,F ;(M-1)x1 ciclos de maquina cuando no salta + 2 al saltar goto R1ms_bucleExterno ;aporta (M-1)x2 ciclos de maquina return *****************************************************************************************************************

Deacuerdo a la suma de los ciclos de maquina que se mencionan en el código del

programa resulta los 100 ms requeridos, la operación es la siguiente:

2 + 1 + 2 + (2 + 4 M + 4 KM) = 100007 ciclos de maquina = 100 ms

Fig. 2-17 Diagrama de flujo de Retardo_100ms

Retardo_100ms

Carga contador R_ContB con un valor inicial d’100’

Pequeño tiempo de espera

Carga contador R_ContA con un valor inicial d’249’

Decrementa R_ContA

R_ContA = 0

Decrementa R_ContB

R_ContB = 0

Return

No

No

Si

Si

- 26 -

2.6.8 Código completo

A continuación se muestra el código completo de la interfaz.

***************************************************************************************************************** LIST P=16F84A INCLUDE "P16F84A.INC" CBLOCK 0x0C AntAcelerador ;registros que guardan la posición anterior de los AntFreno ;motores del acelerador y del freno Presente ;guardan la posición actual en que se encuentra el sistema Anterior ;contiene la posición anterior del sistema ENDC CBLOCK R_ContA ;registro utilizado en el bucle interno del retardo R_ContB ;registro utilizado en el bucle externo del retardo ciclo ;determina el tiempo que se activan los motores ENDC Einicial EQU d'8' ;valor que es interpretado como punto neutro ORG 0 Inicio bsf STATUS,RP0 clrf PORTA ;inicializamos puerto A como salida movlw b'11111111' movwf PORTB ;inicializamos puerto A como salida bcf STATUS,RP0 movlw Einicial movwf Anterior ;anterior igual a Einicial (se inicializa) call AEPI call FEPI Principal movf PORTB,W ;lee puerto B la posición del la palanca de control andlw b'00001111' ;validad los primeros cuatro bits de entrada movwf Presente movf Anterior,W subwf Presente,W ;presente menos anterior, nos indica si hay cambio btfsc STATUS,Z ;en la posición de la palanca goto Principal ;si el resultado de la operación es cero vuelve a leer la entrada(no hubo movimiento) call Acelera_Frena ;el resulta fue diferente de cero y se debe acelerar o frenar movf Presente,0 movwf Anterior ;guarda la posición en el registro anterior para tener una referencia de la posición del goto Principal ; motor AEPI movlw Einicial movwf AntAcelerador ;se carga con el valor de Einicial btfss PORTB,6 ;checa que si el motor del acelerador está en posición inicial goto posicionalo1 ;mueve a posición inicial al motor del acelerador movlw b'00000000' movwf PORTA ;inmoviliza motores return posicionalo1 movlw b'00000010' ;activa al motor de acelerado en dirección movwf PORTA ;de la posición inicial PosicionaAce btfss PORTB,6 ;pregunta si ya se posiciono el motor goto PosicionaAce ;y sigue moviendo al motor movlw b'00000000' movwf PORTA ;una vez posicionado el motor lo detiene

- 27 -

return FEPI movlw Einicial movwf AntFreno ;se carga con el valor de Einicial btfss PORTB,7 ;checa que si el motor del freno está en posición inicial goto posicionalo2 ;mueve a posición inicial al motor del freno movlw b'00000000' movwf PORTA ;inmoviliza motores return posicionalo2 movlw b'00001000' ;activa al motor de freno en dirección movwf PORTA ;de la posición inicial PosicionaFre btfss PORTB,7 ;pregunta si ya se posiciono el motor goto PosicionaFre ;y sigue moviendo al motor movlw b'00000000' movwf PORTA ;una vez posicionado el motor lo detiene return Acelera_Frena movf Presente,W sublw Einicial ;esta rutina se encarga de investigar si el valor detectado btfsc STATUS,Z ;se convertirá en una instrucción para acelerar o frenar goto NFNA ;o dejar en posición inicial los motores movlw Einicial subwf Presente,W btfss STATUS,C goto Frenado call FEPI ;se manda al motor del freno a posición inicial call Acelera return Frenado call AEPI ;se manda al motor del acelerador a posición inicial call Frena return NFNA call AEPI ;ambos motores oposición inicial call FEPI return Acelera movf AntAcelerador,W subwf Presente,W ;Presente - AntAcelerador para verificar un aumento o reducción del acelerador btfss STATUS,C goto Acelera2 Acelera1 ;se incrementa la aceleración movf AntAcelerador,W subwf Presente,0 ;calcula el numero de ciclos de 100 ms movwf ciclo movlw b'00000001' movwf PORTA ;pone en la posición indicada al motor call lazo1 return Acelera2 ;se reduce la aceleración movf Presente,W subwf AntAcelerador,0 ;calcula el numero de ciclos de 100 ms movwf ciclo movlw b'00000010' movwf PORTA ;pone en la posición indicada al motor call lazo1 return lazo1 call Retardo_100ms ;envía la instrucción de mover en motor durante el numero de posiciones decfsz ciclo,F ;resultantes de la diferencia de presente y antacelerador goto lazo1 movlw b'00000000' movwf PORTA movf Presente,0 movwf AntAcelerador ;el valor actual de Presente es copiado en el registro de AntAcelerador return ;permitiendo mantener la guardada la posición del motor

- 28 -

Frena movf Presente,W subwf AntFreno,W ;Presente - AntFreno para verificar un aumento o reducción del acelerador btfss STATUS,C goto Frena2 Frena1 ;se incrementa el nivel de frenado movf Presente,W subwf AntFreno,0 ;calcula el numero de ciclos de 100 ms movwf ciclo movlw b'00000100' movwf PORTA ;pone en la posición indicada al motor call lazo2 return Frena2 ;se reduce el frenado movf AntFreno,W subwf Presente,0 ;calcula el numero de ciclos de 100 ms movwf ciclo movlw b'00001000' movwf PORTA ;pone en la posición indicada al motor call lazo2 return lazo2 call Retardo_100ms ;envía la instrucción de mover en motor durante el numero de posiciones decfsz ciclo,F ;resultantes de la diferencia de presente y antfreno goto lazo2 movlw b'00000000' movwf PORTA movf Presente,0 movwf AntFreno ;el valor actual de Presente es copiado en el registro de AntFreno return ;permitiendo mantener la guardada la posición del motor Retardo_100ms ;la llamada call aporta dos ciclos de maquina movlw d'100' ;aporta un ciclo de maquina, este es el valor de M movwf R_ContB ;aporta un ciclo de maquina R1ms_bucleExterno movlw d'249' ;aporta Mx1 ciclos de maquina, este es el valor de K movwf R_ContA ;aporta Mx1 ciclos de maquina R1ms_BucleInterno nop ;aporta KxMx1 ciclos de maquina decfsz R_ContA,F ;(K-1)xMx1 ciclos de maquina cuando no salta + Mx2 al saltar goto R1ms_BucleInterno ;aporta (k-1)xMx2 ciclos de maquina decfsz R_ContB,F ;(M-1)x1 ciclos de maquina cuando no salta + 2 al saltar goto R1ms_bucleExterno ;aporta (M-1)x2 ciclos de maquina return ;el salto retorno aporta dos ciclos maquina END *****************************************************************************************************************

Utilizamos el software MPLAB IDE para editar, ensamblar y simular el programa de la interfaz.

- 29 -

Capitulo III. Nivel físico

Nivel físico

- 30 -

En este capitulo se aborda la estructura física que comprende las unidades motoras que actúan sobre el acelerador y freno del automóvil, el diseño de las placas con los circuitos impresos y el total de los componentes electrónicos que conforman a la interfaz.

3.1 Motores de c.c.

Dentro del nivel físico comenzaremos a hablar de los motores; se utilizan dos, uno para accionar el acelerador y otro para accionar el freno del automóvil, en ambos casos se utilizaron motores y sistemas similares. Los motores son de corriente continua y cuentan con un sistema reductor, Fig. 3-1, conformado por engranes que reducen la velocidad de tal manera que un giro de 90º lo realiza en aproximadamente 0.7 segundos, precisamente el giro máximo que retomamos para determinar la mayor intensidad con que se frena o acelera es de 90º aproximadamente, lo que nos lleva a decir que el tiempo de reacción del sistema es de 0.7 segundos desde que está en posición inicial hasta el punto máximo en intensidad de frenado ó del acelerador en su caso. Pues recordemos que el codificador de posición de la palanca de control de velocidad ofrece siete posiciones que indican los diferentes niveles de frenar y siete niveles para acelerar; además los tiempos de retardo en los cuales el microcontrolador activa los motores son de 0.1 segundos. El tiempo de ejecución del programa resulta despreciable ya que en el mayor de los casos se trata de un tiempo aproximado de 100 µs.

Fig. 3-1 Sistema de las unidades motoras.

Uno de los engranes cuenta con un tope que al girar en sentido de la posición inicial y ubicarse en ella cierra el switch llamado detector de posición inicial.

Fig. 3-2 Ubicación del detector de posición inicial

- 31 -

3.2 Circuitos Impresos

Concentramos en una sola placa la unidad de procesamiento y el control de los motores, acompañados de los componentes que conforman sus circuitos de funcionamiento. En esta placa se conecta la alimentación total de los circuitos, desde el codificador de posición de la palanca de control de velocidad, el microcontrolador, el controlador de los motores, hasta las unidades motoras. Cuenta con tres conectores, uno de ellos con tres entradas para conectar la referencia, una entrada de 5V y otra para 12V, otro de los conectores sirve para que a través de un bus de datos de diez líneas se conecten los motores y el detector de posición inicial, en el conector restante se conecta un bus de diez líneas a través de las cuales se trasmite los datos del codificador de posición. Las dimensiones de la placa es de 20 cm. x 10 cm. El circuito impreso esta diseñado para usar las dos caras de la tabla y la distribución de los componentes es el siguiente:

Fig. 3-3Parte superior de la placa

Fig. 3-4 Cara inferior de la placa

- 32 -

La presentación física del diseño de placa se muestra en la siguiente figura, en la que en la parte superior izquierda se encuentra la parte frontal de la placa y en la parte superior derecha la cara trasera.

Fig. 3-5 Diseño físico de la placa de procesamiento de datos

Otra placa de circuito impreso diseñado fue la del codificador de posición, las dimensiones de la placa es de 10cm. X 10cm. en ella se encuentran cada uno de los circuitos con los que se polarizan los sensores ópticos CNY70 y un 7404 que contiene las cuatro compuertas lógicas NOT necesarias en el codificador, además cuenta con dos entradas de bus de datos, en una se conectan los sensores ópticos a través de un bus de 40 líneas, aunque se desperdician líneas la estructura de los conectores, nos es ideal para ubicar los sensores, y otro bus de diez líneas, a través de la cual se trasmite la palabra codificada de posición de la palanca y también por medio de este bus se alimenta el circuito con una entrada de 5V. El diseño es el siguiente:

A) B)

Fig. 3-6 A) Cara superior de la placa, B) Cara inferior de la placa

- 33 -

En la parte superior izquierda de la siguiente figura se muestra la parte frontal de la placa, mientras del lado derecho la cara inferior.

Fig. 3-7 Aspecto físico del circuito impreso del codificador de posición

3.3 Componentes electrónicos.

Ya en los capítulos anteriores mencionamos los componentes electrónicos utilizados en

los circuitos de la interfaz, sin embargo queremos especificarlos un poco más, para ello enseguida listamos el total de los materiales electrónicos utilizados en el diseño de la interfaz.

Codificador de posición:

• 4 sensores ópticos CNY70 • 4 resistencias de 220 Ω (R3-R6) • 4 resistencias de 10 KΩ (R7-R10) • Un 7404 (cuatro compuertas NOT)

Microcontrolador:

• Un PIC16F84A • Un capacitor de 0.1µF (C3) • 2 capacitores de 22 ρF (C1, C2) • Un oscilador de cuarzo de 4 MHz

Detector de posición inicial:

• 2 switch de contacto • 2 resistencias de 1 KΩ (R1, R2) • Un 7404 (dos compuertas NOT)

- 34 -

Unidades motoras:

• Un driver L293B • 8 diodos 1N4007 (D) • Dos motores de c.c.

Conectores:

• Cable plano de 10 líneas • Cable plano de 40 líneas

3.4 Aspecto físico de la interfaz

Finalmente el codificador de posición de la palanca de control de velocidad conectado

a la unidad de procesamiento de datos, el microcontrolador, y las unidades motoras se muestran en fotografía siguiente, en la cual se integra de manera total el diseño de la interfaz para el manejo vehicular orientado a personas parapléjicas.

Fig. 3-8 Fotografía de la interfaz para el manejo vehicular orientado a personas parapléjicas

- 35 -

Capitulo IV. Anexos

Anexos

- 36 -

4.1 Sistemas existentes

Para las minusvalías inferiores existen multitud de opciones: embragues electrónicos,

juegos de pedales modificados y puños de mando como acelerador, aunque, claro, nuestro país cuenta con pocas compañías que se dediquen a realizar estas adaptaciones.

Algunos modelos de interfaces existentes en el mercado, principalmente en empresas

españolas y argentinas, que tienen un objetivo similar a la del sistema desarrollado en este reporte, son los siguientes:

Acelerador y freno en la misma

empuñadura Acelerador y freno Mecánico fuera del

volante

*Acelerador en el sentido de la flecha roja, freno en el sentido de la flecha verde.

*Girando la palanca hacia las piernas aceleramos y empujándola hacia delante frenamos.

Acelerador de aro bajo volante Acelerador y freno simultáneo para la

mano izquierda o derecha

*Para acelerar, basta con desplazar el aro hacia el volante con un solo dedo *El freno es de palanca y como opción tiene claxon y bloqueo eléctrico *Para frenar, basta con desplazar hacia abajo la palanca con un solo dedo

*Acelerador sentido flecha ROJA (hacia abajo), freno sentido flecha VERDE (hacia el frente), acelerador con freno sentido flecha AZUL (hacia abajo y al frente)

- 37 -

Acelerador Electrónico bajo volante

Acelerador electrónico lineal Acelerador Mecánico y Freno Autoblocante

Acelerador de Leva

Freno Autoblocante con claxon

Freno Autblocante. Especial AIR-BAG

Acelerador electrónico en el volante

Fig. 4-1 Modelos de interfaces existentes en el mercado

El costo entre los que oscilan estos sistemas va desde los $6,000 los más baratos a $20,000 los más complejos, es por ello que las personas con discapacidad que quieren conducir un automóvil tienen que utilizar la creatividad para hacerle las adaptaciones a sus vehículos y son pocos los que tienen la posibilidad de colocar dispositivos adecuados.

Para los sistemas un tanto improvisados y fabricados de manera artesanal se utilizan

materiales tales como barras de hierro soldadas a los pedales del automóvil, chicotes y poleas que controlan los pedales, algunos bastones con los que se empujan los pedales, entre otros. Enseguida se muestra un ejemplo de éstos sistemas.

Fig.4-2 Sistema mecánico

- 38 -

4.2 Características principales: L293B, PIC16F84A, CNY70 y M7404

Enseguida se listan algunas de las características físicas y eléctricas retomadas de sus

hojas de datos correspondientes.

4.2.1 El PIC16F84A

- 39 -

- 40 -

- 41 -

4.2.2 El sensor óptico CNY70

- 42 -

- 43 -

- 44 -

- 45 -

4.2.3 EL Driver L293B

- 46 -

- 47 -

- 48 -

- 49 -

4.2.4 La compuerta inversora M7404

- 50 -

- 51 -

CONCLUSIONES Y RECOMENDACIONES

La disponibilidad de la tecnología coincide con un incremento en la demanda de la movilidad de personas discapacitadas cuyas limitaciones pueden ser compensadas con ayuda de los sistemas, como la interfaz para manejo vehicular orientada a parapléjicos descrita en este reporte, a fin de igualarlas a derecho y oportunidades a las que no lo están. Acceder a sistemas, diseñados por empresas especializadas de interfaces que realizan la misma función que la descrita en este reporte, resulta un tanto difícil, pues son de un precio elevado. Es atrevido hacer un presupuesto del costo que resultaría nuestro sistema, ya que probablemente los gastos del diseño de la estructura y el requerimiento de un codificador de posición más seguro que el sugerido, aumentarían el costo; sin embargo el costo total creemos sería aceptable y accesible a cualquier persona discapacitada con la necesidad de conducir un automóvil.

Un punto débil en el diseño de la interfaz es quizá el codificador de posición debido al pequeño número de posiciones que puede codificar y además el bajo nivel de seguridad con el que contamos al utilizarlo, pues los sensores ópticos necesitan un nivel regulado de luz. La solución a este problema podría ser perfeccionar el diseño ó adquirir un codificador de posición que existentes en el mercado.

A pesar de no llegar al punto de realizar pruebas de funcionamiento de la interfaz diseñada, ya en un automóvil, ni siquiera diseñar la estructura física de la interfaz, como lo son la palanca de mando y los adaptadores que actúan sobre los sistemas del freno y acelerador del automóvil, el diseño cumple a la perfección con el funcionamiento que planteamos al principio del diseño y con ello se cumple con el objetivo inicial.

- 52 -

BIBLIOGRAFÍA Palacios, E; Remiro, F Y López, L. Microcontrolador PIC16F84. Desarrollo de proyectos, primera edición, Alfaomega Grupo editor, México, 2004. Hoja de datos del microcontrolador PIC16F84A. Disponible en: <http://www.datasheetcatalog.com/datasheets_pdf/P/I/C/1/PIC16F84.shtml> Hoja de datos del driver L293B. Disponible en: <http://www.datasheetcatalog.com/datasheets_pdf/L/2/9/3/L293B.shtml> Hoja de datos del sensor óptico CNY70. Disponible en: <http://www.datasheetcatalog.com/datasheets_pdf/C/N/Y/7/CNY70.shtml> Hoja de datos de la compuerta inversora M7404. Disponible en: <http://www.datasheetcatalog.com/datasheets_pdf/D/M/7/4/DM7404.shtml> Prototipos de interfaces España. Disponible en: <http://www.topmovil.com/index.jsp?articulo=D-999&accion=producto> Prototipos de interfaces Argentina. Disponible en: <http://www.autoselizasu.com/autoselizasu_marco1.htm>

Constitución Política de los Estados Unidos Mexicanos. Disponible en: <http:// www.diputados.gob.mx/LeyesBiblio/doc/1.doc>[consultada el 3/09/07] Ley Federal de Personas con Discapacidad. Disponible en: <http://gaceta.diputados.gob.mx/Gaceta/58/2003/abr/20030430.html>