Artículo

Esquemas LibreServo v2.1

PCB LibreServo v2.1 PCB de LibreServo v2.1

Estos esquemas no van a durar mucho porque ya se han realizado nuevos cambios y se van a enviar a fabricar en los próximos días si todo va bien. El pedido de la siguiente versión coincidirá que son las vacaciones chinas, pero espero no tener ningún tipo de problema salvo algún pequeño retraso ya anunciado por el fabricante JLCPCB.

En esta versión LibreServo, la PCB principal, pasa de 4 a 6 capas debido a que JLCPCB, como comentamos en el artículo de cambios en LibreServo v2.1, ha realizado una oferta muy agresiva en la que sale más barato fabricar una PCB de 6 capas en vez de 4, teniendo en cuenta que en 6 capas te regalan el acabado ENIG (en oro) y las vías te las rellenan y tapan, ósea, un acabado totalmente profesional, es una auténtica locura de oferta.

A pesar de todo ello, por supuesto LibreServo mantendrá total compatibilidad con 4 capas y tan sólo a la hora de generar los gerbers se quitan las capas centrales y asunto arreglado.

Cambios en LibreServo v2.1

En el artículo anterior de cómo ajustar un PID, se puede apreciar cómo LibreServo está ya funcionando completamente. Todos los datos recogidos que se ven en las gráficas son datos devueltos por LibreServo y los movimientos del vídeo son también movimientos reales de LibreServo. Con esto quiero decir que LibreServo ya está muy cerca de una versión final y madura del proyecto, al menos en la parte hardware, ya que en la parte software siempre se pueden añadir funciones y mejorar las ya presentes.

Con todo lo anterior dicho, he realizado una nueva versión del hardware mejorando las pequeñas cosas que he ido viendo en estos último meses. Aunque a primera vista no se note, se han realizado cambios y retoques por toda la placa.


[...]

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.