Autor Tema: Centrado de servos  (Leído 1739 veces)

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

Desconectado Miquel_S

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1251
Centrado de servos
« en: 27 de Abril de 2009, 17:56:31 »
Hola a todos dos preguntitas:
1º ¿Se pueden centrar todos los servos a la vez ?
2º Lo estoy simulando en proteus y por el pin RA4 no tengo señal ¿tiene algo de especial la configuracion de dicho pin?


#include <16F873A.h>
#device *=16                                   //pic a utilizar
#fuses HS,NOWDT,NOPROTECT,NOPUT,BROWNOUT      //ordenes para el programador
#use delay (clock=20000000)                  //Fosc=20Mhz
#use standard_io(A)                         //Puerto A como salida

 ///PROGRAMA
       
   void Centra_1(int Repeticiones)
{
   int Bucle;
   for(Bucle=0;Bucle<=Repeticiones;++Bucle)
   {
   output_high(pin_A0);
   delay_us(1500);
   output_low(pin_A0);
   delay_ms(20);
   }
}
   void Centra_2(int Repeticiones)
{
   int Bucle;
   for(Bucle=0;Bucle<=Repeticiones;++Bucle)
   {
   output_high(pin_A1);
   delay_us(1500);
   output_low(pin_A1);
   delay_ms(20);
   }
}
   void Centra_3(int Repeticiones)
{
   int Bucle;
   for(Bucle=0;Bucle<=Repeticiones;++Bucle)
   {
   output_high(pin_A2);
   delay_us(1500);
   output_low(pin_A2);
   delay_ms(20);
   }
}   
   void Centra_4(int Repeticiones)
{
   int Bucle;
   for(Bucle=0;Bucle<=Repeticiones;++Bucle)
   {
   output_high(pin_A3);
   delay_us(1500);
   output_low(pin_A3);
   delay_ms(20);
   }
}
   void Centra_5(int Repeticiones)
{
   int Bucle;
   for(Bucle=0;Bucle<=Repeticiones;++Bucle)
   {
   output_high(pin_A4);
   delay_us(1500);
   output_low(pin_A4);
   delay_ms(20);
   }
}
    void Centra_6(int Repeticiones)
{
   int Bucle;
   for(Bucle=0;Bucle<=Repeticiones;++Bucle)
   {
   output_high(pin_A5);
   delay_us(1500);
   output_low(pin_A5);
   delay_ms(20);
   }
}
   void main()
{
 
   output_a(0x00);
   set_tris_a(0x85);
   
   Centra_1(25);     //Llamamos a la funcion y generamos 25 pulsos.
   Centra_2(25);     //Llamamos a la funcion y generamos 25 pulsos.
   Centra_3(25);     //Llamamos a la funcion y generamos 25 pulsos.
   Centra_4(25);     //Llamamos a la funcion y generamos 25 pulsos.
   Centra_5(25);     //Llamamos a la funcion y generamos 25 pulsos.
   Centra_6(25);     //Llamamos a la funcion y generamos 25 pulsos.
 
   while(1);         //Bucle infinito.
}   

Gracias.
Todos somos muy ignorantes. Lo que ocurre es que no todos ignoramos las mismas cosas.

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Centrado de servos
« Respuesta #1 en: 27 de Abril de 2009, 18:24:46 »
Citar
2º Lo estoy simulando en proteus y por el pin RA4 no tengo señal ¿tiene algo de especial la configuracion de dicho pin?

RA4/TOCKI cuando es salida se comporta como colecto abierto, por lo tanto debes poner una resistencia Pull-up a Vdd. Cuando se configura como entrada, funciona como disparador Schmitt Trigger por lo que puede reconocer señales con un poco de distorsión.

Agrega ademas al main la configuración del conversor analógico, ósea todos los pines como entradas/salidas digitales.

Código: C
  1. setup_adc_ports(NO_ANALOGS);
  2. setup_adc(ADC_OFF);


Y servos no he manejado, así que no puedo ayudarte...
« Última modificación: 28 de Abril de 2009, 11:09:39 por Suky »
No contesto mensajes privados, las consultas en el foro

Desconectado Miquel_S

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1251
Re: Centrado de servos
« Respuesta #2 en: 28 de Abril de 2009, 04:40:35 »
Muchas gracias de nuevo Suky, lo del pin A4 me habia pasado por alto, tienes razon cuando es salida se comporta como colector abierto, para lo de los servos esperare un poco a ver si tengo respuesta.  :mrgreen:
Todos somos muy ignorantes. Lo que ocurre es que no todos ignoramos las mismas cosas.

Desconectado pocher

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 2568
Re: Centrado de servos
« Respuesta #3 en: 29 de Abril de 2009, 05:29:16 »
A ver si me acuerdo, si meto la pata avisar.

- No hace falta definir las entradas como digitales, el CCS por omisión ya las toma como digitales.

- Respecto a si se pueden centrar todos los servos a la vez, ya lo has hecho, ¿no?, lo único que hay que mantener el pwm encerrandolo en un while.

Un saludo