Si además quieres enviarnos un Artículo para el Blog y redes sociales, pulsa el siguiente botón:
Hola amigos, acabo de adquirir un servomotor microblue XT y en sus especificaciones pone 0,13 seg/60º. Eso quiere decir que para girar un grado el pulso tiene que tener una duración de 2,1667 ms? Es que no acabo de comprender su funcionamiento.
Me he leido tutoriales, blogs y foros y he llegado a entender que segun la duración del pulso el servo se pone en una posición o otra. Lo que no sé, es con las especificaciones que tengo, como puedo configurar el servomotor, por ejemplo el periodo de la señal.
Gracias!
Acabo de leerme con mas atencion tu comentario y me parece que antes lo he entendido mal, el 0,13 s / 60º es lo que tarda en girar 60º no? o sea la velocidad del servo!
Y el calculo puesto es incorrecto, para girar 60º en mi teoria si sabemos que 90º son 0,5 ms + 1ms (0º) entonces
tiempo 60º= 1 ms + (60º/90º)*0,5ms = 1,33 ms no?
Hola!
Me parece que os estáis liando más que la pata de un romano... a ver si ponemos un poco de orden.
Que quede claro que el servo es un mecanismo de posición (se posiciona en un determinado ángulo) y que se mueve a una determinada velocidad máxima en función de la tensión con la que lo alimentamos. Esa velocidad angular son los 0,13s/60º es decir el servo tarda aprox. 0.13 s en pasar de la posición 0º a la 60º.
Para controlar la posición del servo utilizamos una señal PWM (modulación por ancho de pulso) en la que cada posición del servo se consigue con un valor del tiempo en alto de la señal. Para que el servo permanezca en la posición indicada tenemos que "refrescarle" la orden cada 20 ms, es decir tenemos que crear una señal PWM de frecuencia 50Hz (T=20ms)
Siguiendo el ejemplo de la imagen, supongamos que la posicion 0º es el extremo B y el A son 180º. La diferencia entre los TOn de los extremos es 2,3-0,3=2ms. Estos 2ms se corresponden al recorrido de 0º a 180º, para calcular el TOn necesario para un ángulo, solo necesitas hacer una regla de 3 y sumarle al resultado 0,3ms que es el TOn mínimo para 0º.
Ejemplo:
Para la posición central (90º)
2ms---------------180º
TOn(90º)----------90º
________________
2*90/180=1ms + 0,3ms=1,3ms=TOn(90º)
Es muy común utilizar la posición central como 0º y tener los extremos en ángulos de +-90º. En ese caso solo tienes que sumar 90º al angulo que quieres calcular antes de hacer la regla de 3:
Ejemplo:
Para la posición -30º (-30º+90º=60º)
2ms--------------180º
TOn(-30º)--------60º
________________
2*60/180=0,666666ms + 0,3ms=0,9666ms=TOn(-30º)
Salu2!
Jajajaja... si es que no ha pillado esta parte....
Recuerda que:
- no debes mezclar pulsos con velocidad del servo.
Lo extenderé un poco... los pulsos para decirle que se vaya a 90º en un servo estandar son de 1,5ms (con sus 18,5ms complementarios) independientemente de si el servo va a 0,13s/60º como si es de 0,25 o si es de 0,5s/60º...
Una cosa es la posición y otra la velocidad que tardará el servo en llegar... por eso repito... "no debes mezclar pulsos con velocidad del servo."
Acabo de llegar a la Campus.... yepaaaaaaaaaa
furri.
Hola estoy programando mi pic para controlar el servomotor, el timer lo tengo configurado para tener una interrupción cada 0,1 ms y para generar la señal utilizo el siguiento codigo:
ON:
BCF STATUS,Z
MOVFW TEMPO
XORLW d'15'
BTFSS STATUS,Z
BSF PORTA,0 ;Mantiene el pulso high 1,5 ms
BTFSS STATUS,Z
GOTO ON
OFF:
BCF STATUS,Z
MOVFW TEMPO
XORLW d'185'
BTFSS STATUS,Z
BCF PORTA,0 ;Mantiene el pulso low 18,5 ms
BTFSS STATUS,Z
GOTO OFF
RESET:
BTFSC STATUS,Z
CLRF TEMPO
BTFSC STATUS,Z
GOTO ON
El problema que tengo,wno no se si es un problema...el servo no para quieto hasta que llega a los 180º...cual es el problema? No lo puedo detener a una posicion determinada.