Control de varios servo por un mismo PIC

Holaque tal, me gustaria saber como controlar mas de 2 servos por medio de un PIC para hacer un brazo robotico, en si quiero que tenga 4 servos me dicen que debo enviarle pulsos seguidos pero como hago eso con 4 servos? el pic es el 16F886
 
Última edición:
jeje, me podrías orientar acerca del control de los servos? esque apenas voy aprendiendo... si puedes poner una parte de tu código para darme una idea y programar lo que necesito...
 
claro que si :D lo programas en ensamblador? y ademas que pic? bueno en si a los servos les tienes que dar un pulso alto que es el que te va a dar la dieccioon y otro pulso bajo que va a ser mas el de la velocidad asi lo tomo yo por que cuando has de cuenta le doy a un servo 2ms que es para 180° tengo que darle 17 a 18 ms de tiempo bajo aunque le he dado 8 y va mas rapido y cuando le doy hasta 200 jaja se va bien leeeento :p bueno respondeme :p
 
:eek: que loco yo el 886 XD a 4mhz jojo ammm mira esque yo lo programo en ensamblador y si tiene una gran diferencia :/ yo te recomendaria que lo programaras en ensamblador esta mas chingon pero tienes que aprender los nemonicos y esas cosas aun asi deja te mando un codigo en asm explicado para ver si te convences espera tantito :D

Ver el archivo adjunto pollo.txt hola aqui esta una pequeña parte de un codigo en ensamblador espero que te agrade

Ver el archivo adjunto pollo.txt perdon este el codigo pero ya comentado
 
Última edición:
Yo considero que es algo sencillo. Puedes controlar varios servos por un mismo PIC, pero el unico desperfecto del diseño que tengo a mano es que no puedes activar más de un servo a la vez. Yo utilizo la señal de datos de uno mismo (I/O señal) y para ir activando cada servo coloco un relé o similar a la alimentacion del servo
 
aunque me gutaria que me explicaras como funciona cada servo... digo si se puede, ya que necesito que vaya de 0 a 45 y luego de 0 a 90 y luego de 0 a 135 y luego de 0 a 180... (asi para 3 servos diferentes)
 
mmm que los 3 servos hagan ese movimiento?
bueno si es asi seria algo asi mira

movlw .40 ;tiempo en que el servo se quedara en esa posion
movwf 0x50 ;guardado en regitro 50
ardiente
movlw 0x03 ;activar 3 servos en el puerto a
movwf porta
call _0 ;llamado del tiempo de 0 grados
clrf porta ;se borra el puerto a
call bajo ;se llama el tiempo bajo (17ms)
decfsz 0x50 ;ciclo
goto ardiente


movlw .40 ;tiempo en que el servo se quedara en esa posion
movwf 0x50 ;guardado en regitro 50
ardiente
movlw 0x03 ;activar 3 servos en el puerto a
movwf porta
call _45 ;llamado del tiempo de 45 grados
clrf porta ;se borra el puerto a
call bajo ;se llama el tiempo bajo (17ms)
decfsz 0x50 ;ciclo
goto ardiente

y haci haces para los demas movimientos
aunque podrias hacerlo por tablas para que sea mas corto el programa pero este es un metodo espero que le entiendas :)
 
Atrás
Arriba