Autor Tema: velocidad de servo con pic  (Leído 3350 veces)

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

Desconectado sejotre

  • PIC10
  • *
  • Mensajes: 40
velocidad de servo con pic
« en: 07 de Marzo de 2013, 23:36:54 »
hola a todos!!
estoy haciendo un programita tratando de controlar la velocidad de un servo con 4 pulsadores (que cada uno determine cierta velocidad )
y que de solo 400 grados(esto lo vere mas adelante)
despues de haber leido bastante en el foro no encuentro cual es el problema que tengo me pueden ayudar?
lo intente con el 12f675 y no logre nada me pase al 16f627a y tampoco
aca les dejo el programa para que me lo revisen si pueden

@ DEVICE INTRC_OSC_NOCLKOUT,PROTECT_OFF,WDT_OFF,PWRT_ON,MCLR_ON,BOD_OFF,LVP_OFF,CPD_OFF

servo1 var portb.7

trisb = %00001111
pause 500
bot1 var portb.0
bot2 var portb.1
bot3 var portb.2
bot4 var portb.3

start:
if bot1 = 0 then
    PulsOut servo1, 180   
    pause 100
if bot2 = 0 then
    PulsOut servo1, 170
    pause 200
if bot3 = 0 then
    PulsOut servo1, 160
    pause 300       
if bot1 = 0 then
    PulsOut servo1, 130
    pause 400
    else
goto start

endif
endif
endif
endif
end

gracias

Desconectado dogflu66

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 3510
Re: velocidad de servo con pic
« Respuesta #1 en: 10 de Marzo de 2013, 15:57:06 »
Hola; tienes que especificar un poco más, hay que indicar si el compilador te da algún tipo de error o simplemente compila bien pero no hace lo que quieres.

Yo no utilizo la misma versión de basic, pero por lo pronto esa estructura aplicada a mi compilador daría errores, te cambio la estructura del código:


@ device intrc_osc_noclkout, protect_off, wdt_off, pwrt_on, mclr_on, bod_off, lvp_off, cpd_off

servo1 var PORTB.7

TRISB = %00001111
pause 500
bot1 var PORTB.0
bot2 var PORTB.1
bot3 var PORTB.2
bot4 var PORTB.3

start:
   If bot1 = 0 Then
      pulsout servo1, 180
      pause 100
   Endif

   If bot2 = 0 Then
      pulsout servo1, 170
      pause 200
   Endif

   If bot3 = 0 Then
      pulsout servo1, 160
      pause 300
   Endif

   If bot1 = 0 Then
      pulsout servo1, 130
      pause 400
   Endif

Goto start
End
Saludos desde Granada, España.

Desconectado sejotre

  • PIC10
  • *
  • Mensajes: 40
Re: velocidad de servo con pic
« Respuesta #2 en: 10 de Marzo de 2013, 16:20:21 »
uso microcode y no me marca ningun error
y grabo el pic con "pickit2" y parece estar todo bien
cuando lo monto en el proto no pasa mada ,de todos modos voy a probar la modificacion y te cuento gracias!!

Desconectado dogflu66

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 3510
Re: velocidad de servo con pic
« Respuesta #3 en: 10 de Marzo de 2013, 16:36:00 »
Ok, este otro código puede que te ayude a comprender mejor el control del servo:

TRISB = %00001111
WaitMs 500
Symbol servo1 = PORTB.7
Symbol bot1 = PORTB.0
Symbol bot2 = PORTB.1
Symbol bot3 = PORTB.2
Symbol bot4 = PORTB.3

Dim ns As Byte  'Nueva posición del servo
Dim ps As Byte  'Posición del servo
Dim vs As Byte  'Velocidad del servo

ns = 90  'Posición de inicio
ps = 90  'Posicion de inicio
vs = 1  'Velocidad de inicio

start:
   If bot1 = 0 Then
      ns = 180
      vs = 1
   Endif

   If bot2 = 0 Then
      ns = 170
      vs = 20
   Endif

   If bot3 = 0 Then
      ns = 160
      vs = 50
   Endif

   If bot1 = 0 Then
      ns = 130
      vs = 100
   Endif

   
   If ps < ns And ps < 255 Then ps = ps + 1  'Servo hacia un lado
   If ps > ns And ps > 1 Then ps = ps - 1  'Servo hacia el otro lado
   WaitMs vs  'Establece la velocidad del servo.
   
   ServoOut servo1, ps  'Posiciona el servo

Goto start
End
Saludos desde Granada, España.

Desconectado sejotre

  • PIC10
  • *
  • Mensajes: 40
Re: velocidad de servo con pic
« Respuesta #4 en: 10 de Marzo de 2013, 21:50:52 »
muchas gracias por darme una mano probe del primer modo que me dijiste y nada...
probe escribirlo de otra manera y anduvo!!
tengo un servo "towardpro mg996r" y no tengo ni idea de los pulso que necesita
aca te muestro del modo en que anda las dos primeras velocidades ( las mas rapidas) son pracicamente iguales aunque quisiera que vaya mas rapido parece que no le da.
muchas gracias por darme una mano!!

@ DEVICE INTRC_OSC_NOCLKOUT,PROTECT_OFF,WDT_OFF,PWRT_ON,MCLR_ON,BOD_OFF,LVP_OFF,CPD_OFF

servo1 var portb.7

trisb = %00001111
pause 500
bot1 var portb.0
bot2 var portb.1
bot3 var portb.2
bot4 var portb.3

start:
if bot1 = 0 then velo1
if bot2 = 0 then velo2
if bot3 = 0 then velo3     
if bot4 = 0 then velo4
goto start
velo1:
PulsOut servo1, 180  ' 250 ' 200 pruebas que hice y no cambio la velocidad
    goto start
velo2:
 PulsOut servo1, 162
    pause 10          'variar la pausa no ayudo mucho
    goto start
velo3:
 PulsOut servo1, 142
    pause 10
    goto start   
velo4:
    PulsOut servo1, 132
    pause 10
    goto start

end

ahora que anda voy a ver si lo paso  al 12f675 ya que me sobran pines por todos lados  jajajajajaj

Desconectado dogflu66

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 3510
Re: velocidad de servo con pic
« Respuesta #5 en: 11 de Marzo de 2013, 11:10:54 »
Es normal, porque así no se puede controlar la velocidad del servo. La forma del segundo ejemplo no es la mejor pero es mucho más eficaz.
Saludos desde Granada, España.

Desconectado sejotre

  • PIC10
  • *
  • Mensajes: 40
Re: velocidad de servo con pic
« Respuesta #6 en: 12 de Marzo de 2013, 17:55:40 »
hola dogflu66 cuando decis que no es la mejor pero la mas eficaz porque lo decis? cual es la mas eficaz?
el servo que tengo esta trucado (reemplace el pot por 2 resistencias)
ahora lo estoy tratando de poner en un 12f675 sumando un pulsador y ando con problemas creo que es la configuracion de bits (yo solo jugue con el 16f627/28 hasta ahora) me podrias decir si voy bien ?


symbol servo1 = GPIO.0
symbol bot1 = gpio.1
symbol bot2 = gpio.2
symbol bot3 = gpio.4
symbol bot4 = gpio.5
 



TRISIO = %111110  '
CMCON = 7  'comparator of
ansel = 0

start:
if ( bot1 = 0 ) and ( bot2 = 0 )then velo2
if ( bot1 = 0 ) and ( bot3 = 0 )then velo3
if ( bot1 = 0 ) and ( bot4 = 0 )then velo4   
goto start
velo2:
 PulsOut servo1, 162
    pause 10          'variar la pausa no ayudo mucho
    goto start
velo3:
 PulsOut servo1, 142
    pause 10
    goto start   
velo4:
    PulsOut servo1, 132
    pause 10
    goto start

end

muchas gracias



Desconectado dogflu66

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 3510
Re: velocidad de servo con pic
« Respuesta #7 en: 12 de Marzo de 2013, 18:09:33 »
No he trabajado con servos trucados, así que olvídate de todo lo que te he dicho.
Saludos desde Granada, España.

Desconectado sejotre

  • PIC10
  • *
  • Mensajes: 40
Re: velocidad de servo con pic
« Respuesta #8 en: 12 de Marzo de 2013, 19:38:46 »
es lo mismo segun tengo entendido uso dos resistencias y simulando que el potenciometro esta siempre en el medio de esa forma gira 360·
lo que me dijiste fue muy util para mi gracias.
la manera de configurar los bits de 12f675 es la correcta?