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

Temas similares

03/10/2013 #1


Problema con servo towerpro sg90
Buenas noches , estoy haciendo un proyecto con un pic16f84A para controlar un servo towerpro sg90 , pero lo logro hacer el que el servo se mueva y no_sé donde esta el problema, ya que lo simulo con proteus y funciona perfectamente.... si alguien puede hecharme una mano me sería de gran ayuda... El programa en BASIC es el siguiente:

Código:
define osc 4 
m var byte
servo var portb.0
portb.0=0
control
if porta.1 =1 then arranque
pulsout servo,150
pause 10
goto control
arranque:
for m=150 to 250 step 1
pulsout servo,m
pause 10
next m
pause 500
for m=250 to 150 step -1
pulsout servo,m
pause 10
next m
pause 500
for m=150 to 70 step -1
pulsout servo,m
pause 10
next m
pause 500
for m=70 to 150 step 1
pulsout servo,m
pause 10
next m
pause 300
goto control
03/10/2013 #2

Avatar de Dario

Aca te dejo un pequeño ejemplo en pbp para un pic16f628A, mueve un servo en sus dos sentidos por el puerto b0. saludosss

Código:
 'configuracion de fuses
@ DEVICE MCLR_OFF, INTRC_OSC, WDT_OFF, LVP_OFF, BOD_OFF, PWRT_ON, PROTECT_OFF
define osc 4 
CMCON = 7                     ' desactivo el convertidor AD del puerto A
TrisA=%11111111               'todo el port A como entrada
TrisB=%00000000               'todo el port B como salida
PORTA = %11111100             'todo el port A en 1
PORTB = %00000000             'todo el port B en 0

b0 var byte

inicio:
for b0 = 50 to 250 step 1
pulsout portb.0, b0
pause 20
next
for b0 = 250 to 50 step -1
pulsout portb.0, b0
pause 20
next
goto inicio
04/10/2013 #3


D@rio dijo: Ver Mensaje
Aca te dejo un pequeño ejemplo en pbp para un pic16f628A, mueve un servo en sus dos sentidos por el puerto b0. saludosss

Código:
 'configuracion de fuses
@ DEVICE MCLR_OFF, INTRC_OSC, WDT_OFF, LVP_OFF, BOD_OFF, PWRT_ON, PROTECT_OFF
define osc 4 
CMCON = 7                     ' desactivo el convertidor AD del puerto A
TrisA=%11111111               'todo el port A como entrada
TrisB=%00000000               'todo el port B como salida
PORTA = %11111100             'todo el port A en 1
PORTB = %00000000             'todo el port B en 0

b0 var byte

inicio:
for b0 = 50 to 250 step 1
pulsout portb.0, b0
pause 20
next
for b0 = 250 to 50 step -1
pulsout portb.0, b0
pause 20
next
goto inicio

Acabo de probar tu codigo amigo, en proteus funciona perfectamente, pero en la Protoboard no mueve el servo.... he utilizado hasta el mismo pic, el f628A..... he probado con dos servos towerpro sg90 nuevos, y ninguno se mueve.. puede que utilizen anchos de impulsos diferentes?? esque no hace absolutamente nada... le he puesto para que encienda un led al final del programa para ver si se ejecuta, y se enciende.. lo que no entiendo es porque no se mueve el servo....
04/10/2013 #4
Moderador general

Avatar de Fogonazo

davich88 dijo: Ver Mensaje
Acabo de probar tu codigo amigo, en proteus funciona perfectamente, pero en la Protoboard no mueve el servo........
¿ Y pensaste en la posibilidad de haber armado algo mal en la Protoboard ?
04/10/2013 #5


Fogonazo dijo: Ver Mensaje
¿ Y pensaste en la posibilidad de haber armado algo mal en la Protoboard ?
Si, lo he mirado,fue lo primero que hice y repasado mil veces, el montaje es correcto.... el servo lo único que hace es calentarse, pero no se mueve....
04/10/2013 #6

Avatar de Dario

davich88 dijo: Ver Mensaje
Si, lo he mirado,fue lo primero que hice y repasado mil veces, el montaje es correcto.... el servo lo único que hace es calentarse, pero no se mueve....
amigo mio: el programa que te he mostrado funciona correctamente, tanto en el mundo virtual, como en el mundo real, al menos tal cual esta. veo que tu programa es un poco mas complejo, asi que si estas intentando fusionarlo ahi, es probable que sea por eso que no te funciona. talvez estes cometiendo algun error de programacion. este pequeño programa, es parte de un proyecto de hexapodo en el que estoy trabajando, esta probado y funciona correctamente. mas tarde te subo un video si queres, para demostrartelo. saludosss
05/10/2013 #7


D@rio dijo: Ver Mensaje
amigo mio: el programa que te he mostrado funciona correctamente, tanto en el mundo virtual, como en el mundo real, al menos tal cual esta. veo que tu programa es un poco mas complejo, asi que si estas intentando fusionarlo ahi, es probable que sea por eso que no te funciona. talvez estes cometiendo algun error de programacion. este pequeño programa, es parte de un proyecto de hexapodo en el que estoy trabajando, esta probado y funciona correctamente. mas tarde te subo un video si queres, para demostrartelo. saludosss
Ya he resuelto el problema, no estaba en protoboard, ni en el programa, curiosamente los 2 servos nuevos tower pro sg90 venían averiados..... he probado con un futaba 3003 y funciona perfectamente... demasiado quebradero de cabeza estaba dando algo tan simple...
05/10/2013 #8

Avatar de Dario

estaba a punto de sugerirte eso... casualmente yo compre 3 servos towerpro y de los 3, uno me vino averiado... en fin, eso demuestra que a veces, lo barato sale caro jeje saludos y exitos con tu proyecto
16/07/2014 #9

Avatar de Nano24

A mi me pasaba igual y lo probé con un Arduino para ver si era algún desperfecto del servomotor y la verdad funciono bien, para mi que es algún problema del PBP con respecto al pwm que genera para ese tipo de servos.
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.