Artículo

Cómo ajustar correctamente un PID

En Internet hay cientos de guías de cómo ajustar un PID y todos se pueden resumir en los siguientes sencillos pasos:

  • Poner a cero KD y KI e incrementar KP hasta que el sistema corrija el error y empiece a oscilar. Ese sería el máximo de KP
  • Incrementar KD hasta que la oscilación de KP se detenga
  • Incrementar KI levemente para que el sistema corrija totalmente el error

Parecen tres pasos sencillos y rápidos, pero la realidad es que al final se convierte en una suerte de intentar adivinar las constantes y tras cientos de pruebas y horas, si tienes suerte, consigues un PID relativamente estable. Es una tarea bastante engorrosa que pocas veces consigue llegar a un resultado totalmente satisfactorio.

Olvidémonos de todo ello e intentemos obtener KP y KD de forma matemática.


Vídeo comparativa PID

Esquemas LibreServo v2

PCB para test LibreServo PCB de LibreServo v2

Tenía pendiente desde hace meses subir los esquemas a la web. Los esquemas son exactamente los mismos con los que fabriqué las PCB de LibreServo v2 pero con los textos corregidos en posición para que se vean mejor.

En entradas anteriores como puedes leer en el artículo de la primera placa de test de LibreServo y en las conclusiones de la segunda placa de test de LibreServo, los cambios de LibreServo fueron masivos en todos y cada uno de los aspectos. Prácticamente todos los componentes fueron revisados y se pasó a un diseño de dos PCB de cuatro capas.

Nueva versión de las piezas 3D del encóder


Vídeo del montaje del encóder de LibreServo

Para saber la posición del eje del servomotor, LibreServo hace uso del encóder AEAT-8800 de 16bits. Este encóder sustituye al potenciómetro que tienen los servomotores y con ello conseguimos tener mucha más precisión y permite que el servomotor gire 360 grados.

Para lograr ello, LibreServo hace uso de una minúscula PCB de 10,2x11,2 mm al que se le acopla una pieza impresa en 3D del mismo tamaño y forma que el potenciómetro original. Dicha pieza impresa en 3D consta de 3 pequeñas partes, un rodamiento de 4x7x2 mm y un pequeño imán magnetizado diametralmente de 6x2,5mm. Tan sólo es neceario un punto de pegamento para fijar el imán. El resto de piezas, rodamiento y PCB están diseñados para que encagen a presión y queden fijas.

Comandos en LibreServo (segunda parte)

He dedicado mucho tiempo a la parte de comandos en LibreServo y creo que es una de las partes más importantes del proyecto, es cómo se presenta LibreServo ante el usuario. Ofrece una flexibilidad y posibilidades que yo nunca he visto en ningún fabricante.

La documentación de los comandos la dividiré en dos artículos, este artículo está más centrado en ejemplos y explicación de ejecución y el otro artículo está centrado en la descripción de los comandos de LibreServo.

LibreServo cuenta con un administrador de tareas para la parte del manejo del motor de alta prioridad y otro administrador de tareas independiente de baja prioridad sólo para el envío de datos al usuario (comandos GX). Hay que tenerlo en cuenta ya que el orden y la temporización serán independientes entre los comandos de recibir datos y el resto de comandos.


[...]

Comandos en LibreServo (primera parte)

He dedicado mucho tiempo a la parte de comandos en LibreServo y creo que es una de las partes más importantes del proyecto, es cómo se presenta LibreServo ante el usuario. Ofrece una flexibilidad y posibilidades que yo nunca he visto en ningún fabricante.

La documentación de los comandos la dividiré en dos artículos, este artículo está más centrado en la descripción de los comandos y la segunda parte está centrada en ejemplos y explicación de ejecución en LibreServo.


[...]

Últimos pasos para primera versión oficial


Música con LibreServo

Aunque tenía muchas partes del código ya hechas, la verdad es que juntar todo el código y realizar todas las funciones y extructura interna sin bloqueos ha sido una tarea mucho más laboriosa de lo esperado. Además, he realizado decenas de funciones de cara al usuario y la primera versión del Software de LibreServo es mucho más completa de lo que en un principio había previsto.

Actualizado software de LibreServo (versión v0.1)

Tras varios meses de trabajo, por fin LibreServo ha alcanzado la versión 0.1 en el software. ¿Qué quiere decir esto? Quiere decir que LibreServo sigue estando en versión Beta, pero ya tiene suficiente madurez para presentarse en sociedad. Esta será sólo la primera de varias entradas que iré subiendo estos días.

He actualizado el Github de LibreServo con los ficheros más recientes e intentaré mantenerlo actualizado.

En próximos días subiré la documentación de los comandos de LibreServo, pero por si alguien quiere leer el código en sí, he realizado dos pequeños diagramas para ayudar a entender el funcionamiento de LibreServo.

Curvas de movimiento

Gráfica curva de movimiento Curva en S Gráfica de curva en S. Posición, aceleración y velocidad

Un servomotor es un motor que mantiene una posición dada, ¿pero cómo llega a dicha posición?

Un servomotor normal, sólo recibe la posición final por PWM y siempre va lo más rápido que puede a dicho punto. En cambio, un servomotor inteligente generalmente recibe un comando que le indica la posición final y en cuánto tiempo tiene que alcanzar dicha posición, es en ese momento cuando el servomotor inteligente empieza a calcular la ruta hasta la posición final. Existen varias formas de trazar la ruta, eso son las curvas de movimiento.

LibreServo en Hackaday

LibreServo v2 y Hackaday

Poco más que decir, era algo que realmente quería hacer desde hace años, pero si no tengo tiempo para el proyecto en sí y la web, menos aún para tener el proyecto también en otra web.

El proyecto está avanzando últimamente bastante bien y creo que ya es hora de hacerlo más conocido en la comunidad. Aunque esté en hackaday, será en LibreServo donde estará todo la información más actualizada y en mayor detalle.

LibreServo se expande a Hackaday

LibreServo v2. Nuevas esperanzas

LibreServo v2 Soldando la primera LibreServo v2

Esta pequeña entrada es para anunciar que la nueva LibreServo ha llegado, he podido soldarla sin problema alguno y ¡está funcionando al completo! 🥳

Tras las pruebas que hice con las placas de test v1 y v2 se realizaron muchísimos cambios en el diseño de LibreServo. Debido a tantos cambios, LibreServo pasa a ser ya versión 2.