Está en la página 1de 5

MICROBOTICA PAGS 26/12/02 12:03 Página 54

MICROBÓTICA
Y MECATRÓNICA
Autor: Fernando Remiro Domínguez
Profesor del I.E.S. Juan de la Cierva
MICROBÓTICA

www.terra.es/personal/fremiro

S
ony Corporation ha cons-
truido un pequeño
androide que camina al
que llama SD-3X. Tiene
una aproximadamente unas
dimensiones de 500mm de alto,
220mm de ancho y 140mm de
fondo con un peso de 5Kg
(incluidas baterías). El pequeño
54
RESISTOR
robot sincroniza los movimien-
tos de 24 uniones en su cuerpo,
el robot puede realizar los movi-
mientos básicos como caminar y
la dirección cambiante, así como
levantarse equilibrando sobre
una pierna, mientras da punta- CARACTERÍSTICAS
piés a una pelota o baila. Es
capaz de recorrer aproximada-
CPU Procesador RISC de 64Bit (x2)
mente 15 metros por minuto,
dando cuatro pasos por segundo. Memoria interna 32MB DRAM (x2)
El robot utiliza la misma Sistema operativo Aperios (SO a Tiempo Real, original de Sony)
arquitectura que el robot de cua- Cartucho memoria 16MB (x2)
tro patas "AIBO". Los actuado- Entradas/Salidas
res formados por un motor, la Ranura PC Card (Tipo II) (x1)
carcasa y un circuito, hacen que Ranura Memory Stick (x2)
el cuerpo se mueva coordinada- Grados de Libertad
mente de forma dinámica en Cabeza 2 Grados de libertad
tiempo real. Cuerpo 2 Grados de libertad
Para caminar el SDR-3X Brazos 4 Grados de libertad
debe controlar continuamente su
Piernas 6 Grados de libertad
centro de gravedad y la inercia
de los movimientos. Sensores
Entrada de Visión Cámara Color 180,000 1/5 CCD
En el número anterior descri- Entrada Voz Micrófono (x2)
bíamos el funcionamiento de un Detección Distancia Sensor infrarrojos
servomotor de radiocontrol, y Detección Aceleración Acelerómetro de dos ejes
prometimos que en este número Detección Angular Sensor de dos ejes
íbamos a conectar este a un Detección Tacto Sensores contacto (x8)
microcontrolador PIC16F84 Salida Voz Altavoz
para controlarlo, así que manos a
la obra. Tabla 1.- Características técnicas del androide SDR-3X
MICROBOTICA PAGS 26/12/02 12:03 Página 55

Vcc
El circuito propuesto se muestra en el esquema de la Figura 1:

R1 R2 R3

Vcc
10K 10K 10K

17 RA0 PIC16f84 Vcc 14

18 RA1 RB0 6

1 RA2 RB1 7

MICROBÓTICA
2 RA3 RB2 8
hitec
3 RA4 RB3 9 HS-300

4 MCLR RB4 10

C1 27pF 16 OSC1 RB5 11


RA0 RA1 27pF 15 OSC2 RB6 12
C2 Vcc
Reset 5 Vss RB7 13

55
RESISTOR
Figura 1.- Conexión del PIC16F84A para control del servomotor

El montaje que proponemos RA0 RA1 Posición del servo


es el siguiente, vamos a conectar
el servomotor entre los termina- respecto al centro
les de alimentación del servomo- 0 0 - 60 º
tor a una fuente de alimentación
0 1 0º
a 5V, que puede ser la misma que
la que utilicemos con el micro- 1 0 + 60 º
controlador, en caso de utilizar 1 1 + 90 º
dos fuentes distintas, deberemos
de conectar las masas de las dos Tabla 2.- Posiciones del servo dependiendo del valor de RA0 y RA1
fuentes de alimentación, para
que tengan la misma tensión de El programa está basado en trolador para que trabaje como
referencia. Cuando se construya el funcionamiento del TIMER0 deseamos, es decir, el PORTB se
un mecanismo o un microrobot del microcontrolador y la gene- configura como salida poniendo
con servomotores, es siempre ración de una interrupción cada a "0" los bits del registro TIRSB
recomendable utilizar dos fuen- 250 ms, de tal manera que cada y el PORTA como entrada car-
tes de energía distintas, una para cuatro interrupciones consegui- gando con "1" los bits del regis-
la "electrónica" y la otra para rán una temporización de 1ms, tro TRISA además, como quere-
dar energía a los servomotores, cada 6 interrupciones una tem- mos que el TIMER0 se desborde
pero desgraciadamente no siem- porización de 1,5 ms y con ocho cada 250ms, asignamos el predi-
pre hay espacio ni presupuesto una temporización de 2ms. visor al Wastchdog, de este modo
para ello. La señal de control la Para configurar el TMR0 el TMR0 se incremente cada
obtenemos de la patilla RB0, debemos de recordar su estruc- ciclo de máquina, y como el cris-
además utilizaremos las líneas tura interna, que es la que se tal de cuarzo que utilizada es de
RA0 y RA1 para controlar la muestra en la Figura 2. 4Mhz y cada ciclo de máquina es
posición del servomotor, de En primer lugar se configuran de cuatro ciclos de reloj, el des-
acuerdo con la siguiente tabla: algunos registros del microcon- bordamiento del TIMER0 ocu-
MICROBOTICA PAGS 26/12/02 12:03 Página 56

Bus de datos
CLKOUT (=Foosc/4)

8
0 M 1 Retardo
RA4/T0CKI U M
U de 2 Registro TMRO
pin 1 X
0 X ciclos

T0SE
T0CS PSA

0
M Preescaler de 8 bits
Perro 1 U El bit T0IF se
Guardián X 8 pone a 1 si hay
overflow
3
Multiplexor 1-8 PS2:PS0
PSA
WDT bit de habilitación
MICROBÓTICA

0 1
MUX PSA

WDT
time-out

Figura 2.- Diagrama de bloques del temporizador TMR0 del PIC16F84A

10 ms

56
RESISTOR Extremo
hitec
HS-300

Izquierda

1 ms
10 ms

hitec
HS-300
Posición
Central

1,5 ms
10 ms

Extremo
Derecha hitec
HS-300
2 ms

Figura 3.- Señales de control del servomotor que se obtienen con el circuito de la Figura1 y el programa Servo5

rrirá cada 1ms, para conseguir bit T0IE (INTCON<5>) al los valores correspondientes al
todo esto cargamos en el registro mismo tiempo que se habilita número de veces que debe inte-
OPTION el valor b'00001000'. poniendo a "1"el bit GIE rrumpir TMR0 para obtener la
Todos estos registros se encuen- (Global Interrupt Enable). señal modulada en PWM de 1ms
tran en el Banco 1, ya en el Seguidamente se lee el valor del a nivel alto y 19 a nivel bajo o
Banco 0 se habilita la fuente de las líneas RA0 y RA1 y depen- 1,5 ms a nivel alto y 18,5 a nivel
interrupción por desbordamien- diendo de su estado se carga en bajo o 2 ms a nivel alto y 18 ms
to del TMR0 poniendo a "1" el el registro CONTA y CONTA1 a nivel bajo, para conseguir el
MICROBOTICA PAGS 26/12/02 12:03 Página 57

efecto deseado tal y como se ve


en la Figura 3 y después se conti-
nua realizando un bucle cerrado.
El programa de servicio de la
interrupción se encarga de guar-
dar temporalmente los registros
W y STATUS, decrementar el
valor del registro CONTA en
una unidad y de volver a cargar
en el registro TMR0 el valor 9
para que se genere una nueva
interrupción cada 0,25 ms, segui-
damente se reponen los registros
W y STATUAS y se pone a "0" Figura 4.- Organigrama del
el bit T0IF (INTCON<2>) antes programa servos.
de la instrucción de retorno de
interrupción.
Cada vez que CONTA se
hace cero cambia de estado la
salida RB0, generándose la señal
deseada.

En el próximo número de
esta revista presentaremos la
construcción de un microrobot
MICROBOTICA PAGS 26/12/02 12:03 Página 58

; Programa Servo5.asm. Fecha : 9 - Noviembre - 2002


;Este programa controla un servomotor de los utilizados en los equipos de radiocontrol
;Estos dispositivos se controlan por los impulsos que llegan a través de la entrada de
;control el programa lee el contenido de las entradas RA0 y RA1 y genera por RB1 una señal
;PWM de duración a nivel alto controladas por RA0:RA1 que hacen que el servo se posicione
;a la derecha, centro, izquierda
; Revisión : 0.0 Programa para PIC16C84 y PIC16F84
; Velocidad del Reloj: 4 MHz Reloj Instrucción: 1 MHz = 1 uS
; Perro Guardián: deshabilitado Tipo de Reloj : XT
; Protección del código: OFF
;***************************************************************************************
title "INTERT.asm"
page
list p = 16f84, C=131, N=66, R=HEX ;Elección del modelo del PIC
include "p16F84.inc" ;Se incluye la definición de registros para el PIC 16F84.
__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC
CONTA EQU 0x0C
CONTA1 EQU 0x0D
W_TEMPORAL EQU 0x0E
STATUS_TEMPORAL EQU 0x0F
org 0x00 ;Vector de Reset
goto INICIO
org 0X04
movwf W_TEMPORAL ;Atención a la interrupcion
MICROBÓTICA

swapf STATUS,w
movwf STATUS_TEMPORAL
decf CONTA,f
movlw .7
movwf TMR0
swapf STATUS_TEMPORAL,w
movwf STATUS
swapf W_TEMPORAL,f
swapf W_TEMPORAL,w
bcf INTCON,T0IF
retfie
INICIO clrf PORTB ;Borra los latch de salida del PORTB
clrf PORTA ;Borra los latch de entrada del PORTA
bsf STATUS,RP0 ;Selecciona banco 1
clrf TRISB ;PortB se configura como Salida
movlw b'00011111'
movwf TRISA ;Puerta A se configura como Entrada

58
movlw b'00001000' ;Asigna el predivisor al WDT para que no divida TMR0
movwf OPTION_REG
bcf STATUS,RP0 ;Selecciona banco 0
movlw b'10100000'
RESISTOR movwf
movlw
INTCON
.9
;Interrupción GIE-SI TMR0-SI
movwf TMR0 ;carga TMR0 con 150
LEE_PORTA movf PORTA,W ;Lee el valor de RA0:RA1
andlw b'00000011'
call TABLA1 ;Lee el valor del número de veces que está a nivel alto
movwf CONTA ;Salva el valor en CONTA
movf PORTA,w ;Lee el valor de RA0:RA1
andlw b'00000011'
call TABLA2 ;Lee el valor del número de veces que está a nivel bajo
movwf CONTA1 ;Salva el valor en CONTA1
bsf PORTB,0 ;Pone RB0 a nivel alto
ESPERA movf CONTA,f
btfss STATUS,Z ;Se ha interrumpido el número de veces?
goto ESPERA
movf CONTA1,w ;Pasa el valor de CONTA1 a CONTA
movwf CONTA
bcf PORTB,0 ;Pone RB0 a nivel bajo vb
ESPERA1 movf CONTA,f
btfss STATUS,Z ;Se ha interrumpido el número de veces?
goto ESPERA1
goto LEE_PORTA
TABLA1 addwf PCL,f ;Devuelve el numero de veces a nivel alto RB0
retlw .4 ; Retorna el valor 4 en decimal
retlw .6 ; Retorna el valor 6 en decimal
retlw .8 ; Retorna el valor 8 en decimal
retlw .16 ; Retorna el valor 16 en decimal
TABLA2 addwf PCL,f ;Devuelve el numero de veces a
nivel bajo RB0
retlw .76 ; Retorna el valor 76 en decimal
retlw .74 ; Retorna el valor 74 en decimal Foto2.- hexápodo con
retlw .72 ; Retorna el valor 72 en decimal tres servomotores.
retlw .64 ; Retorna el valor 64 en decimal

Tabla 3.- Programa de control del servo utilizando el circuito de la Figura 1.

hexápodo como el que se momento con un PIC16F84


muestra en la Foto 2, que pero luego hemos cambiado por
hemos construido con tres la comodidad de la programa-
servomotores y que ha sido ción en circuito por el
programado en un primer PIC16F876.

También podría gustarte