Archivo por meses: diciembre 2014

El insecto palo robótico HECTOR da sus primeros pasos

Un equipo de investigadores de la Universidad de Bielefeld ha tenido éxito en enseñarle la forma de caminar al único robot de su tipo en el mundo. Sus primeros pasos fueron registrados en un video. El robot se llama HECTOR y su construcción se basa en las formas de un insecto palo (Phasmatodea)

Con un diseño inspirado en los insectos, HECTOR tiene juntas elásticas pasivas y un exoesqueleto ultraligero. Lo que lo hace único es que está equipado con un gran número de sensores y que funciona de acuerdo con un concepto inspirado en la biología, un control reactivo descentralizado: el Walknet. Para el 2017, el robot andante estará equipado con habilidades adicionales dentro de un importante proyecto en el Centro de Excelencia de Tecnología de Interacción Cognitiva (CITEC).

Dibujo de diseño de HECTOR

El robot andante ha sido construido por el grupo de investigación en biomecatrónica. En el futuro, HECTOR servirá como una plataforma para los biólogos y expertos en robótica para poner a prueba las hipótesis sobre la locomoción animal. Un aspecto importante será la fusión de grandes cantidades de datos de los sensores de manera que el robot pueda caminar de modo más autónomo que antes. Una cuestión clave más será una óptima coordinación de los movimientos en un robot con articulaciones elásticas.




«La forma en que actúa la elasticidad en las unidades de HECTOR es comparable a la forma en que los músculos actúan en los sistemas biológicos», dice el profesor Dr. Axel Schneider. Él dirige el grupo de investigación biomecatrónica y coordina el proyecto CITEC junto con el Profesor Dr. Volker Dürr del Departamento de Cibernética Biológica de la Facultad de Biología. Schneider y su equipo desarrollaron sus propios actuadores elásticos. HECTOR tiene 18 de esos. Gracias a la elasticidad inspirada en la biología que poseen sus unidades, HECTOR puede adaptarse con flexibilidad a las propiedades de las superficies sobre las que camina.

«Sin embargo, la elasticidad por sí sola no es suficiente para que HECTOR pueda caminar a través de un entorno natural que contiene obstáculos», dice Schneider. «El reto era desarrollar un sistema de control que se encargara de coordinar los movimientos de sus patas en entornos difíciles, también».

El colega de Schneider Jan Paskarbeit fue responsable del desarrollo y la construcción del robot. Él también programó una versión virtual de HECTOR con el fin de poner a prueba enfoques de control experimental sin dañar el robot. «Todos los subsistemas tienen que comunicarse entre sí para que el robot camine sin ninguna dificultad», dice Paskarbeit. «De lo contrario, por ejemplo, HECTOR podría tener demasiadas patas en el aire al mismo tiempo, volverse inestable y caerse. Por otra parte, las patas tienen que ser capaces de reaccionar a las colisiones contra obstáculos. Hemos Solucionado esto implementando un comportamiento reflejo para subir por encima de los objetos», explica el investigador del CITEC.

En el Centro de Excelencia CITEC, ocho grupos de investigación se han unido durante tres años en un proyecto a gran escala para optimizar a HECTOR. Los científicos vienen de los campos de la informática, la biología, la física y la ingeniería.

En la actualidad, los investigadores están trabajando en el equipamiento de la sección frontal de HECTOR con sensores de largo alcance, como en una cabeza. Ya tienen un prototipo con dos cámaras laterales y dos antenas táctiles. Tanto el sistema visual como el táctil están inspirados en los de los insectos; sus espacios de funcionamiento y su resolución son similares a los de modelos animales.

Equipo de diseño de HECTOREquipo de trabajo

«Un gran reto ahora será encontrar una forma eficaz de integrar estos sensores de largo alcance con los sensores de posición y los sensores de las articulaciones. HECTOR es la plataforma ideal de investigación para hacer esto», dice Volker Dürr.

A hexapod walker using a heterarchical architecture for action selection

Por otra parte, hasta la fecha Hector ha sido un sistema reactivo: Reacciona a los estímulos de su entorno; gracias al programa de software «Walknet” puede caminar con un paso de insecto; y gracias a otro programa llamado «Navinet» es capaz de encontrar el camino hacia cualquier objetivo distante. Pero Schillling y Cruse también han desarrollado un programa llamado «reaCog» que se activa cuando dos de los otros programas no son capaces de resolver un problema dado.

Este nuevo software permite al robot simular un «comportamiento imaginado» para resolver dicho problema: Héctor busca nuevas soluciones y evalúa si estas acciones tendrían sentido, en vez de completar automáticamente cualquier operación predeterminada. El hecho de ser capaz de imaginar acciones es una característica central de una forma simple de conciencia.

Autoconciencia

Pero en breve, además, Héctor demostrará cómo funciona la nueva arquitectura de software para él creada y que le proporcionará la “autoconciencia”. De momento, esta arquitectura solo ha sido probada en simulaciones informáticas.

Como explica Holk Cruse, «el ser humano posee conciencia reflexiva cuando no solo puede percibir lo que experimenta, sino que también tiene la capacidad de experimentar que está experimentando algo. Por tanto, la conciencia reflexiva existe si un sistema técnico o humano puede verse a sí mismo ‘desde fuera de sí mismo’, por así decirlo».

Cruse y Schilling han demostrado como puede surgir conciencia reflexiva de un robot. «Con el nuevo software, Héctor puede observar su estado mental interno —en cierta medida, sus estados de ánimo— y dirigir sus acciones, usando esta información», señala Schilling. Pero, además, estas facultades básicas estarán preparadas para que Héctor también sea capaz de evaluar el estado mental de otros. Así será “capaz de sentir las intenciones o expectativas de los demás, y actuar en consecuencia”, aseguran los investigadores.

Noticias relacionadas:






Mecánica del robot didáctico: ruedas principales (1)

En este artículo analizo las opciones para las ruedas principales, de movimiento, del robot didáctico social, y la búsqueda (constante) de muy bajo costo, o si es posible CERO costo. Sólo me quedaré tranquilo cuando se pueda armar totalmente con material de desarme de equipos descartados.

Ruedas

Gracias a un dinero donado pude comprar 96 ruedas de la marca RASTI de 53 mm de diámetro y sus juegos de ejes con dos puntas de encastre.

Ruedas de RASTI

Los ejes son del viejo estilo, no como se fabrican ahora, lo mismo en el caso de las ruedas, aunque en éstas no se nota gran diferencia. Con los ejes es otra cosa, ya que los ejes actuales son de metal con el cabezal de empalme plástico, mientras que los antiguos son totalmente de plástico blando.

Ejes y otras piezas

Los ejes cortos (96 en total) tienen 40 mm de longitud total, 17 de la parte recta del eje en sí y el resto en 11,5 mm de cada uno de los cabezales. La rigidez en el caso de este eje corto es aceptable.

Los ejes largos (48 en total) tienen 74 mm de longitud total, 51 de la parte recta del eje en sí y el resto en 11,5 mm de cada uno de los cabezales. El eje largo se dobla con facilidad.

Ejes blandos

Los 96 ejes cortos parecen ofrecer la mejor solución para empalmar la rueda con el mecanismo de reducción del motor en el robot didáctico. La tarea a pensar seriamente es crear un buje que, en su fricción contra el eje, no lo desgaste ni tampoco se desgaste demasiado. Debería tener, incluso, un punto de ingreso de grasa lubricante.

En el centro de la imagen de abajo se observan las piezas de Rasti que, de a dos, cumplen esta función (de color gris). Pero no me parece que su durabilidad en un uso más intenso, como en un robot para aprendizaje, sea adecuada.

Unión tipo RASTI

El montaje que debemos estudiar no utilizará las piezas de RASTI que se diseñaron como “bujes”, y de uno de los extremos debemos estudiar el método de anclaje (conexión) con el mecanismo de engranajes de reducción de los motores.

Unión que se debe diseñar

Se muestra un diagrama del fabricante del montaje de ruedas con un eje corto (no hacer caso a los colores, no coinciden con los reales de ninguna de las dos clases de ejes que he conocido). Le sigue una imagen con mis anotaciones.

El “buje” ideal sería, como lo son las piezas de ladrillos encastrables originales, una pieza compuesta de dos partes, con su conducto para el eje, dos orificios de fijación y uno en la parte superior, centrado y conectado con el conducto del eje, por donde aplicar la grasa adecuada. Debo averiguar bien con qué material se debería hacer esta pieza que dibujé, más o menos, en la imagen de abajo.

Bloques de montaje diseñados

El próximo paso necesario es conectar el extremo opuesto del eje de la rueda al mecanismo de reducción de la unidad de CD-ROM, sobre el engranaje de salida. Quizás la mejor opción es buscar un engranaje que se ajuste al de este mecanismo y colocarlo en el extremo del eje de RASTI. Uno de los problemas es que en estos mecanismos (como ya comenté en artículos anteriores) hay una variación muy grande de diámetros de engranaje, de paso y cantidad de dientes.

Sin embargo, es una posibilidad más interesante que la de unir directamente el eje al engranaje de salida, ya que aporta facilidad de desarme para el mantenimiento y reemplazo de partes.

En este caso se conectaría así:

Conexión propuesta con engranaje acoplado

Otra opción (con costo de compra, y lamentablemente sin posibilidad de comprar las piezas individuales, ya que solamente se pueden adquirir como parte de kits con muchas otras piezas), sería usar el conector que mostramos remarcado en la foto que sigue:

Pieza de RASTI para encastrar piezas al eje

Este conector nos permitiría unir el eje a aquellos engranajes de salida que tengan suficiente diámetro, en los cuales se puedan perforar los 4 agujeros de encastre para los postes de amarre de esta pieza.




En las fotos que siguen muestro algunos ejemplos de uso de esta pieza.

Pieza de encastre unida a un engranaje (y otros empalmes)Ejemplo de encastre 1

Pieza de encastre unida a una llanta de ruedaEjemplo de encastre 2

Pieza de encastre unida a una polea y a un engranajeEjemplo de encastre 3

Piezas de encastre unidas a piezas «ladrillo» estándarEjemplo de encastre 4

Otra posibilidad es sacar molde del encastre del cubo de la rueda y de la parte circular de la llanta plástica, y crear nuestra propias piezas con epoxi o algún plástico derretible. Puede ser difícil… o no. No tengo experiencia en esta tarea y debería hacer pruebas.

Ruedas

También se podría tomar un molde del punto de unión con el eje de la pieza de encastre de cuatro postes que vimos antes, sólo que del lado de los postes insertables se colocaría un círculo plástico a unir con el engranaje, o un engranaje que coincida en el engranaje de salida de la caja de reducción.

Otra manera es unir un círculo de plástico al extremo del eje (muy bien centrado, y esto me resulta difícil de lograr), y que éste se pueda pegar o atornillar (aunque los tornillos “pesan” y todo lo que sea peso adicional evitable debe ser muy tenido en cuenta en este diseño) a los engranajes de salida de la caja de reducción.

Aquí se observa una solución similar, un tanto tosca, que encontré en Internet (pero es más o menos la idea). Obviamente, se hizo utilizando pegamento. El eje que sobresale del disco gris de la foto sería, en nuestro caso, el eje de RASTI al que va unida la rueda.

Unión eje – engranajeUnión eje con engranaje

El primer intento será: engranajes acoplados al eje y a la salida de la caja de reducción

Ya que en principio parece ser menos complejo agregar un engranaje en el extremo opuesto del eje de la rueda, he desarmado una serie de video-caseteras VHS viejas y descartadas que compré en remates, obteniendo varios pares de engranajes.

Recordemos que cada robot tiene un par de motores y sus juegos de engranaje asociados, de modo que siempre estamos hablando de conjuntos de dos piezas.

Engranajes de desarmeEngranajes varios

El trabajo ahora es buscar de aparear estos engranajes con los de salida de los conjuntos de reducción que obtuve del desarme de unidades de CD-ROM (muy variados en diámetro y paso, como ya dije), y luego buscar la forma más segura y práctica de unirlos al extremo del eje. El resto es montar todo sobre una base.

Continuaré con este tema…

Más información:






Base robótica

Construir un robot sobre un chassis comprado, que ya tiene los elementos necesarios, es mucho más fácil que crear su mecánica: se necesita habilidad de manipuleo, las herramientas correctas y precisión en el trabajo

Si queremos crearlo a partir de materiales de desarme, ya es otra cosa. Un robot necesita una base donde montar la estructura. La plataforma en sí no es un gran problema, se puede recortar de partes de cajas de monitores, impresoras, frentes de PCs, bandejas de CR-ROM, chassis y tapas de discos rígidos, etc. No necesita tener tantas perforaciones y ranuras como tienen las plataformas comerciales. Agujereamos según las necesidades.

La imagen lo ilustraChassis comprado

El problema cuando se busca obtener todos los materiales desde la recuperación de elementos de equipos descartados son las otras tres partes: dos motores con reducción, sus ruedas y una rueda de giro libre, o rueda loca.


En la serie de artículos de los últimos tiempos estuve tratando sobre la recuperación de motores con reducción que puedan adaptarse a un robot didáctico. Quien los haya leído, se habrá dado cuenta de que no es tan fácil como parece, ya que la mecánica de las unidades de CD-ROM, de discos rígidos y de disketteras suele ser muy variada. Cuesta mucho conseguir los pares para cada robot. Deben ser idénticos en lo mecánico y también eléctricamente, aunque compensar las diferencias en la parte eléctrica es más fácil.

Los artículos hasta ahora fueron:

Así que los próximos movimientos deben estar orientados a conseguir ruedas que se adapten a los mecanismos de motor y engranaje que he rescatado de unidades de CR-ROM. No deberían ser compradas (aunque sí pueden provenir de donaciones), o entramos a la situación de crear un robot que no esté formado de partes rescatadas; y este es el programa propuesto.

Otro elemento a lograr es la rueda libre, o rueda loca. El tercer punto de apoyo del robot. Luego vienen los portapilas, y finalmente la electrónica. Son los temas que iré tratando en unas pequeñas notas que seguirán. Hay diversas opciones, pero la elegida no debe hacernos muy esclavos en tiempo de trabajo: las horas-hombre tienen valor cuando no se tiene un mecenas que te mantenga.

Ejemplo de rueda loca compradaRueda loca

Próximamente, un elemento que por simple no se aleja de ser crítico: Ruedas para el robot didáctico.

Ejemplo de base y rueda loca caserasBase y rueda loca caseras






Donaciones para los robots desde Marcos Paz

Nuevas donaciones para desarme y para construir robots de mi plan Robots Didácticos Sociales. Como verán, algunas muy específicas e interesantes. Gracias, Susi, Leonel, Andrea

Conjunto de donaciones recibidasConjunto donaciones
Donaciones

Donaciones para los robots desde Marcos Paz: un auto a control remoto; sin el transmisor del control, aunque igual debe valer mucho dineroAuto de carrera

Donaciones para los robots desde Marcos Paz: este tipo de ruedas, con cubiertas blandas neumáticas, son excelentes para la marcha y agarre de un robot y tienen importantes precios en el mercadoRuedas






El microcontrolador "cerebro" del robot programable (básico)

Como se puede observar en el artículo sobre el diagrama básico del robot programable, utilizamos como unidad central de control un microcontrolador PIC16F876A de Microchip, en encapsulado DIP de 28 patas.

PIC16F876Apic16f876

Características de los microcontroladores PIC16F87xA

PIC16F87xA es una familia de 4 microcontroladores de Microchip: PIC16F873A, PIC16F874A, PIC16F876A y PIC16F877A. Se diferencian entre ellos por la cantidad de memoria disponible y la cantidad de conexiones al exterior, que dependen del modelo de su encapsulado, básicamente dos modelos en formato DIP (Dual In Line Package) los de 28 patas y los de 40 patas. También hay formatos de montaje de superficie: los de 28 en SOIC y SSOP, y los de 40 QFP (Quad Flat Package), de 44 patas, y PLCC (Plastic Leaded Chip Carrier), de 40 patas, con las mismas prestaciones que en el caso de cápsula DIP de 40.

EncapsuladosCápsulas

En la tabla que sigue, donde está remarcado el microcontrolador que controla en este momento el robot programable, podemos observar los siguientes datos:

FAMILIAFamilia

La primera columna (Micro controlador) lista los microcontroladores que componen esta familia.

Las columnas segunda (Progr bytes) y tercera (Progr words) indican los bytes de memoria de programa y la cantidad de words equivalentes (palabras de 14 bits en la arquitectura de estos microcontroladores, tamaño que ocupa cada instrucción de programa) que posee el microcontrolador para alojar el programa de usuario.

La columna (RAM bytes) indica el espacio de memoria RAM (memoria de acceso aleatorio) disponible.

La columna (EEPROM) indica el espacio de memoria EEPROM (memoria de sólo lectura modificable eléctricamente) disponible.

La columna (E/S) indica la cantidad de Entradas y Salidas de ese microcontrolador.

La columna (ADC 10bit) indica la cantidad de entradas al convertidor analógico digital de 10 bits de resolución.

La columna (CCP) indica la cantidad de módulos para comparar y capturar pulsos.

La columna (SPI) indica si existe un módulo de interfaz serie para periféricos.

La columna (I2C) indica si existe un módulo de interfaz serie inter-integrados.

La columna (USART) indica si existe un módulo universal de recepción/transmisión serie asincrónica.

La columna (TIMER 8/16) indica la cantidad de temporizadores de 8 y de 16 bits.

La columna (Comp) indica la cantidad de comparadores.

Los microcontroladores PIC16F87x de Microchip pertenecen a una gran familia de microcontroladores con un bus de datos de 8 bits, que tienen las siguientes características generales que los distinguen de otras familias:

Arquitectura Harvard
Tecnología RISC
Tecnología CMOS
– Sólo posee 35 instrucciones que aprender
– Todas las instrucciones se ejecutan en un ciclo de reloj, excepto los saltos, que requieren dos ciclos
– Frecuencia de operación de 0 a 20 MHz (desde CC a 200 ns de ciclo de instrucción)
– Hasta 8K x 14 bits de memoria FLASH para el programa
– Hasta 368 bytes de memoria de datos de acceso aleatorio (RAM)
– Hasta 256 bytes de memoria de datos EEPROM
– Hasta 14 fuentes de interrupción en los de 28 patas y 15 en los de 40 patas
Pila (Stack) de hardware de 8 niveles
– Reset de encendido (POR)
– Temporizador de encendido (PWRT)
– Temporizador de arranque del oscilador (OST)
– Sistema de vigilancia Watchdog Timer (temporizador «despertador»).
– Se puede programar una protección de código
– Modo SLEEP (dormido) de bajo consumo de energía
– Diversas opciones para el oscilador
– Programación y depuración serie (ICSP, In Circuit Serial Programming = Programación Serie En Circuito) a través de dos patas
– El CPU puede realizar lectura/escritura de la memoria FLASH de programa
– Rango de voltaje de operación de 2,0 a 5,5 volts
– Puede entregar alta corriente en una pata de salida: 25 mA
– Rangos de temperatura: Comercial, Industrial y Extendido
– Bajo consumo de potencia:
    . Menos de 0,6 mA a 3 V, 4 MHz
    . 20 µA a 3 V, 32 KHz
    . Menos de 1µA de corriente en estado latente (stand by).

Estas características se conjugan para lograr un dispositivo altamente eficiente en el uso de la memoria de datos y programa, y por lo tanto en la velocidad de ejecución.

El PIC16F876, utilizado en el robot programable, maneja hasta 14 posibles fuentes de interrupción.

Los módulos CCP pueden comparar y capturar la duración de pulsos. La captura se efectúa con una precisión de 12,5 ns y una resolución de 16 bits, mientras que la comparación con igual resolución alcanza una precisión de 200 ns. Además, la sección PWM varía el ancho de los pulsos con una resolución máxima de 10 bits, técnica muy empleada en la regulación de los motores de CC (corriente continua).

La USART está orientada a la comunicación entre sí de subsistemas o máquinas (RS-232), y el MSSP (Master Synchronous Serial Port = Puerto Sincrónico Serie Maestro; el módulo que implementa la comunicación I2C y SPI) está destinado a la comunicación entre diversos circuitos integrados, admitiendo los protocolos I2C y SPI.

En los PIC de esta familia con 40 patas (16F874 y 16F877) está disponible el protocolo PSP (Parallel Slave Port, o Puerto Paralelo Esclavo), que es más veloz que la comunicación serie pero consume muchas líneas de E/S: 8 del puerto D y 3 de control del puerto E. Sin embargo, es muy importante su existencia porque estos puertos permiten comunicarse con memorias y periféricos de acceso paralelo utilizados ampliamente en el mundo de los microprocesadores.

En todos los PIC 16F87X existe un conversor A/D de 10 bits, con 5 canales de entrada en los de 28 patas y 8 canales en los de 40.




Conexiones al exterior del microcontrolador PIC16F876A

Diagrama en bloques del microcontrolador PIC16F876A utilizado en el robot programable de los Robots Didácticos

SocialesDiagrama en bloques

Parámetros generales a tener en cuenta

Los microcontroladores que produce Microchip cubren un amplio rango de dispositivos cuyas características pueden variar como sigue:

– Encapsulado desde 8 patitas hasta 68 patitas
– Tecnología de la memoria incluida EEPROM, EPROM, ROM, FLASH
– Voltajes de operación desde 2,0 V hasta 6,0 V
– Frecuencia de operación hasta 20 MHz

En el caso de nuestro microcontrolador, el que controla el robot programable, los parámetros indicados son:

– Cápsula de 28 patas
– Memoria RAM, EEPROM y FLASH
– Voltaje de operación de 2 V a 5,5 V
– Frecuencia máxima de operación de 20 MHz

Encapsulado

El microcontrolador de nuestro robot está disponible en cápsulas DIP, SOIC y SSOP de 28 patas, que se pueden observar en las figuras de encapsulados que mostramos a continuación y en los diagramas de patas ubicados al comienzo.

Encapsulado DIP, SOIC y SSOPCápsulas

Por el momento utilizamos la cápsula DIP de 28 patas.

Parte del montaje del robot didáctico programableMicrocontrolador en el robot

Diagrama de entradas y salidas del PIC16F876A en formato DIP 28PIC16F876A

Oscilador

Los PIC de rango medio permiten hasta 8 diferentes modos de funcionamiento para el oscilador. El usuario puede seleccionar alguno de estos modos programando 3 bits de configuración en el dispositivo denominados: FOSC2, FOSC1 y FOSC0. En algunos de estos modos el usuario puede indicar que se genere o no una salida del oscilador (CLKOUT) a través de una pata de Entrada/Salida.

Los modos de operación se muestran en la siguiente lista:

LP Baja frecuencia (y bajo consumo de potencia)
XT Cristal / Resonador cerámico externos (frecuencia media)
HS Alta velocidad (y alto consumo de energía) cristal/resonador
RC Resistor/Capacitor externos (lo mismo que EXTRC con salida CLKOUT)
EXTRC Resistor/ capacitor externos
EXTRC Resistor/Capacitor externos con CLCKOUT
INTRC Resistor/Capacitor internos para una frecuencia de operación de 4 MHz
INTRC Resistor/Capacitor internos para operación a 4 MHz con CLKOUT

Los modos LP, XT y HS requieren un cristal o resonador externo.

Cristal externo: En los tres modos se puede utilizar un cristal o un resonador cerámico externo.

Circuito RC externo: En los modos RC y EXTRC, el PIC puede generar su señal de oscilación basada en un conjunto RC (Resistor/Capacitor) externo conectados al microcontrolador.

Este modo sólo se recomienda cuando la aplicación no requiera una gran precisión en la medición de tiempos.

Rangos

La frecuencia de oscilación depende no sólo de los valores del resistor Rext y el capacitor Cext, sino también del voltaje de la fuente, Vdd. Los rangos admisibles para el resistor y capacitor son:

Rext: de 3 a 100 Kohms
Cext: mayor de 20 pf

Oscilador externo

También es posible conectarle al microcontrolador una señal de reloj generada en un oscilador externo a través de la pata OSC1 del PIC. Para ello el PIC deberá estar en uno de los tres modos que admiten cristal (LP, XT o HS).

Oscilador interno de 4 MHz

En el modo INTRC, el PIC utiliza un conjunto RC interno que genera una frecuencia de 4 MHz con un rango de error calibrable de ± 1,5%. Para calibrar el error de oscilación se usan los bits CAL3, CAL2, CAL1 Y CAL0 del registro OSCCAL.

Calibración del oscilador interno

El fabricante ha colocado un valor de calibración para estos bits en la última dirección de la memoria de programa. Este dato se ha guardado en la forma de una instrucción RETLW XX. Si no se quiere perder este valor al borrar el PIC (por ejemplo en versiones EPROM con ventana) primero se deberá leer esta memoria y copiar el valor en un resguardo. Es una buena idea escribir el valor en la cápsula empaquetado antes de borrar la memoria.

En la siguiente figura se muestran las conexiones en cada uno de los modos:

Modos de oscilador de relojOsciladores

En nuestro robot programable utilizamos un cristal de 4 MHz en modo XT.

Periféricos

Timer0 : Contador/Temporizador de 8 bits con pre-escalador de 8bits
Timer1 : Contador/Temporizador de 16 bits con pre-escalador
Timer2 : Contador/Temporizador de 8 bits con pre-escalador y post-escalador de 8 bits y registro de periodo.
– Dos módulos de Captura, Comparación y PWM
Convertidor Analógico/Digital: de 10 bits, hasta 8 canales (en nuestro robot, hasta 5 canales)
Puerto Serie Síncrono (SSP)
Puerto Serie Universal (USART/SCI).

Descripción de la CPU (Central Processing Unit = Unidad Central de Proceso)

La CPU es la responsable de la interpretación y ejecución de la información (instrucciones) guardada en la memoria de programa. Muchas de estas instrucciones operan sobre la memoria de datos. Para operar sobre la memoria de datos, además, si se van a realizar operaciones lógicas o aritméticas, se debe usar la Unidad Lógica y Aritmética (Arithmetic Logic Unit = ALU). La ALU controla los bits de estado (Registro STATUS). Los bits de este registro se alteran dependiendo del resultado de algunas instrucciones.

Ciclo de instrucción

El registro Contador de Programa (Program Counter = PC) es gobernado por el ciclo de instrucción. En cada ciclo de instrucción la CPU lee la instrucción guardada en la memoria de programa que está apuntada por el PC (ciclo Traer = Fetch) y al mismo tiempo ejecuta la instrucción anterior, esto debido a una cola de instrucciones que le permite ejecutar una instrucción mientras lee la próxima:

Cada ciclo de instrucción (Tcy) se compone a su vez de cuatro ciclos del oscilador (Tosc). Cada ciclo Q provee la sincronización para los siguientes eventos:

– Q1: Decodificación de la instrucción
– Q2: Lectura del dato (si lo hay)
– Q3: Procesa el dato
– Q4: Escribe el dato

Debido a esto cada ciclo de instrucción consume 4 ciclos de reloj, de manera que si la frecuencia de oscilación es Fosc, Tcy será 4/Fosc.

Registros de la CPU

Registro PC (Program Counter o Contador de Programa)

Es un registro de 13 bits que siempre apunta a la siguiente instrucción a ejecutarse.

Registro de Instrucción

Es un registro de 14 bits. Todas las instrucciones se colocan en él para ser decodificadas por la CPU antes de ejecutarlas.

Registro W

Registro de 8 bits que guarda los resultados temporales de las operaciones realizadas por la ALU

Registro STATUS (Estado)

Es un registro de 8 bits. Cada uno de ellos (denominados Banderas) es un indicador de estado de la CPU o del resultado de la última operación.

Banderas en el registro de Estado

Z – Este bit se pone (= 1) para indicar que el resultado de la última operación fue cero, de lo contrario se limpia (= 0)

C – Bit de Acarreo/Préstamo de la última operación aritmética (en el caso de resta, se guarda el préstamo invertido.

CD – Acarreo/Préstamo proveniente del cuarto bit menos significativo. Funciona igual que el bit C, pero para operaciones de 4 bits.

Posibilidad de direccionamiento indirecto

Este modo de direccionamiento permite acceder una localidad de memoria de datos usando una dirección de memoria variable, a diferencia del direccionamiento directo, en que la dirección es fija. Esto puede ser útil para el manejo de tablas de datos.

Funcionamiento básico de los puertos de Entrada/Salida

Ejemplo: el Puerto A (PORTA)

El puerto A posee 6 líneas bidireccionales. Los puertos tienen asociados registros que regulan su funcionamiento. En el caso del Puerto A hay 3 registros asociados a él, que son:

Registro PORTA (05H)

Registro de estado del Puerto A. Cada uno de los 6 bits menos significativos (RA5 a RA0) de este registro están asociados a la línea física correspondiente del puerto. Al hacer una lectura este registro se lee el estado de todas las patas del puerto. Todas las escrituras al registro son operaciones del tipo “lee-modifica-escribe”, es decir, toda escritura al puerto implica que el estado de las patas es leído, luego es modificado y posteriormente se escribe al registro de datos del puerto.

Registro TRISA (85H)

Cada bit de este registro configura la dirección en que fluye la información de la pata correspondiente del puerto A: entrada o salida.

Bit n de TRISA = 1 configura la patita RAn del puerto A como Entrada
Bit n de TRISA = 0 configura la patita RAn del puerto A como Salida

Los puertos de un microcontrolador son muy variados entre sí. Tienen características muy similares –si no idénticas– cuando se utilizan como entradas o salidas, pero además la mayoría de las patas de un microcontrolador, a veces todas, poseen otras funciones. Estas funciones adicionales, que se seleccionan por medio de un registro de configuración, a veces condicionan algunas características de entrada/salida de la pata.

Las patas del puerto A poseen diodos de protección conectados a Vdd (para proteger de altos voltajes de entrada) y a Vss (para proteger contra voltajes negativos). Manejan niveles de entrada tipo TTL y como salida poseen transistores tipo CMOS. La pata RA4, tiene tres excepciones a la regla de las entradas/salidas este puerto: como entrada posee un disparador Schmitt (Schmitt Trigger) y como salida la configuración de transistores es de drenaje abierto. Además RA4 sólo posee diodo de protección conectado a Vss.

El Registro ADCON1 (9FH)

Las patas RA0, RA1, RA2, RA3 y RA5 se pueden conectar a las entradas analógicas AN0 a AN4. Debemos configurar en este registro si serán usadas como entradas analógicas o como entradas/salidas digitales. Para seleccionar la segunda opción (entradas/salidas digitales) se debe colocar en la mitad menos significativa de este registro un 0110 (es decir, un 06h).

Registros del Puerto APuerto A

Todos los detalles sobre este y los otros puertos de entrada/salida, y del microcontrolador en general, se pueden buscar en la hoja de datos original de Microchip, o en esta traducción al castellano.