Autor Tema: Servo + PicBasicPro  (Leído 2874 veces)

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

Desconectado Thompson

  • PIC10
  • *
  • Mensajes: 4
Servo + PicBasicPro
« en: 12 de Febrero de 2009, 16:05:52 »
Buenas, estoy intentando hacer funcionar un servo Hextronik HXT900 con una rutina bastante simple que hice en el Pic Simulator IDE.
Tengo entendido que los servos funcionan con un tren de pulsos entre 1ms y 2ms y con un periodo total de 20ms.  Mi programa arranca con un salida de 1ms y mediante interrupciones va aumentando este tiempo en 100us, pero no hay caso... el servo se mueve en cualquier dirección!!!...
Alguien tiene alguna sugerencia?, estare perdiendo algo de vista? desde ya 1000 gracias!!!
Saludos.

'------------------------------------------------------------------------------------------
ANSEL = 0x00  'los pin I/O digitales (no analogicos)
OSCCON = 0x7e  'set intrc To 8mhz, se usara reloj interno a 8Mhz
CMCON = 0x07  'comparador a off

TRISA = %00000000
TRISB = %11111111

Dim x As Word
x = 1000
Dim aux As Word

INTCON.INTE = 1
Enable

loop:
   PORTA.0 = 1
   WaitUs x
   PORTA.0 = 0
   WaitMs 18
   aux = 2000 - x
   WaitUs aux
Goto loop

End                                               

On Interrupt
   x = x + 100
   INTCON.INTF = 0
Resume       

'------------------------------------------------------------------------------------------

Desconectado septiembre_negro

  • PIC18
  • ****
  • Mensajes: 310
Re: Servo + PicBasicPro
« Respuesta #1 en: 12 de Febrero de 2009, 16:37:04 »
Por que no pruebas con el compilador proton cuenta con una instrucción o librería para manejo de servos y  va bien.

Desconectado dogflu66

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 3510
Re: Servo + PicBasicPro
« Respuesta #2 en: 12 de Febrero de 2009, 22:47:08 »
Me despisto el nombre del hilo, ya que este Basic que usas no es PicBasicPro.

Te dejo un ejemplo de tu programa modificado
Mueve el servo de izquierda a derecha en un bucle infinito.

Código: QBasic/QuickBASIC
  1. 'PIC16F88
  2. 'Probado en la placa Pic EBasic con un servo Futaba
  3. Define CONF_WORD = 0x2f10 'Configuracion de fuses
  4. Define CONF_WORD_2 = 0x3ffc 'Configuracion de fuses
  5. Define CLOCK_FREQUENCY = 8
  6. '------------------------------------------------------------------------------------------
  7. ANSEL = 0x00  'los pin I/O digitales (no analógicos)
  8. OSCCON = 0x7e  'set intrc To 8mhz, se usara reloj interno a 8Mhz
  9. CMCON = 0x07  'comparador a off
  10.  
  11. TRISA = %00000000
  12. TRISB = %11101111
  13.  
  14. DIM x AS Word
  15. DIM aux AS Word
  16. DIM flag AS Byte
  17.  
  18. x = 1000  'Posición de inicio del servo
  19. aux = 20000 - x  'Calcula lo que resta hasta llegar al periodo de la señal
  20. flag = 1  'Dirección de inicio
  21.  
  22. INTCON.INTE = 1
  23. Enable
  24.  
  25. LOOP:
  26.         PORTB.4 = 1  'Señal control a On
  27.         WaitUs x  'Tiempo activo señal de control servo
  28.         PORTB.4 = 0  'Señal control a Off
  29.         WaitUs aux  'Tiempo a cero señal de control servo
  30.         IF x > 2000 THEN flag = 0  'Establece limite izquierda
  31.         IF x < 1000 THEN flag = 1  'Establece limite derecha
  32.         IF flag = 1 THEN x = x + 1  'Giro a la izquierda
  33.         IF flag = 0 THEN x = x - 1  'Giro a la derecha
  34.         aux = 20000 - x  'Calcula lo que resta hasta llegar a los 20mSeg
  35. GOTO LOOP
  36. END                                              
  37. ON Interrupt
  38.         x = x + 100
  39.         INTCON.INTF = 0
  40. RESUME                                            
  41.  
  42. '------------------------------------------------------------------------------------------

PD:
La interrupciones no se ejecutan nunca porque no hay evento que las llame.
Y aunque el compilador no da error INTCON.INTF no existe.
Saludos desde Granada, España.

Desconectado dogflu66

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 3510
Re: Servo + PicBasicPro
« Respuesta #3 en: 12 de Febrero de 2009, 23:16:13 »
Otro PD:

Al final de este enlace tienes muchas formas de controlar un servo, incluso utilizando iterrupciones, funciones y etc.

http://www.todopic.com.ar/foros/index.php?topic=14917.0
Saludos desde Granada, España.

Desconectado Thompson

  • PIC10
  • *
  • Mensajes: 4
Re: Servo + PicBasicPro
« Respuesta #4 en: 13 de Febrero de 2009, 23:49:37 »
Que buena data dogflu!!! mil gracias!


 

anything