Autor Tema: Control de Posicion Motor DC  (Leído 18735 veces)

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

Desconectado Gilgamesh

  • PIC10
  • *
  • Mensajes: 3
Control de Posicion Motor DC
« en: 12 de Junio de 2014, 01:23:39 »
Buenas noches:

Estoy intentando implementar un control de posicion para motor dc. Cuento con un motor dc con encoder integrado y arduino uno R3. Estoy bien adentrado en el tema pero aun no he conseguido un buen control. Como algoritmo de control estoy utilizando PID. Cabe mencionar que el motor no cuenta con caja reductora.

Alguien ha conseguido un buen control de posicion que pueda darme algunos buenos consejos?

De antemano, gracias.

Desconectado Picuino

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5883
    • Picuino
Re: Control de Posicion Motor DC
« Respuesta #1 en: 12 de Junio de 2014, 03:53:58 »
¿Puedes dar más datos del circuito?
¿Qué tarjeta de control utilizas?
¿Qué precisión o velocidad quieres?
¿Qué es lo que funciona mal en tu circuito?

La placa arduino Uno R3 no tiene entrada para encoder. Si el encoder tiene muchos puntos por vuelta, la placa perderá pulsos. ¿Cuantos pulsos por vuelta tiene?

Saludos.

Desconectado Gilgamesh

  • PIC10
  • *
  • Mensajes: 3
Re: Control de Posicion Motor DC
« Respuesta #2 en: 12 de Junio de 2014, 14:30:40 »
El motor es el siguiente:

Video del motor

en el video controlan el motor con un driver que contiene un pic y un L293D. Este es el driver:

Datasheet del driver

Cuando adquiri el motor, no tenia driver y quiero implementar uno con arduino. El encoder lo estoy  leyendo con las interrupciones por hardware del arduino (pines 2 y 3). Quiero que la posicion se controle como en el video.

El problema que tengo es que no se como relacionar el resultado del PID con el PWM que es enviado al L293D para controlar el motor.

Desconectado Picuino

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5883
    • Picuino
Re: Control de Posicion Motor DC
« Respuesta #3 en: 12 de Junio de 2014, 15:47:47 »
El motor tiene unas 3000rpm (50 revoluciones por segundo)
El encoder tiene 1336 pulsos por revolución.
Esto da un total de 66800 pulsos por segundo.

Si cada pulso tiene 4 flancos, en total puedes llegar a 267200 interrupciones por segundo.
Puede dar problemas al microcontrolador a máxima velocidad.

El resultado del PID tienes que guardarlo directamente en el registro del PWM. El problema es calcular el resultado del PID.

Saludos.

Desconectado Picuino

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5883
    • Picuino
Re: Control de Posicion Motor DC
« Respuesta #4 en: 13 de Junio de 2014, 06:22:03 »
En realidad, con un encoder y un PID lo que controlas es la posición del eje.

Para comenzar con algo sencillo puedes hacer un control proporcional:

 1º - Hay que calcular el error de posición (encoder-referencia)
 2º - Multiplicas ese error por una constante
 3º - Ese valor lo metes en el PWM

Con este control el motor funcionará.
El problema está en que oscilará en torno al valor de referencia. Para evitarlo, añade control derivativo.

Saludos.

Desconectado elgarbe

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2178
Re: Control de Posicion Motor DC
« Respuesta #5 en: 13 de Junio de 2014, 08:22:55 »
.... Para evitarlo, añade control derivativo.

Saludos.


Permitame una intromision. Agregar control Integral para eliminar el error.

Saludos!
-
Leonardo Garberoglio

Desconectado Picuino

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5883
    • Picuino
Re: Control de Posicion Motor DC
« Respuesta #6 en: 13 de Junio de 2014, 10:11:08 »
Ok.
La idea es ir a pasitos puesto que tiene problemas para hacerlo funcionar.

Primero: que funcione el proporcional

Cuando este funcione: añadir derivativo.

Cuando los dos funcionen: añadir integral.

Saludos.

Desconectado gera

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2188
Re: Control de Posicion Motor DC
« Respuesta #7 en: 14 de Junio de 2014, 10:52:44 »
Tenes alguna forma de visualizar las variables en tiempo real? Algún ICD, o una comunicación serie?
De esta forma vas a poder analizar lo qué está ocurriendo en el PID (el error, la salida, etc..)
Saludos!

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

Desconectado elgarbe

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2178
Re: Control de Posicion Motor DC
« Respuesta #8 en: 14 de Junio de 2014, 22:37:26 »
Ok.
La idea es ir a pasitos puesto que tiene problemas para hacerlo funcionar.

Primero: que funcione el proporcional

Cuando este funcione: añadir derivativo.

Cuando los dos funcionen: añadir integral.

Saludos.

es que en el 99% de los casos el termino integral se usa y el derivativo no. Por eso el segundo paso lógico es introducir el termino integral.

saludos
-
Leonardo Garberoglio

Desconectado Picuino

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5883
    • Picuino
Re: Control de Posicion Motor DC
« Respuesta #9 en: 15 de Junio de 2014, 14:32:57 »
es que en el 99% de los casos el termino integral se usa y el derivativo no. Por eso el segundo paso lógico es introducir el termino integral.
saludos

¿En qué casos se utiza el integral y no se utiliza el derivativo?

El control derivativo se usa cuando es necesario, y en este caso sí que es necesario.

El derivativo sirve para estabilizar la respuesta del sistema cuando existen "inercias".
En este caso, el control de posición se va a encontrar con una fuerte inercia del eje del motor. Si no se incluye este control, el motor va a oscilar continuamente en torno a la posición de referencia.

Resumen: El paso número 2 es añadir control derivativo

Saludos.

Desconectado elgarbe

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2178
Re: Control de Posicion Motor DC
« Respuesta #10 en: 15 de Junio de 2014, 17:25:54 »
es que en el 99% de los casos el termino integral se usa y el derivativo no. Por eso el segundo paso lógico es introducir el termino integral.
saludos

¿En qué casos se utiza el integral y no se utiliza el derivativo?

El control derivativo se usa cuando es necesario, y en este caso sí que es necesario.

El derivativo sirve para estabilizar la respuesta del sistema cuando existen "inercias".
En este caso, el control de posición se va a encontrar con una fuerte inercia del eje del motor. Si no se incluye este control, el motor va a oscilar continuamente en torno a la posición de referencia.

Resumen: El paso número 2 es añadir control derivativo

Saludos.

No sé cuánto sabes de PID por eso no sé cuánto profundizar en el tema. Voy a intentar ponerlo de este modo para ver si estamos de acuerdo:

El termino proporcional aporta a la salida un valor proporcional al error entre el SP y el PV. Es por ello que con un control solo Proporcional no se elimina nunca el error. Esto es, el PV nunca llegará y se quedará en el valor establecido por el SP.

El término integral aporta a la salida un valor que es proporcional a la Integral del error entre el SP y PV. Este es el término que me permite eliminar el error en estado estacionario, ya que mientras halla error el termino integral estará presente en la salida del controlador y a medida que el error se hace más pequeño este término también lo será. Un valor demasiado alto en este término puede aportar a la inestabilidad del sistema. Pero siempre se arranca con pequeños valores y se va aumentando hasta conseguir una respuesta satisfactoria. Este término es muy fácil de entender y visualizar en una gráfica de SP, PV y Error en el tiempo ya que la integral del error en el tiempo es el área que queda debajo de la curva de error en el intervalo de tiempo de muestreo.

El término derivativo, aporta un valor proporcional a la derivada del error o ppodríamos decir proporcional a "la velocidad" con que el error varía. Es un término que suele decirse que se utiliza para tratar de "anticiparse" a los cambios del proceso. En este caso, si tenemos la gráfica SP, PV y error vs t es mucho menos intuitivo entender el aporte del término derivativo ya que debemos derivar el error respecto del tiempo en cada punto y eso es mucho menos intuitivo (aunque expliquemos que la derivada en el tiempo del error en un punto dado es la pendiente de la curva del error en dicho punto, esto es, la recta tangente en ese punto).

Entonces respondo a tu pregunta, en qué casos se utiliza el término integral y no el derivativo? en el 99% de los lazos de control en las industrias en las que me ha tocado trabajar con lazos de control.

Ahora, puedo mejorar tu pregunta y proponer otra, en que casos se hace NECESARIO el uso del término derivativo Y NO se hace necesario el término integral? en prácticamente ningún sistema en donde el objetivo sea que el PV llegue al SP en el menor tiempo posible. Agrego, si en el sistema de posicionamiento del motor no se agrega el término integral, el motor NUNCA alcanzará el valor deseado, ya que los términos proporcional y derivativo no eliminan el error en estado estacionario.

Entonces, despues de fundamentar mi afirmacion, sigo sosteniendo, en el 99% de los lazos PID (incluyendo el del tema que estamos debatiendo) se ajusta el termino proporcional, luego el integral y finalmente, se busca obtener mayor velocidad con el término derivativo.

-
Leonardo Garberoglio

Desconectado Picuino

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5883
    • Picuino
Re: Control de Posicion Motor DC
« Respuesta #11 en: 15 de Junio de 2014, 18:08:44 »
Sí que entiendo de PID. Por eso te preguntaba por ejemplos concretos que no necesiten derivativo, porque me parece que son pocos.

En este caso, control de posición, el termino derivativo es imprescindible.
El control derivativo en este caso calcula la velocidad del motor (ni más ni menos)
Cuando el motor se acerca a mucha velocidad a su posición, es necesario frenarle antes de llegar. Sin ese freno, se pasará de largo.
El resultado sin derivativo es que el motor oscilará continuamente alrededor de su punto de referencia pasándose una y otra vez de un lado al otro.

Para que se entienda con facilidad:
El control proporcional es el muelle de una suspensión. Tiende a llevar a la rueda a su posición.
El amortiguador es el control derivativo (frena la rueda más cuanto más rápido se mueve, para evitar oscilaciones)
Sin amortiguador, la suspensión no vale para nada.


Saludos.

Desconectado elgarbe

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2178
Re: Control de Posicion Motor DC
« Respuesta #12 en: 15 de Junio de 2014, 20:05:09 »
Sí que entiendo de PID. Por eso te preguntaba por ejemplos concretos que no necesiten derivativo, porque me parece que son pocos.

En este caso, control de posición, el termino derivativo es imprescindible.
El control derivativo en este caso calcula la velocidad del motor (ni más ni menos)
Cuando el motor se acerca a mucha velocidad a su posición, es necesario frenarle antes de llegar. Sin ese freno, se pasará de largo.
El resultado sin derivativo es que el motor oscilará continuamente alrededor de su punto de referencia pasándose una y otra vez de un lado al otro.

Para que se entienda con facilidad:
El control proporcional es el muelle de una suspensión. Tiende a llevar a la rueda a su posición.
El amortiguador es el control derivativo (frena la rueda más cuanto más rápido se mueve, para evitar oscilaciones)
Sin amortiguador, la suspensión no vale para nada.


Saludos.

Ultimo mensaje mio sobre este tema:

Con un PI se pasará de largo si las ganacias son muy grandes. Si uno va incrementando las ganancias de a poco no se va a pasar de largo.
lo mas importante: Con control PD nunca se llega a la posicion deseada, con control PI si. Por lo que el termino integral es impresindible, el derivativo es opcional y se usa para mejorar la respuesta
El termino derivativo se agrega al final, para obtener una respuesta más rápida, como vengo diciendo desde el primer mensaje.
El sistema de suspension de un auto es muy distinto al este sistema, ya que el elemento en movimiento tiene mucha masa (la rueda). Por otra parte, el amortiguador solo funciona ante un golpe. Agarrá un amortiguador y lentamente estirarlo y comprimilo, verás que no funciona. Solo funciona ante un impacto (cuando la derivada del error es muy grande). El sistema de amortiguacion con elásticos (solo proporcional) se utilizó en muchos vheículos y se sigue usando en carros, cuando la velocidad de "estabilizacion" no era/es lo más importante.
En este caso, estamos hablando de un motor que no tiene prácticamente masa (pesrá 100grs?) y que no tiene nada acoplado por ahora.
-
Leonardo Garberoglio

Desconectado Picuino

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5883
    • Picuino
Re: Control de Posicion Motor DC
« Respuesta #13 en: 16 de Junio de 2014, 07:40:21 »
Hablando en general, no vamos a llegar a ningún lado.

En cuanto al control Integral, en ningún caso le quito mérito, ni digo que sea prescindible. La función del control Integral es eliminar el error de posición, que el control proporcional no puede eliminar del todo. En eso estamos de acuerdo desde el principio.


El punto en el que no estoy de acuerdo es en el del control derivativo.
La función del derivativo es incrementar el "rozamiento dinámico" del sistema. Como tu dices, un amortiguador no hace fuerza cuando lo mueves lentamente, sólo hace fuerza y se resiste al movimiento cuando lo mueves con rapidez. Eso es (como tú dices) porque su fuerza depende de la velocidad del movimiento (porque es un control derivativo)

Ahora, sobre el tema de si un coche necesita amortiguadores o no.... depende del coche y lo que quieras de él.

Cuanto mayor sea la masa del coche y menor el rozamiento en el movimiento de la rueda, más necesario se hará el amortiguador. Sin amortiguadores, en la mayoría de los casos la respuesta del coche empeora mucho.

En cuanto al motor eléctrico, depende de la masa que tenga acoplada y del sobrepulso que quieras admitir.

Todos los motores tienen un poco de control derivativo incluído en su mecánica: el rozamiento y la resistencia del inducido actúan como derivativo reduciendo las oscilaciones. Pero en muchas ocasiones no es suficiente para estabilizar la respuesta.

No se puede seguir hablando en general del tema, porque depende de los parámetros del sistema:

   Velocidad de respuesta deseada.
   Sobrepulso admitido.
   Inercia del sistema (Motor + carga)
   Rozamiento del sistema (Rozamiento mecánico, resistencia de inducido, etc)


Podemos seguir discutiendo sobre la necesidad del amortiguador sin llegar a ningún lado. Depende del rendimiento que desees.


En el caso de control de posición de motores, suele ser necesario el derivativo para conseguir un buen rendimiento y es imprescindible cuando la carga tiene inercia y poco rozamiento, en cuyo caso hay que añadirlo después del proporcional.


Saludos.

Desconectado Picuino

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5883
    • Picuino
Re: Control de Posicion Motor DC
« Respuesta #14 en: 16 de Junio de 2014, 10:28:47 »
En este caso, estamos hablando de un motor que no tiene prácticamente masa (pesrá 100grs?) y que no tiene nada acoplado por ahora.

Lo importante en un motor no es la masa. Al ser giratorio, su parámetro es el momento de inercia o inercia de giro.
En un motor de este tipo, la inercia estará en torno a unos cuantos gramos * centímetro cuadrado.

Voy a colgar una hoja excel con la simulación de un control de posición de un motor para poder hablar de cosas concretas.

Un saludo.