# Control de Servomotores con PIC16F627/8A



## S3RGIUX (Jul 23, 2010)

Hola 

Aqui tengo una simulacion en proteus para controlar la posicion de 2 servomotores.

Con un boton envia el servo hacia un lado pero deteniendose en cuanto dejemos de apretar el boton , con el otro boton manda el servo hacia el otro tambien deteniendose en cuanto dejemos de presionar el boton, y con el ultimo envia el servo al centro.

Mi duda es: ¿Se pueden controlar mas servomotores pero al mismo tiempo pero que tengan grados diferentes, crear una rutina para que al mismo tiempo el servo 1 vaya a 90 el servo 2 a 45 y el servo 3 a 0. Por que lo que hago es enviarle la misma señal a 2 servos para que se muevan pero siempre se van a mover igual. o no se si no se pueden mover al mismo tiempo pero para mover varios tendria que multiplexar o que es lo que puedo hacer para mover al menos unos 8.

Gracias por la ayuda


----------



## Pablet (Jul 31, 2010)

hay pics, el 18f1330 por ejemplo, que llevan incorporados modulos PWM independientes, en concreto el pic que te he dicho lleva 6 modulos independientes, con cada 1 de ellos puedes manejar un servo diferente.
Un saludo


----------



## S3RGIUX (Ago 3, 2010)

gracias por responder es lo que no sabia si tenian que tener modulos diferentes de pmw o si se podia hacer con otra cosa pero voy a intentar usar modulos diferentes de pwm como dices haber que resulta.

gracias por reponder


----------



## ByAxel (Ago 3, 2010)

A ver si te sirve:
8 Canales de PWM con un 16F628A


Saludos...


----------



## ignaps45 (Ago 20, 2010)

Hola amigos , estoy tratando de comprar unos servos para hacer un proyecto, estos servos le tengo que adaptar unos ejes para mover unas puertas de 50x50 cm de cartón o plástico.

Quisiera preguntarles donde se pueden conseguir aquí en argentina servomotores, si tienen alguna recomendación en cuanto al tamaño, marca y proveedores serán bienvenidos . 
Saludos


----------



## juanscelyg (Ago 26, 2010)

la verdad soy nuevo con el cuento de los servomotores, en relaidad tengo la duda de como hacer que un servo gire de un lado para el otro. Tengo la idea y por lo que he leido, que al mandarle un pulso de determinada duracion gira. Si el pulso es corto, gira a la izquierda, si es mas largo gira a la derecha. Si alguien me pudiera colaborar, mil gracias!


----------



## ByAxel (Ago 26, 2010)

Hola...
va una desde el mismo foro:
Cosas de Servos
y otra más...
Controlando un SERVO con el PIC

nos cuentas tus avances... por si tienes dudas...

Saludos.


----------



## hernan25 (Ago 27, 2010)

Pablet dijo:


> hay pics, el 18f1330 por ejemplo, que llevan incorporados modulos PWM independientes, en concreto el pic que te he dicho lleva 6 modulos independientes, con cada 1 de ellos puedes manejar un servo diferente.
> Un saludo


 hola soy nuevo en el foro y estoy buscando ayuda mi inquietud es la siguiente estoy realizando un proyecto con microcontroladores especificamente con el 16f877a y lo tengo que programar en c y necesito las librerias de c y no las consigo.....mi proyecto es realizar una grua con motores paso a paso en total son tres.....


----------



## ignaps45 (Ago 27, 2010)

Hola Hernan25 ;
Va a ser medio complicado que des con los drivers pap indicados para el tipo de motores que utilizas, no se cual usas pero hay gran variedad de motores pap con distintas cantidades de bobinas y distintos numeros de pasos. 

Te recomiendo que te armes directamente una funcion para moverlos, es bastante sencillo solo debes entender bien como se mueven este tipo de motores. mira esta pagina http://www.x-robotics.com/
Despues ademas del pic necesitarias de un integrado , el uln /2003 que es el que va a entregar la corriente necesaria para energizar las bobinas .


----------



## CARLOS1218 (Oct 31, 2011)

Yo estoy intentando controlar 5 servomotores con el pic 18f4550 pero tengo un problema con la exigencia de corriente en la señal de los servos ya que son 5 servos conectados al puerto B y queria preguntarles si seria conveniente conectar el puerto b a los inversores 74hc04 y la salida de estos a los servos?


----------



## S3RGIUX (Oct 31, 2011)

Saludos, en cuanto a conectar 5 servos al puerto b no tienes problemas siempre y cuando estes conectando el pin de la señal, que es la que tienes que mandar el pwm para que se mueva el servomotor, de los 3 pines del servomotor uno va conectado directamente a 5 volts que por lo general es rojo, el otro a tierra por lo general negor y el de señal que puede ser blanco va a conectado al pin del microcontrolador, si tienes problemas de la corriente, tal ves pueda ser por que la fuente que usas no de sufucuente corriente para alimentar todos los servos.

s3rgiux


----------



## CARLOS1218 (Nov 1, 2011)

Muchas gracias s3rgiux, pero crees que si le agrego el 74hc04 funcione de la misma manera?, lo que pasa es quequisiera que los pulsos que genere el micro esten separados de los servos, y pues si hago este arreglo crees que funcionede la misma manera que si los conecto directo a la salida del micro? O crees que surja algun problema? Aparte de que tengo que invertir el pulso que no seria problema.


----------



## S3RGIUX (Nov 1, 2011)

Carlos, ciertamente te va a funcionar, ya que con las negadoras lo que hacer es un poco de aislamiento de tus pines del micro( no exiges mucha corriente a los pines del micro), podrias poner and en ves de not, ó negar los pulsos 2 veces con tu negadora, pero de que te va a funcionar te va a funcionar, la frecuencia para los servos que es de 50 a 60 hz es muy poca en comparacion de la que puede funcionar las 74hc estas mismas las he probado hasta frecuencias de Mhz y funcionan bastante bien.

Saludos


----------



## JuanGa94 (Ene 22, 2013)

Hola, estoy queriendo programar PWM con pic, para poder variar la velocidad de un motor, tengo conectado pulsadores en RA1 y RA2 y la salida del PWM en RA3.Si presono RA1 pone un "1" en RA3 durante 1 seg. ,si presiono RA2 PWM de 20KHz 50% durante aprox. 1 seg en RA3, es una especie de código de practica. El codigo:


```
#include<16F628A.h>         //USO PIC 16F628A
#use delay (clock=4000000) //CRISTAL 4MHz
#define TRISB=0b11111111  //PUERTO B COMO ENTRADA(NO LO USO)
#define TRISA=0b00111     //PUERTO A 
#FUSES XT,NOWDT
#use fast_io(A)
#use fast_io(B)
#byte portA = 5        //    se definen las direcciones de memoria         
#byte portB = 6         //    se definen las direcciones de memoria

INT BAND=0;
INT BAND1=0;
void PWM();

void main()
{  
   set_tris_b (0b11111111);         //DEFINE TRIS B COMO ENTRADAS 1
   set_tris_a (0b00111);         //DEFINE TRIS A 
   PORTA=(0x00);        //INICIALIZA TODO EN 0
   PORTB=(0x00);

WHILE(TRUE)    //BUCLE INFINITO
{
   IF(INPUT(PIN_A1))   //ANTIREBOTES
      {DELAY_MS(20);
        IF(INPUT(PIN_A1))   
           {OUTPUT_HIGH(PIN_A3);
             DELAY_MS(1000);
             OUTPUT_LOW(PIN_A3);
           }
       }
   
   IF(INPUT(PIN_A2))
      {DELAY_MS(20); 
        IF(INPUT(PIN_A2)) 
          {
           FOR(BAND=0;BAND<20;BAND++)  //ESTO LO MANTIENE APROX. 1seg
          {
           FOR(BAND1=0;BAND1<100;BAND1++)
                {PWM();
                }             
          }
        BAND1=0;   //VUELVE A 0
   }}
}
return ;
}

VOID PWM()
{
   OUTPUT_HIGH(PIN_A3);  //25us ALTO
   DELAY_US(25);
   OUTPUT_LOW(PIN_A3);  //25 us BAJO
   DELAY_US(25);
   return ;
}
```
Todo funciona, el problema es que el PWM no me activa el motor, y al ponerle un LED en RA3,este apenas se prende.Se que con el DC al 50% el voltaje se reduce a la mitad. Osea que en RA3 tengo 2,5V?Si cambio el DC podre hacerlo funcionar?

Saludos.


----------



## b4mv (Mar 16, 2013)

Buenas y antes que nada gracias por su atencion...

y bueno al grano...tengo que controlar un motor a psaos de 6 hilos con el pic de tal manera que pueda yo elegir la idreccion de giro con un boton y con otros dos incrementar el numro de giros en unidades y decenas y mostrar el sentido de giro y el numero de vueltas que este va a dar, pero el problema es que al momento de presionar el  boton de unidades o decenas no hace nada... les adjunto mi programa y la simulacion, espero me puedan ayudar


----------



## Luno (May 26, 2013)

Hola S3RGIUX tienes el cogido de programación para el control del servomotor que publicaste desde un inicio, que me puedas proporcionar ?

Gracias.


----------

