Autor Tema: CONROLAR UN SERVO CON UN 16F877 Y PBP  (Leído 9437 veces)

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

Desconectado otomas

  • PIC10
  • *
  • Mensajes: 4
CONROLAR UN SERVO CON UN 16F877 Y PBP
« en: 16 de Noviembre de 2008, 01:51:35 »
buenas a tod@s.
a ver por donde empiezo para no liarme mucho ;)
trabajo desde los principios de los 90 con VB (todas las versiones ) y hasta la fecha no se me ha planteado nada que no pueda hacer con vb (y con ayuda de c y asm );)
en fin, llevo un mes con los pics (hace años trabaje con los ATMEGA103)
me he comprado un icd-2 + picdem2 plus +16f877,18f452
se que va a sonar a que ya se ha formulado la pregunta, pero os aseguro que he leido y releino y no hay nada que me ayude con mi problema
el caso es que :
trabajo con del mplab y el pbp 2.46, he hecho mis pinitos con los leds, el lcd, la salida serie, he activado mediante un 5n35 96 leds, vamos que le estoy metiendo caña
ahora me quiero meter con el control de servos y aqui esta el problema
el servo que tengo es un sanwa 1301 ( he visto que el cyclo de señal es de 22ms)
pero con los ejemplos que he probado no hay manera de mover el servo racionalmente, es decir que se mueve como quiere
lo unico que he conseguido es un boucle de ida y vuelta
inicio:
For b2 = 50 to 250' ‘Send center signal 50 times             ' valores max y min del movimiento
     pulsout portb.1, b2
     while porta.4=1                                                      ' pulsado conectado a port A entrada 4 (en el picdem 2 plus) para mover el servo solo si pulsado
      pause 1
     wend
    pause 22 '‘wait 20 msec
next
goto inicio

si le mando varios pulseout con b2 distinto,  solo se mueve en un sentido .....
alguna idea???
otra cosa, he leido que lo suyo es usar el hpwm, pero no acabo de pillarlo ( he leido bastante)
gracias por la ayuda ;)
saludicos desde huelva

Desconectado RALF2

  • Moderador Local
  • PIC24H
  • *****
  • Mensajes: 2062
Re: CONROLAR UN SERVO CON UN 16F877 Y PBP
« Respuesta #1 en: 16 de Noviembre de 2008, 12:31:37 »
Que tal otomas!
Mira se me ocurre que puedes generar una interrupcion, por ejemplo con el tmr0, cada 22ms para actualizar los pulsos al servomotor y asi mantenerlo en posicion, dentro de esa interrupcion ademas debe haber una variable llamemosla, var1, la cual dependa de un valor que se encuentra en el programa principal, fuera de la interrupcion  :mrgreen:
Esa variable var1 luego desde el programa principal la puedes incrementar o decrementar y asi puedes controlar el giro del servo motor.

No se si me captas la idea pero esa podria ser una forma  :mrgreen:

Saludos


 

Desconectado otomas

  • PIC10
  • *
  • Mensajes: 4
Re: CONROLAR UN SERVO CON UN 16F877 Y PBP
« Respuesta #2 en: 16 de Noviembre de 2008, 16:42:21 »
Gracias por la respuesta,y estoy deacuerdo contigo en usar interupcion para liberar el soft y asi sea el hard del pic el que haga el curro pero para lo que necesito no es lo mas conveniente
yo habia pensado usar el hpwm pero sera que ya soy viejo   :D y no acabo de entender como se configura el uso del hpwm (vamos como se configura)


Desconectado navaismo

  • Jubilado Todopic
  • PIC24H
  • ****
  • Mensajes: 1973
Re: CONROLAR UN SERVO CON UN 16F877 Y PBP
« Respuesta #3 en: 16 de Noviembre de 2008, 22:54:30 »
Checa la ayuda y la hoja del pic para que veas como se configura un HPWM, un compañero lo usa para mover hacer un radar con su servo en este link
"Mi tercer deseo, que otra cosa podría ser, poner un final a todo el sufrimiento, que sólo con mi propia extinción el planeta podrá ser aliviado. Pobre de mí, Si tuviera tres deseos hoy, la elección no sería dificil para mí, Sólo tres deseos serían suficientes, No tendría uso para más."

"He sido un hombre que busca y aun lo sigo siendo, pero ya no busco en las estrellas y en los libros, sino en las enseñanzas de mi sangre."

Desconectado RALF2

  • Moderador Local
  • PIC24H
  • *****
  • Mensajes: 2062
Re: CONROLAR UN SERVO CON UN 16F877 Y PBP
« Respuesta #4 en: 16 de Noviembre de 2008, 23:20:27 »
Que tal amigos!
Otomas tal como te dice navaismo puedes utilizar el hpwm, pero en el ejemplo que el te da en el link y cuyo autor explica que la menor frecuencia a utilizar es de 145hz por el hpwm @4Mhz no estoy seguro que con los 50hz que el coloca realmente funcione a esa frecuencia(50hz) debo probarlo mañana para ver si es asi, ya que, el manual dice que la frecuencia es 145hz minima para el hpwm  :shock:

Pero te puede servir como guia.
Yo utilice el pwm del hardware del pic para controlar unos led rgb, para ello configure los registros del pic si quieres puedes verlo aqui

Esta hecho en proton pero facilmente configurable en el pbp, dejame ver si en la semana te puedo hacer un ejemplo  :mrgreen:

Saludos

Desconectado navaismo

  • Jubilado Todopic
  • PIC24H
  • ****
  • Mensajes: 1973
Re: CONROLAR UN SERVO CON UN 16F877 Y PBP
« Respuesta #5 en: 16 de Noviembre de 2008, 23:27:45 »
Tal como comentas RALF, Lestat sabe de eso, precisamente de las frecuencias minimas, pero como podras ver en el video funciona, es algo que no le preste mayor importancia pero la idea era que revisara un ejemplo para pasarlo al suyo.

Saludos
"Mi tercer deseo, que otra cosa podría ser, poner un final a todo el sufrimiento, que sólo con mi propia extinción el planeta podrá ser aliviado. Pobre de mí, Si tuviera tres deseos hoy, la elección no sería dificil para mí, Sólo tres deseos serían suficientes, No tendría uso para más."

"He sido un hombre que busca y aun lo sigo siendo, pero ya no busco en las estrellas y en los libros, sino en las enseñanzas de mi sangre."

Desconectado RALF2

  • Moderador Local
  • PIC24H
  • *****
  • Mensajes: 2062
Re: CONROLAR UN SERVO CON UN 16F877 Y PBP
« Respuesta #6 en: 16 de Noviembre de 2008, 23:38:13 »
Eso es correcto navaismo!
La curiosidad que me dio es que el le coloco al hpwm 50hz y en el manual dice que la frecuencia minima para 4Mhz es de 145hz, no quiere decir por ello que no funcione  :mrgreen:

Lo que sucede es que me gustaria saber si efectivamente la frecuencia del hpwm que el programo esta corriendo a 50hz o a 145Hz, porque aunque le halla compilado el programa no quiere decir que por eso este yendo necesariamente a esa frecuencia (50hz).

Es mas bien una cuestion mia y por eso pienso montar el circuito primariamente en el proteus y ver si corre a 50 o a 145Hz  el hpwm :mrgreen:

De todas formas en caso de que corra a 145hz, seria cosa sencilla programar el pic para que corra a 50hz utilizando los modulos ccp del pic como lo hice en el link que pase   :mrgreen:

Y si corre a 50hz entonces le escribire un correito al creador del proton para que actualice la informacion del manual  :mrgreen:

Saludos

Desconectado navaismo

  • Jubilado Todopic
  • PIC24H
  • ****
  • Mensajes: 1973
Re: CONROLAR UN SERVO CON UN 16F877 Y PBP
« Respuesta #7 en: 17 de Noviembre de 2008, 17:38:02 »
Aaah Ya te entendi, si tienes razon en eso.
"Mi tercer deseo, que otra cosa podría ser, poner un final a todo el sufrimiento, que sólo con mi propia extinción el planeta podrá ser aliviado. Pobre de mí, Si tuviera tres deseos hoy, la elección no sería dificil para mí, Sólo tres deseos serían suficientes, No tendría uso para más."

"He sido un hombre que busca y aun lo sigo siendo, pero ya no busco en las estrellas y en los libros, sino en las enseñanzas de mi sangre."

Desconectado otomas

  • PIC10
  • *
  • Mensajes: 4
Re: CONROLAR UN SERVO CON UN 16F877 Y PBP
« Respuesta #8 en: 18 de Noviembre de 2008, 07:55:56 »
bueno ya consegui que funcionara con el pulseout  y ademas poniendo un potenciometro para posicionar el servo, va bastante bien. ahora he probado y mirado lo del hwpm pero nada de nada no funciona
sera que estoy usando el mplab 8.10 + pbp 246 ??? porque lo que si que he visto es que el picbasic no es el mismo para el ide que se usa. he apreciado muchisimas variaciones entre los diferentes ide (entornos de derarrollo vease el proton,mikrobasic,picsimulator,etc...)
aqui os pongo el codigo para que me critiqueis  :mrgreen:

'**************************************************************
' IDE          : mplab 8.10
' compilador    : pbp 2.46
' debuger       : ICD 2 por USB
' entrenador    : PICDEM 2 PLUS
'**************************************************************

' definiciones y configuracion del LCD
' en el picdem 2 plus el lcd esta en el port b

clear            
Define osc 4      
Define LCD_DREG PORTD
Define LCD_BITS 4    
Define LCD_DBIT 0   
Define LCD_RSREG PORTD
Define LCD_RSBIT 4    
Define LCD_EREG PORTD
Define LCD_EBIT 6    
Define LCD_RWREG PORTD
Define LCD_RWBIT 5
Low PORTD.2    
Define lcd_lines 2
Define LCD_COMMANDUS 4000
Define LCD_DATAUS 200
TRISD = %00000000
output portd.7
portd.7=1
ADCON1 = %00000111
pause 1000
trisb =%00000000
'**********************************************************
valor var byte
valorr var byte
Lcdout $fe, 1
inicio:
'leemo el portb pin2 potenciometro de 100k y condesador de 10nf   
   pot portb.2,255,valorr
'el servo va de 50 a 249 y el por de 5 a 25 multiplicamos *10   
   valor= valorr *10
'establecemos max y min
   if valor <= 50 then valor =51
   if valor =>250 then valor = 249
'pulso en portb pin 1 para mover el servo
   pulsout portb.1,valor
' visualizamos en el lcd el valor del portb
    Lcdout $fe, 1:lcdout #portb
goto inicio

ahora lo siguiente es conseguir lo mismo con el hpwm. que con los ejemplos que he recogido no funciona....

Desconectado RALF2

  • Moderador Local
  • PIC24H
  • *****
  • Mensajes: 2062
Re: CONROLAR UN SERVO CON UN 16F877 Y PBP
« Respuesta #9 en: 19 de Noviembre de 2008, 00:09:53 »
Que tal amigos!
Tal y como lo sospechaba la menor frecuencia que se puede utilizar el hpwm @ 4Mhz es de 245hz no 145 como aparece en el manual del proton, me imagino que debio ser un error de escritura  :mrgreen:
Ya lo confirme revisando el data sheet sobre el manejo del pwm asi que frecuencias menores a esa, para ese cristal, no funcionan  :shock:

No lo recomiedo para emplearlo en el manejo de servo motorores, ya que, podrian fallar al ser la frecuencia de refresco muy alta  :shock:

otomas dejame leer bien tu programa para ver que le podemos hacer, lastima que no programas con el proton que ya trae una instruccion especialmente diseñada para el manejo de servos.
Pero que no cunda el panico que en pbp tambien podemos hecharlo a andar  :mrgreen:

Saludos

Desconectado otomas

  • PIC10
  • *
  • Mensajes: 4
Re: CONROLAR UN SERVO CON UN 16F877 Y PBP
« Respuesta #10 en: 19 de Noviembre de 2008, 07:24:13 »
buenos dias...
panico?  :o :o :o :o :o :o :o
jajajajaja
no en serio, a ver cogi el mplab+pbp por el hardware que tenia, si me dices o alguien me dice que puedo usar el ICD2+picdem2 plus con el proton, no hay problema, me cambio, hace un mes cuando empece con esto tambien me lo mire y la verdad me gusto pero no fui capaz (por tiempo) de ver si funcionaba con el icd2+picdem2 plus....
he descubierto un error en mi programa
resulta que tengo que poner LOW PORTB.1 y con esto el servo responde muy bien a la variacion del potenciometro
anoche se me ocurrio hacer un laser casero, es decir que con el pic y 2 servos mover el laser y a traves del serial pasar al pic las coordenadas  via un prg en vb6
no se es una idea, si no hay nada hecho al respecto y os animais.... :lol:
el material que tengo
2 servo sanwa 1301
1 puntero laser (e de los chinos u otro) yo tengo uno de 4,9 mv rojo
potenciometros,leds,pulsadores, vamos pequeño material ;)
apa, ladu-2 desde huelva ;)