Hola.
¡¡¡¡¡UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUY!!!!!, tenía mucho tiempo de no visitar este tema.
Sobre lo que dices:
Yo también tuve que hacer un PID para mi clase de sistemas lineales 2 y no es tan complicado hacerlo de manera analógica.
Si andas buscando un proyecto y te dan a escoger entre analógico o digital, te recomiendo la analógica. La digital introduce muchas variables que son algo complicadas de procesar.
Si lees la última nota de bibliografía te darás cuenta de lo que se necesita (de una manera muy sencilla) para implementar un PID en un robot, o un motor en este caso.
Te digo esto porque es mas fácil conectar de alguna manera un potenciómetro a un rotor de motor (por una pluma, goma, etc) que colocar un disco (encoder) en la llanta o rotor del motor, posicionar un par infrarrojo para que recoja la señal y "acomodar la señal" para introducirla al µicro. Eso es si quieres mucha resolución y te vas por lo de luz, te puedes ir por lo magnético y colocar sensores de efecto Hall y lo mismo que con lo de luz (pero pierdes algo de resolución).
Con lo analógico solo estás limitado a los grados/resistencia que tenga el potenciómetro (si es de posición) o a las vueltas por resistencia (si es de control de velocidad).
Si tienes el Ogata, por ahi hay un diagrama de lo que te menciono, un motor con sus conexiones para implementar un control.
Lo puedes hacer como la nota de aplicación de la µicrochip, donde miden la fuerza contraelectromotriz (o electromotriz, no recuerdo) del motor y ajustan RPM/FEM (o FCE).
La ventaja de hacerlo analógico (como todo lo analógico) es que tomas TODO el espacio muestral en tiempo ilimitado:
Lo digital recuerda que son muestras de una señal ya sea continua o discontinua (Series de Fourier si no recuerdo mal). Siempre perderás información de la señal y depende del tiempo de muestreo y cantidad de muestras en ese tiempo.
Si lo haces digital, tu programa debe estar ciclando toda la información y deberás considerar las muestras a tomar como el error, Kp, Kd, Ki, con sus correspondientes tratamientos digitales para cada situación (mira la última referencia en la bibliografía).
Si lo haces analógico no te preocupas por el tiempo de muestra porque siempre lo estás haciendo siempre y cuando el circuito esté alimentado.
Mira, no tengo código porque no me metí de lleno a esto (aparte estoy trabajando y estoy apunto de entrar a una maestría) asi que que no te puedo ayudar con código.
Quizá me meta ahora que regreso el gusanito.
Yo intenté sacar las características del motor que usé usando este libro:
Build your own combat robot, de Pete Miles.
Digo intenté porque no pude determinar la inductancia, no supe como.
Pero, si tienes interés y los medios, consíguete este:
Mobile Robotic Car Design, de Pushiko Kachoroo.
Este libro es
fa si nan te. Te dá todo lo que necesitas saber, cómo sacar la inductancia de un motor (ellos lo compran y rebobinan) todo de todo, gráficas de Matlab, diagramas de flujo, variables de estado, todo.
Lo malo es que usan un DSP de Motorola en C y apenas estoy comprendiendo C (C Primer Plus de Stephen Prata), pero también usan un PIC en ensamblador.
Lo mejor sería que te consiguieras un motor con sus caracteristicas (RPM sin y con carga, corriente máxima, mínima, constante de fuerza, de velocidad, todo) y lo utilizaras para diseñar el control, ya tendrías la planta. La función de transferencia de un motor no la recuerdo pero si ya tienes los valores solo la sustituyes.
Bueno, si te decides por lo analógico pues que te salga.
Si te decides por lo digital pues....... que te salga.
Si ocupas ayuda menciona qué y trataré de ayudar, aunque tengo 2 años de haber salido y mas de no utilizar Bode, Nyquist, Fourier, Laplace, y los demas locos que tormentan la vida del estudiante de ingeniería electrónica.