Originalmente publicado por Bertie
chemari, la potencia de cálculo no es mucho problema, porque sólo tendría que calcular un polinomio de 2º o 3er grado; además no necesita hacerlo muy rápido ya que por definición un barco es bastante lento y quizás con un muestreo o dos por segundo ya sea suficiente.
Ahora bien, el problema es calcular lo que se llama la función de transferencia. En el caso más simple, tienes una entrada (el rumbo real, o dirección del viento), una consigna (el rumbo que quieres seguir) y calculas la diferencia entre el rumbo real y el deseado (pongamos que en un momento dado es de 2º, aunque internamente lo más práctico será operar en radianes). Con ese dato, le aplicamos una función que calculará la posición del timón. Y ahí está el tema. Lo más sencillo sería una lineal, que le da a la pala un ángulo que será la desviación multiplicada por una constante, y puede funcionar bien en las condiciones más típicas, navegando a velocidad de crucero y cuando no sea necesaria mucha corrección. Pero si corrige más de la cuenta, pasará lo que a los patrones novatos (o con un barco al que no le han pillado el truco): se me va a una banda, meto caña para corregir, se me va demasiado, meto otra vez a la contraria... y en momento estás haciendo eses. Y al contrario, si corrige demasiado poco, te irás apartando del rumbo paulatinamente. Para complicar más la cosa, como la arrancada también influye en el gobierno, no es lo mismo tener la pala a 3º cuando vas a 2 nudos que a 6, y eso también lo tiene que tener en cuenta el controlador. Por eso decía que en estos casos, lo primero es modelizar el sistema y luego hacer los cálculos pertinentes para dar con la función adecuada, aunque como digo, con la más simple, que es la lineal, y un poco por tanteo para ajustar la constante, podría funcionar.
Luego está el tema de cómo comunicarlo con los sensores. Puede que más fácil que utilizar el lector de posición del anterior piloto (si no tienes documentación del interface, complicado) fuese comprar uno para el Arduino como el HMC5833L, que son cuatro perras. Si quieres que funcione como piloto de viento, habría que leer los datos del anemómetro por NMEA. Y luego para controlar la rueda, ahí ya me pierdo, pero hay que saber qué tipo de motor lleva (paso a paso, servo) y también necesitará un encoder para decirle al arduino en qué posición se encuentra.
Bueno, que me está saliendo un tratado... la verdad es que el tema es interesante, pero ya digo que es bastante más trabajo de lo que puede parecer a simple vista.
|