Autor Tema: Brazo robot 2  (Leído 22898 veces)

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

Desconectado jfh900

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 3595
Re: Brazo robot 2
« Respuesta #60 en: 07 de Abril de 2008, 10:14:19 »
La implementación del PID es:

Término proporcional:

1) e_func = v_des - v_act; /* error function */
2) r_mot = Kp*e_func; /* motor output */

Término integrativo:

1 static int r_old=0, e_old=0;
2 ...
3 e_func = v_des - v_act;
4 r_mot = r_old + Kp*(e_func-e_old) + Ki*(e_func+e_old)/2;
5 r_mot = min(r_mot, +100); /* limit output */
6 r_mot = max(r_mot, -100); /* limit output */
7 r_old = r_mot;
8 e_old = e_func;

Término derivativo:

1 static int e_old=0;
2 ...
3 e_func = v_des - v_act; /* error function */
4 deriv = e_old - e_func; /* diff. of error fct. */
5 e_old = e_func; /* store error function */
6 r_mot = Kp*e_func + Kd*deriv; /* motor output */
7 r_mot = min(r_mot, +100); /* limit output */
8 r_mot = max(r_mot, -100); /* limit output */

Todo junto el PID al completo implementado en "C":

static int r_old=0, e_old=0, e_old2=0;
2 ...
3 e_func = v_des - v_act;
4 r_mot = r_old + Kp*(e_func-e_old) + Ki*(e_func+e_old)/2
5 + Kd*(e_func - 2* e_old + e_old2);
6 r_mot = min(r_mot, +100); /* limit output */
7 r_mot = max(r_mot, -100); /* limit output */
8 r_old = r_mot;
9 e_old2 = e_old;
10 e_old = e_func;

Ajuste de los parámetros o sintonización del PID:

1. Select a typical operating setting for the desired speed, turn off integral
and derivative parts, then increase KP to maximum or until oscillation
occurs.
2. If system oscillates, divide KP by 2.
3. Increase KD and observe behavior when increasing/decreasing the
desired speed by about 5%. Choose a value of KD which gives a damped
response.
4. Slowly increase KI until oscillation starts. Then divide KI by 2 or 3.
5. Check whether overall controller performance is satisfactorily under
typical system conditions.


Con esto más la información que has puesto, te tiene que permitir implementar el PID.

Un saludo
* Cuando hables, procura que tus palabras sean mejores que el silencio.
* 'Todos somos ignorantes, lo que ocurre es que no todos ignoramos las mismas cosas.' Albert Einstein.
* No hay nada peor que un experto para evitar el progreso en un campo
* "La vida es como una novela. No importa que sea larga, sino que esté bien narrada" Seneca
* La vida no se vive por las veces que respiras, sino por los momentos que dejan sin aliento.
* Dios dijo: ∇·E=ρ/ε0 ; ∇·B=0 ; ∇xE=-dB/dt ; ∇xB= μ0ε0dE/dt..y la luz se hizo..!!..

Desde España Jesús

Desconectado gu1llermo

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 217
Re: Brazo robot 2
« Respuesta #61 en: 07 de Abril de 2008, 11:33:57 »
Muchas gracias Jesús, ahora si es verdad que estoy armado hasta los dientes como dicen  :mrgreen:, con respecto a cuando dices la información que he publicado, me imagino que te refieres a esta: Control PID con PIC

Jesús con tu permiso voy a citar lo que has escrito, en el enlace indicado anteriormente para tener todo junto, en verdad me gustó mucho.

Publicaré lo que realice en el otro hilo para no desvirtuar éste.

Gracias nuevamente y saludos.

Desconectado jfh900

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 3595
Re: Brazo robot 2
« Respuesta #62 en: 07 de Abril de 2008, 18:49:07 »
Por mi parte todo correcto.

Un saludo
* Cuando hables, procura que tus palabras sean mejores que el silencio.
* 'Todos somos ignorantes, lo que ocurre es que no todos ignoramos las mismas cosas.' Albert Einstein.
* No hay nada peor que un experto para evitar el progreso en un campo
* "La vida es como una novela. No importa que sea larga, sino que esté bien narrada" Seneca
* La vida no se vive por las veces que respiras, sino por los momentos que dejan sin aliento.
* Dios dijo: ∇·E=ρ/ε0 ; ∇·B=0 ; ∇xE=-dB/dt ; ∇xB= μ0ε0dE/dt..y la luz se hizo..!!..

Desde España Jesús

Desconectado Renatox_

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 541
    • máquinas cnc
Re: Brazo robot 2
« Respuesta #63 en: 08 de Abril de 2008, 00:13:43 »
Hola guillermo, ten cuidado implementar un PID de posición es diferente a uno de velocidad ya que tus puntos de inicio y fin pueden estar muy cerca como también muy lejos, si la calibración de tu PID te da 1seg, entonces en teoría demoraría 1seg en ir de 0mm a 1mm y de 0mm a 100mm, en el segundo caso puede que se sature mucho la componente integral por el area del error, y tu motorcito salte mucho incluso que no llegue a su posición final por error matemático en los cálculos, por eso es mejor que actives el PID a cierta distancia del punto final.

saludos.
« Última modificación: 08 de Abril de 2008, 00:16:33 por Renatox_ »
control de movimiento

Desconectado gu1llermo

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 217
Re: Brazo robot 2
« Respuesta #64 en: 08 de Abril de 2008, 10:03:21 »
Hola! Renatox_, te respondí en éste hilo: Control PID con PIC

Saludos.

Desconectado mdark

  • PIC10
  • *
  • Mensajes: 22
Se q es algo tarde pro... en el tecnico donde estudio tenenmos uno de esos !!!
« Respuesta #65 en: 28 de Enero de 2010, 21:32:02 »
 :-/ :-/ :-/ :-/Es da la firma Lorenzo (italiana) muy buena calidad los todos los conectores son para el est del rj45 por el cual se programa dame algo de tiempo y te puedo conseguir toda la info.  esta es la pagina !!! http://www.delorenzogroup.com / :-/ :-/ :-/ :-/ :-/ :-/

Desconectado Oceano

  • PIC10
  • *
  • Mensajes: 22
    • Proyectos Roboticos.
Re: Como frenar con PWM?
« Respuesta #66 en: 06 de Diciembre de 2010, 00:53:02 »

Sólo es una idea alternativa:

Un truco para controlar la inercia, no es controlando la velocidad, si no obligar a pasar el brazo punto por punto toda la trayectoria y en cada punto tener una pequeña demora. Al motor no le da tiempo a tomar inercia porque los trayectos punto por punto son muy cortos.

Me explico: Si quieres ir del punto 1 al punto 14, no se le da la orden directamente, si no que se le hace pasar por todos los puntos, es decir, primer el punto 1, luego el 2, luego el 3, en cada punto con la demora que creas, hasta terminar la trayectoria.

Puedes aplicar esto tanto para la zona del arranque como para la zona de la meta (me refiero a la curva de velocidad).

Por otra parte los motores se suelen frenar con ayuda del puente en H, poniendo los transistores de arriba o bien los de abajo en saturación.