Dispositivo Móvil

Robótica

Mecánica

Motores

Alimentación y etapa de potencia

Microcontrolador de control

Modulo de radiofrecuencia

Protocolo radio

Brújula electrónica

Microcontrolador de sensores

Ultrasonidos

Infrarrojos

Mecánica

El dispositivo móvil del robot está formada por una plataforma de unos 10 x 15 cm. apoyada sobre tres ruedas, dos traseras tractoras con motores independientes y una delantera con giro libre. La ventaja de utilizar dos ruedas tractoras es que se simplifica la mecánica del robot pues no es necesario utilizar un mecanismo diferencial ni un sistema de dirección. Los giros se realizarán haciendo girar las ruedas motrices a velocidades diferentes.

También se gana en movilidad pues girando las ruedas en sentido contrario se puede hacer que el robot gire sobre si mismo y cambie de dirección es espacios reducidos sin necesidad de hacer maniobras.

Sin embargo, la dificultad que entraña este montaje es que se necesita un control bastante preciso de la velocidad de giro de los motores para hacer que el robot se mueva en línea recta y conseguir los giros deseados.

Para reducir la velocidad de los motores se utiliza un tornillo sin fin acoplado al eje del motor y que hace girar un engranaje fijado al eje de las ruedas, obteniendo una reducción en la velocidad de giro de 40:1 aproximadamente.

La base de motor está construido con una pieza de aluminio de 4 mm. de grosor, lo que le da una consistencia más que suficiente y no es demasiado pesado. Las piezas para apoyar los motores y los ejes de las ruedas están construidas con aluminio de 1 mm. que es muy fácil de cortar y doblar.

Motores

Los motores utilizados son de corriente continua de 6 voltios. En un principio empecé a utilizar motores paso a paso que son más fáciles de controlar con un microprocesador. Utilicé los motores que se usaban en las antiguas disqueteras de 5 1/4 pero al final los descarté porque requerían una alimentación de 12 voltios, tienen poca fuerza y el consumo era elevado.

Los motores de corriente continua son más difíciles de controlar pues para regular su velocidad se necesita utilizar un mecanismo que mida su velocidad, un sistema que permita dar más o menos corriente al motor para modificar su velocidad y un algoritmo de control realimentado.

La medida de velocidad o encoder se realiza utilizando el mecanismo óptico para detectar el movimiento de los ratones mecánicos. Este consiste en una rueda dentada y un foto detector que detecta las variaciones de luz producidas al pasar los dientes de la rueda por delante de un LED emisor. Como el ratón dispone de dos de estos mecanismos para detectar el movimiento en ambas coordenadas de un plano, de un solo ratón se pueden obtener los dos encoder idénticos, uno para cada rueda del robot.

Otra ventaja de estos dispositivos es que los fotodetectores son dobles, ofreciendo dos medidas desplazadas la mitad de la anchura de un diente. Esto permite detectar el sentido de movimiento y, lo que es más importante, compensar falsas transiciones que se pueden dar en el caso que el robot quede detenido justo cuando se produce el cambio del nivel de luz en un fotodetector y genere pulsos sucesivos de avance y retroceso.

Sentido hacia adelante

Sentido hacia atrás

La rueda dentada se ha montado sobre el eje del motor, lo que permite tener una medida de velocidad con suficiente precisión en un tiempo pequeño. Por cada diente (un periodo de la onda cuadrada) se obtienen 4 transiciones, dos en cada LED receptor. En cada transición el sentido de giro se puede obtener leyendo el estado del otro fotodetector, tal como se observa en las figuras anteriores.

En el encoder utilizado la rueda tiene 27 dientes, lo que corresponde a 108 cuentas de posición por vuelta del eje de robot. Con una reducción de 40:1 el total de cuentas por vuelta es de 4.320, lo que da una precisión en la posición más que suficiente. La reducción se realiza con un tornillo sin fin que hace girar un engranaje acoplado directamente al eje de la rueda.

La medida de la velocidad se puede obtener contando el número de pulsos producidos en cada rueda por unidad de tiempo o periodo de muestreo. El periodo de muestreo tiene que ser lo suficientemente grande para que a la velocidad mínima que pueda girar una rueda el número de pulsos sea adecuada para tener una precisión suficiente (10 pulsos sería aceptable).

Por otro lado, hay que considerar también la velocidad máxima a la que podrá ir el dispositivo pues una velocidad excesiva podría producir un elevado número de pulsos por segundo que no fuera capaz de contabilizar nuestra CPU.

pulsos / minuto = p.p.m. = r.p.m. * pulsos por vuelta

Si utilizamos un periodo de muestreo de 20 mseg. tendremos:

pulsos / periodo de muestreo = p.p.p = p.p.m. / 3.000

pues en un minuto tendremos 60 * 50 = 3.000 periodos de muestreo

Es importante tener un número elevado de pulsos por vuelta para poder calcular la velocidad con un tiempo de muestreo corto y de esta forma que el algoritmo de control de velocidad la estabilice rápidamente.

En nuestro caso, para una velocidad máxima del robot de 5.000 r.p.m. y una mínima de 50 r.p.m. el número de pulsos por máximo y mínimo que tendremos en un periodo de muestreo será :

r.p.m. p.p.p.
5.000 180
500 18

En la velocidad más alta el número de transiciones por segundo que tendremos en ambos sensores será 180 * 50 * 2 = 18.000. Como este número es bastante elevado es conveniente detectar las transiciones por interrupción. En nuestro caso los microcontroladores PIC de las familias 16Fxxx y 18Fxxx ofrecen esta posibilidad.

El control de la velocidad de los motores se realiza con un algoritmo PID, aumentando o disminuyendo el control del PWM hasta alcanzar la velocidad deseada. Con un periodo de muestreo de 20 mseg. el algoritmo funciona bastante bien obteniéndose un comportamiento bastante estable de la velocidad.

Alimentación y etapa de potencia

La alimentación de la parte móvil se realiza con 6 baterías recargables de NiMh que proporcionan una tensión nominal de 7.2 voltios. Para alimentar la electrónica a 5V la tensión se reduce con un regulador L4941 de caída de  tensión baja. Esto da un margen de unos 2 voltios para que la electrónica siga funcionando aunque la baterías se estén agotando.

Para reducir el ruido eléctrico producido por los motores se ha insertado un filtro en PI antes del regulador de tensión.

La alimentación de los motores se realiza con la tensión directa de las baterías para disponer de más potencia y evitar las pérdidas del regulador en el elemento de mayor consumo. Por otro lado el regulador aísla la alimentación de los motores, que es de por si ruidosa de la alimentación, de la electrónica.

El control de los motores se realiza con un chip L293 que contiene dos puentes en H. Cada uno de ellos dispone de dos entradas A y B de control que permiten alimentar el motor con cualquier polaridad. Además tiene una entrada de enable E que permite fácilmente controlar la potencia que se suministra al motor utilizando un PWM.

La tabla de funcionamiento de este dispositivo es:

Ex Ax Bx Operación
H H L Giro a la derecha
H L H Giro a la izquierda
H H / L H / L Ax=Bx Frenado
L --- --- Motor parado. Giro libre

El esquema eléctrico de la etapa de potencia se puede ver aquí.

Microcontrolador de control

Como microcontrolador de control de la parte móvil del Robot se utiliza el PIC16F876 funcionando a 20 MHz. También se podría utilizar el PIC18F252 que es algo más potente pero cuando comencé el diseño del robot este último no estaba todavía disponible.

Las funciones principales realizadas por esta CPU son:

  1. Controlar la alimentación de los motores a través de dos salidas del puerto digitales y un PWM por cada motor.
  2. Controlar el sentido de giro de los motores o su desactivación utilizando las señales Ax y Bx.
  3. Detectar el movimiento de los motores a partir de los dos fotodectores de cada motor. Se utilizan cuatro entradas del puerto B que pueden provocar interrupción cuando cambia alguna de ellas.
  4. Controlar la velocidad de los motores utilizando un algoritmo PID para calcular cada 20 mseg. el valor del PWM en cada motor para que se estabilice a la velocidad deseada.
  5. Encender de forma intermitente un LED de testigo que permite saber si el sistema está funcionando. Según la frecuencia de intermitencia se distingue si está siendo controlado por la aplicación de control o no recibe comunicación.
  6. Medir la tensión de las baterías utilizando un divisor de tensión y una de las entradas analógicas. Para evitar el consumo de corriente del divisor este se usa como resistencia limitadora del LED testigo conectado al positivo de la tensión de las baterías. Evidentemente la medida de la tensión se hace cuando se enciende el LED.
  7. Controlar el módulo de comunicaciones radio con la UART y dos salidas digitales, las cuales permiten activar de forma independiente el receptor y el transmisor del transceptor radio.
  8. Medir las señales que proporciona una brújula electrónica utilizando dos entradas analógicas. Se usa una salida para controlar la alimentación de la brújula electrónica o desconectarla para que no consuma.
  9. Se usa una salida digital para dar alimentación de los LEDs emisores de los odómetros. Cuando el sistema está detenido se desconectan para reducir el consumo.
  10. El puerto de comunicaciones I2C se deja disponible para poder conectar otros periféricos. También se puede conectar a este puerto otros PICs que amplíen la funcionalidad que puede ofrecer el microprocesador principal, como es el caso de la CPU de sensores.

En el diseño del hardware se ha procurado introducir mecanismos que permitan desconectar los elementos que no sean necesarios. Para ello se puede desconectar el receptor del módulo radio, los LED emisores del odómetro y la brújula electrónica. Por último también se podría poner en bajo consumo el microcontrolador para reducir el consumo al mínimo en periodos de espera.

Modulo de radiofrecuencia

El módulo de radiofrecuencia permite establecer una comunicación inalámbrica entre el módulo móvil del robot y el ordenador de control. Para ello lo más sencillo es utilizar un módulo transceptor comercial que permita transmitir y recibir datos a través de un puerto serie RS232.

El módulo utilizado es el XTR-434L de Aurel cuyas características más importantes son:

  1. Alimentación a 5 voltios.
  2. Permite una velocidad de comunicación de hasta 50 Kbps
  3. Alcance hasta 300 m. sin obstáculos
  4. Se puede activar el receptor y el transmisor de forma independiente.

Para establecer el radioenlace se utilizan dos transceptores idénticos.

En la parte del PIC el transceptor se conecta directamente a la UART pues ambos usan niveles TTL.

En el ordenador de control se utiliza un conversor MAX220 para adaptar los niveles de tensión de las líneas TX, RX y RTS. Esta última se utiliza para conmutar de recepción a transmisión.

PROTOCOLO RADIO

Aunque en teoría el módulo radio funciona como una prolongación de un puerto serie a través del aire, es importante tener en cuenta algunas consideraciones para definir la forma en que se empaqueta la información.

En primer lugar el aire es un medio ruidoso, por tanto la información enviada puede verse alterada o deteriorada. En importante pues prever un mecanismo que permita detectar cuando la información recibida no es correcta y poder recuperar la información válida.

Otro detalle a considerar es que mientras en una puerta serie la comunicación es full-duplex, es decir, la información puede fluir en ambos sentidos simultáneamente, el enlace radio es half-duplex. El transceptor puede funcionar como transmisor o como receptor, pero no ambas cosas a la vez. Además, el cambio de recepción a transmisión no es inmediato sino que lleva cierto tiempo y se precisa seguir las especificaciones del módulo radio para que el cambio sea correcto.

Otra característica del transceptor utilizado es que en recepción, cuando no se está recibiendo portadora, el módulo está recibiendo ruido blanco que genera caracteres aleatorios. El protocolo deberá ser capaz de distinguir el ruido blanco de los paquetes válidos de una forma eficaz.

Por último, cabe la posibilidad de tener más de dos dispositivos de comunicación, por ejemplo si se construyen varios robots. Es interesante pues que el protocolo sea multipunto y permita al ordenador de control comunicar con varios dispositivos móviles.

Con todo esto, la información a través del radioenlace se transmite en paquetes con la siguiente estructura:

La comunicación se realiza a 9.600 bps con 8 bits de datos, 1 de stop y sin paridad.

El preámbulo tiene el objeto de sincronizar el receptor e introducir el retardo necesario hasta que la transmisión es válida tras activar el transmisor.

La cabecera permite detectar el inicio de un paquete válido entre el ruido de fondo que se recibe cuando no hay portadora.

La dirección de destino es 0 para el maestro y >= 1 para los dispositivos móviles. Aunque inicialmente solo hay un dispositivo móvil el protocolo se ha diseñado para poder comunicar con varios.

El CRC se calcula usando el polinomio x16 + x5 + 1. Se aplica a todos los bytes a partir de la longitud, sin incluir a ésta. Sirve para detectar paquetes incorrectos. El receptor ignora los paquetes con CRC incorrecto.

La cola introduce un retardo al final de la transmisión.

La transmisión siempre la inicia el equipo maestro que en este caso es el PC de control, indicando en el byte de dirección el equipo destino. Este siempre debe responder con un mensaje con destino al equipo 0 para confirmar su recepción. Si no se recibe la confirmación el paquete es reenviado hasta 2 veces más.

El cuerpo del mensaje contiene una o más ordenes, formada cada una por un byte de código y sus posibles parámetros. En el caso que las ordenes tengan respuesta estas se concatenan en el mensaje de respuesta siguiendo el mismo orden.

El conjunto de la las órdenes que se pueden enviar al robot constituyen el protocolo de aplicación, que se describe en un documente aparte.

Brújula electrónica

Con el fin de tener una referencia absoluta de la orientación del robot se le ha incorporado una brújula electrónica. Este dispositivo ofrece dos señales analógicas que son proporcionales a la intensidad del campo magnética que atraviesan dos sensores situados perpendicularmente en un plano paralelo al suelo.

De esta forma, estas señales son una proporcional al seno del ángulo en que está orientado el robot y la otra proporcional al coseno de este mismo ángulo, con lo dividiendo se obtiene la tangente del ángulo y, calculando la arco tangente se puede obtener fácilmente el ángulo en que está orientado el robot.

En la práctica esta sensor no ha resultado muy útil pues el campo magnético terrestre se ve alterado de forma significativo por los objetos metálicos que rodean al robot, incluidas las estructura metálicas empleadas en la construcción de la vivienda. De todas formas si que ofrece una medida buena del ángulo en determinadas posiciones en las que no haya objetos metálicos cerca.

Microcontraldos de sensores

Con los dispositivos conectados a la CPU de control prácticamente quedan agotados los recursos en el microcontrolador PIC16F876. Para poder ampliar el hardware del robot se ha previsto la utilización del bus I2C que es un bus multipunto al que se pueden conectar varios dispositivos.

El protocolo utilizado en el bus I2C se describe en BUS-I2C.

Para dotar de sensores al robot se ha utilizado una CPU independiente comunicada por I2C con la CPU principal. El microcontrolador utilizado en este caso es el PIC18F252 trabajando a una velocidad de reloj de 40 MHz..

Los sensores que incorpora son:

-        Medidor de distancia por Ultrasonidos

-        Sensores de distancia por infrarrojos

ULTRASONIDOS

La señal de ultrasonidos se genera en el PIC usando el CCP2 (pin RC1) oscilando a 40 MHz y con el PWM ajustado al 50%.

Cuando se lanza un pulso se inicia el TMR1.

La duración del pulso se controla con la base de tiempos del PIC que provoca una interrupción cada 0.1 mseg. Se define en número de interrupciones para detenerse. Para distancias cortas conviene que el pulso de ultrasonidos sea breve (0.2 a 0.4 mseg.), mientras que para distancias largas es más adecuado un pulso más largo (0.6 a 0.8 mseg.).

El eco del pulso de ultrasonidos se recibe por el pin RC2 y es tratado por el CCP1 que, al detectar el primer flanco, captura el valor del TMR1 con el tiempo que tarde en recibirse el eco.

El flanco se produce por un comparador con la tensión que produce un divisor de 10K de pull-up y 8K2 de pulll-down.

Se dispone de una señal de cambio de umbral (pin RC1), que al activarse pone en paralelo de la resistencia de pull-down otra de 10K, lo que da una resistencia equivalente de 4K5, variando el valor del umbral en que se dispara el detector del eco.

La frecuencia de oscilación del TMR1 es de 40/4 MHz con un divisor de 1:8, lo que da un tiempo entre ticks de 0.8 useg. En este tiempo el sonido recorre una distancia de 0,272 mm. Con dos bytes  el valor máximo para la medida de distancia recorrida por el pulso es de 17.825,52 mm.

Como se mide el tiempo de ida y vuelta del sonido, la distancia del objeto será la mitad de la que corresponde al tiempo del eco.

 

INFRARROJOS

El sensor de infrarrojos son cuatro elementos formados por el CNY70 y un transistor BC547B con una beta de aprox. 200. El diodo emisor se polariza con una resistencia de 100 ohmnios para darle una corriente de 37 mA con 5V de alimentación.

El fototransistor se polariza con una resistencia de 1K, lo que hace que se sature con la luz reflejada a unos 2 cm. de distancia.

El encendido del led se controla con un mosfet BS170.

Existen 4 sensores de infrarrojos numerados del 1 al 4 situados de la forma:

Sensor 1 = Frontal izquierdo

Sensor 2 = Lateral izquierdo

Sensor 3 = Frontal derecho

Sensor 4 = Lateral derecho

La lectura de cada uno de los sensores se hace en dos pasos, el primero sin encender el led transmisor (se obtiene la luminosidad umbral) y el segundo con el led encendido. La proximidad del objeto que refleja la luz se evalúa con la diferencia de la lectura con el led encendido menos la que se obtiene con el led apagado.

Si la diferencia de ambas lecturas es pequeña puede ser que sea porque el objeto está alejado (señal baja) o porque existe un umbral de luz infrarroja en el ambiente (señal alta). En este segundo caso se desprecia el valor de la medida pero se puede suponer que no hay ningún objeto cercano pues este haría sombra a la fuente de luz que afecta al receptor.