Introducción

Función de transferencia
Bienvenidos a este nuevo tutorial al cual lo he llamado Función de Transferencia: Cosas de niños :B, cuando estas en la carrera viendo modelado de sistemas o técnicas de control siempre oyes la función de transferencia por aquí y por acá pero no te enseñan como encontrarla, no teman, sus gritos de dolor y desesperación han sido escuchados y aquí les traigo su mejoral.
Ya sea que estes estudiando una carrera o simplemente por hobby este tema te va a resultar útil y hasta aquí llega la introducción, por lo general siempre pongo cosas al estilo de los "años maravillosos" pero con esta intro basta y sobra.

IMPORTANTE:

Este tutorial utiliza un microcontrolador y matlab, por lo tanto es necesario contar con el hardware necesario para programar el micro y el software matematico.


Teoria


Como en todo texto voy a empezar con la definición de lo que es una función de transferencia, tampoco es que vaya a poner cosas que no puedas encontrar en un libro, y tampoco es mi intención extenderme mucho en definiciones, así que si ya tienes idea de que se trata esto puedes saltarte esta sección y pasar directo a Hardware.

La función de transferencia o transfer function, es la relación entrada-salida del sistema o la planta, cabe aclarar que no se trata de la planta de los pies, ni las plantas del jardin (lo siento la tentación fue más fuerte que mi voluntad asi que lo tenia que poner).
Dicho de otra forma, la función de transferencia modela el comportamiento del sistema o la planta la cual debido a una entrada se obtiene una salida, y hasta ahí queda la definición formal de lo que es una función de transferencia o TF para los cuates.

Una vez cumplido el tramite de la definición ahora vamos a lo interezante,¿Y esto para que sirve?
La respuesta es "de todo y de nada a la vez", por parte del "todo", la TF es una ecuación que modela el comportamiento de la planta o sistema, por lo tanto, puedes conocer la respuesta a cualquier entrada, ahora por parte del "nada", no sirve de mucho sin control, igual y para unas cuantas aplicaciones muy definidas puedes utilizar la TF.

Por ahora solo me voy a centrar en obtener el modelo ya despues (en unos 10000 años) voy a subir un tutorial sobre control digital, pues bueno, esto seria todo por parte de la sección teoria, el objetivo real del projecto es como encontrar la TF y no dar definiciones o encontrar el sentido de la vida, asi ya podemos avanzar a la siguiente sección Hardware donde empezamos de lleno con el projecto.

Hardware


Para este proyecto voy a útilizar como planta un motor de CD que encontré en las siempre confiables chacharas, si por algún motivo te estas preguntando por el modelo del motor para salir a comprar uno, entonces ya empezamos mal, el modelo del motor es irrelevante, de echo esa es una de las ventajas de la TF, pero bueno en mi caso el motor tiene todavia su calcomania con las especificaciones:

  • Modelo: DGM-20--------
  • Fabricante: Toshiba
  • Voltaje: 23Vcd o tal vez 28Vcd
  • Corriente: 1.1Amp o tal vez 1.4Amp

Aquí una foto de lo que se alcanza a ver:

Calcomania motor X

¿No es una belleza?, en caso de que tu motor no tenga siquiera el remanente de la calcomania de especificaciones para encontrar el voltaje de operación empieza con 5V y ve subiendo gradualmente el voltaje hasta que sientas que se sobrecalienta, llegado a este punto disminuye unos cuantos volts y habras encontrado el punto de operación y por consiguiente la corriente que consume, solo recureda que a menor voltaje mayor corriente, por lo tanto procura tener una fuente que proporcione al menos 2A, algo basado en un LM317 o un LM2596 viene bien.

Ahora el siguiente paso es montar nuestro motor a.k.a planta en una estructura de tal forma que pueda mover un potenciometro de 10KΩ, como este proyecto es de bajo presupuesto voy a utilizar un potenciometro de carbón logaritmico, hay lineales, multivuelta o de vuelta infinita, pero esos ya salen del presupuesto, por cierto si tienes un estereo que ya no funcione en el dial puedes encontrar potenciometros de muy buena calidad, ahora ya lo sabes, para la próxima vez que salgas a pepenar si ves un estereo pregunta en cuanto lo venden y con surte te va a salir en unos cuantos pesitos, yo hasta el momento los que he encontrado me los venden como si todavia funcionara el aparato, en fin, aquí una foto de como me quedo:

Acoplamiento

Para la base utilize la tapa de un floppy de 3.5, para acoplar el eje del motor al potenciometro utilize unos engranes de plastico que encontré de unos juguetes lego y con unos cinturones de plastico fije el motor para que no se estuviera moviendo, el tornillo que se aprecia es mi indicador de posición pero como todavía no hago el tutorial de control por ahora es un simple adorno muy chulo.

Una vez que ya tenemos montado el motor con el potenciometro el siguiente paso es construir nuestro DAQ el cual se va a encargar de mandar los datos a matlab, en mi caso voy a utilizar un PIC16F1827 y un puente H L298N pero tu puedes utilizar cualquier micro y cualquier puente H, de echo si tienes un arduino estoy seguro que por internet debe de haber los diagramas y el firmware para que construyas tu DAQ.

Aquí les muestro como quedo el mio:

edx's DAQ

Como no hay presupuesto para el PCB quedo en una placa pre-preforada modelo: Steren 405

Basicamente lo que tiene que hacer su tarjeta es mover en un solo sentido el eje del motor durante una cierta cantidad de tiempo para que por medio del ADC del microcontrolador vaya leyendo los datos del potenciometro y luego enviarlos a la pc mediante la EUSART o cualquier otro modulo de comunicación serie o paralelo, ¿fácil no?, para controlar la cantidad de tiempo puedes utilizar contadores, do while, ciclos for o cualquier cosa que se te ocurra.

Esto sería todo en cuanto al hardware ahora vamos a la sección Matlab donde vamos a ver como utilizar todo para encontrar la función de transferencia.

Por si les intereza aquí les dejo el esquematico de mi DAQ, solo presionen sobre la imagen para descargarlo, este diagrama fue creado utilizando diptrace versión 3.0.0.2, el cual lo pueden descargar de la siguiente pagina: http://www.diptrace.com/

Esquematico: Esquematico DAQ

Lista de materiales:


• Microcontrolador (PIC16F1827)
• Puente H L298N
• Motor*
• Regulador de voltaje (LM7805)
• 4 Diodos de recuperación rapida (1N5819)
• 1 resistencia de 10 kΩ @ 1/4 watt
• 1 Push button
• 1 capacitor de tantalio 0.1µF
• 1 capacitor electrolitico de 47µF @ 50 Volts
• Disipador para el puente H y el regulador
• 9 terminales para circuito impreso
• Cables calibre 18-20AWG


Configuración de pines para el PIC16F1827:


• Pin2(RA3) ⇒ Entrada ADC
• Pin9(RB3) ⇒ EnableA puente H
• Pin10(RB4) ⇒ Input1 puente H
• Pin11(RB5) ⇒ Input2 puente H
• Pin7(RB1) ⇒ Rx
• Pin8(RB2) ⇒ Tx
• Pin4(RA5) ⇒ MCLR

*Motor:
• Motor de CD sin escobillas.

Matlab


Una vez construido nuestro DAQ ahora vamos a utilizar matlab y simulink para que nos de la TF de la planta, para este proyecto voy a utilizar la versión R2013b de matlab.

Importante: Debes de tener los toolboxes de system identification e Instrument control

De lo contrario no vas a poder continuar, pero no hay nada de que preocuparse, bien puedes pagar una licencia de matlab o bien .... guiño guiño si sabes a lo que me refiero.

Disclamer: edx-twin3.org ni ninguno de sus miembros apoyan al comercio informal ni ningun tipo de pirateria que no sea debidamente aprovada por la aduana fayuquera del pais en cuestión.

Listo con eso ya estoy blindado legalmente, en fin, continuando con el tema el primer paso es construir en simulink nuestro modelo de comunicación para obviamente comunicarnos con el DAQ.

Importante: Si utilizas un convertidor USB-UART primero conecta el modulo de lo contrario matlab no lo va a detectar.

No sé por que muchos programas tienen problemas con estos modulos, de echo tambien los bloques de simulink tienen problemas pero bueno, hagan lo mismos pasos y van a estar bien, si por el contrario estas utilizando un DB9 nativo de la PC no vas a tener ningún problema y puedes utilizar los bloques que mejor convinen con tu wallpaper.
Todos los bloques que voy a utilizar los puedes encontrar en el Instrument control toolbox y Sinks

Instrument control toolbox

Cogemos los siguientes bloques: Serial Configuraion, Serial Receiver, Scope, Out1 y un demux, una vez que los tengan los conectan de la siguiente manera.

Instrument control toolbox

Creo que cada bloque se explica por si solo, el serial configuration sirve para establecer los parametros de comunicación en este caso 9600:8:N:1 lo que es lo mismo velocidad: 9600bps, datos: 8 bits, paridad: ninguna, bit de parada: 1, el bloque receiver se encarga de recibir los datos del DAQ, el bloque scope grafica la entrada y Out1 guarda los datos en una matriz.
Si hicieron todo bien deberian ver la siguiente grafica, la cual corresponde al comportamiento del motor.

Grafica obtenida
Ahora en un nuevo archivo de simulink crean el siguiente modelo, el cual va a servir como la entrada al sistema, aquí tienen de dos sopas, pueden simular la entrada o pueden mandarla directamente al DAQ, en ambos casos estamos hablando de un escalón, yo por comodidad prefiero la entrada simulada así que ya queda a gusto de cada quien.

Modelo de entrada al sistema

La amplitud de la señal puede ser unitaria, Vcc o bien Vss, lo importante aquí es que debe de durar exactamente el tiempo que hayan tomado la muestras, en mi caso fue 1.5 segundos, por lo tanto la señal de entrada me queda de la siguiente manera.

Entrada al sistema

Una vez echo esto ya solo falta un último paso para conocer la TF del motor, ya pueden cerrar simulink ahora en matlab deben de tener cuatro archivos, a saber dos son yout.m e yout1.m y otro dos llamados tout.m y tout1.m, si tienen diferentes nombres esta bien grafiquenlos y deberian obtener las graficas anteriores, en dado caso de que no los tengan los mas seguro es que no conectaron bien el bloque OUT1 revisen bien sus modelos en dado caso de que todo este bien y sigan sin obtener estos archivos dejen un comentario en la sección de Comentarios y ya veremos cual pudiera ser el problema, ahora en matlab tecleamos ident
Les debe aparecer la siguiente ventana

Ident

Presionen sobre la pestaña Import data y seleccionen Time domain data

Ident

Les aparece la siguiente ventana:

Ident

La entrada (input) corresponde a la señal que obtuve del escalón unitario, en este caso renombre yout1.m a yin para no confundirlo, ahora la salida (output) corresponde a la señal obtenida mediante el DAQ Data name puede ser cualquier nombre, Starting time debe empezar en 0 o en el tiempo en el cual empezaste a graficar la señal, Sampling interval es el tiempo de muestreo, en mi caso es de 10ms.
Una vez que ya estan los datos presionan sobre Import, les debe aparecer su datos identificados con el nombre que le pusieron en la ventana anterior, por default se llama mydata

Ident

Ahora presionen sobre la pestaña Estimate y seleccionen Transfer Function Models

Ident

Les va aparecer la siguiente ventanita:

Ident

Para estimar la TF es necesario indicarle la cantidad de polos y zeros, aquí es cosa de prueba y error, empiezen con un numero elevado algo asi como 2,000,000 y empiezen a disminuir en multiplos primos o sea 0,1,3,5,7,13,17.... hasta que den con el valor exacto, en mi caso despues de 7 hrs los encontré y resultaron ser de los primeros numeros primos, así que dependiendo de su motor puede ser que no sean los mismo por lo tanto recomiendo que empiezen a buscarlos lo antes posible que esto urge.
Nah no se crean para cualquier motor es lo mismo, si quieren saber de donde salen estos valores entonces ponganse a estudiar, tampoco esperen que les de todo, pero como soy buena persona les voy a dar un norte, la siguiente ecuación corresponde a la TF de lazo abierto:

Ecuacion general motor

Y es por eso que son ceros zeros y tres polos, si les intereza en la universidad de michigan tienen buenos articulos sobre control y demas temas de interez social, cuenta con instalaciones de primer nivel y un ambiente universitario fuera de serie.
Este anuncio fue patrocinado por la universidad de michigan, despues del comercial regresamos a matlab que ya estamos a nada, entonces ya que saben que son 3 y 0 ahora le dan en Estimate

Resultado Ident

Una vez que termine de estimar la función de transferencia les va a mostrar un informe, en mi caso tengo una simulitud del 98.22%, si les sale mayor a esto quiere decir que lo hicieron todo mal y tienen que repetirlo todo desde el principio, les tiene que dar exactamente lo mismo que a mi, pero bueno, si les sale mayor pues que bueno pero si es menor del 90% yo les recomiendo que mejor vuelvan a tomar las mediciones hasta que obtengan cuanto menos un 95% de conconrdancia.
En la ventana principal deben ver ahora la TF que estimo llamada tf1 (circulo rojo):

Resultado Ident

Por último arrastren la TF (tf1) To Workspace

Resultado Ident

¡Listo! ya tenemos la función de trasnferencia de nuesto motor, para conocerla en matlab simplemente teclen tf1

Resultado Ident

Esta ecuación 3134/s^3+41.79s^2+962.7s+8722 es el modelo matematico de nuestro motor.
¿Alguna duda?, pues que bueno, de todas maneras en la siguiente sección pongo un video demostrando todo los pasos, por cierto antes de terminar con esta sección si creen que esta TF va a funcionar con un motor igual al que tengo (si es que acaso alguien sabe cual es) la verdad lo dudo, cada motor es diferente así que mejor encuentra la TF de tu motor.

Resultados y palabras finales


Aquí les dejo el video para que vean cual es la función del DAQ.
Funcionamiento del DAQ

Aquí les dejo el video donde se ven todos los pasos que deben seguir para encontrar la función de transferencia en matlab y simulink.

Como encontrar la función de transferencia de un motor de CD


Por último, este método puede ser utilizado con cualquier tipo de motor, al principio puede parecer que son muchos pasos a seguir pero realmente no, una vez que les salga bien, las demas veces va a ser pan comido.


Esto sería todo en cuanto este proyecto de Como encontrar la función de transferencia, espero les sea de utilidad, ahora salgan a comprar muchos motores, de todos tamaños, colores, con o sin caja de reducción, de metal o de plastico, voltajes, y RPM, y lo más importante, YA DEJEN ESE #@!.. celular en paz.
No se olviden de recomendar esta pagina en facebook, twitter, google plus o cualquier otra red social, foro, pagina web, o medio de comunicación, tambien pueden seguirme en twitter @edx_twin3 donde pongo las ultimas noticias sobre la página.
Como siempre cualquier duda, sugerencia, comentario, etc ...., la pueden enviar ya sea mediante la pagina de contacto, mediante correo electrónico edx@edx-twin3.org o utilizando la pestaña de Comentarios de este tutorial.
Por último pero no menos importante cualquier donativo es de gran ayuda para seguír haciendo tutoriales como este, gracias :1.

Comentarios, preguntas o sugerencias