Autor Tema: Robot Hexapodo  (Leído 54541 veces)

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

Desconectado willynovi

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 546
Re: Robot Hexapodo
« Respuesta #135 en: 25 de Mayo de 2014, 20:31:26 »
Yo no he hecho mucho mas desde el último post, los servos quedaron en la misma caja que vinieron de china  :D

Estoy acomodandome y tengo que rearmar el taller, ahí arranco denuevo, hoy es el único proyecto que tengo.

Por tus avances, pues claro que puedes compartirlos, es mas, si no los haces  :5]
 :D :D :D

Che, muy bueno eso de incentivar a tus alumnos a la electrónica, no han pensado en participar en alguna de las competencias de robotica que hay por el pais?
Intento enseñarte a pescar, si solo quieres pescados, espera que un pescador te regale los suyos.

Desconectado gera

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2188
Re: Robot Hexapodo
« Respuesta #136 en: 23 de Enero de 2015, 18:03:31 »
Buenassss!! Han pasado largos años, no? :D
La verdad que el trabajo me obligó a dejar pendientes varios proyectos, incluido este. Pero gracias a una operación del tobillo (que salió muy bien por suerte) he tenido 2 meses de licencia sin poder moverme, por lo tanto aproveché para avanzar con mis proyectos.

Hace un par de días terminé de ensamblar el bicho, y ahora estoy peleando con el código:



El método que utilizo para controlar los 18 servos parecido al que explica Guillermo en este hilo.
Pero al ver las señales en el osciloscopio, hay ligeros errores en los tiempos (alrededor de +1ms). Supongo que es por lo que demora en procesar la ISR del timer. Por ahora este es mi código:

Código: C
  1. #INT_TIMER1
  2. void timer1_isr(){
  3.    int i=0;
  4.    
  5.    output_toggle(PIN_D4); //esto lo uso para medir el período de interrupcion del tmr1
  6.    
  7.    for(i=0; i<18; i++){
  8.       if(counter == servo_duty[i])
  9.          output_low(servo_pin[i]);
  10.    }
  11.    
  12.    counter++;
  13.    if(counter >= 400){    //400*50us = 20ms (period required for drive a servo)
  14.       counter=0;
  15.       for(i=0;i<18;i++)
  16.          output_high(servo_pin[i]);
  17.    }
  18.    
  19.    set_timer1(PRELOAD_TMR1);
  20. }

El timer está calculado para interrumpir cada 50us. El array servo_duty[] contiene los duty para cada servo, y el array servo_pin[] contiene los pines físicos donde se encuentra cada servo.

En este paper, el autor utiliza este mismo método, pero no veo que tenga ninguna consideración con el tiempo de la ISR.

Voy a seguir probando y les comento cómo me fue.

Saludos!!

"conozco dos cosas infinitas: el universo y la estupidez humana. Y no estoy muy seguro del primero." A.Einstein

Desconectado willynovi

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 546
Re: Robot Hexapodo
« Respuesta #137 en: 27 de Enero de 2015, 20:59:48 »
Hola Gera, me alegro porque haya salido todo bien la operación....

Te quedó con muy buena pinta el hexapodo  ((:-))

Respecto a la rutina de interrupción, no le encuentro nada raro, es bastante simple y funciona...

Ahora lo que dices del error de 1ms, me parece un poco mucho, ya que es casi el valor de la mitad del ancho del pulso.

Mi programilla no lo he probado con osciloscopio, solo he hecho pruebas directamente con los servos y por ahora funciona bien, el único problema que tuve es de que a angulos muy pequeños el servo no responde bien, pero no se bien si el problema es en el servo o en el programa, ya que el servo es para 180° y yo lo estaria usando para 270°, entonces si lo uso a 180° andaria perfecto.

La diferencia que le veo a tu forma de atender a los servos es que el programa esta interrumpiendo siempre a 50us, en cambio el mio interrumpe cada 40us, pero solo durante el ancho del pulso, es decir durante 2 ms y luego no interrumpe hasta que los pulsos deben ponerse en alto nuevamente.

Con esa idea yo cambiaría tu programa y que el contador solo incremente hasta 50, que es cuando todos los servos ya estan en nivel bajo.
Luego antes de salir de la rutina de la interrupción cargas el valor del tmr1 para que vuelva a interrumpir dentro de 17,5 ms.



Intento enseñarte a pescar, si solo quieres pescados, espera que un pescador te regale los suyos.

Desconectado gera

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2188
Re: Robot Hexapodo
« Respuesta #138 en: 28 de Enero de 2015, 11:52:20 »
Hola Gera, me alegro porque haya salido todo bien la operación....

Te quedó con muy buena pinta el hexapodo  ((:-))

Muchas graciass!! :D

Citar
Con esa idea yo cambiaría tu programa y que el contador solo incremente hasta 50, que es cuando todos los servos ya estan en nivel bajo.
Luego antes de salir de la rutina de la interrupción cargas el valor del tmr1 para que vuelva a interrumpir dentro de 17,5 ms.
Es muy buena, así voy a tener tiempo para dejar que el procesador atienda otras cosas (como la trama serial). Leí por ahí un método muy bueno que utiliza dos timers. Uno que modula los anchos de pulsos dentro de los primeros 2,5ms, y otro que temporiza el periodo total de 20ms. Vamos a probar con ese método a ver qué resultados obtengo.

Igualmente tengo ganas de comprarme una placa controladora de 32 servos así me olvido de ese tema y me puedo dedicar de lleno a programar el andar del bichito.
El tema de la cinemática inversa ya lo tengo resuelto en papel. Vamos a ver qué tal anda cuando lo implemente. Los mantengo al tanto ;)

Saludos y gracias!

"conozco dos cosas infinitas: el universo y la estupidez humana. Y no estoy muy seguro del primero." A.Einstein

Desconectado willynovi

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 546
Re: Robot Hexapodo
« Respuesta #139 en: 28 de Enero de 2015, 15:05:21 »
Sin dudas iría por la placa esa para los 32 servos, pero no me le animo a DX, tengo mis ciertas dudas con el tema de la aduana...

Has comprado hace poco algo por DX?
Que resultado has tenido?

Estuve mirando y hay unos kit de robotica que estaria bueno para mi cuñadito que quiere iniciarse en la robotica.
Intento enseñarte a pescar, si solo quieres pescados, espera que un pescador te regale los suyos.

Desconectado miquel

  • PIC12
  • **
  • Mensajes: 69
Re: Robot Hexapodo
« Respuesta #140 en: 28 de Enero de 2015, 17:22:12 »
Hola!  Para manejar muchos servos es mejor no hacerlo directamente con el micro, es mejor utilizar una controladora de servos. De esta manera el micro solo tiene que pasarle por I2C los tiempos de cada servo, lo cual aligera notablemente el trabajo del micro. Hace tiempo monte una controladora con un PCA9685 y funciono muy bien y ademas muy barata:
http://www.todopic.com.ar/foros/index.php?topic=42930.0

Saludos y suerte con el hexapodo,

Miquel


Desconectado willynovi

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 546
Re: Robot Hexapodo
« Respuesta #141 en: 28 de Enero de 2015, 19:14:04 »
Claro que usar un micro especifico para el control de los servos es mejor, aunque yo estoy tratando de hacerlo con un pic para poder meterle algunas cosillas mas,
estoy pensando en incluir en el pic de control de los servos algunos movimientos básicos para tambien sacarle un poco procesamiento al cerebro del robot,
veremos como sigue esto....
Intento enseñarte a pescar, si solo quieres pescados, espera que un pescador te regale los suyos.

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re: Robot Hexapodo
« Respuesta #142 en: 28 de Enero de 2015, 20:31:24 »
Sin dudas iría por la placa esa para los 32 servos, pero no me le animo a DX, tengo mis ciertas dudas con el tema de la aduana...

Has comprado hace poco algo por DX?
Que resultado has tenido?

Estuve mirando y hay unos kit de robotica que estaria bueno para mi cuñadito que quiere iniciarse en la robotica.

Yo hasta ahora siempre compre a DX, soy de argentina y ni siquiera de cordoba o buenos aires, lo unico que si tengo que pagar 40$ al correo por paquete.

pero siempre compre por menos de 25U$S, a veces me tarda 1 mes en llegar y el otro dia me sorprendio por que me llego a las 2 semanas u algo asi.
Hasta ahora no tuve nunca problemas con eso.

Pedi por ebay una vez y nunca llego.
Todavia me faltan por probar todas las demas.
« Última modificación: 28 de Enero de 2015, 20:33:44 por KILLERJC »

Desconectado gera

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2188
Re: Robot Hexapodo
« Respuesta #143 en: 30 de Enero de 2015, 11:08:56 »
Yo hasta ahora siempre compre a DX, soy de argentina y ni siquiera de cordoba o buenos aires, lo unico que si tengo que pagar 40$ al correo por paquete.

pero siempre compre por menos de 25U$S, a veces me tarda 1 mes en llegar y el otro dia me sorprendio por que me llego a las 2 semanas u algo asi.
Hasta ahora no tuve nunca problemas con eso.

Pedi por ebay una vez y nunca llego.
Todavia me faltan por probar todas las demas.

Yo también compro seguido a DX y HobbyKing. Nunca tuve problemas, salvo que últimamente la AFIP está muy rompe quinotos y para importar te exige sacar una clave fiscal y hacer todo un trámite previo a la compra. Además de pagar el 35% de impuestos por compra en el exterior más 50% de importación. Así y todo te termina saliendo más barato que comprar en ML o casas de aeromodelismo.
Otra cosa, sólo se pueden hacer 2 compras por año, con un límite de U$S 1000 por compra (menos una franquicia de U$S 25 al año).

Saludos!!

PD: No es mi caso, pero si tenés un amigo en la aduana, el trámite se agiliza bastante...

"conozco dos cosas infinitas: el universo y la estupidez humana. Y no estoy muy seguro del primero." A.Einstein

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re: Robot Hexapodo
« Respuesta #144 en: 30 de Enero de 2015, 11:32:19 »
A mi lo unico que me molesto la aduana fue por un kit de evaluacion que pedi a TI. Aca me pidieron la clave fiscal y me lo tuvieron retenido mucho tiempo.

Por lo demas como es DX, no tuve que hacer nada, no tuve que pagar nada ademas de lo que pagaba por paypal, simplemente ir y abonar $40 en el correo por cada paquete enviado. Como dije todo menos de 25U$S ( incluso  el kit que estaba 24.99 ).

Con respecto a la cantidad de compras parece que por DX no le dan importancia, al menos yo ya pedi 5 veces desde Julio a Enero ( 3 el año pasado + pedido de TI, 2 este año ), y algunos vienen en paquetes separados (no se como contara eso ).

Para mi lo importante es mantenerse debajo de ese valor de 25 dolares. Tal ves tambien sea el peso, o simplemente suerte. El tema es cuando tenes que comprar algo mas caro...

Por ejemplo TI lo mando por Fedex el cual preparo todos los papeles para la aduana, entonces paso si o si por ahi.

Desconectado xelieve

  • PIC10
  • *
  • Mensajes: 23
Re: Robot Hexapodo
« Respuesta #145 en: 30 de Enero de 2015, 21:22:30 »
hola buenas, tengo una duda tengo mi hexapodo listo (carcasa) y voy ideando un codigo para poder controlar 18 servos o mas por medio del pic 18f4550, mi profesor me paso un codigo para controlar servos, pero solo es util para 14, mi placa es una simple con el pic y 22 salidas pero por mucho q conecto el labview no me cambian los servos.


Desconectado javihont

  • PIC10
  • *
  • Mensajes: 1
Re:Robot Hexapodo
« Respuesta #146 en: 27 de Noviembre de 2015, 14:40:52 »
Una preguntilla... ¿Cómo se alimentaría un hexápodo con 18 servos y una LiPo de 7.4 V a 5 A ? ... Si pongo la LiPo directa se me sobrecalientan los servos... ¿ Con un UBEC ?, ¿ Qué tipo de UBEC sería el más adecuado ?