Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Brazo
Brazo
Lo lgico es que la fuente de energa de los robots sean bateras o similares. Cuando intentamos
hacer funcionar varios ejes del brazo a la vez, puede pasar que se produzcan bajadas de tensin
momentaneas que ocasione el reset del PIC e impidan el movimiento del brazo. Para evitarlo hay que
indicar en la configuracin del programa:
#fuses NOBROWNOUT
Mediante interrupcin por desborde del Timer 0 generaremos las seales de control de los servos. Y
mediante el valor numrico contenido en una variable la posicin de giro. Estas variables las hemos
denominado pinza , muneca , brazo y hombro, e identifican a cada uno de los ejes. Con otra
variable, velocidad especificaremos la rapidez de los movimientos.
Para conseguir controlar la velocidad de los movimientos se ha establecido este procedimiento:
//Modificar posicin del servo mientras flag=1
while (flag)
{
flag=0;
//Si
el
eje
brazo
no
est
en
su
posicin
if (pwm_brazo != brazo)
{
//retrocede una posicin si la nueva es menor
if (pwm_brazo > brazo) pwm_brazo;
//o
avanza
una
posicin
si
la
nueva
es
mayor
else if (pwm_brazo < brazo) ++pwm_brazo;
//Con retardo de movimiento de posicin indicado
delay_ms(velocidad);
//Y se comprueba otra vez si coincide posicin actual
//con posicin deseada
flag=1;
}
}
Y la forma de indicar las posiciones del servo mediante dos procedimientos. Por un lado indicando
numricamente las nuevas posiciones de los servos que han de cambiar:
velocidad=5;
//Velocidad del movimiento
muneca= 16;
//Nueva
posicin
mueca
brazo=20;
//Nueva
posicin
brazo
hombro=13;
//Nueva posicin hombro
//Acceso a la funcin del cambio de posiciones
movimiento_brazo_num (muneca, pinza, brazo, hombro, velocidad);
O tener unas posiciones preestablecidas definidas por una opcin que se enva para obtener la nueva
posicin:
brazo_pos=2
//Brazo levantado