Haz una pregunta
  Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos
Foros Registrarse ¿Olvidaste tu contraseña?

Temas similares

28/05/2016 #1


Problema con servomotor SG90 Tower Pro (Típico servomotor)
Buenas a todos.

Como el título lo viene enunciando, tengo problemas con el control del servomotor SG90 de marca Tower Pro.
Estoy usando el microcontrolador PIC16F777, utilizo el módulo CCP1 y el reloj interno a 125KHz para alcanzar la frecuencia de 50 Hz que requiere el servomotor.

Estoy probando algo básico, mover el servo de 0º (1ms) a 180º (2ms) variando el ciclo activo de 31 (0º) a 62(180º)

Y la programación quedó así:
Código PHP:
#include <16F777.h>
#device ADC=10

#FUSES NOWDT                    //No Watch Dog Timer
#FUSES INTRC_IO                 //Internal RC Osc, no CLKOUT
#FUSES NOPUT                    //No Power Up Timer
#FUSES NOPROTECT                //Code not protected from reading
#FUSES NOBROWNOUT               //No brownout reset
#FUSES BORV45                   //Brownout reset at 4.5V
#FUSES NOMCLR                   //Master Clear pin used for I/O
#FUSES NODEBUG                  //No Debug mode for ICD
#FUSES NOFCMEN                  //Fail-safe clock monitor disabled
#FUSES NOIESO                   //Internal External Switch Over mode disabled
#FUSES NOBORSEN                 //See Datasheet

#use delay(internal=31000)

void main() 
{
   
setup_timer_1(T1_INTERNAL|T1_DIV_BY_1);      //8,4 s overflow
   
setup_timer_2(T2_DIV_BY_1,154,1);      //20,0 ms overflow, 20,0 ms interrupt

   
setup_ccp1(CCP_PWM);
   

   while(
TRUE)
   {
   
set_pwm1_duty((int16)62);
   
delay_ms(3000); 
   
set_pwm1_duty((int16)31);
   
delay_ms(3000); 
   }



El problema es que el servo no se mueve, o sólo se mueve hacia un lado lentamente hasta llegar al tope.
Y en proteus lo simulé con otro PIC, asegurándome de cambiar la programación y si genera pulso.

Gracias.
29/05/2016 #2


auto respuesta !!

logre que funcionara pero hice 2 modificaciones:

1º elimine el fuses #FUSES NOBORSEN ( me lo tiraba el pic c compiler cuando creaba el proyecto)
2º modifique los valores que se le cargaban al ccpx. Para controlar el servo entre 0º y 180º los valores son los siguientes: 0º=20;180º=80.

SALUDOS!!!!!!!!!!!!!!
08/06/2016 #3

Avatar de Alcocer Garcia Felix Davi

y como hacen por ejemplo que de un angulo a otro tarde el tiempo que yo desee en moverse?
08/06/2016 #4
Moderador general

Avatar de Fogonazo

Alcocer Garcia Felix Davi dijo: Ver Mensaje
y como hacen por ejemplo que de un angulo a otro tarde el tiempo que yo desee en moverse?
Varías el ancho de pulso en secuencia de pasos, la cantidad de pasos y el tiempo de activación de cada uno determina el tiempo que tardará el dispositivo en desplazarse de un punto a otro.
Respuesta
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos? Registrate

Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO ©2011, Crawlability, Inc.