Autor Tema: Controlar 2 servomotores mientras se ejecuta otras acciones enel PIC (Multitask)  (Leído 3581 veces)

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

Desconectado Mau_Reyes

  • PIC10
  • *
  • Mensajes: 1
Buen día a todos, mi problema es el siguiente:

Quiero controlar los movimientos de un robot explorador (posee un brazo manipulador, encima de un robot móvil con orugas), posee 2 servomotores en cada articulación de su brazo manipulador, sin embargo me pregunto como puedo hacerle cuando yo le mande la intrucción de que levante el brazo o ante brazo de brazo manipulador (donde son controlados por servos) y que despues de esto yo pueda mover el móvil sin que la señal a los servos se pierda.

Tengo varios PICs, no me importaría si me recomiendan alguno, empezando por el 16f877, creo que ese ayuda pero no se como hacerle. todo esto lo estoy programando en Proton, les agradecería cualquier ayuda.

Muchas gracias.

Desconectado juanpavz

  • PIC12
  • **
  • Mensajes: 77
Me parece que la solución a tus problemas es el uso de la interrupción del TIMER y quizas se podria optimizar si usas RTOS por ejm el de CCS hay info a montones por ejm:
http://picmania.garcia-cuervo.net/picc_servos_x_8.php


Hazlo o no lo hagas... Pero no lo intentes

Desconectado dogflu66

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 3549
Para mantener la posición de los servos necesitas ejecutar una serie de veces por segundos la rutina de control de los mismos. Y en los espacios muertos realizar el resto de operaciones, para lograr esto como te dicen en el post de arriba se utilizan los Timer y las interrupciones. El problema de utilizar los Timer y las interrupciones, sobretodo, es que se programan de forma distinta para cada lenguaje Basic. Lo que sí te puedo aconsejar es que es recomendable utilizar una velocidad de reloj alta para no perder precisión en los servos, he realizado practicas con cristales de 20Mhz.

Mira aquí a ver:

http://www.todopic.com.ar/foros/index.php?topic=14917.msg112013#msg112013
Saludos desde Granada, España.