Texto - Grupo ISIS

Anuncio
Laboratorio de Sistemas Digitales
Departamento de Tecnología electrónica
E.T.S. de Ingenieros de Telecomunicaciones
MICROINSECTO
CAPAZ DE CAMINAR
Pedro J. Parada Pariente
Raúl Parada Pariente
Guillermo Carmona Puga
1. INTRODUCCION
Para comenzar esta memoria vamos a comentar como surgió la idea de realizar
como práctica de sistemas digitales un microinsecto capaz de mantenerse en equilibrio y
caminar.
En un principio estabamos interesados en realizar la práctica con el microbot, pues
nos parecía más interesante, o por lo menos más atractivo que realizar la práctica con la
promax.
El problema fue que el número de microbots disponibles era muy pequeño y nos
quedamos sin él.
Como continuábamos sin querer hacer la práctica con el microinstructor nos
propusimos plantear una práctica que aspirase a matrícula de honor, y aprovechando
que habíamos oído hablar, gracias a Internet, del nitinol, se nos ocurrió realizar el
montaje de un insecto mediante el uso de dicho material, gracias a la propiedad de éste
de encogerse cuando aumenta su temperatura.
De esta forma conseguimos dos objetivos:
-No tener que trabajar con motores.
-Descubrir el funcionamiento de un material nuevo e interesante.
Por tanto propusimos montar totalmente un robot a partir de la nada y usando
materiales totalmente asequibles para nosotros, siendo el alambre de nitinol el único
material que deberíamos de comprar.
Dicho robot debe conseguir, siempre dentro de las limitaciones que nos impone el
hilo, caminar hacia delante.
Puesto que vamos a trabajar con un material prácticamente nuevo voy a pasar a
realizar una pequeña descripción de dicho alambre:
2. INTRODUCCIÓN AL NiTiNOL:
Los alambres musculares están fabricados en base a metales de
forma. Estos metales tienen la propiedad de poder cambiar de forma
según su temperatura.
Pudiendo ser entrenados para adoptar diferentes formas y generar
movimientos al producirse un cambio en su forma. Los Alambres
Musculares están especialmente fabricados para generar movimientos
lineales, cortos y rápidos.
2.1 Teoría de los metales con memoria de forma:
Analicemos la estructura molecular de los metales con memoria de forma. Estos
metales poseen dos estructuras o fases cristalinas muy distinguibles. El estado o fase en
que se encuentre dependerá de la temperatura o fatiga del material.
Puede encontrarse en dos fases:
-
MARTENSITE: Correspondiente a bajas temperaturas.
AUSTENITE: Para altas temperaturas.
Las propiedades de estos materiales dependen de la cantidad de cristales que se
encuentran en una de las dos fases.
La aleación más utilizada es la de Niquel-Titanio (de ahí su nombre), en proporciones
iguales, es decir con la misma cantidad de átomos.
Analicemos la estructura atómica de una aleación de Niquel-Titanio.
α
b
a
c
baja temperatura
alta temperatura
En el ciclo de baja temperatura la red formada por los puntos a, b y c poseen largos
diferentes. Al aplicarle presión a la estructura, las dimensiones de a, b y c cambian
compensando la presión aplicada. El ángulo α también cambiará dependiendo de la
carga aplicada. Esta elasticidad permite que el material pueda ser deformado
fácilmente. Siempre y en cuanto no se supere una carga máxima que pueda dañar
indefinidamente el material.
El ciclo de cambio de fase posee histéresis. El ciclo posee cuatro puntos importantes, un
punto de inicio donde el material está a alta temperatura, y su red cristalina es fuerte,
otro punto donde la temperatura es mas baja y el material comienza a presentar
maleabilidad, donde bajando aún mas la temperatura el material será sumamente
maleable y podrá ser fácilmente deformado, subiendo la temperatura llegaremos a un
punto donde el material comenzará a presentar una estructura cristalina fuerte.
A continuación podrá ver la gráfica de α en función de la temperatura. Hasta que el
material sea programado, dándole forma y calentándolo, este estará a un 100% del
estado de austenite hasta que llegue a la temperatura de inicio (MF)del estado de
martensite dada una cantidad de fuerza aplicada. Cuando la temperatura baja hasta la
temperatura final de martensite (MF) todos los cristales del metal estarán
completamente en estado martensite. La forma del material no será alterada por este
proceso. En la fase martensite el material puede ser deformado fácilmente por fuerzas
externas debido a la flexibilidad de los parámetros a,b,c y α del cristal. El material no
volverá a la forma original debido a que se encuentra a una temperatura menor que MF .
Si calentamos el material, este comenzará a recuperar su forma original, cuando la
temperatura alcance el valor de inicio del estado de austenite (AS) y tendrá la forma
original cuando se llegue a la temperatura final del estado de austenite(AF).
Deformación.
MF
AS
MS
AF
Temperatura.
Ciclos de histéresis del nitinol, en función de la temperatura.
Proceso de deformación de las moléculas del nitinol
2.2 Como se entrenan los metales con memoria de forma.
Si a un metal de memoria de forma se le aplica repetidamente la misma deformación
por ejemplo un alargamiento del 3%, calentándolo y luego enfriándolo, el material
adquirirá un entrenamiento en doble sentido, por ejemplo con un alambre:
Si se estira un 3% en la fase martensite, al calentarse a la temperatura AF recuperara su
forma y al enfriarse nuevamente volverá al estado de martensite.
(Este proceso se puede realizar introduciendo el hilo en dos recipientes de agua, uno
con agua fría, y otro con agua caliente).
Repitiendo este proceso el material estará estirado un 3% sin carga aplicada en el estado
de martensite, consiguiendo un estiramiento un poco mayor aplicándole una carga,
luego el material al calentarlo se contraerá un 3% de su largo cuando se encuentre en el
estado de austenite.
2.3 Características físicas de las aleaciones de Niquel-Titanio.
Densidad:
Temperatura de fusión:
Resistencia (en alta temperatura):
Resistencia (en baja temperatura):
Conductividad térmica:
Capacidad calórica:
Susceptibilidad magnética:
6.45 gms/cc
1240-1310º C
82 uohm-cm
76 uohm-cm
3.8 uemu/gm
0.077 cal/gm-º C
2.5 a 3.8 uemu/gm
Propiedades mecánicas:
Tensión máxima de estiramiento: 754 – 960 Mpa.
Elongación típica hasta la fractura:
15.15 %.
Conversión de energía:
Eficiencia en conversión:
Trabajo:
5%.
1 Joule/gramo.
Temperatura de transformación : -100 a + 100º C
A continuación mostramos una tabla con las propiedades de los Alambres Musculares
según su diámetro y temperatura de actuación.
AM037 AM050 AM100 AM150 AM250 AM300 AM375
Código
FISICA
Diámetro de alambre (µm)
Radio minimo de curvatura
(mm)
Área de sección de alambre
(µm2)
37
1.9
50
2.5
100
5
150
7.5
250
12.5
300
15
375
18.75
1075
1963
7854
17700
49000
282000
442000
860
30
510
50
150
180
50
400
20
1000
13
1750
8
2750
0.8
1.3
4.9
8
20
40
60
64
117
469
1056
2933
16900
26400
20
35
150
330
950
1250
2000
4
8
28
62
172
245
393
0.5
0.5
0.5
0.5
0.5
0.5
0.5
0.7
0.8
1.3
2.5
6.2
8.1
14.5
52
46
33
20
9
7
4
0.4
0.4
0.7
1.5
4.1
6.2
11.5
68
67
50
30
13
9
5
ELÉCTRICO
Resistencia lineal (ohm/m)
Recomendación corriente
(mA)
Recomendación de poder
FUERZA
Fuerza max. De recuperación
600 Mpa(g)
Fuerza de recuperación típica
600 Mpa(g)
Fuerza de deformación típica
600 Mpa(g)
VELOCIDAD
TEMP. Velocidad máxima de
contracción (seg)
BAJA
LT Velocidad de relajación
(seg) (70ªC)
LT Ciclos por minuto
ALTA
HT Velocidad de relajación
(seg) (90ªC)
HT Ciclos por minuto
TEMPERATURA
Activación del TEMP ºC
Activación final de TEMP ªC
Relajación de TEMPªC
Relajación final de TEMPªC
Temperatura de alineación
Temperatura de fusión
MATERIAL
Resistencia
Modulo pequeño
Susceptibilidad Magnética(uemu/g)
Conductividad Térmica (W/cm*C)
Densidad
Calor específico
Calor latente
Fuerza de recuperación max(Mpa)
Recomendación de corriente(mA)
88
98
72
62
300
1300
Ciclo descendente
82
75
3.8
0.18
6.45
0.077 o 0.32 joule/g*C
560(-43 tonelada por pulgada cuadrada)
187(-13 tonelada por pulgada cuadrada)
35(-2.5 tonelada por pulgada cuadrada)
Recomendación de poder (Mpa)
Trabajo de salida (joule/g)
Conservación de energia eficiente(%)
1000(-71 tonelada por pulgada cuadrada)
1
5
Deformación máxima (%)
Deformación recomendable (%)
8
3-5
Distintos diámetros en los que se comercializa el nitinol
2.4 Como aumentar las velocidades de contracción y relajación.
La única manera de disminuir los tiempos de contracción es aumentando la corriente de
excitación. Esto hará que el actuador se caliente más rápido. Pero a su vez, la masa del
actuador tenderá a acumular mayor energía calórica que la podrá evacuar a través de
superficie de contacto con el ambiente exterior. Con lo cual será más difícil evacuar
esta temperatura y le obligará a la utilización de ventiladores o sistemas de
refrigeración. Otra posibilidad es mejorar la conductividad calórica embebiendo el
Alambre Muscular en aceite o agua.
También puede optar por instalar múltiples alambres musculares delgados en paralelo,
los cuales poseen una velocidad de operación mayor que los más gruesos.
2.5 Como instalar los Alambres Musculares:
Para conectar el alambre muscular y los cables de energía
no se pueden soldar dado que las temperaturas que alcanza
en el austenite, fundirían el punto de soldadura, se puede
utilizar borneras, uniones para ferromodelismo o
simplemente dos arandelas de bronce con un tornillo y una
tuerca.
2.6 Características principales:
-Los hilos de nitinol no se pueden soldar, como ya hemos comentado anteriormente.
-Al iniciar el trabajo con los hilos debemos asegurarnos de en que fase se encuentran,
para ello lo metemos en agua caliente (así sabemos que partimos de la austenite).
-Cuando pasamos a la fase martensite (cuando se enfrían) es necesario aplicarle una
fuerza para que deje la forma memorizada, y retome su tamaño original.
-No se debe calentar demasiado el nitinol, porque de hacerlo se quedara memorizado
con la forma que presentara en ese momento.
-No se debe superar una elongación máxima de un 15%, (por peligro de rotura).
-Aparte del uso técnico que le hemos dado al nitinol, éste tiene un gran uso dentro de la
rama de la medicina, dado que es un material biocompatible, por ejemplo :ortodoncia,
prótesis ortopédicas.
3.- DISEÑO Y MONTAJE
Como hemos comentado anteriormente vamos a apoyarnos en la propiedad que
posee el nitinol de encogerse cuando se somete a grandes temperaturas para conseguir el
desplazamiento del robot (dicha temperatura la alcanzaremos haciendo circular
corriente por los hilos);
Nada mas observar las especificaciones de nuestro diseño descubrimos el primer
problema, podemos decir que el alambre es unidireccional, porque simplemente se
encoge al someterlo a una temperatura elevada ( que conseguiremos haciendo pasar
corriente por él), sin embargo, a temperatura ambiente el material no vuelve a su
posición normal, porque se trata de un material con memoria, para conseguir que dicho
material recupere su forma inicial debe ofrecerse una fuerza contraria al movimiento de
contracción del hilo.
Por tanto teníamos que diseñar un mecanismo que nos permita implementar el
paso de las patas.
Dicho paso se va a dividir en dos movimientos: uno que levante la pata, y otro
que la arrastre.
Para la recuperación de ambos alambres colocaremos sendos muelles al lado
contrario de donde tiran éstos.
Además el muelle que se opone al movimiento de levantado de patas debe tener
una fuerza tal que permita al alambre tirar sin dificultad y a su vez soporte el peso de la
estructura consiguiendo que ésta no se hunda.
Posteriormente debíamos decidir cual iba a ser el cuerpo de nuestro insecto, y
como vamos a diseñar las patas.
Para el cuerpo optamos por coge la tapadera de la caja donde venía una carcasa
de un móvil 3310 ( ya comentamos anteriormente que íbamos a trabajar con materiales
asequibles).
Nota.- Como comentaremos posteriormente,
debido a que tuvimos que utilizar un hilo de mayor
grosor, la estructura que elegimos como cuerpo del
insecto se fracturo debido a la fuerza que dichos alambres
ejercían sobre la bisagra y la carcasa, por ello nos vimos
obligado a utilizar una placa de metacrilato.
Las patas las construimos a partir de un tubo de
cobre que teníamos, puesto que es un material ligero y
maleable; inicialmente pensamos en trabajar con
aluminio, pero era bastante mas caro y más difícil, pues dicho material es mucho menos
maleable.
Ahora teníamos que decidir como ensamblar las patas a la estructura y como
conseguir que dichas patas se levanten y giren a la vez como dos movimientos
totalmente independientes.
Para ello construimos unas bisagras de aluminio a las que uníamos mediante un
tornillo la pata, tornillo sobre la que ésta giraba y realizaba el movimiento horizontal
(levantar), a su vez dicha bisagra estaba unida al cuerpo del insecto mediante un tornillo
y una arandela de forma que le permitiéramos realizar el giro lateral, y por tanto el
arrastre de la pata.
Los hilos deben de tener una longitud en torno a
los 10cm para que la contracción sea apreciable (el hilo
suele contraerse entre un 3 y un 5 %).
Para levantar la pata, el hilo tirará desde el punto
de tangencia de la curva de la misma.
Para arrastrar se tira desde una de las esquinas de
la bisagra, como necesitábamos usar un
hilo
relativamente largo, tuvimos que colocar unas poleas
pequeñas de playmobil para conseguir un mayor
recorrido de éste. A su vez que le facilitara el arrastre
transversal.
Para evitar el deslizamiento de las patas al ponerse en contacto con la superficie
del suelo (ya que dicha superficie será una mesa o las propias lozas del suelo que son
deslizantes) colocamos unos terminales de goma para garantizar una mejor adherencia.
La decisión del número de patas que iba a poseer el insecto fue tomada teniendo
en cuenta que lo más importante era conseguir un buen equilibrio; por ello decidimos
que cuatro patas no podían ser porque el equilibrio se iba a perder al caminar, además,
no quedaba bien estéticamente; por tanto teníamos que decidir entre ocho o seis patas,
en un principio pensamos en ocho para ser más fieles a la realidad, pues una araña, que
es el modelo de insecto que escogimos, tiene ocho patas.
Posteriormente, optamos por poner seis patas puesto que era más eficiente tanto
en el número de hilos, como en el consumo de potencia (a más hilos, más corriente que
debe proporcionar la fuente) a demás, en el caso de ocho patas quedaba una estructura
exageradamente grande.
La programación del paso de la araña consiste en activar sincronizadamente las
patas, tanto el movimiento de levantar como el de tirar, para ello usaremos dos puertos
del microcontrolador, y dichos puertos debían ser interpretados por nuestro prototipo
como ordenes de contraer o no los hilos.
En un principio, la idea más intuitiva del funcionamiento es pensar mandar un '1'
lógico cuando queremos activar el hilo correspondiente a la pata y un '0' lógico para que
vuelva a su estado de reposo. Sin embargo, la conexión del hilo directamente a la salida
de un puerto del microcontrolador hace que el pin correspondiente prácticamente se
cortocircuite, debido a la escasa resistencia del hilo; por ello necesitamos limitar la
corriente por la salida del micro.
Además, hemos comentado que cada hilo necesita unos 600 mA para contraerse,
corriente que es imposible sacar del micro ya que se quemaría. Basándonos en esto,
tenemos dos posibles soluciones:
-
Controlar la tensión del hilo mediante la generación de una onda PWM. de valor
eficaz adecuado a nuestro hilo.
- Diseñar unos drivers o amplificadores de corriente capaces de suministrar 600 mA y
de consumir menos de la Iol máx de los pines del 68HC11.
La primera opción sea quizás la más cómoda ya que sólo requiere más
procesado software, sin embargo, comprobamos que en los momentos en el que la onda
PWM se encuentra a nivel alto, el pico de intensidad producido excede los márgenes de
seguridad del micro. De todas formas explicaremos un poco más esto: vemos que la
tensión eficaz de cada hilo es Inecesaria*Rhilo, de esta forma calculamos que nuestro hilo
necesitaba unos 0.6 V/cm. Teniendo en cuenta que nuestro hilo tiene una longitud de
unos 10-12 cm necesitamos unos 6-6.5 V para cada hilo, esto es, sacar por las patillas
correspondientes la señal PWM de valor eficaz 6 V.
Como hemos dicho anteriormente, la opción quedó anulada cuando observamos
que los picos de intensidad eran cercanos a 0.5 A. Por esta causa la opción que
escogimos fue la dos.
Una vez decidido, nos pusimos a diseñar los amplificadores de corriente, para
ello recordando los conocimientos (aparentemente inútiles) de electrónica de
dispositivos así como los también adquiridos en electrónica analógica nos pusimos
manos a la obra.
El driver consiste en un transistor de potencia BD139 en configuración de
emisor común, de esta forma colocando el nitinol como carga en el colector
conseguimos que pase por el una corriente beta +1 veces que en la base. Al ser un
transistor de potencia la beta típica está en un valor aproximado de 175. por ello la
corriente aproximada que necesitamos en la base es de 3-5 mA, teniendo en cuenta que
la beta varía con la temperatura. De todas formas para que no sobrepasemos la
intensidad de 600 mA haremos que esta sea la Isat del transistor.
Una vez diseñado el driver construimos una placa formada por 12 drivers
iguales, además para facilitar la programación, colocamos unos diodos led que se
encienden cuando el hilo correspondiente está activado.
Otro problema era el gran consumo del microinsecto, puesto que en el peor de
los casos hay 7 hilos contraídos (y por lo tanto consumiendo corriente ), nuestro
sistema, que en un principio estaba alimentado por un pack de cuatro pilas, era
insuficiente, pues la duración de las pilas era muy pequeña, y la corriente que
proporcionaban era poca.
Una posible solución hubiera sido alimentar cada pata con unas pilas de botón,
por lo que solo requeriría unos 600mA por pata, pero puesto que se trataba de un
problema hardware no muy relevante, optamos por alimentar nuestro insecto
directamente con una fuente de corriente, dejando así de ser autónomo. ( aunque si en
un futuro se deseara presentar dicho diseño a alguna prueba, no seria ningún problema
conseguir dicha autonomía).
4. PROBLEMAS:
Uno de los problemas fue el continuo entrenamiento al que estaban sometidos
los hilos que se encargaban del movimiento vertical de las patas.
Verdaderamente, fueron los muelles encargados de devolver los hilos de levantamiento
a su posición los que nos introdujeron el problema, puesto que los cables están
continuamente entrenándose al proporcionarle una determinada fuerza, cuando dicha
fuerza es demasiado grande, los cables dejan de entrenarse, y lo que hacen es memorizar
la ultima posición a la que llego; el problema era que al estirarse los cables mas de lo
querido, nosotros volvíamos a colocarlos tensos, y volvían a estirarse, así hasta que los
cables superaban su umbral de elongación y terminaban por partirse.
La solución a esto era colocarle unos topes a las patas de forma que no
permitiesen a los cables estirarse mas de la cuenta, y conseguir que dichos hilos
volvieran únicamente a su medida inicial.
Con dicho topes (piezas de aluminio que se observan en las patas y que las
cruzan transversalmente) no solo superamos este problema sino que le dimos
muchísima más fuerza y estabilidad al movimiento de arrastre de las patas, puesto que,
de lo contrario, la mayor parte de la fuerza del movimiento se iba en la pequeña holgura
que pudiera presentar la pata.
De esta forma el arrastre se hace con dos puntos de apoyo, el de la bisagra en la
base de la pata y el del soporte en la mitad de dicha pata.
El problema anteriormente comentado produjo una reiterada ruptura del
material, y por tanto, un agotamiento del mismo.
Nos encontrámos ahora con un nuevo problema, no había mas material
disponible en todo el territorio nacional, tras escribir varios E-mail a compañías
americanas pudimos obtener el nitinol de forma totalmente gratuita, gracias a una
empresa dedicada a la utilización del nitinol con motivos médicos (ortodoncias) pero
solo disponían de material con un diámetro superior al utilizado, y por tanto, la
velocidad de nuestro sistema iba a quedar reducida, puesto que la velocidad de
contracción y estiramiento del cable es inversamente proporcional a la sección del
mismo.
Este nuevo material tenía una mayor fuerza de contracción, fuerza que fracturo
la estructura elegida como cuerpo del diseño;
Por lo tanto, teníamos que empezar nuestro montaje desde cero, y en primer
lugar teníamos que encontrar una placa de material más resistentes que hiciera las veces
de cuerpo del insecto. Finalmente escogimos una plancha de metacrilato de 5mm.
El montaje fue idéntico al anterior, salvo los muelles utilizados, que tuvimos que
sustituirlos por otros con mayor fuerza de contracción, para que consiguieran devolver
el hilo a su posición original a una velocidad adecuada.
Sin embargo, el principal problema, y al que hemos dedicado la mayor parte del
tiempo, ha sido conseguir el equilibrio de la estructura, tanto cuando esta parada como
cuando esta en movimiento.
El equilibrio estático lo conseguimos fácilmente gracias a la distribución elegida
de patas.
El equilibrio en movimiento fue sin duda el mas problemático; al levantar una
pata delantera, la estructura bajaba milímetros, y debido a ello, cuando dejábamos de
aplicarle corriente al alambre, la pata no volvía a su auténtica posición original.
Al repetirse reiteradamente este efecto, llegaba un momento en que la estructura
estaba lo suficientemente hundida como para hacer que los cables encargados del
levantamiento no estuvieran lo suficientemente estirados, y por tanto no fueran capaces
de realizar el movimiento.
La solución idónea sería reforzar los muelles, pero esto sería en un caso ideal en
el que no tuviésemos la limitación impuestas por el nitinol;
Finalmente optamos por retocar a mano cada una de las patas del insecto, hasta
conseguir evitar el hundimiento mencionado anteriormente. Trabajo que resulto
bastante costoso, porque se basaba en la continua observación del paso de la araña hasta
alcanzar nuestro objetivo.
Otro problema importante fue el comentado anteriormente en el diseño de la
placa driver, consistente en la necesidad de alimentar por separado el micro de los
drivers. Con ello conseguimos subir la tensión de colector de los transistores para fijar
una mayor corriente de saturación.
5.-CÓDIGO:
PORTB EQU $04
PORTC EQU $03
DDRC EQU $07
;asignamos a las etiquetas las direcciones de los puertos.
ORG $00 ; situa el programa a partir de la posición 0 de la RAM;
LDX #$1000 ;cargamos en el registro X un 1000 para usar direccionamiento
;postindexado
LDAA #$FF
STAA DDRC,X ;configura el puerto C como salida
inicia LDAA #$0000
STAA PORTB,X
STAA PORTC,X ; reseta los puertos
LDY #$001D
LDX #$86B1
BSR PAUSA ; Espera antes de empezar
start LDAB #$0001 ; carga un uno en el acumulador b para comenzar con la pata 1
SIGUE
BSR PASO
LDAA #$0004
CBA
BEQ carga1
LDAA #$0040
CBA
BEQ carga2
LDAA #$0010 ; condiciones q deciden que pata será la siguiente.
CBA
BNE SIGUE
LDAA #$0000
STAA PORTC,X ;suelta todas las patas
BSR PAUSA8SEG
BSR PAUSA8SEG
BRA start
carga1
LDAB #$0010
BRA SIGUE
carga2
LDAB #$0004
BRA SIGUE
;deja q todas las patas suelten
PASO STAB PORTB,X
;rutina de paso (levanta,tira,baja)
LDY #$0007
LDX #$BA01
BSR PAUSA
TBA
ORAB PORTC,X
STAB PORTC,X
LDY #$0007
LDX #$BA01
BSR PAUSA
LDAB #$0000
STAB PORTB,X
BSR PAUSA2SEG
TAB
LSLB ;rotamos hacia la izquierda el acumulador B
RTS
PAUSA NOP
DELAYY NOP
DELAYX
DEX
BNE DELAYX
DEY
BNE DELAYY
NOP
LDX #$1000
RTS
PAUSA2SEG
ldy #$0018
PAUSA2SEGY:
ldx #$6C80
PAUSA2SEGX:
dex
bne PAUSA2SEGX
dey
bne PAUSA2SEGY
nop
LDX #$1000
rts
PAUSA8SEG
ldy #$0036
PAUSA8SEGY
ldx #$C0E5
PAUSA8SEGX:
dex
bne PAUSA8SEGX
dey
bne PAUSA8SEGY
nop
LDX #$1000
rts
A continuación vamos a comentar el código del programa para darle una visión general
y explicando las subrutinas que lo componen.
El programa usa dos puertos de nuestro microcontralor, en concreto el B y el C, dado
que el puerto A no tenía los suficientes pines de salida.
Como se ve en el código, tenemos que configurar el puerto C como salida, ya que es
bidireccional.
Por otro lado, hemos escrito un código recursivo, la subrutina PASO es llamada cada
vez con unos valores diferentes con el fin de que sea distinta la pata que de el paso.
La secuencia u orden de las patas es la siguiente 1-2-5-6-3-4
Esta secuencia ha sido generada con el fin de conseguir una mayor estabilidad.
Además de este paso pensamos en otros posibles pasos que nuestro proyecto pudiera
tener, a continuación mostramos en un gráfico los tres más significativos:
En el programa tenemos dos comparaciones, las cuales cargan un valor que altera la
secuencia normal de las patas; de esta manera conseguimos que después de la 2 vaya la
5 y después de la 6 la 3. De todas formas, también tenemos el otro código que activa las
patas en orden. Las condiciones que establecen este orden son las siguientes:
carga1
LDAB #$0010
BRA SIGUE
carga2
LDAB #$0004
BRA SIGUE
La idea principal del movimiento de la pata es la siguiente: la pata se levanta, luego
avanza y por último apoya. Cuando todas las patas han realizado esta secuencia, se
liberan y vuelven a su posición inicial.
De lo anterior podemos deducir que las patas han de estar contraidas mientras que el
resto realiza la secuencia; por ello vamos realizando una OR con el puerto C para que
los hilos que controlan estas patas permanezcan activados. Al final del proceso estos
hilos se liberan.
ORAB PORTC,X
STAB PORTC,X
En cuanto a las órdenes que gobiernan el levantamiento y bajada de las patas podemos
decir que hacemos un ‘bit’ rotatorio el cual activa una pata luego la siguiente y así
sucesivamente hasta que termina la secuencia.
LSLB ;rotamos hacia la izquierda el acumulador B
Para dar el sincronismo a nuestro insecto usamos diferentes rutinas que generan pasusa.
Simplemente consiste por así decirlo en mantener el procesador ocupado haciendo
bucles software anidados.
La expresión que utilizamos para calcular el tiempo que se emplea en concluir la
subrutina es la siguiente:
3 + 15 + ( 6 * X + 10 ) * Y = números de ciclo de reloj
Siendo cada ciclo de reloj 500 ns al usar el micro a 8 Mhz.
Vemos las subrutina a continuación:
PAUSA8SEG
ldy #$0036
PAUSA8SEGY
ldx #$C0E5
PAUSA8SEGX:
dex
bne PAUSA8SEGX
dey
bne PAUSA8SEGY
LDX #$1000
Rts
; 3 ciclos
; 4 ciclos
; 3ciclos
; 3 ciclos
; 4 ciclos
; 3 ciclos
; 3 ciclos
; 5 ciclos
Teniendo en cuenta también que la llamada salto a subrutina dura 6 ciclos
Si se observan las instrucciones del código y la duración en ciclos de reloj es fácil hallar
los valores con los que se han de cargar los registros X e Y.
Además del programa básico y principal de nuestro microinsecto, hemos diseñado el
código necesario para que gire tanto a la izquierda y a la derecha. Debido a que el
funcionamiento de estos programas es similar al anterior simplemente los mostramos a
continuación:
GIRO A LA DERECHA:
PORTB EQU $04
PORTC EQU $03
DDRC EQU $07
ORG $00
LDX #$1000
LDAA #$FF
STAA DDRC,X
inicia LDAA #$0000
STAA PORTB,X
STAA PORTC,X
LDY #$001D
LDX #$86B1
BSR PAUSA ; Espera antes de empezar
start LDAB #$0001 ; carga un uno en el acumulador b xa comenzar con la pata 1
LDAA #$0000
STAA PORTB,X
STAA PORTC,X
SIGUE
BSR PASO
LDAA #$0040
CBA
BNE SIGUE
LDAA #$0022
STAA PORTB,X ;levanta patas 2 y 6 para girar
LDAA #$0000
STAA PORTC,X ;suelta todas las patas y gira
LDY #$0007
LDX #$BA01
BSR PAUSA
;deja q todas las patas suelten
BRA start
PASO STAB PORTB,X
LDY #$0007
LDX #$BA01
BSR PAUSA
TBA
ORAB PORTC,X
STAB PORTC,X
LDY #$0007
LDX #$BA01
BSR PAUSA
LDAB #$0000
STAB PORTB,X
LDY #$0007
LDX #$BA01
BSR PAUSA
TAB
LSLB
LSLB
RTS
PAUSA NOP
DELAYY NOP
DELAYX
;rutina de paso (levanta,tira,baja)
DEX
; ----3 clocks
BNE DELAYX ; ----3 clocks
DEY
; --4 clocks
BNE DELAYY ; --3 clocks
NOP
; 1 clock
LDX #$1000
RTS
; 5 clocks
GIRO A LA IZQUIERDA:
PORTB EQU $04
PORTC EQU $03
DDRC EQU $07
ORG $00
LDX #$1000
LDAA #$FF
STAA DDRC,X
inicia LDAA #$0000
STAA PORTB,X
STAA PORTC,X
LDY #$001D
LDX #$86B1
BSR PAUSA ; Espera antes de empezar
start LDAB #$0002 ; carga un uno en el acumulador b xa comenzar con la pata 1
LDAA #$0000
STAA PORTB,X
STAA PORTC,X
SIGUE
BSR PASO
LDAA #$0080
CBA
BNE SIGUE
LDAA #$0011
STAA PORTB,X ;levanta patas 1 y 5 para girar
LDAA #$0000
STAA PORTC,X ;suelta todas las patas y gira
LDY #$0007
LDX #$BA01
BSR PAUSA
;deja q todas las patas suelten
BRA start
PASO STAB PORTB,X
;rutina de paso (levanta,tira,baja)
LDY #$0007
LDX #$BA01
BSR PAUSA
TBA
ORAB PORTC,X
STAB PORTC,X
LDY #$0007
LDX #$BA01
BSR PAUSA
LDAB #$0000
STAB PORTB,X
LDY #$0007
LDX #$BA01
BSR PAUSA
TAB
LSLB
LSLB
RTS
PAUSA NOP
DELAYY NOP
DELAYX
DEX
; ----3 clocks
BNE DELAYX; ----3 clocks
DEY
; --4 clocks
BNE DELAYY; --3 clocks
NOP
; 1 clock
LDX #$1000 ;3 clock
RTS
; 5 clocks
La idea de implementar al paso hacia delante, el giro izquierda y el giro derecha era la
de colocar estos códigos en un programa principal con el fin de que el microinsecto
pudiera reaccionar e interactuar con elementos externos. Sin embargo, la idea de colocar
un par de bumpers (uno a la izquierda y otro a la derecha) para que fueran detectados
objetos no era muy práctica. La velocidad que nos proporciona el nitinol es mínima, y
estos movimientos se iban a apreciar muy lentamente.
Tal y como comentamos con anterioridad, diseñamos una placa driver provista de led’s
para facilitar el desarrollo del programa así como para darle un toque luminoso al
microinsecto. Por esto usamos la placa driver para simular el comportamiento del
código; a su vez, encontramos por internet varios simuladores de los microcontroladores
de motorola, algunos para MS-DOS y otros para WINDOWS; en concreto el simulador
THRSim11 68HC11 fue el que utilizamos debido a la gran potencia q tiene. Es capaz de
mostrar los valores de todos los puertos, podemos modificar dichos valores, ejecutar
subrutinas por separado, omitirlas, ensamblar....
Con estas herramientas y mediante la observación de la forma de caminar de nuestro
microinsecto hemos diseñado el código anteriormente mostrado.
Por último mostraremos algunas fotografías que hemos realizado:
Detalle de las bisagras, poleas, hilos y muelles
Vista de planta del microinsecto
Placa compuesta por los 12 Drivers
Microinsecto
6.-CONCLUSIONES Y MEJORAS:
Como último punto de esta memoria, vamos a comentar las conclusiones y las mejoras
posibles.
En primer lugar comentar que nuestros objetivos principales a la hora de hacer este
proyecto eran el uso de una nueva tecnología, así como la aventura de diseñar nuestro
propio microbot, basándonos en la siguiente forma de trabajo:
De esta forma conseguimos ir revisando nuestro diseño paso a paso y añadiéndole
mejoras.
En cuanto al nitinol, hemos de decir que es un material sorprendente en cuanto a su
comportamiento, ya que un simple hilo puede tirar de hasta 23 Kg. Uno de los
principales problemas que hemos encontrado es que debido al fino diámetro es muy
tedioso trabajar con él. Principalmente debido a que no se puede soldar y es necesario
colocarle borneras así con ciertos componentes de precisión de los que no disponemos.
Por otra parte como dijimos en “la introducción al nitinol” es mucho más fácil trabajar
con el nitinol a bajas temperaturas, por ello es necesario trabajar en medios especiales,
laboratorios...
También hemos aprendido mucho en cuanto a cálculo de consumo de potencia y diseño
hardware. Otra cosa curiosa y que en un principio no tuvimos en cuenta es el equilibrio
del insecto, fue quizás el reto más grande que tuvimos que superar.
Nos hubiera gustado también profundizar más en cuanto a la inteligencia del microbot,
es decir, que fuera capaz de interactuar con el medio; sea quizás esta la mejora que más
hubiéramos deseado hacerle a nuestro insecto. La inteligencia se le puede dar, lo que
pasa que las limitaciones físicas del nitinol nos impiden que el desarrollo de la conducta
del microbot sea apreciable a cortos intervalos de tiempo. Dicha inteligencia consistiría
en algunos bumpers, para que el robot reaccionara a contactos con paredes, etc. O
también la colocación de un par de led’s bicolor para que al tocar la araña simularan el
cambio de color de los ojos de esta.
Como dijimos antes, la potencia consumida fue un gran problema, sin embargo es
posible solucionarlo colocándole pilas de botón, de esta manera estaría solucionada la
autonomía.
Por último, al colocarle nuevos hilos, y siendo estos más potentes pudríamos solucionar
el problema de que el microinsecto lleve encima todo el hardware que le da vida.
Otra forma de solucionar numerosos problemas (equilibrio, consumo, velocidad...) es
montar el microinsecto con motores, nos harían falta 12 motores para darle toda la
movilidad o 6 para que la movilidad esté reducida a una sola forma de caminar.
De todas formas como el propósito final era construir el microbot, nos damos por
satisfecho ya que hemos diseñado un microinsecto vivo a costa de usar unos materiales
cotidianos y reciclados así como de echarle un poco de imaginación.
Anexo:
En este anexo, vamos a comentar algunos aspectos de nuestro diseño que por su
simplicidad, no explicamos detalladamente en la memoria; sin embargo, tienen cierta
relevancia ya que fueron pequeños problemas que tuvimos que solucionar.
Empezaremos con el tema de las patas, como se ve en las fotos, nuestras patas están
sujetas con una bisagra y con un muelle a la estructura. El nitinol, es el encargado de
levantar la pata haciendo así una fuerza superior a la del muelle, por ello, para
descargarlo de esfuerzo aprovechamos el tornillo que sujeta el muelle de la pata para
darle un nuevo punto de apoyo al hilo. De esta forma teníamos además un poco de más
recorrido de hilo lo que produciría un aumento en la longitud de contracción del mismo.
Como consecuencia de optar por esta opción, nos dimos cuenta que debido al
movimiento transversal de la pata el hilo se salía y entraba en la muesca del tornillo. El
roce sucesivo producía en ocasiones la ruptura del hilo. Para solucionar esta continua
salida y entrada del hilo en la muesca, pegamos en la cabeza del tornillo una tuerca que
impedía que se produjera dicho efecto.
Una vez solucionado esto vamos a comentar otro ligero problema que tuvimos que
resolver. Como se describe en la memoria, tuvimos que cambiar el diseño de nuestro
microinsecto debido a que nos quedamos sin hilo de 100 micras de diámetro.
Aparentemente, esto no era problema debido a que habíamos conseguido hilo de 150
micras; una simple sustitución y todo listo. Sin embargo, no fue así, estos nuevos hilos
tenían más del el doble de fuerza que los anteriores, por ello, tuvimos que colocar
nuevos muelles más potentes.
Cuando este problema parecía estar solucionado nos dimos cuenta que el lugar donde
sujetábamos el muelle no era el correcto, ya que la fuerza de los muelles producía que la
bisagra se clavara en la estructura de plástico del microinsecto impidiendo así el
movimiento transversal de la pata. Para solucionar esto teníamos que buscar un nuevo
punto de anclaje del muelle vertical, pensamos entonces en unas barras metálicas que
teníamos de un viejo meccano, las cuales tenían la medida perfecta para ser un poco
más anchas que el cuerpo de nuestro microbot y así poder sujetar los muelles en sus
extremos. El resultado fue muy bueno y descartamos entonces este problema.
Ahora que parecía todo conseguido hicimos una prueba para ver que tal levantaba la
pata. La sorpresa fue que debido a la fuerza del hilo, el movimiento de contracción se
transmitía por completo a la estructura. La repetición de este movimiento hizo que la
estructura se rompiese.
Así que en este punto, con el microinsecto roto, tuvimos que volver a pensar en una
nueva y definitiva estructura. Nos hicimos pues con una lámina de metacrilato, siendo
esta la base final de nuestro diseño.
Detalle de los elementos descritos anteriormente
Por otra parte, tenemos que comentar cuál fue el diseño que elegimos para los drivers.
Como dijimos construimos doce amplificadores de corriente formados por 12
transistores BD139 en configuración de emisor común; usando como carga el propio
nitinol.
El esquema es el siguiente:
Como vemos a la base del transistor conectamos la salida del micro controlador. Para
conectar las 12 salidas a la placa driver usamos un cable tipo bus. Desde la placa de los
drivers, y también mediante un bus, llevamos los colectores hasta nuestro microinsecto.
Una vez allí conectamos el nitinol al colector mediante unos tornillos y arandelas; tan
solo quedaba conectar el otro extremo del hilo de nitinol a Vcc.
Para hacerlo aprovechamos que tanto el cobre como el aluminio son conductores, por
ello solo era necesario alimentar a Vcc cada una de las bisagras. Entonces nos dimos
cuenta que este problema estaba resuelto debido a que las bisagras estaban conectadas
dos a dos por las placas de meccano que colocamos anteriormente.
Así con una sola toma de alimentación estaba alimentado nuestro microinsecto por
completo.
Por último vamos a comentar como
uníamos el nitinol a la parte de abajo de la
bisabra.
En un principio, usábamos el terminal
simplemente como tope para que no se
saliera del taladro de la bisagra. Sin
embargo, necesitábamos un mecanismo que
nos permitiese soltar y poner el nitinol con
facilidad. Por esta causa, usando un
terminal de cabeza redonda, y haciendo una
especie
de
grapas
de
aluminio
conseguíamos poner y quitar fácilmente los
hilos.
Con estos últimos retoques, pretendíamos facilitar ante todo la forma de trabajar con
nuestro microinsecto, ya que era bastante delicado ajustar alguna pata mientras el resto
permanecían bien ajustadas. La fragilidad del nitinol hizo que más de una vez se
rompieran los hilos, teniendo así que sustituirlos por otros nuevos, los cuales tenían que
ser medidos, entrenado, crimpados... Las mejoras hicieron efecto y podíamos así
trabajar de una manera más rápida y eficiciente.
Descargar