Autor Tema: Algoritmo para controlar hasta 8 servos con una sola interrupción (en C)  (Leído 89605 veces)

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

Desconectado Marttyn

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1836
    • IDEAA
Re: Algoritmo para controlar hasta 8 servos con una sola interrupción (en C)
« Respuesta #15 en: 04 de Febrero de 2008, 15:19:52 »
Perfecto Diego! Tu siempre con tu faceta de profesor haces que los demas aprendamos de manera amena. La verdad te felicito!
Bueno, creo que todos por aqui sabeis que los servos me envantan! el 50% de mis post son sobre ellos  :mrgreen:
Yo resolvi una situacion similar de manera similar... en uno de los interminables post sobre servos alguien habia hablado (supongo que sera a quien le das las gracias al principio) sobre lo que tu comentas de dividir en 8 el timer para poder controlar efectivamente cada servo...
A mi me ocurria lo mismo que a ti, los muy cabr**** vibraban!! llevo un año peleandome casi dia a dia con ellos, y lo que tu comentas es la mejor solucion que encontre hasta el momento.
La unica diferencia es que hay algo me libera al timer1 de tanta tarea, algo que tambien comentaban en ese post, y es el uso del CCP1 (que por supuesto aprendi a usar en uno de tus ejemplitos  :D)
El codigo lo tengo de la siguiente manera: el timer 1 esta dividido en 8 partes como el tuyo, pero SIEMPRE ocurre el overflow 2,5mS despues de haber comenzado, no le cargo la duracion del pulso en alto, PERO SI le cargo al CCP (en modo compare) el valor correspondiente para que el pulso de ese servo dure lo indicado. luego la interrupcion CCP se encarga de bajar el pulso cuando correspode.
en resumen, el timer1 sube el pulso y el ccp lo baja...
no se si esta manera tiene alguna desventaja o ventaja, pero por lo visto los a los dos nos funciona todo sin problemas, con una solucion muy parecida.
Un saludo y espero que sigas instruyendonos como hasta ahora!
Gracias otr vez!
La gente ve las cosas que existen y se pregunta por qué.
Yo prefiero imaginar lo que no existe y preguntarme por qué no.

Desconectado jfh900

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3595
Re: Algoritmo para controlar hasta 8 servos con una sola interrupción (en C)
« Respuesta #16 en: 04 de Febrero de 2008, 15:31:52 »
Pues hay controladoras de 30 servos funcionando como está:

http://www.jvmbots.com/viewtopic.php?t=431&postdays=0&postorder=asc&start=0

Y creo que funcionan como comentaba Manolo. De la estabilidad no dice nada.

¿Manolo tu has implementado lo que comentaste?

Un saludo

* Cuando hables, procura que tus palabras sean mejores que el silencio.
* 'Todos somos ignorantes, lo que ocurre es que no todos ignoramos las mismas cosas.' Albert Einstein.
* No hay nada peor que un experto para evitar el progreso en un campo
* "La vida es como una novela. No importa que sea larga, sino que esté bien narrada" Seneca
* La vida no se vive por las veces que respiras, sino por los momentos que dejan sin aliento.
* Dios dijo: ∇·E=ρ/ε0 ; ∇·B=0 ; ∇xE=-dB/dt ; ∇xB= μ0ε0dE/dt..y la luz se hizo..!!..

Desde España Jesús

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18310
    • MicroPIC
Re: Algoritmo para controlar hasta 8 servos con una sola interrupción (en C)
« Respuesta #17 en: 04 de Febrero de 2008, 15:38:58 »
No, no lo he probado, sólo pensaba en voz alta.
Pero conozco la controladora del amigo Julio, lo que demuestra que es posible.

Desconectado Marttyn

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1836
    • IDEAA
Re: Algoritmo para controlar hasta 8 servos con una sola interrupción (en C)
« Respuesta #18 en: 04 de Febrero de 2008, 15:59:07 »
por cierto diego, me haz levantado la curiosidad. despues de mas de un año metido en esto de los pics nunca he hecho nada con comunicacion rs232. asi que inmediatamente me meti en tu post Lo minimo para comunicaciones RS232 Hardware y software mire lo que se necesita y ya me estoy llendo a la tienda de electronica para comprar un max232, 4 condensadores de 1uF y uno de 10uF  :mrgreen:
a ver que sale de todo esto!
algo es seguro... mientras mas cosas aprendo, mas ideas tengo, y mas cosas quiero hacer... y con la pila de cosas pendientes que tengo NO ES BUENO seguir aprendiendo cosas!  :D
salu2
La gente ve las cosas que existen y se pregunta por qué.
Yo prefiero imaginar lo que no existe y preguntarme por qué no.

Desconectado RedPic

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 5552
    • Picmania by Redraven
Re: Algoritmo para controlar hasta 8 servos con una sola interrupción (en C)
« Respuesta #19 en: 04 de Febrero de 2008, 17:14:46 »
Ahora el amigo Pocher me ha mandado un par de códigos que el tenía para 8 y 16 Servos. El de 8 es también una forma de hacer lo que yo he hecho con el Timer1 escrito de otra forma. El de 16 tengo que estudiarlo para ver cual es su modo de funcionamiento.

Marttyn, si he visto tus progresos con esto de los servos y sabía que te interesaban hasta la neurosis. Sin embargo tu hilo de los servos "vibrantes" solo lo seguí al principio y no llegué a ver tu solución. Si lo deseas postea aquí tú codigo y una explicación de como lo haces con el CCP Compare.

Juanfran, mi código no sirve para mas de 8 servos, pero quiero probar con dos o tres interrupciones a 8 servos cada una hasta alcanzar 16 o 24 servos a ver que pasa con ellos. El problema es que físicamente solo tengo 5 servos y voy a tener que hacer como con lo de los 8 y que es ir moviéndolos por distintos pines para ver como soportan cada uno de ellos y comprobar si "tiemblan" o no.

Y hablando de "temblar". De los cinco Servos tengo uno que tiembla en el extremo de máxima señal a 2.3 ms. No es el canal al que lo conecte ya que intercambiándolo con cualquier otro sigue vibrando siempre el mismo y no el canal al que lo tenía puesto. Imagino que el pobre ya está viejo ya que tiene mas de 15 años y estuvo algunos años montado en un avión. Le tengo mucho cariño.   :mrgreen:

Contra la estupidez los propios dioses luchan en vano. Schiller
Mi Güeb : Picmania

Desconectado Marttyn

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1836
    • IDEAA
Re: Algoritmo para controlar hasta 8 servos con una sola interrupción (en C)
« Respuesta #20 en: 04 de Febrero de 2008, 18:51:29 »
Y hablando de "temblar". De los cinco Servos tengo uno que tiembla en el extremo de máxima señal a 2.3 ms. No es el canal al que lo conecte ya que intercambiándolo con cualquier otro sigue vibrando siempre el mismo y no el canal al que lo tenía puesto. Imagino que el pobre ya está viejo ya que tiene mas de 15 años y estuvo algunos años montado en un avión. Le tengo mucho cariño.   :mrgreen:

yo tengo unos cuantos servos, algunos baratillos y otros de los caros, todos nuevos.... y hay varios (tanto caros como baratos) que vibran si el pulso esta en un extremo... yo creo que si un servo tiene un extremo teorico en 2.3mS, en la practica algunos lo tienen en 2.29mS y otros en 2.31mS... con lo que si nos pasamos de lo que el servo puede dar es cuando empieza a vibrar. o tambien, internamente tienen un tope, y si se le da un pulso que lleva el servo mas alla del tope lo que hace es chocar contra ese tope una y otra vez intentando moverse mas alla de el y es lo que genera la vibracion.
esto son solo teorias, porque la verdad que como ya dije tengo unos cuantos servos y no creo que vibren en el extremo porque esten viejos, sino porque estan mas alla de su limite, fisico o electronico.

a ver si tengo un momentito y pongo el codigo con el CCP compare, que lo tengo dentro de un programa mas grande y esta lleno de cosas que no interesan.
salu2!
La gente ve las cosas que existen y se pregunta por qué.
Yo prefiero imaginar lo que no existe y preguntarme por qué no.

Desconectado Marttyn

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1836
    • IDEAA
Re: Algoritmo para controlar hasta 8 servos con una sola interrupción (en C)
« Respuesta #21 en: 05 de Febrero de 2008, 03:21:25 »
ya hice el circuito para comunicacion RS232, y WOOOOOW!!!  :shock:
esto eleva la programacion, depuracion y prueba de circuitos a otro nivel completamente distinto!
ahora jugar y programar servos va a ser cosa de niños!  :D
ya sabia que manolo tiene la capacidad de contagiarme las ganas con todos sus proyectos, veo que tu tambien diego!  :mrgreen:
salu2
La gente ve las cosas que existen y se pregunta por qué.
Yo prefiero imaginar lo que no existe y preguntarme por qué no.

Desconectado RedPic

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 5552
    • Picmania by Redraven
Re: Algoritmo para controlar hasta 8 servos con una sola interrupción (en C)
« Respuesta #22 en: 05 de Febrero de 2008, 04:20:43 »
Me alegra muchísimo el poder haberte sido útil. Y tienes razón, con algún medio para poder monitorizar o controlar lo que ocurre en el PIC es todo mucho mas fácil. Es como una pequeña cucharada de azúcar en el café, lo hace mas digerible.  :mrgreen: :mrgreen: :mrgreen:
Contra la estupidez los propios dioses luchan en vano. Schiller
Mi Güeb : Picmania

Desconectado J1M

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 1960
Re: Algoritmo para controlar hasta 8 servos con una sola interrupción (en C)
« Respuesta #23 en: 05 de Febrero de 2008, 11:14:05 »
Lo primero, enhorabuena por esa peazo controladora!!! Y pensar que tengo en mi casa 6 mini servos y una cámara esperando para ser juntados en armonía!!!

Una dudilla y aviso que la hago desde el más profundo de los desconocimientos en el tema. Sería posible generar las señales para controlar los servos de la misma forma en que se controlan los leds RGB por software? Aparece en una APPNote de Microchip pero no la encuentro, básicamente es el mismo método que utiliza Manolo en su artículo del led RGB. Supongo que sabéis al que me refiero, que ventajas tiene? inconvenientes?

Saludos y graciasssss por aguantar la plastada! :p

Desconectado Marttyn

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1836
    • IDEAA
Re: Algoritmo para controlar hasta 8 servos con una sola interrupción (en C)
« Respuesta #24 en: 05 de Febrero de 2008, 15:04:29 »
Y tienes razón, con algún medio para poder monitorizar o controlar lo que ocurre en el PIC es todo mucho mas fácil.

Es como si supiera lo que piensa mi cucaracha en cada momenoto  :mrgreen:
La gente ve las cosas que existen y se pregunta por qué.
Yo prefiero imaginar lo que no existe y preguntarme por qué no.

Desconectado RedPic

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 5552
    • Picmania by Redraven
Re: Algoritmo para controlar hasta 8 servos con una sola interrupción (en C)
« Respuesta #25 en: 05 de Febrero de 2008, 17:06:52 »
Amigo Jaime:

Nunca he manejado los dichosos LEd's RGB pero debe ser mas sencillo que esto de los servos, ya que creo, supongo, barrunto, imagino que no están constreñidos a los dichosos 50 Hz de los sevos y se puede tener mas libertad al mandarles los PWM.

Pero doctores tiene la iglesia y seguro que nos iluminarán con su sapiencia.  :mrgreen:
Contra la estupidez los propios dioses luchan en vano. Schiller
Mi Güeb : Picmania

Desconectado Gorgonas

  • PIC12
  • **
  • Mensajes: 81
Re: Algoritmo para controlar hasta 8 servos con una sola interrupción (en C)
« Respuesta #26 en: 05 de Febrero de 2008, 23:00:47 »
Pues los led RGB la esencia es parecida, pero el periodo se divide en los 256 valores posibles del color, que es el tiempo que esta en alto la onda, y eso multiplicado por 3 y aun por encima para que no produzca destellos, cuando el tiempo en alto de la onda es muy pequeño, hay que poner una frecuencia algo alta...
yo tuve que usar un reloj de 16 Mz para poder encender el led adecuadamente sin destellos, usar un lcd y controlar el menu. Con un reloj de menos frecuencia, el micro no daba a basto para atender las interrupciones del timer y controlar el resto de cosas adecuadamente.

Desconectado RedPic

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 5552
    • Picmania by Redraven
Re: Algoritmo para controlar hasta 8 servos con una sola interrupción (en C)
« Respuesta #27 en: 06 de Febrero de 2008, 03:12:52 »
Y tienes razón, con algún medio para poder monitorizar o controlar lo que ocurre en el PIC es todo mucho mas fácil.

Es como si supiera lo que piensa mi cucaracha en cada momenoto  :mrgreen:

Pues si trabajas con los 18F2550 ó 18F4550 rodando a 48 Mhz y hablando con el PC por USB a 2.0 Mhz de lo que eres capaz de ver. Es una pasada.  :mrgreen:
Contra la estupidez los propios dioses luchan en vano. Schiller
Mi Güeb : Picmania

Desconectado jfh900

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3595
Re: Algoritmo para controlar hasta 8 servos con una sola interrupción (en C)
« Respuesta #28 en: 06 de Febrero de 2008, 10:16:43 »
Yo todas las controladoras que he visto llevan un micro dedicado solo para el control de los servos. Creo que sería una buena idea que hicierais lo mismo (no es tanto el coste y el proyecto lo merece).

Un saludo
* Cuando hables, procura que tus palabras sean mejores que el silencio.
* 'Todos somos ignorantes, lo que ocurre es que no todos ignoramos las mismas cosas.' Albert Einstein.
* No hay nada peor que un experto para evitar el progreso en un campo
* "La vida es como una novela. No importa que sea larga, sino que esté bien narrada" Seneca
* La vida no se vive por las veces que respiras, sino por los momentos que dejan sin aliento.
* Dios dijo: ∇·E=ρ/ε0 ; ∇·B=0 ; ∇xE=-dB/dt ; ∇xB= μ0ε0dE/dt..y la luz se hizo..!!..

Desde España Jesús

Desconectado RedPic

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 5552
    • Picmania by Redraven
Re: Algoritmo para controlar hasta 8 servos con una sola interrupción (en C)
« Respuesta #29 en: 06 de Febrero de 2008, 16:12:34 »
Si, Jesús, esa es mi idea. Un PIC-Satélite para cada 8 servos, dedicado en exclusiva a su control y gestión con sus propias funciones "macro" por si tiene que ejecutar movimientos complejos con cualquier grupo de ellos y con su batería de sensores, conectado al PCI-Cerebro mediante I2C o SPI en modo Esclavo-Maestro que se encarga de las comunicaciones de las funciones de alto nivel.  :mrgreen:
Contra la estupidez los propios dioses luchan en vano. Schiller
Mi Güeb : Picmania