Autor Tema: Controlar Servos con PicBasic  (Leído 10038 veces)

0 Usuarios y 3 Visitantes están viendo este tema.

Desconectado Matadoor

  • PIC10
  • *
  • Mensajes: 41
Controlar Servos con PicBasic
« en: 23 de Mayo de 2007, 22:18:40 »
Saludos amigos, espero no molestar tanto a la comunidad pero son los unicos a quien puedo acudir, en vista de que veo bastante dificil poder detectar diferentes frecuencias de un par de diodos infrarojos, estoy viendo la posoçiobilidad de poder gobernar mi robotcito con un contrrol remoto pero quisiera ir paso a paso, por favor alguien me podria dar un ejemplo de como podria controlar un par de servos pero a traves de rutinas de PicBasic que es el editor que uso, he buscado pero la unica informacion que e encontrado esta escrita para proton y la verdad que no se proton por lo cual si tienen algun ejemplito les agradeceria mucho, he estado leyendo al respecto y de lo que entendi este procedimiento  se basa en la PWM (Pulse with Modulation)??' Estoy por el camino adecuado???
Gracias por Responder......

Desconectado Mario

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 873
Re: Controlar Servos con PicBasic
« Respuesta #1 en: 24 de Mayo de 2007, 01:46:32 »
Si puedes conseguir estos libros te ayudarian mucho con lo de los servos (yo tengo los 3, comprados en Amazon.com):
http://www.thinkbotics.com/index.htm

Puedes tener comunicación entre infrarrojos si alejas lo suficiente las frecuencias para que no interfieran entre ellas. He utilizado 38-40 KHz para uno y 56.8 KHz para otro y no presentan problemas de comunicación.

PWM se utiliza mas en motores de DC, los servos (tengo entendido) se manejan por tiempos; estarías utilizando la instrucción PULSOUT o algo asi.

Saludos.
La buena administración es utilizar el sentido común y la regla de oro; aunque el sentido común no es tan común como quisiéramos que fuera y, quien tiene el oro, hace las reglas.
George Terry

"A loser will defeat a genius with hard work"
Rock Lee

Desconectado LordLafebre

  • Moderador Global
  • DsPIC30
  • *****
  • Mensajes: 3529
    • Micros & micros
Re: Controlar Servos con PicBasic
« Respuesta #2 en: 24 de Mayo de 2007, 12:29:06 »
he buscado pero la unica informacion que e encontrado esta escrita para proton y la verdad que no se proton por lo cual si tienen algun ejemplito les agradeceria mucho

Hola:

Pues no has buscado nada bien, mira aquí hay un ejemplo para tres servos, que hice hace un par de dias:

http://www.todopic.com.ar/foros/index.php?topic=16951.0

Desconectado Matadoor

  • PIC10
  • *
  • Mensajes: 41
Re: Controlar Servos con PicBasic
« Respuesta #3 en: 24 de Mayo de 2007, 23:24:24 »
Gracias por responder, he estado revisando la informacion que colgaste en el link y he mirado que la informacion y he notado un par de cosas que me llaman la atencion y queria preguntarte lo siguiente:
Queria inicialmente mntar un dispositivo que pudiera detectar obstaculos pero visto lo complejo del tema y a que estoy iniciando la idea basica es poder montar un heptapodo tipo araña que camine por si solo es decir que mueva sus tres patas derechas y luego las izquierdas para que pueda caminar, pero mi duda es la siguiente : Tengo entendido (no se si me equivoque) que el PIC16F84A(El que yo disppongo) no tiene el conversor AD y queria conocer si seria posible realizar esta rutina de control que te he mencionado y poder cargarlo en este pic, porque estoy viendo que las salidas las haces a travez del puerto c pero creo que simplemente deberia cambiarlas al puerto b en mi caso(estoy bien??) otra cosilla que queria preguntarte es : Cuando simule (ayer) un codigo detu propiedad en proteus el servo solo se movia a la derecha y de ahi no regresaba
Citar
Hola es el mismo que tu pusiste solo le cambie un poco el tiempo, pero como te decia funciona solamente cuando pongo que gire a la izquierda o solo a la derecha pero cuando pongo todo, gira solo a la derecha:

i   var    byte

inicio:

derecha:
    for I = 1 to 255
        high portb.1
        pauseus 1000
        low portb.1
        pause 10
    next
    pause 1000 " tempo de espera para cambiar el sentido de rotación
izquierda:
    for I = 1 to 255
        high portb.1
        pauseus 1300
        low portb.1
        pause 20
    next
    pause 1000
goto inicio

ese es el codigo...

Un Abrazo... Sonrisa Gigante

hay algun problema en el codgo escrito de esta manera por que estoy observando que en el nuevo codigo utilizas la sentencia PULSEOUT, y otra cuestion cuando hice la simulacion el servo que encontre tenia 5 terminales en que parte se encuantra el servito de 3 terminales??? Espero no molestarte con estas preguntas de un novatazo pero de antemano cuanto con tu ayuda y te lo agradesco grandemente.....
Saludos desde Riobamba.....

Desconectado navaismo

  • Jubilado Todopic
  • PIC24H
  • ****
  • Mensajes: 1973
Re: Controlar Servos con PicBasic
« Respuesta #4 en: 26 de Mayo de 2007, 03:31:26 »
Para servos puedes usar -lo digo por experiencia propia- pulsout o bien como esta en tu cita creas tu tu pulso al meter un for con un high y low con una pausa en microsegundos lo que haces es enviar una señal cuadrada o una especie de pwm hecho a la antigua. Yo use mas bien el pulsout ya que es mas sencillo y el servo responde muy bien. En cuanto a lo del servo de 3 pines yo pongo en el menu de busqueda servo y aparecen todos los modelos. Si no en la ayuda viene como conectar el servo de 5 patillas.

Y el F84 puede controlarte tranquilamente 4 servos y el metodo de deteccion que quieras
"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 Matadoor

  • PIC10
  • *
  • Mensajes: 41
Re: Controlar Servos con PicBasic
« Respuesta #5 en: 26 de Mayo de 2007, 14:39:50 »
Gracias Navaismo, sabes me estoy cercenando la cabeza tratando de hacer girar el servo hacia la izquierda ya que con el codigo que deje arriba el mismo se mueve solo hacia la derecha pero no regresa, ya he cambiado el tiempo de la señal como lo habia leido en una informacion publicada aqui mismo que en resumen dice que con tiempo de 2.3ms en alto y 20ms en bajo el servo deberia moverse a la derecha, y que con tiempos de 0.3ms en alto y 20 ms en bajo el servo deberia irse a la derecha pero no logro tal cometido, depronto estoy errado en esta informacion ?? me podrias dar a una idea de como hacer girar el servo hacia izquierda y derecha??? y otra pregunta mas como posociono al servo en su centro de recorrido???
Gracias por la ayuda......

Desconectado Matadoor

  • PIC10
  • *
  • Mensajes: 41
Re: Controlar Servos con PicBasic
« Respuesta #6 en: 26 de Mayo de 2007, 16:04:09 »
PD: Se me olvidaba espero no fastidiarles mucho pero me encuentro interesado en un bot que pudiera moverse dependiendo de la informacion enciada por un control remoto por ejemplo un phillips que creo es el mas comunmente usado en este tipo de tareas mi pregunta es como puego generar un programa que pudiera reconocer este protocolo y poder gobernar el pic mediante un control remoto??? Gracias por vuestra colaboracion.....

Desconectado Mario

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 873
Re: Controlar Servos con PicBasic
« Respuesta #7 en: 26 de Mayo de 2007, 19:09:32 »
PD: Se me olvidaba espero no fastidiarles mucho pero me encuentro interesado en un bot que pudiera moverse dependiendo de la informacion enciada por un control remoto por ejemplo un phillips que creo es el mas comunmente usado en este tipo de tareas mi pregunta es como puego generar un programa que pudiera reconocer este protocolo y poder gobernar el pic mediante un control remoto??? Gracias por vuestra colaboracion.....

No estoy seguro sobre lo que comentas de Phillips ¿podrías explicar eso?

Para botcecillos con comunicación de ese tipo revisa esto:
http://www.rentron.com/ruf-bot.htm
http://www.rentron.com/Infrared_Communication.htm
La buena administración es utilizar el sentido común y la regla de oro; aunque el sentido común no es tan común como quisiéramos que fuera y, quien tiene el oro, hace las reglas.
George Terry

"A loser will defeat a genius with hard work"
Rock Lee

Desconectado Matadoor

  • PIC10
  • *
  • Mensajes: 41
Re: Controlar Servos con PicBasic
« Respuesta #8 en: 27 de Mayo de 2007, 20:13:08 »
Hola, gracias por responder a todos hago una sinopsis sobre lo que me encuantro haciendo: Estoy tratando de montar un hexapodo y aunque me ha tomado bastante tiempo de pueba y error les comento que ayer por fin logre hacer funcionar el sistema de servos(para que de los pasos y la pata que hace levantar al hexapodo) yo se que no es la gran cosa pero creanme que no dormi hasta las 2:30 am viendo como se acababan las  baterias y el movimiento repetitivo de las patas de mi hexapodo :lol: :lol: :lol: para mi fue el anhelo de hace ya mucho tiempo atras digamos una experiencia unica..... Ahora la siguiente parte del trabajito constiste en como poder gobernar a distancia mi bichito, es decir he escuchado que implementar receptor de infrarojos basado en la norma RC5 de Phillips es lo que comunmente suele ser lo mas sencillo (segun he leido), me podrian ayudar con opiniones de como puedo lograr hacer funcionar este receptor?? Yo estoy usando el PicBasicPro, eso la primera parte la segunda es lograr que el bichito pueda sensar la temperatura del medio donde se esta desplazando y pueda enviarla hacia el puesto de control ...... sera mas conveniente para esto utilizar comunicacion via RF?? Hacia tiempo atras habia adquirido un par de modulos LINX (Tx y Rx) aunque no he logrado poder ponerlos a trabajar hasta la fecha..... >De antemano les agradesco sus ayudas comentarios y sugerencias sobre este proyecto......

Saludos.......

Desconectado navaismo

  • Jubilado Todopic
  • PIC24H
  • ****
  • Mensajes: 1973
Re: Controlar Servos con PicBasic
« Respuesta #9 en: 27 de Mayo de 2007, 23:21:52 »
Hola buscar un poquito resolveria todas tus metas. De todo lo que has comentado la mayoria ya esta resuleto lo unico que tendrias que hacer es implementar un todo en uno.

Para lo del control remoto uno que me funciono muy bien con un sony y uno universal fue el hecho por Craig Gardner en un articulo publicado en GOROBOTICS  es tan sencillo que no necesito mas que de un pic enanito (8pines) y facilmente adaptable a cualquier PIC. Aquí el LINK.

Podrias meter esto al incio de tu programa y usar el control unvirsal, Yo use un sony de un dvd trae unos botones que hacen una cruceta y te pueden servir para mover el hexapodo. cada boton tiene un valor decimal, los botones de los numeros correspon a sus numeros al menos en mi control sony. eso te puede ayudar y primero identifica el valor de los botones que quieras usar. Una vez con eso puedes usar el SELECT CASE para mandarle a la rutina adecuada segun sea el caso. Eso si si no recibes nada o se quedara en la ultima rutina o no hara nada.

Con respecto a lo de sensar la temperatura, aquitambien esta todo podrias usar un lm35dz o un tcn74 o un tcn75 o cualquier otro para ello necesitaras un PIC con ADC. para regresar los datos necesitaras un control RF si es mucha distancia o bien con infrarrojos. Con RF podrias usar transceptores que ambos transmiten y reciben y asi usar un solo control para mover y sensar el hexapodo, si no pues modulos de rf sencillos y el emisor en tu hexapodo y con un  SEROUT2, SERIN2 tendrias resuelto todo. Si es por infrarrojos Bruce Reynolds nos dejo un ejemplo en su pagina. aqui el link.

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 Matadoor

  • PIC10
  • *
  • Mensajes: 41
Re: Controlar Servos con PicBasic
« Respuesta #10 en: 28 de Mayo de 2007, 17:14:28 »
Hola Navaismo, gracias por la informacion me pongo ya mismo manos a la obra tan solo un par de preguntas mas, yo estoy ocupando el PIC16F628A crees que tenga algun problema al tratar de implementar el codigo o el codigo funcionaria  tambien para este PIC, y la otra seria necesario que ocupase ya el pic con un cristal externo para lograr hacer funcionar el receptor???

Gracias por responder.....

Saludos............

Desconectado navaismo

  • Jubilado Todopic
  • PIC24H
  • ****
  • Mensajes: 1973
Re: Controlar Servos con PicBasic
« Respuesta #11 en: 28 de Mayo de 2007, 18:44:29 »
Pues solo tendras que adaptar los puertos y/o en su caso ADC y caracteristicas especiales, pero para nada sera problema yo lo use para un 16f84A y jalo. Seguro no hay problema. Si tienes oscilador interno y lo quieres usar seguro funcionara tambien.
"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 Matadoor

  • PIC10
  • *
  • Mensajes: 41
Re: Controlar Servos con PicBasic
« Respuesta #12 en: 29 de Mayo de 2007, 14:57:55 »
Saludos Navaismo, aunque me ha costado bastante trabajo conseguir el receptor de tres pines por fin he logrado conseguiirdo de una television sony vieja, he estado revisando el codigo que me habias sugerido
Citar
@ DEVICE INTRC_OSC, MCLR_off, PROTECT_OFF, WDT_OFF
CMCON = 7             ' Comparators OFF
ANSEL = 0             ' A/D OFF -- Port pins all digital
TRISIO = %010000    ' All I/O but GPIO3 = outputs
GPIO = %00000000      ' All 0 on boot
Define OSCCAL_1K 1 ' Set OSCCAL for 1K device

IRpulse_length var word(13)
xx var Byte
Command   Var   Byte
clear



Getstartbits:
PuLSIN GPIO.4,0,IRpulse_length(0)
if IRpulse_length(0) < 200 then
goto getstartbits
Endif

for xx=1 to 12
pulsin GPIO.4,0,IRpulse_length(xx)
next  xx



displaybits:
if IRpulse_length(1) < 100 then
Command.bit0 = 0
Else   
Command.bit0 = 1
endif
if IRpulse_length(2) < 100 then
Command.bit1 = 0
Else   
Command.bit1 = 1
endif
if IRpulse_length(3) < 100 then
Command.bit2 = 0
Else   
Command.bit2 = 1
endif
if IRpulse_length(4) < 100 then
Command.bit3 = 0
Else   
Command.bit3 = 1
endif
if IRpulse_length(5) < 100 then
Command.bit4 = 0
Else   
Command.bit4 = 1
endif
if IRpulse_length(6) < 100 then
Command.bit5 = 0
Else   
Command.bit5 = 1
endif
if IRpulse_length(7) < 100 then
Command.bit6 = 0
Else   
Command.bit6 = 1
endif
if IRpulse_length(8) < 100 then
Command.bit7 = 0
Else   
Command.bit7 = 1
endif
If Command.bit7 = 0 then         'Bit 7 is one of the device bits
Command = Command + 1
Endif
If Command = 10 then
Command = 0
Endif
SEROUT GPIO.0,2,[Command]
pause 100
goto Getstartbits

END
que esta escrito para el PIC12F629 y cunado lo mando a compilar para este PIC el programa se compila sin ninguna novedad ahora viene mi duda, ya que al mandar a compilar cambiando el pic al 16f628A que es el que yo estoy utilizando para mi bichito me aparecen una serie de errores como los mostrados en la siguiente captura de pantalla:

Me podrias dar una alguna idea de que es lo que esta pasando con el codigo, o que parte en si deberia ser modificada para que pueda operar con mi PIC, disculpa tantas preguntas Navismo pero estoy picado con este tema y espero seguir contando con tu valiosa ayuda.....
Gracias por responder.....
Saludos.....

Desconectado navaismo

  • Jubilado Todopic
  • PIC24H
  • ****
  • Mensajes: 1973
Re: Controlar Servos con PicBasic
« Respuesta #13 en: 29 de Mayo de 2007, 15:10:16 »
Para empezar los registros y los fuses dale una leida al datasheet del ambos pics y notaras las diferencias. Rapidamente el 16f628 no tiene el FUSE: ANSEL, por lo visto no tiene oscilador interno, y si lo tiene no se configura con INTRC_OSC, hay que buscar cual es el nombre si posee oscilador interno.

El registro TRISIO es para los pics de 8 pines en tu caso tendras que configurar o el TRISA o el TRISB dependiendo del puerto que desees usar para recibir los datos. GPIO tampoco te compilara, en lugar de eso deberas usar PORTA o PORTB. el CMCON si jala con ambos ya que hace digital el puerto con comparadores.

Y osccal es par el oscilador interno asi que tambien quitalo.


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 Matadoor

  • PIC10
  • *
  • Mensajes: 41
Re: Controlar Servos con PicBasic
« Respuesta #14 en: 29 de Mayo de 2007, 15:13:15 »
Ok me pongo manos a la obra a buscar informacion acerca de los Fuses.......
Gracias un abrazo......


 

anything