User Guide

Podemos ver su funcionamiento en la tabla siguiente:
PD5 PD6 1 2 3 4 M1 PD3 PB3 1 2 3 4 M2
0 0 off off off off off (coast) 0 0 off off off off off (coast)
0 1 off o on off forw o on o off forwn ard 0 1 ff n ard
1 0 on off off on reverse 1 0 on off off on reverse
1 1 off off on on off (brake) ) 1 1 off off on on off (brake
La velocidad se consigue alternando pulsos altos y bajos. Supongamos que PD6 está alto (a 5 V,
ógi será ) l 5 st n b (0 V d o
ncionará entre “adelante” y “paro” causando un descenso de velocidad en el motor M1. Por
res Timer0 y Timer2. Esto
1 y otra de
mente haga decrecer la velocidad del motor en el tiempo.
Girando con una conducción diferencial
e como
la l ca “1” y a ternativamente el PD e á e ajo es ecir “0”) y alt . El motor
fu
ejemplo, si PD6 está en alto 2/3 del tiempo ( 67% del ciclo de trabajo) el motor rodará
aproximadamente al 67% de su velocidad total. Dado que el voltaje suministrado al motor es una
serie de pulsos de anchura variable a este método de control de velocidad se le llama modulación
del ancho de pulso (PWM). Un ejemplo de PWM se
muestra en el gráfico: el ancho de los pulsos decrece
desde el 100% del ciclo de trabajo hasta el 0%, por
lo que el motor rodará desde el máximo de velocidad
hasta pararse.
En el 3pi, el control de velocidad se consigue usando
las salidas de PWM del microcontrolador que
generan los temporizado
significa que puedes establecer el ciclo de trabajo
PWM para los dos motores de una vez e
independiente del resto de código por lo que seguirá
produciendo señales en segundo plano, pudiendo
prestar atención a otras necesidades.
La función set_motors() de la librería AVR Pololu
usando una precisión de 8 bits por lo que un valor de
para una velocidad del 67% en el M
( ver sección 6.a) crea el ciclo de trabajo
255 corresponderá al 100%. Por ejemplo
l 33% en el M2 llamaremos a la función de la
siguiente forma:
set_motors(171,84)
Para obtener un descenso lento de la secuencia del PWM fíjate en el gráfico, deberás escribir un
bucle que gradual
El 3pi tiene motores independientes a cada lado que
crean un método de conducción denominado
conducción diferencial. También se conoc
“conducción de tanques”. Para girar mediante este
método es necesario hacer rodar los motores a
diferentes velocidades. En el ejemplo de función
anterior la rueda izquierda se mueve más deprisa
que la derecha con lo que el robot avanza girando a
la derecha. La diferencia de velocidades determina
que el giro sea más suave o más brusco, e incluso
moviendo un motor adelante y el otro atrás se consigue un cambio de dirección total.