Autor Tema: Problemas con servo Sg90  (Leído 1947 veces)

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

Desconectado Smd14

  • PIC10
  • *
  • Mensajes: 1
Problemas con servo Sg90
« en: 14 de Octubre de 2013, 01:36:05 »
Buen dia, tengo un problema con un micro servo sg90. Pasa que el programa que hice hace que el servo se mueva a 2 pocisiones con 1 pulsador, al mover el servo en la posicion 2 (MoveServos2) lo hace de manera correcta, pero al volver a pulsar (MoveServos1) este empieza a vibrar y a hacer ruidos, aunque aveces si logra ubicarse a donde lo manda el pulso, pero mayormente solo hace un pequeño ruido y se mueve apenas unos grados. No se si es problema de el programa o algo en el hardware, soy nuevo en programacion de microcontroladores. Aqui les dejo el codigo, gracias por su tiempo.

#include <16f84a.h>
#use delay (clock=4M)
                                             
#fuses XT
#fuses NOWDT
#fuses NOPROTECT
#fuses NOPUT                                                               

#define SERVO PIN_A1

#byte PORTA = 0x05
#byte PORTB = 0x06        // Asignamos PortB.
#byte PORTA_TRIS = 0x85
#byte PORTB_TRIS = 0x86        // Asignamos TrisB.

int band1=0;

void MoveServos1 ();
void MoveServos2 ();

void main(){
PORTA_TRIS= 0b00001;
PORTB_TRIS = 0b00000000;  // Puerto B como salidas, para servos y leds.
portb=0;   // Inicialmente ponemos a cero el puerto B.

while(1){
 if(input(PIN_A0)==1 && band1 == 0){
    delay_ms(185);
    MoveServos2();
       band1 = 1;
 }
   
 if(input(PIN_A0)==1 && band1 == 1 ){
      delay_ms(185);
     
      MoveServos1();
      band1=0;
 }
 
 }
}   
 
void MoveServos1 ()
{
   int i=0;
   
   
   //PARA GENERAR EL PULSO PWM
      for (i = 0; i < 50; i++)
      {
      output_high (SERVO);
      delay_us (700);
      output_low (SERVO);
      delay_us (19278);
      }
}

void MoveServos2 (){
   
   int i=0;
   //PARA GENERAR EL PULSO PWM
      for (i = 0; i < 50; i++)
      {
      output_high (SERVO);
      delay_us (2500);
      output_low (SERVO);
      delay_us (17478);
     
      }
   }

Desconectado QIQE

  • PIC18
  • ****
  • Mensajes: 335
Re: Problemas con servo Sg90
« Respuesta #1 en: 14 de Octubre de 2013, 02:01:26 »
Creo que el problema está en que solo generas un pulso pwm, en el momento que pulsas después tu salida está a cero deberías ejecutar continuamente una de las dos funciones de pwm, y sería recomendable usar el timer para generar el pwm.
Saludos
Muchas gracias por vuestro tiempo.

Saludos desde valencia!!!