Sie sind auf Seite 1von 4

PRCTICO Control Remoto

Controlando un Coche a Teledirigido desde Linux (I)

EL COCHECITO

Reconozcamos que si nos ven jugar con un coche teledirigido a nuestra edad pasaremos ms de un apuro para explicarnos. Quien nos va a creer si decimos que realmente lo estamos controlando desde scripts shell? POR ALBERTO PLANAS

o se si a vosotros os pasa, pero uno de los temas que ms me ha despertado la imaginacin desde siempre han sido los robots. Mquinas que incorporan programas que los hace inteligentes y autocontrolados, es apasionante. El proyecto que vamos a emprender, desde luego, no tiene esa complejidad pero es un comienzo: vamos a crear un programa que diseado por nosotros sea capaz de dirigir un coche radiocontrolado. La inspiracin vino tras ojear el libro Linux Toys[1] de la editorial ExtremeTech. El libro dedica un captulo entero a explicar un proyecto similar a este, pero como interfaz hardware utiliza una placa comercial llamada LynX-Port conectada al puerto serie del ordenador. Por desgracia el precio del dispositivo excede en 150 Euros cualquier presupuesto. La solucin que proponemos en este primer artculo adems de ser

mucho ms barata es mucho ms divertida y peligrosa (cuidado con el cutter y el soldador!).

Lo Duro del Hardware


La mayora de nosotros, por lo general, somos personas de software: pensamos en operaciones booleanas, instanciaciones de clases y cosas por el estilo. Por el contrario hay gente con una formacin en electrnica que piensa en otros trminos: diferencias de potencial e intensidades de corrientes. Ellos se quedan con la mitad de la diversin y nosotros necesitaremos cruzar al inhspito mundo de los transistores y las soldaduras para tener la diversin completa. En una serie de dos artculos vamos a explicar los pasos que hemos llevado a cabo para disear y construir una pequea plaquita que, mediante el puerto paralelo del ordenador, nos

permitir controlar el movimiento de un coche teledirigido. Antes de empezar la tarea quiero hacer un disclaimer: Yo soy hasta la mdula del mundo de las operaciones booleanas, as que he recurrido a mis coleguillas de la otra acera para que me ayuden con todo esto. As que cualquier error o inexactitud se debe exclusivamente a su^H^H mi ignorancia. Gracias chicos! : )

Presentamos a los Actores


Lo primero es conseguir un coche a radiocontrol con un mando con botones. Hay que tener cuidado en este punto, todo el desarrollo descrito aqu supone que estamos ante un mando que funcione a base de pulsadores o interruptores y no por medio de las palancas que encontramos en modelos ms caros y avanzados. En las tiendas esas de Todo a pocos Euros encontraremos modelos pre-tuneados (a juzgar por la esttica) a bajo pre-

48

Nmero 07

WWW.LINUX- MAGAZINE.ES

Control Remoto PRCTICO

cio, ideales para desarmar sin sobresaltos. Tambin necesitaremos ensamblar un cable paralelo, para ello usaremos un cable de red normal y corriente y un conector paralelo de 25 pines. En la misma tienda donde hemos adquirido el conector deberemos preguntar por cuatro optoacopladores 4N25 y ocho resistencias 4K7-0.25W. El precio de todo esto no debe exceder los 4 Euros. De todas maneras yo para practicar ped un optoacoplador y un par de resistencias extras. Por ltimo buscaremos alguna caja o recipiente para colocar los componentes electrnicos una vez ensamblados. Esto es opcional puesto que se puede usar la misma caja del mando a distancia del coche para esto. El esquema general es simple: crearemos un cable paralelo que conectar el ordenador a una placa con los optoacopladores y las resistencias, sta, a su vez quedar conectada a la placa controladora del mando a distancia.

La idea es que cada vez que emita un pulso desde el ordenador, pueda conmutar el estado de los interruptores del mando por medio de la placa que construiremos.

Abrimos el Mando
Vamos a empezar a trabajar. Tomaremos un destornillador y abriremos la tapa del mando a distancia (ver Figura 1). Lo normal es encontrar un lugar donde se coloca la antena, otro para colocar la pila de 9V y una placa de color verde con integrados, resistencias y pulsadores. Cada pulsador corresponde a cada operacin que puede realizar el coche: giro a la derecha, izquierda, adelante y atrs. En mi caso hay cinco, ya que se incluye un botn para correr a mayor velocidad: Turbo total. Puesto que lo normal es encontrar solo cuatro, ignoraremos este

ltimo pulsador. Tambin nos daremos cuenta que hay tres cables que salen de la placa, uno va al polo positivo de la pila, otro al negativo y un tercero que va a la base de la antena. Con mucho cuidado desoldaremos los extremos del cable cercanos al contenedor de la pila. Naturalmente anotaremos en Figura 1: El mando a distancia desmontado. Se pueden ver los cinco un papel donde interruptores mencionados en el texto. estaban conectasamos el interruptor cerramos el circuito dos los cables para poder luego recompoy se producir el movimiento corresponnerlos a su lugar correcto. En mi caso el diente en el coche. Para comprobar esto cable rojo estaba soldado al polo positivo puentearemos de manera temporal los de la pila, y el cable blanco al negativo. dos extremos del pulsado con un alamAhora la placa queda suelta completabre o con una barrita de metal. mente y podremos retirarla del mando. Veremos que la corriente pasar y se Con un cutter cortaremos el encendern los leds (en caso de existir) y plstico del mando para se empezar a mover el coche en la extraer el contenedor de direccin asignada a ese pulsador. la pila (ver Figura 2 y 3) Nuestra misin es, por tanto, construir y eliminaremos los troalgn tipo de mecanismo que sea capaz zos sobrantes hasta de hacer lo mismo que hemos hecho con darle una forma adeel alambre: puentear el interruptor a cuada. Necesitamos nuestra voluntad, o mejor dicho, a la ahora soldar otra vez los voluntad del ordenador. Cmo afrontar conectores de la caja de este reto? Esa es la pregunta que le hice a pilas a la placa para dejarlo un amigo y su respuesta no pudo se ms tal y como se ve en la Figura 4. desconcertante: transistores polarizados. Si nos detenemos un momento a analizar la placa del mando a distancia, Corte y Saturacin veremos que desde la parte posterior, las soldaduras de los cuatro o cinco pulsaVale, la respuesta era obvia para quien dores tienen una disposicin similar a las supiera algo de electrnica. Pero no era mostradas en la Figura 5, dos extremos mi caso. Con un poco de paciencia y del pulsador pertenecen al circuito impreso y otros dos no. Si seguimos uno de los extremos veremos adems que est directamente conectado al polo negativo de la pila, sin que medie ningn otro elemento. Esto es comn a todos los pulsadores, de hecho si nos fijamos ms veremos que el mismo circuito une todos los lados negativos de los Figura 2: Vamos a sacar la caja de la pila con ese cutter tan interruptores. Cuando pulamarillo.

WWW.LINUX- MAGAZINE.ES

Nmero 07

49

PRCTICO Control Remoto

algo de lectura se puede entender el funcionamiento del transistor. De todas maneras solo nos interesa un comportamiento de estos transistores: el que se denomina paso de corte a saturacin. Para explicar este modo de funcionamiento nos vamos a remitir a la Figura 6. Un transistor est compuesto por tres cristales semiconductores, dependiendo cmo se ordenen estos cristales tendremos un transistor NPN o PNP. Cada cristal es un terminal del transistor y

Listado 1: test.c
01 02 03 04 05 06 07 08 09 #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include "parapin.h"

int main() { int pin_sequence[] = { 2, 3, 4, 5, 6, 7, 8, 9, -1}; 10 int i; 11 char buf[6]; 12 13 if (pin_init_user(LPT1) < 0) 14 exit(0); 15 16 pin_output_mode(LP_DATA_PINS | LP_SWITCHABLE_PINS); 17 18 /* Nos aseguramos de poner a 0 cada pin */ 19 for (i = 0; i < 8; i++) 20 clear_pin(LP_PIN[pin_sequence[i]]); 21 22 i = -1; 23 while (1) { 24 if (pin_sequence[++i] == -1) 25 i = 0; 26 printf("setting pin %d\n", pin_sequence[i]); 27 set_pin(LP_PIN[pin_sequence[i]]); 28 printf("Hit return...\n"); 29 fgets(buf, 5, stdin); 30 printf("clearing pin %d\n", pin_sequence[i]); 31 clear_pin(LP_PIN[pin_sequence[i]]); 32 } 33 }

recibe un nombre: colector, base y emisor. La corriente pasa generalmente entre el colector y el emisor siguiendo la direccin de la flecha del emisor. La corriente se controla a partir de una intensidad introducida en la base del transistor. Si esta intensidad de la base est dentro de unos rangos, el transistor amplificar la corriente colector-emisor. Si nos salimos de este rango por abajo, Figura 3: Dos horas despus ya tenemos la cajita de la pila. el transistor estar en corte, y si nos salimos por el lmite superior el transistor estar saturado. Cuando el transistor est en corte no hay corriente entre el colector y el emisor: es como un interruptor abierto. En este caso si miramos la Figura 6, la diferencia de potencial entre V1 (colector) y el emisor es de Vcc, puesto que no pasa corriente (y la diferencia de Figura 4: Soldamos la caja a la placa respetando la polaridad potencial entre Vcc y V1 es, inicial. naturalmente, cero). cosa. Vamos a usar un ordenador que Si la intensidad de corriente es algo tiene un puerto paralelo, y desde ese ms alta podremos llegar a saturar el puerto voy a emitir pulsos. Tengo por transistor. En este caso el puente colecotro lado una placa conectada a una pila tor-emisor se comporta como un hilo. de 9V. Dos circuitos con dos fuentes de Bueno, hay una cada muy pequea de alimentacin diferentes: potencial, pero para este peligro! Corremos el riesgo ejemplo vamos a considerar de, si nos equivocamos al que el transistor se comporta trabajar con los transistocomo si existiera un cable res, introducir 9V en el que une directamente el puerto paralelo. Eso parece colector y el emisor. En ese ser que puede ser malo para caso la diferencia de potennuestra controladora. La cial entre V1 y tierra sera de solucin est entonces en cero, mientras que la difedesacoplar los dos circuitos rencia de potencial entre V1 por medio de un nuevo y Vcc es s eso es!: Figura 5: Las cuatro invento: el optoacoplador. Vcc. Es, entonces, lo mismo soldaduras traseras de Aunque esto ya lo veremos que un interruptor cerrado. un pulsador. Dos de en profundidad en el Para poder controlar, por ellas conectadas al cirsiguiente captulo. tanto, la el trnsito de cuito. corriente entre los extremos Echando un Cable de los pulsadores de nuestra placa de radiocontrol, necesitaremos poner la El puerto paralelo es, junto con el serie, patilla del emisor en la parte del inteuno de los puertos de comunicaciones rruptor que da al polo negativo de la ms veteranos en la informtica. En oripila, mientras que V1 tenemos que gen este puerto era unidireccional (los ponerla en la parte positiva. pines de salida eran solo de salida y los Vale, ya tenemos una parte de la teode entrada solo de entrada) y estaba desra. Mi amigo adems me explic otra tinado a conectar la impresora. Con el

50

Nmero 07

WWW.LINUX- MAGAZINE.ES

Control Remoto PRCTICO

Figura 7). La lgica de estos terminales es positiva: cada vez que enve un 1 lgico desde el ordenador estaremos transmitiendo un potenFigura 7: Esquema simplificado de los cial alto y cada vez que pines de datos del puerto paralelo. enviemos un 0 no paso del tiempo tendremos potencial. La documentaeste conector ha cin tcnica de este puerto dice que el ido evolucionanpotencial que emite debera estar do. En la actualicomprendido entre 2.5V y 5V. Para dad es bidirecciocomprobarlo he medido con un mulnal y tiene una tmetro los potenciales de estos ocho mayor velocidad pines y me sale 3.3V por cada uno de Figura 6: Transistor en la transferencia ellos. Es conveniente pedir uno de estos como interruptor. de datos. multmetros (o polmetros) prestados, El conector que hay en el ordenador es puesto que lo usaremos para testear la hembra y el que hemos comprado es correccin del cable que vamos a monmacho de 25 pines. Si nos fijamos en tar. Cmo solo vamos a usar estos ocho este veremos que en la parte donde se terminales de salida de datos podremos espera que soldemos los cables hay una tomar un cable Ethernet (Figura 8) de numeracin del 1 al 25. Cada pin tiene esos que sobran para soldarlo al conecuna finalidad, aunque a nosotros slo tor paralelo. Estos cables tienen cuatro nos interesa los 8 pines de datos. Estos pares de cobre, que dan un total de ocho son los situados entre el 2 y el 9 (ver cables. Son duros y poco maleables, pero es lo que tenamos ms a mano. Una vez pasado el trance y el calor de la soldadura, deberamos tener un cable similar al de la Figura 9. Para probar nuestro nuevo cable usaremos la librera de comunicaciones parapin que podremos descargar desde [2]. Con esta librera podremos activar y desactivar los pines que deseemos del puerto paralelo. La compilacin de la librera es muy sencilla: Figura 8: El cable ethernet y el conector paralelo antes de
soldarlo.

de ir comprobando que cada uno de los cables va recibiendo potencial de manera ordenada por medio de multmetro. Es ahora la ocasin, si no lo hici-

mos en cuando soldamos el cable, de apuntar en un papel la correspondencia pin/color del cable para usarlo ms adelante como referencia.

Y en el Siguiente Nmero
Muy bien, por este mes nos vamos a quedar aqu. Tenemos un cable preparado con ocho terminales, hemos extrado la placa del mando y la hemos soldado a la caja de la pila de 9V. Solo nos queda preparar los optoacopladores y disponerlo todo en una caja vaca. Hacer tests y un programa en C (una variacin del listado de este nmero) que controle cada direccin del coche. Todo eso lo veremos ordenadamente en el siguiente nmero, aunque ya quedan pocos secretos que revelar falta cmo rematar el trabajo. s

RECURSOS
[1] Linux Toys: http://www.linuxtoys.net [2] Librera parapin: sourceforge.net/ http://parapin.

tar -xzvf par pin-1.0.0.tar.gz cd parapin-1.0.0 ./setup-2.6.sh make

Figura 9: Cable Ethernet soldado al conector paralelo.

A partir de una versin modificada de un fichero de ejemplo de la librera, vamos a construir un programa (Listado 1) que pondr a cero los ocho pines de datos, para luego ir activando / desactivando cada uno de ellos en orden ascendente. Es el momento

Alberto Planas es desarrollador de aplicaciones bajo entornos libres desde hace varios aos. Aficionado a la tecnologa desde siempre, alterna sus horas de sueo con las horas dedicadas al estudios de las Redes Bayesianas, programacin con las QT, perfeccionamiento de C++, desarrollo en Java y mil cosas ms.

EL AUTOR

WWW.LINUX- MAGAZINE.ES

Nmero 07

51

Das könnte Ihnen auch gefallen