Autor Tema: ::Control de servos::Modulacion de pulsos::  (Leído 899 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado pajaro

  • PIC24H
  • ******
  • Mensajes: 1121
::Control de servos::Modulacion de pulsos::
« en: 15 de Abril de 2014, 14:14:18 »
hola compañeros

desde hace tiempo le he esto dando vueltas a varias cosas relacionadas con el
control de servos, la forma mas conocida de controlar un servo es por PWM
modulacion de ancho de pulso en el foro hay muy bueno hilos sobre este tema...

bueno esto ya lo tengo montado y funcionando pero ahora la cosa se complica
si quiero controlar mas de 8 servos y el pic lo tengo trabajondo a 20Mhz.

pero la cosa se complica cuando se incrementa el control de servos imaginemos...
que necesitamos controlar un numero de servos por ejemplo 40 servos.

esto como se hace....?
si con una señal se pueden controlar hasta 8 servos que pasa con el resto?

Como se podria hacer esto?
he leido que un servo hay que reenviarle la informacion cada 20ms asi pues
tambien he leido que con 20ms se puede controlar 8 servos y tambine he leido
que esto se puede hacer con una sola interupcion. y posteriormente confirme que funciona
pero tiene unos limites.

pero ahora se necesitan controlar 40 servos y ademas el controlador necesitara hacer mas cosas
como se hace esto sin morir en el intento.



Primero de todo como consigo controlar mas de 8 si cada 20ms les debo actualizar

¿me podrian ilistrar o compartir conocimiento?
o algun  buen enlace?

un saludo




Desconectado rivale

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1707
Re: ::Control de servos::Modulacion de pulsos::
« Respuesta #1 en: 15 de Abril de 2014, 14:44:41 »
tal vez eso te ayude

http://www.todopic.com.ar/foros/index.php?topic=12528.0

El pwm no es problema, la frecuencia de trabajo para los servos no es muy alta, así que puedes generar por software tantos pwms como pines I/O tenga tu pic, yo he generado hasta 30 pwms en un solo pic para controlar la fuerza de unos solenoides.

aunque para 40 servos necesitas un pic con mas de 40 I/Os,
"Nada es imposible, no si puedes imaginarlo"

Desconectado pajaro

  • PIC24H
  • ******
  • Mensajes: 1121
Re: ::Control de servos::Modulacion de pulsos::
« Respuesta #2 en: 16 de Abril de 2014, 06:32:07 »
Hola amigos
muy bueno este hilo que compartiste lastima que algunos enlaces estan muertos,
entiendo la idea por software hacer varios pwm.

si en una señal de pwm se pueden integrar o controlar 8 servos con 40 necesitaria 5 señales pwm.

PWM_1
PWM_2
PWM_3
PWM_4
PWM_5

cada PWM controla 8 servos, pero ahora esta la barrera que no logro superar,
si el sincronismos es cada 20ms necesitaremos de varios timer ...
si usamos un pic18F4550 con 48Mhz es lo mas rapido que puede circular.

si por alguna casualidad un servo no recive sus sincronismo la hemos liado parda..

PWM_1:__|¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨´¨¨|20ms
PWM_2:__|¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨|__
PWM_3:__|¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨|__
PWM_4:__|¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨|__
PWM_5:__|¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨|__

lo ideal es que pudira actualizar el estado de los 40 servos por cada 20 ms
pero el proceso de instruciones tambien conllevara o comera un tiempo de procesamiento desde que le das la orden hasta que la ejecuta.

PWM_1:__|¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨´¨¨|_20ms______________
PWM_2:_______________________¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨|_20ms
PWM_3:___________________________________________|¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨|_20ms
PWM_4:________________________________________________________________|¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨|_20ms
PWM_5:__|¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨|__



servos:     S1-S2-S3-S4-S5-S6-S7-S8
PWM_X:__|¨¨-¨¨-¨¨-¨¨-¨¨-¨¨-¨¨-¨¨|__

por decirlo de alguna forma los 4 servos podran modificar su estado cada 20ms
de forma no interumpida.

servos:     S1-S2-S3-S4-S5-S6-S7-S8
PWM_1:__|¨¨-¨¨-¨¨-¨¨-¨¨-¨¨-¨¨-¨¨|__

servos:     S1-S2-S3-S4-S5-S6-S7-S8
PWM_2:__|¨¨-¨¨-¨¨-¨¨-¨¨-¨¨-¨¨-¨¨|__

servos:     S1-S2-S3-S4-S5-S6-S7-S8
PWM_3:__|¨¨-¨¨-¨¨-¨¨-¨¨-¨¨-¨¨-¨¨|__

servos:     S1-S2-S3-S4-S5-S6-S7-S8
PWM_4:__|¨¨-¨¨-¨¨-¨¨-¨¨-¨¨-¨¨-¨¨|__

servos:     S1-S2-S3-S4-S5-S6-S7-S8
PWM_5:__|¨¨-¨¨-¨¨-¨¨-¨¨-¨¨-¨¨-¨¨|__



__|¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨|____|¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨|__


alguna idea..?

« Última modificación: 16 de Abril de 2014, 06:43:26 por pajaro »

Desconectado tapi8

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1506
Re: ::Control de servos::Modulacion de pulsos::
« Respuesta #3 en: 25 de Abril de 2014, 05:43:38 »
Pero los servos se van a mover de 8 en 8, o cada uno independiente, si cada uno se mueve independiente necesitaras 40 PWMs...

¿Cuantos grados de precision necesitas?

La manera mas facil y mas normal, creo yo, es poner un TIMER a contar los 20mS de la frec. del PWM y con bucles de tiempo los DUTTYs, ya que son tiempos bastante pequeños.

Desconectado miquel

  • PIC12
  • **
  • Mensajes: 69
Re: ::Control de servos::Modulacion de pulsos::
« Respuesta #4 en: 27 de Abril de 2014, 21:11:04 »
Hola Pajaro!

Creo que para controlar muchos servos lo mejor es utlizar un PCA 9685. Tiene 16 salidas PWM y se comunica con el pic por I2C, también se pueden agrupar hasta 64 con lo que se tiene un total de 1024 servos!!!!! Lo mejor es que cuesta menos de 2€ (incluído IVA) en Farnell.

http://www.nxp.com/documents/data_sheet/PCA9685.pdf

Saludos,

Miquel