21
G.A.B.S. (GET ANOTHER BOE-BOT SELFBALANCED) NELSON LOMBARDO Resumen. El problema del péndulo invertido es un ejercicio clásico para el estudio de sistemas de control, en este caso se aborda el problema desde una aproximación utilizando un control PID en un Boe-Bot, logrando que el ro- bot pueda balancearse sobre sus dos ruedas. Este trabajo intenta sortear los inconvenientes de un hardware limitado, un sistema de control que necesita linealizar el problema a una región muy acotada, falta de fundamentos teóri- cos, pero con el objetivo de ser exitoso en la resolución del problema propuesto con los conocimientos adquiridos en otras materias de la carrera de Ingeniería Electrónica basándose en la flexibilidad que otorgan los microcontroladores y el boe-bot utilizado. Date: Noviembre de 2010. i

Gabs

Embed Size (px)

DESCRIPTION

G.A.B.S. (Get Another Boe-bot Selfbalanced)

Citation preview

Page 1: Gabs

GABS (GET ANOTHER BOE-BOT SELFBALANCED)

NELSON LOMBARDO

Resumen El problema del peacutendulo invertido es un ejercicio claacutesico para elestudio de sistemas de control en este caso se aborda el problema desde unaaproximacioacuten utilizando un control PID en un Boe-Bot logrando que el ro-bot pueda balancearse sobre sus dos ruedas Este trabajo intenta sortear losinconvenientes de un hardware limitado un sistema de control que necesitalinealizar el problema a una regioacuten muy acotada falta de fundamentos teoacuteri-cos pero con el objetivo de ser exitoso en la resolucioacuten del problema propuestocon los conocimientos adquiridos en otras materias de la carrera de IngenieriacuteaElectroacutenica basaacutendose en la flexibilidad que otorgan los microcontroladores yel boe-bot utilizado

Date Noviembre de 2010i

GABS (GET ANOTHER BOE-BOT SELFBALANCED) ii

Iacutendice

1 Introduccioacuten 111 Problema 112 Problema a resolver 113 Alcance 214 Objetivos 22 Marco teoacuterico 221 Peacutendulo claacutesico 222 PID 323 PID digital 424 Concepto PID en referencia al proyecto 425 Retrasos en sistemas de control basados en micropocesadores 53 Disentildeo metodoloacutegico 531 Eleccioacuten del control 532 Trabajo a realizar 633 Inconvenientes de la implementacioacuten 634 Diagrama de flujo del control PID digital 735 Ancho de pulso para el control y velocidad de los motores servo-

continuos 736 Obtencioacuten de los coeficientes de los teacuterminos PID 104 Materiales 1041 Software utilizado 1042 Plataforma roboacutetica 1143 Lenguaje de programacioacuten 135 Implementacioacuten 1451 Modificaciones al boe-bot 1452 Sensor de distancia 1453 Alimentacioacuten eleacutectrica 1454 Posicioacuten de equilibrio natural del boe-bot 1555 Transferencia de los programas 1556 Programa para el stamp BS2 156 Resultados 1761 Trabajo observado 1762 Aceptacioacuten 177 Conclusioacuten 188 Trabajo a futuro 18Iacutendice de figuras 18Referencias 19Revisioacuten 19

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 1

1 Introduccioacuten

11 Problema Este sistema constituye un caso concreto de un sistema fiacutesicoen el que se ponen de manifiesto importantes problemas lo que ha hecho de eacutel unbanco de pruebas1 para sistemas de control

El intereacutes en el estudio de este tipo de sistema radica en que salvando las partic-ularidades de cada caso su modelo matemaacutetico presenta una formulacioacuten basadaen ecuaciones diferenciales que guarda cierta analogiacutea con procesos reales de mayorcomplejidad como por ejemplo el generador sincroacutenico conectado a un bus infinitoy el sistema de control de vuelo para aeronaves etc Por tanto su estudio sirvecomo una primera aproximacioacuten a los problemas que plantean sistemas de mayorcomplejidad

El control del peacutendulo invertido presenta una enorme variedad de problemas quehan hecho de eacutel uno de los sistemas concretos para el ensayo de leyes de controlmaacutes analizados en estos uacuteltimos tiempos Los primeros peacutendulos invertidos se con-struyeron en los antildeos 70 y auacuten hoy treinta antildeos despueacutes se sigue experimentandocon el peacutendulo invertido y tratando de analizarlo desde un punto de vista teoacuterico Esnotable que despueacutes de tantos antildeos auacuten no se haya conseguido un estudio unitarioy satisfactorio de dicho problema

En el control del peacutendulo invertido se presentan baacutesicamente dos problemasel problema de la estabilidad local en torno a la posicioacuten de equilibrio que esanaacutelogo al problema del malabarista que pretende mantener un palo en la puntade un dedo y el problema de levantar el peacutendulo desde su posicioacuten de reposo hastala posicioacuten en la que se mantiene erguido hacia arriba Este uacuteltimo problema seconoce con su denominacioacuten inglesa de problema del swing up El primero de losproblemas el de la estabilizacioacuten local puede resolverse satisfactoriamente mediantela legalizacioacuten en torno a la posicioacuten de equilibrio Sin embargo la ley de control asiacuteobtenida tiene un caraacutecter exclusivamente local Para perturbaciones de una ciertamagnitud el control del peacutendulo se pierde En el problema del swing up es necesarioconsiderar todo el espacio de estados de modo que el problema no puede abordarsecon una perspectiva local Se trata por tanto de un problema al que se aplican lasconsideraciones realizadas a lo largo de este capiacutetulo relativas a la imposibilidadde linealizar el sistema y de tratarlo exclusivamente en forma local El problemadel swing up es por su propia naturaleza un problema no lineal que se desenvuelveen una amplia regioacuten del espacio y que por tanto no admite una reduccioacuten localy hay que abordarlo con toda la problemaacutetica inherente a su globalidad y a suno linealidad Por uacuteltimo para terminar esta seccioacuten sobre el problema de controldel peacutendulo invertido conviene resaltar que se puede considerar como un problemaarquetipo de lo que es la ingenieriacutea No existe un meacutetodo universal para resolverloy ante eacutel el ingeniero tiene que desarrollar sus facultades imaginativas y creativascombinando diferentes meacutetodos para resolver los distintos aspectos del complejoproblema que representa el control de este sistema aparentemente simple pero enrealidad muy complejo en sus formas de comportamiento

12 Problema a resolver Al comenzar con el proyecto existieron varios in-convenientes Uno de ellos fue implementar un sensor para obtener el aacutengulo dela varilla Para que el proyecto no se estancaraacute y nunca lograr hacerlo andar secomenzoacute a trabajar en un problema derivado que el robot pudiera mantener elequilibrio sobre sus ruedas buscando una posicioacuten vertical En la figura 11 pode-mos ver el boe-bot y el tipo de problema que se busco solucionar Como se dijoantes la solucioacuten al peacutendulo claacutesico admite problemas de la misma naturaleza

1Benchmark

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 2

Figura 11 Posicioacuten de equilibrio del boe-bot self-balanced

13 Alcance Este trabajo resuelve un problema similar al del peacutendulo invertidoclaacutesico en una pequentildea regioacuten lineal alrededor del punto de seteo utilizando comoestrategia de control un algoritmo PID empiacuterico y un boebot como plataforma parael proyecto

El proyecto se basa fuertemente en la administracioacuten conceptual del problema yde la implementacioacuten basaacutendose en la flexibilidad que otorga la programacioacuten engeneral

14 Objetivos Intentar realizar un estudio sobre el problema del peacutendulo inver-tido utilizando para su implementacioacuten un boe-bot como la base para la instalacioacutendel problema

En la primera parte se estudia el problema de forma teoacuterica y se aprecia losinconvenientes que se tiene Luego en base a esto se define una estrategia de controlpara la solucioacuten del problema y se trabaja en ella

En una segunda parte se decide hacer la implementacioacuten basaacutendose en un controlPID empiacuterico En esta parte se trabaja fuertemente en la obtencioacuten de un programaque permite correr el control PID eliminando la mayor cantidad de inconvenientesposibles y posibilitando una exitosa solucioacuten en torno a la buacutesqueda de la posicioacutende seteo

2 Marco teoacuterico

21 Peacutendulo claacutesico En la figura 21 podemos observar las fuerzas que inter-vienen en el sistema de peacutendulo invertido claacutesico Donde

M masa del carrom masa del peacutenduloBc friccioacuten del carroBv friccioacuten del peacutenduloL longitud al centro de masa del peacutenduloI inercia del peacutendulo

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 3

Figura 21 Diagrama de fuerzas que actuacutean sobre el peacutenduloinvertido claacutesico

F fuerza aplicada al carroX coordenadas de posicioacuten del carroΘ aacutengulo del peacutendulo respecto de la vertical

Para obtener la ecuacioacuten que describe el movimiento del peacutendulo sumamos lasfuerzas perpendiculares al peacutendulo Si resolvemos el sistema a lo largo de esteeje nos ahorramos un montoacuten de aacutelgebra De esta forma obtenemos la siguienteecuacioacuten

P sin (θ) +N cos (θ)minusmg sin (θ) = mx cos (θ) + Frv

Aquiacute es donde realizamos un anaacutelisis de nuestro contexto Existe mucha bibli-ografiacutea y (ya lo he dicho) muchos sistemas que se basan en la teoriacutea del peacutenduloinvertido Puesto que las soluciones a este sistema son ldquocomplicadasrdquo y no son uacuteni-cas se propone entender que tenemos hasta el momento y buscamos comprenderestrategias alternativas maacutes amigables

22 PID En la figura 22 se puede observar el diagrama de flujo que representaun controlador PID En primer lugar existe un setpoint que es ingresado por elusuario la diferencia entre eacutel y la salida nos da un error (e(t)) momento a momentoEl error se procesa para obtener la correccioacuten a la salida el primer caacutelculo esel proporcional tambieacuten denominado ganancia y baacutesicamente actuacutea directamentesobre la salida proporcionalmente al error

Luego existe la contribucioacuten de la parte integral a veces llamada reset Esta esproporcional a la magnitud del error como asiacute del tiempo de duracioacuten del mismoSumando el error a cada momento (integrando el error) acumulamos el offset2 quese fue corrigiendo previamente El teacutermino integral trabajando con el teacutermino pro-porcional acelera la llegada del proceso al setpoint y elimina los errores residualesque provoca el control proporcional El problema resulta cuando una acumulacioacutenimportante del error provoca un desborde de la respuesta

Por uacuteltimo el teacutermino derivativo trabaja sobre la razoacuten de cambio del error sobreel tiempo Este teacutermino a veces denominado tambieacuten rate contribuye a anticiparel posible error futuro y actuar en consecuencia El inconveniente radica en que deexistir mediciones espurias el aporte puede llevar a una oscilacioacuten sobre el sistema

El control PID trabaja gracias a tres teacuterminos el proporcional (P) el integral(I) y el derivativo (D) Estos tienen la siguiente forma matemaacutetica

P = kp lowast e(t)

2Corrimiento desviacioacuten entre el setpoint ideal y el setpoint real

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 4

Figura 22 Diagrama de flujo del control PID

I = ki lowastτint

0

e(t)dt

D = kd lowastde(t)

dtSi bien estas definiciones son correctas son poco praacutecticas en nuestro caso

23 PID digital Para ello tomaremos en cuenta que nuestro control es digital

P = kp lowast e[n]

I = ki lowast (e[n] + e[nminus 1] + + e[nminusN ]) lowast∆t lowastN

D = kd lowaste[n]minus e[nminus 1]

∆tDonde

e[n] es el error actual en el tiempo discretoe[nminus1] es el error en el tiempo discreto que se obtuvo antes del error actuale[nminusN ] es el error en el tiempo discreto que se obtuvo ene3 veces antes delerror actualN es la cantidad de momentos desde que el sistema comenzoacute a funcionarhasta llegar al momento actual∆t es el tiempo que existe entre los momentos discreto

24 Concepto PID en referencia al proyecto El PID resulta ser de vitalimportancia al momento de poder abstraer el problema aunque posee limitacionescomo todo sistema de control El PID puede ldquoverrdquo a nuestro sistema como soacutelo unaentrada un proceso y una devolucioacuten y trabajar para lograr que la devolucioacuten selo maacutes parecida posible a la entrada

En el caso del robot equilibrista este sistema es inestable por naturaleza comoel peacutendulo invertido El PID ldquodesconocerdquo esta inestabilidad4 y soacutelo busca corregirla desviacioacuten que se produce en el sistema En este caso particular intenta llevar ala posicioacuten deseada (la de equilibrio natural del cuerpo del boe-bot vertical la cualseteamos) En este caso no debemos olvidarnos que esto es aplicable a respuestaslineales por lo tanto aacutengulo dentro del cual puede trabajar es limitado pero tal vessuficiente

3Desde que el sistema comenzoacute a funcionar en el momento cero4Es una de las formas de actuar en la implementacioacuten

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 5

25 Retrasos en sistemas de control basados en micropocesadores Ademaacutesde la longitud de palabra finita los microprocesadores5 son maacutequinas de caacutelculo dig-ital relativamente lentos En muchas aplicaciones de coacutemputo digital tal vez la bajavelocidad de coacutemputo no tenga importancia sin embargo en aplicaciones de sis-temas de control a menudo es necesario el caacutelculo en tiempo real y los retrasosencontrados en el manejo de los datos pueden tener efectos significativos sobre eldesempentildeo del sistema En general es importante saber cuaacuten grandes son estosretrasos a fin de tratar con ellos de manera analiacutetica Cabe atribuir dos problemasinmediatos a los retrasos en los sistemas de control Uno es que si el retraso es muygrande no hay tiempo suficiente para llevar a cabo todos los caacutelculos necesariosa fin de ejecutar los algoritmos de control el otro es el efecto adverso del retrasosobre la estabilidad de los sistemas de control a lazo cerrado

Cada programa estaacute formado por un conjunto de instrucciones y cada una re-quiere un determinado nuacutemero de estados de la maacutequina El tiempo necesario paraque el microprocesador ejecute una instruccioacuten en particular es directamente pro-porcional al nuacutemero total de estados de la maacutequina por los que debe pasar elmicroprocesador a fin de completar la instruccioacuten por ejemplo para el interpretedel BS2 del boe-bot ser requiere un tiempo por instruccioacuten de

1[s]4000[inst] = 250micros

Esto permite que el ldquocerebrordquo BS2 pase por 2000 instrucciones por segundoSi bien puede parecer bastante a comparacioacuten de nuestra labor el programa maacutessencillo requiere de miles de estado de la maacutequina puesto que cada instruccioacutende pbasic se debe decodificar a lenguaje maacutequina y a su vez cada instruccioacuten delenguaje maacutequina a microinstrucciones

Es un echo bien conocido que los retrasos son a menudo causa de inestabili-dad en sistemas de lazo cerrado digitales o continuos es esencial considerar estascondiciones imperfectas cuando se disentildea un sistema de control digital

3 Disentildeo metodoloacutegico

31 Eleccioacuten del control Determinados a resolver el problema como se noshabiacutea pedido en la caacutetedra se opta por enumerar las dificultades

No conozco las constante del motorFalta de conocimiento y preparacioacuten formal sobre sistemas de controlControl digital de un sistema analoacutegicoLimitaciones de procesamiento por parte del ldquocerebrordquo del robotFalta de tiempo principalmente impuestas por el comienzo del proyectoluego del primer cuatrimestre de cursado y la cantidad de proyectos anexosa las demaacutes materias del mismo antildeoAcceso a internet limitadoFalta total de experiencia en el uso de este robotGrupo de trabajo de una persona

Esto llevo a tomar la decisioacuten sobre el tipo de estrategia Basaacutendome en los in-convenientes anteriores decidiacute que programar un controlador PID seriacutea la mejorsolucioacuten Algunas de las ventajas

Puede utilizarse de forma de abstraer el problema base y asiacute disminuir draacutes-ticamente la complejidad del sistema a resolver Puede llegar a funcionar aldquoprueba de conceptordquo

5Y los microcontroladores en especial

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 6

Aunque es necesario hallar los coeficientes de los teacuterminos PID no estaestrictamente ligado a modelos complicados y se puede utilizar un seteoempiacutericoEsta estrategia es bastante utilizada y se hallan muchos proyectos de difer-ente iacutendole que asiacute lo demuestran

Algunos de los inconvenientes maacutes importantes que poseeAunque el seteo de los coeficientes pueden obtenerse en base a la experienciay de ciertas pruebas de interpretacioacuten no siempre es factible hallarlos asiacuteExisten algunos inconvenientes derivados de los sobreimpulsos como elwindupLas oscilaciones del control no estaacuten exentas de desaparecer y hasta puedenincrementarse por una mala actuacioacuten del teacutermino derivativoNo todos los problemas pueden solucionarse por medio de este control

32 Trabajo a realizarEntender las limitaciones de velocidad de procesamiento del ldquocerebrordquo delrobotEstablecer un control proporcional y mejorar el mismo refinando su com-portamientoComprender los inconvenientes que apareja controlar un sistema analoacutegicoa traveacutes de un control digitalEscribir el control PID completo

33 Inconvenientes de la implementacioacuten

331 Optimizacioacuten Uno de los mayores problemas es escribir un coacutedigo capazde ser modular simple efectivo y que este optimizado para el procesamiento delmismo

Uno de los factores determinantes en la respuesta del control sobre el robot esla comunicacioacuten con la PC En este caso existen dos limitantes el primero es labaja frecuencia de procesamiento de las instrucciones de pbasic en el cerebro a loque se le suma los tiempos que requiere la comunicacioacuten con la PC Una de lasinstrucciones a eliminar definitivamente es DEBUG esta instrucciones permitenvisualizar en el PC ciertos datos que se pueden configurar esto es un consumoexcesivo de tiempo

El ldquotamantildeordquo de las variables el tipo de variable puede contener longitudes ade-cuadas pero al utilizarlas discriminando el signo acorta a la mitad la longitud loque genera otro problema Se debe cuidar el tipo de variable a asignar

332 Signado El interprete del boe-bot aunque trabaje a un ldquoaltordquo nivel noslimita en el uso de signado de las variables La mejor solucioacuten es generar unaescritura del coacutedigo tipo aacuterbol balanceado que aunque parezca no muy modularestablece una peacuterdida de tiempo miacutenima en comparacioacuten a la cantidad de coacutedigoque se escribioacute

333 Windup Uno de los problemas comunes resultantes de las implementa-ciones del control PID es el windup Este efecto indeseable sucede cuando se daun corrimiento muy grande del punto de seteo entonces el termino integral acu-mula un error significativamente grande que se convierte en una sobrecarga en larealimentacioacuten lo que produce un mayor error provocando asiacute en un incrementoincontrolado de la parte integral

Existen algunas teacutecnicas para corregir estoInicializar el teacutermino integral en un valor conocidoIncrementar el punto de seteo de forma lineal

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 7

Figura 31 Diagrama simplificado del programa

Deshabilitar el control integral cuando el sistema se encuentre en la regioacutenmaacutes linealLimitar el tiempo que se dedica para el caacutelculo del teacutermino integralLimitar los valores que puede alcanzar el teacutermino reduciendo asiacute los ldquore-botesrdquo

334 Debug Lamentablemente al experiencia nos determino que utilizar la in-struccioacuten DEBUG no es una opcioacuten para depurar los errores o comprender algunosde los estados por los que pasa el sistema por lo que hay que valerse de las expe-riencias que se conocen sobre este tipo de sistemas y realizar las interpretacionesque vengan al caso

34 Diagrama de flujo del control PID digital Una de las mejores manerasde abordar el desarrollo de un programa es realizando un diagrama de flujo El puntode partida fue baacutesico pero necesario y lo apreciamos en la figura 31

Se debe utilizar una cantidad miacutenima de variables pero sin dejar de ser lo suficien-temente coacutemodo el programa para su modificacioacuten El programa principal adoptala forma de la figura 32

Se utilizan tres rutinas las cuales pueden ser estudiadas de las figuras 33 34 y35

La rutina de medicioacuten establece los requerimientos desde el punto de vista delboe-bot y la utilizacioacuten del sensor que en nuestro caso seraacute el moacutedulo QTI6

La seccioacuten de caacutelculo representa lo escrito en 23 pero teniendo en cuenta quela parte integral soacutelo ldquointegraraacuterdquo en el modelo de aproximacioacuten por rectaacutengulosel momento actual y dos momentos anteriores El tiempo es representativo deltiempo que toma en el coacutedigo final pasar de realizar todos los caacutelculos a comenzara realizarlos

La rutina de modulacioacuten soacutelo hace referencia a el enviacuteo del impulso necesariopara mover el boe-bot en sentido de buscar el equilibrio En 35 se trata sobre estetema

35 Ancho de pulso para el control y velocidad de los motores servo-continuos Supongamos que se necesita mover el boe-bot a maacutexima velocidadentonces uno de los motores debe girar en sentido horario a velocidad maacutexima y elotro en sentido antihorario por lo tanto de lo que se observa en las figuras 36 y37

6Nuacutemero de parte 555-27401 para el pedido en parallax

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 8

Figura 32 Diagrama de flujo del programa principal

Figura 33 Rutina de medicioacuten

17ms = 2micros lowast rigth

rigth = 17ms2micros = 850

13ms = 2micros lowast left

left = 13ms2micros = 650

Procedemos a utilizar estos valores en pbasic a traveacutes de la instruccioacutenPULSOUT Pin Duracioacuten

Donde

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 9

Figura 34 Rutina de caacutelculos

Figura 35 Rutina de modulacioacuten

Figura 36 Un tren de pulsos de 13 ms hace rotar el servo amaacutexima velocidad en sentido de las agujas del reloj

Figura 37 Un tren de pulsos de 17 ms hace rotar el servo amaacutexima velocidad en sentido contrario al de las agujas del reloj

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 10

Paraacutemetro Tiempo subida Sobreimpulso Tiempo seteado Error de estadiacutea Estabilidad

kp Decrece Se incrementa Cambio Decrece Se degradapequentildeo

ki Decrece Se incrementa Se incrementa Decrece Se degradasignificativamente

kd Decrece Decrece Decrece No tiene efecto Mejora simiacutenimamente miacutenimamente miacutenimamente en teoriacutea kd es pequentildeo

Cuadro 1 Efectos de incrementar cada paraacutemetro independientemente

Pin Es la variable o constante que indica el pin entradasalida a donde sedirige el pulsoDuracioacuten Es la relacioacuten entrel el pulso que queremos y los 2micros7

351 Impulso cero de los motores Al utilizar la Duracioacuten del PULSOUT en 750los motores quedan estaticos Existe el procedimiento descripto en el manual deboe-bot para esto

36 Obtencioacuten de los coeficientes de los teacuterminos PID Existen muchasformas de obtener los coeficientes Una excelente referencia inicial es los descriptoen el artiacuteculo de wikipedia que podemos hallar en el texto 1 de la bibliografiacutea

En este proyecto se opto por la configuracioacuten manual puesto que esto es muyrelativo se propone buscar sobre este puesto que tal vez puede ser confuso comolograrlo Por lo pronto el texto antes recomendado fue el utilizado para el trabajoUna raacutepida diferencia es la del cuadro 1

361 Procedimiento manual Si el sistema debe estar corriendo primero debemosponer kd y ki a cero Incrementar kp hasta que la salida del lazo comience a oscilarentonces kp debe setearse aproximadamente a la mitad de valor para la cual larepuesta decayoacute un cuarto Se incrementar ki hasta que se pueda corregir el offsetde la respuesta del sistema Sin embargo aumentar demasiado ki puede causarinestabilidad Finalmente se incrementa kd hasta que el lazo tengo una respuestaaceptablemente raacutepida a los impulsos imprevistos Si se incrementa mucho kd puedecausar una respuesta excesiva y sobre impulso perdiendo asiacute la estabilidad Un lazoPID bien seteado usualmente no trabaja tan raacutepido a los impulsos no previstos paradar lugar a una buacutesqueda raacutepida del punto de seteo

4 Materiales

41 Software utilizado

411 Procesador de texto Para ir documentando y realizar este informe sobreel proyecto se decidioacute utilizar un procesador de texto Las ventajas del mismo sonla optimizacioacuten de la presentacioacuten para documentos estaacutendares y poco o nada deinteraccioacuten con el formateo del mismo De gran utilidad para este proyecto Seutilizo el software LYX en su versioacuten 155 el cual es software de licencia GPL comoasiacute gratuito El sitio oficial es httpwwwlyxorg

412 Graficador de diagramas Para la realizacioacuten de los diferentes diagramas seutilizo un graficador de diagramas estructurados llamado DIA en su versioacuten 0961Este software esta tambieacuten amparado bajo la GPL y es de distribucioacuten gratuita Elsitio oficial es httpwwwgnomeorgprojectsdia

7Este valor es el especificado para un BS2

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 11

Figura 41 Boe-bot

413 Entorno de desarrollo Respecto al entorno se intento trabajar con alter-nativas al entorno oficial del que nos otorga la compantildeiacutea Parallax (quien desarrollael boe bot) pero existen pocas opciones y no se teniacutean las libreriacuteas para la compi-lacioacuten Se decidioacute utilizar directamente el IDE Basic Stamp versioacuten 25 de coacutedigopropietario y distribucioacuten gratuita Para la descarga buscar en el sitio oficial de laempresa httpwwwparallaxcom

414 Adaptacioacuten a un sistema GNULinux Para poder utilizar el IDE de paral-lax sobre un sistema GNULinux se utilizo el software WinE (Windows Emulator)en su versioacuten 101-174-gc4039bd El sitio oficial de este proyecto de licencia GPLy distribucioacuten gratuita es httpwwwwinehqorg

42 Plataforma roboacutetica La plataforma donde se implemento el proyecto es elrobot boe-bot (figura 41) producido por la compantildeiacutea Parallax Se decidioacute utilizarel mismo porque habiacutea sido una adquisicioacuten reciente del departamento de elec-troacutenica en la Universidad y ninguacuten equipo de trabajo estaba utilizaacutendolo Ademaacutessu sensillez y facilidad de transferencia del programa lo hace ideal para trabajosexperimentales

Componentes activos de la plataforma

421 Parallax (Futaba) Continuous Rotation ServoRotacioacuten continua bidireccional de 0 a 50 RPM con respuesta linear alcontrol PWM para una faacutecil rampa

bull Requerimientos de tensioacuten de 4 a 6 Vdcbull Comunicacioacuten PWMbull Dimensiones 558 x 19 x 406 mmbull Rango de temperatura operativa -10 a +50 degC

422 Motherboard En la figura 42 se encuentra el motherboard del boebot Acontinuacioacuten una pequentildea descripcioacuten

1 Conector para una pila de 9 voltios2 Condensadores del filtro del regulador de voltaje de 5 voltios en corriente

continua

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 12

Figura 42 Tarjeta electroacutenica del boe-bot

3 Conector del puerto serieusb para la comunicacioacuten con el ordenador4 Zoacutecalo de 24 pines para insertar el moacutedulo BASIC Stamp5 Pulsador para reiniciar el programa cargado en el Boe-Bot6 Interruptor de tres posiciones En la posicioacuten 0 el Boe-Bot estaacute desconecta-

do en la posicioacuten 1 el Boe-Bot estaacute conectado pero los servomotores quemueven las ruedas estaacuten desconectados y en la posicioacuten 2 tanto el Boe-Botcomo los servos estaacuten conectados

7 LED verde que nos indica que el Boe-Bot estaacute encendido8 Conector de las entradassalidas del microcontrolador BASIC Stamp para

su uso en la placa protoboard situada a continuacioacuten9 Placa protoboard para el montaje de los componentes electroacutenicos necesar-

ios para los sensores e indicadores luminosos o acuacutesticos10 Conector de alimentacioacuten Los cinco primeros pines (Vdd) proporcionan una

tensioacuten positiva de 5 voltios los tres siguientes (Vin) una tensioacuten positivadel voltaje que proporcionen las pilas o el adaptador de corriente (6 - 9voltios) y los cinco uacuteltimos (Vss) proporcionan la masa el polo negativo auna tensioacuten de 0 voltios

11 Conectores para cuatro servomotores asociados a las salidas P12 P13 P14y P15

12 Jumper para la seleccioacuten de la alimentacioacuten de los servomotores seguacuten serealice mediante el portapilas de 6 voltios del Boe-Bot o mediante un adap-tador de corriente exterior

13 Regulador de voltaje que proporciona a los circuitos electroacutenicos 5 voltiospositivos (Vdd) y la masa (Vss)

14 Conector para tarjetas de ampliacioacuten Permite conectar las 16 entradassalidasde la P0 a la P15 y los pines de la alimentacioacuten Vdd Vin y Vss

15 Conector para el portapilas de 6 voltios o el adaptador de corriente exteriorde 6 - 9 voltios La varilla central de 21 miliacutemetros corresponde al polopositivo

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 13

Figura 43 BS2 uno de los ldquocerebrosrdquo del boebot

423 Cerebro BS2 En la siguiente enumeracioacuten se describen los componentesque se hallan en el ldquocerebrordquo BS2 del boebot utilizado lo que se puede apreciar enla figura 43

1 Cuatro pines para la comunicacioacuten con el ordenador mediante el puertoserie

2 Memoria EEPROM de una capacidad de 2K en donde se almacena el coacutedigofuente del programa editado en PBASIC

3 Condensador del filtro del regulador de voltaje de 5 voltios4 Ocho pines de las entradassalidas desde la P0 hasta la P75 Microcontrolador PIC16C57C que actuacutea de interprete del lenguaje PBA-

SIC ejecutando el programa a una velocidad de 4000 instrucciones porsegundo

6 Ocho pines de las entradassalidas desde la P8 hasta la P157 Oscilador de cuarzo de 20 megahercios para proporcionar la frecuencia al

reloj interno8 Pin de alimentacioacuten de 5 voltios positivos (Vcc)9 Regulador de voltaje que estabiliza la tensioacuten desde los 6 - 9 voltios de la

alimentacioacuten a los 5 voltios utilizados por los circuitos electroacutenicos10 Pin para reiniciar el programa11 Dos pines de alimentacioacuten a la tensioacuten de 6 - 9 voltios (Vin) y la masa

(Vss)12 Detector de la tensioacuten de alimentacioacuten del moacutedulo BASIC Stamp13 Circuito de gestioacuten de la comunicacioacuten mediante el puerto serieusb

43 Lenguaje de programacioacuten El boe-bot utiliza un interprete para su pro-gramacioacuten basado en el lenguaje pbasic Este lenguaje es muy similar al Basiclo que le agrega mucho facilidad a la programacioacuten de estos equipos limitados enprocesamiento La referencia para utilizar este lenguaje esta totalmente documen-tada por parallax en el texto 5 que se halla en la bibliografiacutea utilizada

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 14

Figura 51 Modificaciones al boe-bot posicioacuten del moacutedulo QTI

5 Implementacioacuten

51 Modificaciones al boe-bot La uacutenica modificacioacuten que se realizo al boe-bot claacutesico es la inversioacuten de la posicioacuten fiacutesica de los servos para que el cuerpo delboe-bot pudiera adoptar la posicioacuten vertical de la figura 11 libremente Esto puedeapreciarse en la figura 51

52 Sensor de distancia El moacutedulo QTI esta disentildeado para la deteccioacuten cer-cana infrarroja El corazoacuten de este moacutedulo es el QRD1114 que es un sensor reflectivode objetos Utiliza un diodo emisor infrarrojo y un phototransistor BJT El moacute-dulo esta disentildeado para utilizarse con la funcioacuten RCTIME que posee la siguientesintaxis

RCTIME Pin State VariableDonde

Pin es alguna de las entradassalidas del puertoState es una constante que puede adoptar el valor 1 o 0 loacutegicosVariable es justamente el registro en memoria donde queremos almacenarel resultado

Esta funcioacuten mide el tiempo que le toma llegar al estado definido en State Usual-mente se utiliza para medir el tiempo de carga o descarga de un circuito RC

En nuestro caso la utilizamos para obtener una ldquomedidardquo de la distancias entreel sensor y la superficie donde esta haciendo equilibrio el robot

La posicioacuten que se adopto para el sensor fue en la parte inferior del boe-bot a nomaacutes de 1 cm de la superficie con una distancia al eje de pivoteo (eje de las ruedas)de no maacutes de 15cm

La conexioacuten de este sensor es muy sencilla el pin W del moacutedulo se conecta a unode los pines de alimentacioacuten del motherboard del robot el pin B al gnd que otorgala placa y el R a una de las entradassalidas del puerto de trabajo que deseemosen nuestro caso utilizamos el 5 Para una mayor comprensioacuten referirse a la figura51

53 Alimentacioacuten eleacutectrica Se elimino el porta pila del boe-bot y se utilizoalimentacioacuten externa con una fuente de voltaje regulable de 3A como maacuteximo tra-bajando a 9V Para no producir una invasioacuten al sistema la alimentacioacuten se hizoa traveacutes de cables muy finos y maneables en una posicioacuten relajada por encima de

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 15

la altura del boe-bot y con el largo suficiente para que el mismo se pudiera moverlibremente

54 Posicioacuten de equilibrio natural del boe-bot Para encontrar la posicioacutende equilibrio se utilizo la siguiente metodologiacutea

Se escribioacute un programa que iba mostrando en la pantalla de debug del IDEla medicioacuten de la distancia del sensor a la superficieManualmente se adoptaba la posicioacuten para la cual se notaba el equilibriodel robotSe anota el valor y se utiliza luego en el programa de control

Todo el trabajo previamente descripto derivo en este programa escrito para tal finfue

rsquo $STAMP BS2rsquo $PBASIC 25front VAR WordDO

HIGH 5RCTIME 51frontPAUSE 1000DEBUG front

LOOP

55 Transferencia de los programas Utilizando el IDE es muy sencillopuesto que posee un herramienta para ldquocorrer el programardquo y lo transfiere al boe-bot por medio del puerto USB como tambieacuten puede ser a traveacutes del puerto serialo una combinacioacuten de los mismos La configuracioacuten es muy sencilla y no requieremucho maacutes esfuerzo

56 Programa para el stamp BS2 El siguiente es el programa definitivo es-crito para controlar la posicioacuten de equilibrio vertical del boe-bot

rsquo $STAMP BS2

rsquo $PBASIC 25

rsquo Licensed under GPLv2 o higher

rsquoBS2 Mapa de las entsal usadas

rsquoP3 Sensor de distancia frontal

Leftservo CON 12 rsquoP12 Servo izquierdo

Rightservo CON 13 rsquoP13 Servo derecho

front VAR Word rsquoDistancia que mide el sensor de contraste

pulseLeft VAR Word rsquoVariable que enviacutea el ancho del pulso al motor izquierdo

pulseRight VAR Word rsquoVariable que enviacutea el ancho del pulso al motor derecho

pulseZero CON 750 rsquoEste es el pulso para el cuacuteal los motores no giran

setpoint VAR Word rsquoEste dato es el setpoint del control PID

kp CON 199100 rsquoValor de la constante de proporcional utilizada

ki CON 399100 rsquoValor de la constante de integracioacuten utilizada

kd CON 190100 rsquoValor de la constante del teacutermino derivativo utilizada

error VAR Word rsquoAlmacena el error que se va obteniendo

p VAR Word rsquoSe almacena el ancho del pulso a sumar al estado estacionario

offsetf VAR Word rsquoDesplaza la medicioacuten de la distancia

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 16

sum1 VAR Word rsquoRepresenta el error anterior al actual

sum2 VAR Word rsquoRepresenta el error anterior al anterior del actual

integrate VAR Word rsquoTeacutermino integral

derivate VAR Word rsquoTeacutermino derivativo

time CON 2510000 rsquoTiempo estimativo entre la obtencioacuten de cada teacutermino

rsquo------Comienzo del programa principal-------

rsquo Incializacioacuten de las variables

offset = pulseZero

sum1 = 0

sum2 = 0

offsetf = 0

PAUSE 2000 rsquoPausa de 2 segundos

SetPoint = 170 rsquoSeteo manual de la posicioacuten a buscar

offsetf = SetPoint

DO rsquoBucle del programa principal

GOSUB Measure rsquoMedicioacuten de la distancia

GOSUB PID rsquoAlgoritmo de control PID

GOSUB Send_Pulse rsquoModulacioacuten de pulso en los motores

LOOP

rsquo-------Subrutinas--------

PID

IF (front ltsetpoint) THEN rsquoHay que revisar el signo y actuar seguacuten para la correccioacuten

error = setpoint - front

integrate = (sum1 + sum2 - error) time 3 rsquoTeacutermino integral

IF error gtsum1 THEN rsquoRevisamos el signo y calculamos el teacutermino derivativo

derivate = (error - sum1) time rsquoEl teacutermino derivativo es en realidad la secante miacutenima

que podemos hallar

ELSE

derivate = (sum1 - error) time

ENDIF

p = error kp + integrate ki + derivate kd rsquoControl PID completo

pulseLeft = p + offset rsquoModulando el ancho del pulso seguacuten se necesite corregir

pulseRight = - p + offset rsquohacia adelante o hacia atraacutes

ENDIF

IF (front gtsetpoint) THEN rsquoEsta parte del programa realiza lo mismo que la anterior soacutelo que

adecua el signo

error = front - setpoint

integrate = (sum1 + sum2 + error) time 3

IF error gtsum1 THEN

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 17

derivate = (error - sum1) time

ELSE

derivate = (sum1 - error) time

ENDIF

p = error kp + integrate ki + derivate kd

pulseLeft = p + offset

pulseRight = - p + offset

ENDIF

sum2 = sum1

sum1 = error

RETURN

rsquo Esta subrutina devuelve la distancia utilizando el sensor de contraste

Measure

HIGH 5

RCTIME 51front

front = front - offsetf

RETURN

rsquo Esta subrutina se encarga de enviar el PWM correcto hacia los motores

Send_Pulse

PULSOUT Leftservo pulseRight

PULSOUT Rightservo pulseLeft

RETURN

6 Resultados

61 Trabajo observado El sistema termino realizando equilibrio y a medidaque el control progresaba en funcionalidad como en tunning8 fue mostrando unaclara mejora No se pudo implementar un sistema que permitiera cotejar las mejorasmaacutes que por el meacutetodo de la observacioacuten Eventualmente el equilibrio en torno ala posicioacuten de equilibrio se obtuvo y demostroacute ser significativamente mejor de lasprimeras pruebas utilizando un control proporcional

62 Aceptacioacuten El programa de control PID logroacute el objetivo permitioacute re-alizar el proyecto en tiempo y forma ademaacutes de sortear una gran cantidad deinconvenientes

8En este caso el seteo de los coeficientes de los teacuterminos PID

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 18

7 Conclusioacuten

Aunque el objetivo inicial de lograr un peacutendulo invertido9 no se alcanzo estaaproximacioacuten es evidentemente un claro progreso hacia la resolucioacuten del mismoAunque el trabajo podriacutea haber sido maacutes ldquoexitosordquo en lo personal fue satisfactoriolograr una solucioacuten y que ademaacutes la misma es bastante aceptable

La estrategia de control PID dejo en evidencia ser a prueba de concepto y logroacuteun importante objetivo a un costo de tiempo dinero y conocimientos10 muy bajos

El boe-bot demostroacute ser una plataforma muy simple pero no asiacute despreciablePermitioacute trabajar raacutepidamente al momento de la programacioacuten pero como contralas limitaciones son algunas veces numerosas pero lo cierto es que es un hardwaredisentildeado para hobbistas y que intenta ser fiel a ello Sin embargo fue muy intere-sante trabajar con el mismo para lograr un ldquoprototipordquo de solucioacuten al problema

Hace muchos antildeos trabaje en instrumentacioacuten en la industria del petroacuteleo y metopaba con sistemas PID de control en muchos de los equipos que se reparaban quecontrolaban desde vaacutelvulas electro-hidraacuteulicas hasta motores de bombas y tornil-los11 para transportar arena Cuando puede estudiar Ing Electroacutenica fue en granmedida por la fascinacioacuten que me produciacutean estos sistemas Asiacute que esta experien-cia fue muy gratificante y me demostroacute el trabajo que conlleva realizar algunas deestas tareas

8 Trabajo a futuro

Muchos puntos no se pudieron estudiar ni tratar los siguientes son los maacutes im-portantes seguacuten un criterio personal que se fue generando a medida que el proyectoavanzaba

Modelizar el hardware con los conocimientos que se adquieren en la materiasistema de controlEstudiar la utilizacioacuten de otros tipos de sensores para la medicioacuten de ladistancia posicionalLograr un equipo de trabajo para incrementar la productividadAunque se abordo una solucioacuten de fuzzy logic12 basada en un ejemplorealizado en python no se pudo implementar Lo ideal seriacutea presentar unasolucioacuten de sistemas hiacutebridosAyudar a la fiacutesica del problema resuelta agregando maacutes peso en la parteinferior cerca al eje de pivoteo

Iacutendice de figuras

11 Posicioacuten de equilibrio del boe-bot self-balanced 221 Diagrama de fuerzas que actuacutean sobre el peacutendulo invertido claacutesico 322 Diagrama de flujo del control PID 431 Diagrama simplificado del programa 732 Diagrama de flujo del programa principal 833 Rutina de medicioacuten 834 Rutina de caacutelculos 935 Rutina de modulacioacuten 9

9Caso claacutesico de control10Sobre sistemas de control11Tipo de Arquiacutemedes12Loacutegica difusa

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 19

36 Un tren de pulsos de 13 ms hace rotar el servo a maacutexima velocidad ensentido de las agujas del reloj 9

37 Un tren de pulsos de 17 ms hace rotar el servo a maacutexima velocidad ensentido contrario al de las agujas del reloj 9

41 Boe-bot 1142 Tarjeta electroacutenica del boe-bot 1243 BS2 uno de los ldquocerebrosrdquo del boebot 1351 Modificaciones al boe-bot posicioacuten del moacutedulo QTI 14

Referencias[1] httpenwikipediaorgwikiPID_controller[2] ldquoModelado y control del peacutendulo invertido sobre carro mediante sistemas hiacutebridosrdquo por Fer-

nando Bote Ortega Universidad de Sevilla[3] rdquoControl of an Inverted Pendulumrdquo por Johnny Lam[4] httpletsmakerobotscomnode22232[5] rdquoBASIC Stamp Syntax and Reference Manualrdquo Version 22 ISBN 1-928982-32-8[6] rdquoPBASIC Language Basicsrdquo Dhinesh Sasidaran Octubre 14 2002[7] rdquoMicrobot PARALLAX Boe - Botrdquo Caacutendido Garciacutea Barroacuten[8] rdquoRobotics with the Boe-Bot Student Guide VERSION 22rdquo wwwparallaxcomdldocs

bookseduroboticsv2_2pdf[9] rdquoMeacutetodo baacutesico para implementar un controlador digital PID en un microcontrolador PIC

para el desarrollo de aplicaciones de bajo costo (Aplicaciones en control de Potencia y laIndustria)rdquo Ilber Adonayt Ruge Ruge Universidad de Cundinamarca Grupo de Investigacioacutenen Tecnologiacuteas de la Informacioacuten y las Comunicaciones GITEINCO Fusagasuga ndash Colombia

[10] rdquoiquestCoacutemo realizar un informe de invetigacioacutenrdquo DrEnrique Teraacuten[11] rdquoDigital PID Controllersrdquo DrVarodom Toochinda wwwdewinzcomdocsecspidpdf[12] rdquoSistemas de control digitalrdquo Benjamin C Kuo Editorial Grupo Patria Cultural ISBN 968-

26-1292[13] rdquoSistemas de control modernordquo Richard C Dorf y Robert H Bishop Deacutecima edicioacuten Edi-

torial Pearson Prentice Hall ISBN 84-205-4401-9

Revisioacuten

101210 - El presente texto es una adaptacioacuten de la versioacuten original titula-da ldquoAproximacioacuten a la solucioacuten del peacutendulo invertido claacutesicordquo Esta modifi-cacioacuten fue realizada con el propoacutesito de poder publicar mi trabajo con maacutessoltura

GABS (Get Another Boe-bot Selfbalanced)copy CopyLeft 2010 Nelson G LombardoPrimera edicioacuten Noviembre 2010Esta documentacioacuten esta licenciada bajo los teacuterminos de la Licencia GNU para

la Documentacioacuten Libre Ver en httpwwwgnuorgcopyleftThis documentation is licensed under the terms of the GNU Free Documentation

License See httpwwwgnuorgcopyleft

E-mail address nelsonlombardogmailcomURL httpetech-nelsonblogspotcom201011primer-pid-funcional-en-el-boebothtmlCurrent address Neuqueacuten Capital Neuqueacuten

  • Contents
  • 1 Introduccioacuten
    • 11 Problema
    • 12 Problema a resolver
    • 13 Alcance
    • 14 Objetivos
      • 2 Marco teoacuterico
        • 21 Peacutendulo claacutesico
        • 22 PID
        • 23 PID digital
        • 24 Concepto PID en referencia al proyecto
        • 25 Retrasos en sistemas de control basados en micropocesadores
          • 3 Disentildeo metodoloacutegico
            • 31 Eleccioacuten del control
            • 32 Trabajo a realizar
            • 33 Inconvenientes de la implementacioacuten
            • 34 Diagrama de flujo del control PID digital
            • 35 Ancho de pulso para el control y velocidad de los motores servo-continuos
            • 36 Obtencioacuten de los coeficientes de los teacuterminos PID
              • 4 Materiales
                • 41 Software utilizado
                • 42 Plataforma roboacutetica
                • 43 Lenguaje de programacioacuten
                  • 5 Implementacioacuten
                    • 51 Modificaciones al boe-bot
                    • 52 Sensor de distancia
                    • 53 Alimentacioacuten eleacutectrica
                    • 54 Posicioacuten de equilibrio natural del boe-bot
                    • 55 Transferencia de los programas
                    • 56 Programa para el stamp BS2
                      • 6 Resultados
                        • 61 Trabajo observado
                        • 62 Aceptacioacuten
                          • 7 Conclusioacuten
                          • 8 Trabajo a futuro
                          • Iacutendice de figuras
                          • Referencias
                          • Revisioacuten
Page 2: Gabs

GABS (GET ANOTHER BOE-BOT SELFBALANCED) ii

Iacutendice

1 Introduccioacuten 111 Problema 112 Problema a resolver 113 Alcance 214 Objetivos 22 Marco teoacuterico 221 Peacutendulo claacutesico 222 PID 323 PID digital 424 Concepto PID en referencia al proyecto 425 Retrasos en sistemas de control basados en micropocesadores 53 Disentildeo metodoloacutegico 531 Eleccioacuten del control 532 Trabajo a realizar 633 Inconvenientes de la implementacioacuten 634 Diagrama de flujo del control PID digital 735 Ancho de pulso para el control y velocidad de los motores servo-

continuos 736 Obtencioacuten de los coeficientes de los teacuterminos PID 104 Materiales 1041 Software utilizado 1042 Plataforma roboacutetica 1143 Lenguaje de programacioacuten 135 Implementacioacuten 1451 Modificaciones al boe-bot 1452 Sensor de distancia 1453 Alimentacioacuten eleacutectrica 1454 Posicioacuten de equilibrio natural del boe-bot 1555 Transferencia de los programas 1556 Programa para el stamp BS2 156 Resultados 1761 Trabajo observado 1762 Aceptacioacuten 177 Conclusioacuten 188 Trabajo a futuro 18Iacutendice de figuras 18Referencias 19Revisioacuten 19

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 1

1 Introduccioacuten

11 Problema Este sistema constituye un caso concreto de un sistema fiacutesicoen el que se ponen de manifiesto importantes problemas lo que ha hecho de eacutel unbanco de pruebas1 para sistemas de control

El intereacutes en el estudio de este tipo de sistema radica en que salvando las partic-ularidades de cada caso su modelo matemaacutetico presenta una formulacioacuten basadaen ecuaciones diferenciales que guarda cierta analogiacutea con procesos reales de mayorcomplejidad como por ejemplo el generador sincroacutenico conectado a un bus infinitoy el sistema de control de vuelo para aeronaves etc Por tanto su estudio sirvecomo una primera aproximacioacuten a los problemas que plantean sistemas de mayorcomplejidad

El control del peacutendulo invertido presenta una enorme variedad de problemas quehan hecho de eacutel uno de los sistemas concretos para el ensayo de leyes de controlmaacutes analizados en estos uacuteltimos tiempos Los primeros peacutendulos invertidos se con-struyeron en los antildeos 70 y auacuten hoy treinta antildeos despueacutes se sigue experimentandocon el peacutendulo invertido y tratando de analizarlo desde un punto de vista teoacuterico Esnotable que despueacutes de tantos antildeos auacuten no se haya conseguido un estudio unitarioy satisfactorio de dicho problema

En el control del peacutendulo invertido se presentan baacutesicamente dos problemasel problema de la estabilidad local en torno a la posicioacuten de equilibrio que esanaacutelogo al problema del malabarista que pretende mantener un palo en la puntade un dedo y el problema de levantar el peacutendulo desde su posicioacuten de reposo hastala posicioacuten en la que se mantiene erguido hacia arriba Este uacuteltimo problema seconoce con su denominacioacuten inglesa de problema del swing up El primero de losproblemas el de la estabilizacioacuten local puede resolverse satisfactoriamente mediantela legalizacioacuten en torno a la posicioacuten de equilibrio Sin embargo la ley de control asiacuteobtenida tiene un caraacutecter exclusivamente local Para perturbaciones de una ciertamagnitud el control del peacutendulo se pierde En el problema del swing up es necesarioconsiderar todo el espacio de estados de modo que el problema no puede abordarsecon una perspectiva local Se trata por tanto de un problema al que se aplican lasconsideraciones realizadas a lo largo de este capiacutetulo relativas a la imposibilidadde linealizar el sistema y de tratarlo exclusivamente en forma local El problemadel swing up es por su propia naturaleza un problema no lineal que se desenvuelveen una amplia regioacuten del espacio y que por tanto no admite una reduccioacuten localy hay que abordarlo con toda la problemaacutetica inherente a su globalidad y a suno linealidad Por uacuteltimo para terminar esta seccioacuten sobre el problema de controldel peacutendulo invertido conviene resaltar que se puede considerar como un problemaarquetipo de lo que es la ingenieriacutea No existe un meacutetodo universal para resolverloy ante eacutel el ingeniero tiene que desarrollar sus facultades imaginativas y creativascombinando diferentes meacutetodos para resolver los distintos aspectos del complejoproblema que representa el control de este sistema aparentemente simple pero enrealidad muy complejo en sus formas de comportamiento

12 Problema a resolver Al comenzar con el proyecto existieron varios in-convenientes Uno de ellos fue implementar un sensor para obtener el aacutengulo dela varilla Para que el proyecto no se estancaraacute y nunca lograr hacerlo andar secomenzoacute a trabajar en un problema derivado que el robot pudiera mantener elequilibrio sobre sus ruedas buscando una posicioacuten vertical En la figura 11 pode-mos ver el boe-bot y el tipo de problema que se busco solucionar Como se dijoantes la solucioacuten al peacutendulo claacutesico admite problemas de la misma naturaleza

1Benchmark

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 2

Figura 11 Posicioacuten de equilibrio del boe-bot self-balanced

13 Alcance Este trabajo resuelve un problema similar al del peacutendulo invertidoclaacutesico en una pequentildea regioacuten lineal alrededor del punto de seteo utilizando comoestrategia de control un algoritmo PID empiacuterico y un boebot como plataforma parael proyecto

El proyecto se basa fuertemente en la administracioacuten conceptual del problema yde la implementacioacuten basaacutendose en la flexibilidad que otorga la programacioacuten engeneral

14 Objetivos Intentar realizar un estudio sobre el problema del peacutendulo inver-tido utilizando para su implementacioacuten un boe-bot como la base para la instalacioacutendel problema

En la primera parte se estudia el problema de forma teoacuterica y se aprecia losinconvenientes que se tiene Luego en base a esto se define una estrategia de controlpara la solucioacuten del problema y se trabaja en ella

En una segunda parte se decide hacer la implementacioacuten basaacutendose en un controlPID empiacuterico En esta parte se trabaja fuertemente en la obtencioacuten de un programaque permite correr el control PID eliminando la mayor cantidad de inconvenientesposibles y posibilitando una exitosa solucioacuten en torno a la buacutesqueda de la posicioacutende seteo

2 Marco teoacuterico

21 Peacutendulo claacutesico En la figura 21 podemos observar las fuerzas que inter-vienen en el sistema de peacutendulo invertido claacutesico Donde

M masa del carrom masa del peacutenduloBc friccioacuten del carroBv friccioacuten del peacutenduloL longitud al centro de masa del peacutenduloI inercia del peacutendulo

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 3

Figura 21 Diagrama de fuerzas que actuacutean sobre el peacutenduloinvertido claacutesico

F fuerza aplicada al carroX coordenadas de posicioacuten del carroΘ aacutengulo del peacutendulo respecto de la vertical

Para obtener la ecuacioacuten que describe el movimiento del peacutendulo sumamos lasfuerzas perpendiculares al peacutendulo Si resolvemos el sistema a lo largo de esteeje nos ahorramos un montoacuten de aacutelgebra De esta forma obtenemos la siguienteecuacioacuten

P sin (θ) +N cos (θ)minusmg sin (θ) = mx cos (θ) + Frv

Aquiacute es donde realizamos un anaacutelisis de nuestro contexto Existe mucha bibli-ografiacutea y (ya lo he dicho) muchos sistemas que se basan en la teoriacutea del peacutenduloinvertido Puesto que las soluciones a este sistema son ldquocomplicadasrdquo y no son uacuteni-cas se propone entender que tenemos hasta el momento y buscamos comprenderestrategias alternativas maacutes amigables

22 PID En la figura 22 se puede observar el diagrama de flujo que representaun controlador PID En primer lugar existe un setpoint que es ingresado por elusuario la diferencia entre eacutel y la salida nos da un error (e(t)) momento a momentoEl error se procesa para obtener la correccioacuten a la salida el primer caacutelculo esel proporcional tambieacuten denominado ganancia y baacutesicamente actuacutea directamentesobre la salida proporcionalmente al error

Luego existe la contribucioacuten de la parte integral a veces llamada reset Esta esproporcional a la magnitud del error como asiacute del tiempo de duracioacuten del mismoSumando el error a cada momento (integrando el error) acumulamos el offset2 quese fue corrigiendo previamente El teacutermino integral trabajando con el teacutermino pro-porcional acelera la llegada del proceso al setpoint y elimina los errores residualesque provoca el control proporcional El problema resulta cuando una acumulacioacutenimportante del error provoca un desborde de la respuesta

Por uacuteltimo el teacutermino derivativo trabaja sobre la razoacuten de cambio del error sobreel tiempo Este teacutermino a veces denominado tambieacuten rate contribuye a anticiparel posible error futuro y actuar en consecuencia El inconveniente radica en que deexistir mediciones espurias el aporte puede llevar a una oscilacioacuten sobre el sistema

El control PID trabaja gracias a tres teacuterminos el proporcional (P) el integral(I) y el derivativo (D) Estos tienen la siguiente forma matemaacutetica

P = kp lowast e(t)

2Corrimiento desviacioacuten entre el setpoint ideal y el setpoint real

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 4

Figura 22 Diagrama de flujo del control PID

I = ki lowastτint

0

e(t)dt

D = kd lowastde(t)

dtSi bien estas definiciones son correctas son poco praacutecticas en nuestro caso

23 PID digital Para ello tomaremos en cuenta que nuestro control es digital

P = kp lowast e[n]

I = ki lowast (e[n] + e[nminus 1] + + e[nminusN ]) lowast∆t lowastN

D = kd lowaste[n]minus e[nminus 1]

∆tDonde

e[n] es el error actual en el tiempo discretoe[nminus1] es el error en el tiempo discreto que se obtuvo antes del error actuale[nminusN ] es el error en el tiempo discreto que se obtuvo ene3 veces antes delerror actualN es la cantidad de momentos desde que el sistema comenzoacute a funcionarhasta llegar al momento actual∆t es el tiempo que existe entre los momentos discreto

24 Concepto PID en referencia al proyecto El PID resulta ser de vitalimportancia al momento de poder abstraer el problema aunque posee limitacionescomo todo sistema de control El PID puede ldquoverrdquo a nuestro sistema como soacutelo unaentrada un proceso y una devolucioacuten y trabajar para lograr que la devolucioacuten selo maacutes parecida posible a la entrada

En el caso del robot equilibrista este sistema es inestable por naturaleza comoel peacutendulo invertido El PID ldquodesconocerdquo esta inestabilidad4 y soacutelo busca corregirla desviacioacuten que se produce en el sistema En este caso particular intenta llevar ala posicioacuten deseada (la de equilibrio natural del cuerpo del boe-bot vertical la cualseteamos) En este caso no debemos olvidarnos que esto es aplicable a respuestaslineales por lo tanto aacutengulo dentro del cual puede trabajar es limitado pero tal vessuficiente

3Desde que el sistema comenzoacute a funcionar en el momento cero4Es una de las formas de actuar en la implementacioacuten

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 5

25 Retrasos en sistemas de control basados en micropocesadores Ademaacutesde la longitud de palabra finita los microprocesadores5 son maacutequinas de caacutelculo dig-ital relativamente lentos En muchas aplicaciones de coacutemputo digital tal vez la bajavelocidad de coacutemputo no tenga importancia sin embargo en aplicaciones de sis-temas de control a menudo es necesario el caacutelculo en tiempo real y los retrasosencontrados en el manejo de los datos pueden tener efectos significativos sobre eldesempentildeo del sistema En general es importante saber cuaacuten grandes son estosretrasos a fin de tratar con ellos de manera analiacutetica Cabe atribuir dos problemasinmediatos a los retrasos en los sistemas de control Uno es que si el retraso es muygrande no hay tiempo suficiente para llevar a cabo todos los caacutelculos necesariosa fin de ejecutar los algoritmos de control el otro es el efecto adverso del retrasosobre la estabilidad de los sistemas de control a lazo cerrado

Cada programa estaacute formado por un conjunto de instrucciones y cada una re-quiere un determinado nuacutemero de estados de la maacutequina El tiempo necesario paraque el microprocesador ejecute una instruccioacuten en particular es directamente pro-porcional al nuacutemero total de estados de la maacutequina por los que debe pasar elmicroprocesador a fin de completar la instruccioacuten por ejemplo para el interpretedel BS2 del boe-bot ser requiere un tiempo por instruccioacuten de

1[s]4000[inst] = 250micros

Esto permite que el ldquocerebrordquo BS2 pase por 2000 instrucciones por segundoSi bien puede parecer bastante a comparacioacuten de nuestra labor el programa maacutessencillo requiere de miles de estado de la maacutequina puesto que cada instruccioacutende pbasic se debe decodificar a lenguaje maacutequina y a su vez cada instruccioacuten delenguaje maacutequina a microinstrucciones

Es un echo bien conocido que los retrasos son a menudo causa de inestabili-dad en sistemas de lazo cerrado digitales o continuos es esencial considerar estascondiciones imperfectas cuando se disentildea un sistema de control digital

3 Disentildeo metodoloacutegico

31 Eleccioacuten del control Determinados a resolver el problema como se noshabiacutea pedido en la caacutetedra se opta por enumerar las dificultades

No conozco las constante del motorFalta de conocimiento y preparacioacuten formal sobre sistemas de controlControl digital de un sistema analoacutegicoLimitaciones de procesamiento por parte del ldquocerebrordquo del robotFalta de tiempo principalmente impuestas por el comienzo del proyectoluego del primer cuatrimestre de cursado y la cantidad de proyectos anexosa las demaacutes materias del mismo antildeoAcceso a internet limitadoFalta total de experiencia en el uso de este robotGrupo de trabajo de una persona

Esto llevo a tomar la decisioacuten sobre el tipo de estrategia Basaacutendome en los in-convenientes anteriores decidiacute que programar un controlador PID seriacutea la mejorsolucioacuten Algunas de las ventajas

Puede utilizarse de forma de abstraer el problema base y asiacute disminuir draacutes-ticamente la complejidad del sistema a resolver Puede llegar a funcionar aldquoprueba de conceptordquo

5Y los microcontroladores en especial

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 6

Aunque es necesario hallar los coeficientes de los teacuterminos PID no estaestrictamente ligado a modelos complicados y se puede utilizar un seteoempiacutericoEsta estrategia es bastante utilizada y se hallan muchos proyectos de difer-ente iacutendole que asiacute lo demuestran

Algunos de los inconvenientes maacutes importantes que poseeAunque el seteo de los coeficientes pueden obtenerse en base a la experienciay de ciertas pruebas de interpretacioacuten no siempre es factible hallarlos asiacuteExisten algunos inconvenientes derivados de los sobreimpulsos como elwindupLas oscilaciones del control no estaacuten exentas de desaparecer y hasta puedenincrementarse por una mala actuacioacuten del teacutermino derivativoNo todos los problemas pueden solucionarse por medio de este control

32 Trabajo a realizarEntender las limitaciones de velocidad de procesamiento del ldquocerebrordquo delrobotEstablecer un control proporcional y mejorar el mismo refinando su com-portamientoComprender los inconvenientes que apareja controlar un sistema analoacutegicoa traveacutes de un control digitalEscribir el control PID completo

33 Inconvenientes de la implementacioacuten

331 Optimizacioacuten Uno de los mayores problemas es escribir un coacutedigo capazde ser modular simple efectivo y que este optimizado para el procesamiento delmismo

Uno de los factores determinantes en la respuesta del control sobre el robot esla comunicacioacuten con la PC En este caso existen dos limitantes el primero es labaja frecuencia de procesamiento de las instrucciones de pbasic en el cerebro a loque se le suma los tiempos que requiere la comunicacioacuten con la PC Una de lasinstrucciones a eliminar definitivamente es DEBUG esta instrucciones permitenvisualizar en el PC ciertos datos que se pueden configurar esto es un consumoexcesivo de tiempo

El ldquotamantildeordquo de las variables el tipo de variable puede contener longitudes ade-cuadas pero al utilizarlas discriminando el signo acorta a la mitad la longitud loque genera otro problema Se debe cuidar el tipo de variable a asignar

332 Signado El interprete del boe-bot aunque trabaje a un ldquoaltordquo nivel noslimita en el uso de signado de las variables La mejor solucioacuten es generar unaescritura del coacutedigo tipo aacuterbol balanceado que aunque parezca no muy modularestablece una peacuterdida de tiempo miacutenima en comparacioacuten a la cantidad de coacutedigoque se escribioacute

333 Windup Uno de los problemas comunes resultantes de las implementa-ciones del control PID es el windup Este efecto indeseable sucede cuando se daun corrimiento muy grande del punto de seteo entonces el termino integral acu-mula un error significativamente grande que se convierte en una sobrecarga en larealimentacioacuten lo que produce un mayor error provocando asiacute en un incrementoincontrolado de la parte integral

Existen algunas teacutecnicas para corregir estoInicializar el teacutermino integral en un valor conocidoIncrementar el punto de seteo de forma lineal

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 7

Figura 31 Diagrama simplificado del programa

Deshabilitar el control integral cuando el sistema se encuentre en la regioacutenmaacutes linealLimitar el tiempo que se dedica para el caacutelculo del teacutermino integralLimitar los valores que puede alcanzar el teacutermino reduciendo asiacute los ldquore-botesrdquo

334 Debug Lamentablemente al experiencia nos determino que utilizar la in-struccioacuten DEBUG no es una opcioacuten para depurar los errores o comprender algunosde los estados por los que pasa el sistema por lo que hay que valerse de las expe-riencias que se conocen sobre este tipo de sistemas y realizar las interpretacionesque vengan al caso

34 Diagrama de flujo del control PID digital Una de las mejores manerasde abordar el desarrollo de un programa es realizando un diagrama de flujo El puntode partida fue baacutesico pero necesario y lo apreciamos en la figura 31

Se debe utilizar una cantidad miacutenima de variables pero sin dejar de ser lo suficien-temente coacutemodo el programa para su modificacioacuten El programa principal adoptala forma de la figura 32

Se utilizan tres rutinas las cuales pueden ser estudiadas de las figuras 33 34 y35

La rutina de medicioacuten establece los requerimientos desde el punto de vista delboe-bot y la utilizacioacuten del sensor que en nuestro caso seraacute el moacutedulo QTI6

La seccioacuten de caacutelculo representa lo escrito en 23 pero teniendo en cuenta quela parte integral soacutelo ldquointegraraacuterdquo en el modelo de aproximacioacuten por rectaacutengulosel momento actual y dos momentos anteriores El tiempo es representativo deltiempo que toma en el coacutedigo final pasar de realizar todos los caacutelculos a comenzara realizarlos

La rutina de modulacioacuten soacutelo hace referencia a el enviacuteo del impulso necesariopara mover el boe-bot en sentido de buscar el equilibrio En 35 se trata sobre estetema

35 Ancho de pulso para el control y velocidad de los motores servo-continuos Supongamos que se necesita mover el boe-bot a maacutexima velocidadentonces uno de los motores debe girar en sentido horario a velocidad maacutexima y elotro en sentido antihorario por lo tanto de lo que se observa en las figuras 36 y37

6Nuacutemero de parte 555-27401 para el pedido en parallax

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 8

Figura 32 Diagrama de flujo del programa principal

Figura 33 Rutina de medicioacuten

17ms = 2micros lowast rigth

rigth = 17ms2micros = 850

13ms = 2micros lowast left

left = 13ms2micros = 650

Procedemos a utilizar estos valores en pbasic a traveacutes de la instruccioacutenPULSOUT Pin Duracioacuten

Donde

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 9

Figura 34 Rutina de caacutelculos

Figura 35 Rutina de modulacioacuten

Figura 36 Un tren de pulsos de 13 ms hace rotar el servo amaacutexima velocidad en sentido de las agujas del reloj

Figura 37 Un tren de pulsos de 17 ms hace rotar el servo amaacutexima velocidad en sentido contrario al de las agujas del reloj

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 10

Paraacutemetro Tiempo subida Sobreimpulso Tiempo seteado Error de estadiacutea Estabilidad

kp Decrece Se incrementa Cambio Decrece Se degradapequentildeo

ki Decrece Se incrementa Se incrementa Decrece Se degradasignificativamente

kd Decrece Decrece Decrece No tiene efecto Mejora simiacutenimamente miacutenimamente miacutenimamente en teoriacutea kd es pequentildeo

Cuadro 1 Efectos de incrementar cada paraacutemetro independientemente

Pin Es la variable o constante que indica el pin entradasalida a donde sedirige el pulsoDuracioacuten Es la relacioacuten entrel el pulso que queremos y los 2micros7

351 Impulso cero de los motores Al utilizar la Duracioacuten del PULSOUT en 750los motores quedan estaticos Existe el procedimiento descripto en el manual deboe-bot para esto

36 Obtencioacuten de los coeficientes de los teacuterminos PID Existen muchasformas de obtener los coeficientes Una excelente referencia inicial es los descriptoen el artiacuteculo de wikipedia que podemos hallar en el texto 1 de la bibliografiacutea

En este proyecto se opto por la configuracioacuten manual puesto que esto es muyrelativo se propone buscar sobre este puesto que tal vez puede ser confuso comolograrlo Por lo pronto el texto antes recomendado fue el utilizado para el trabajoUna raacutepida diferencia es la del cuadro 1

361 Procedimiento manual Si el sistema debe estar corriendo primero debemosponer kd y ki a cero Incrementar kp hasta que la salida del lazo comience a oscilarentonces kp debe setearse aproximadamente a la mitad de valor para la cual larepuesta decayoacute un cuarto Se incrementar ki hasta que se pueda corregir el offsetde la respuesta del sistema Sin embargo aumentar demasiado ki puede causarinestabilidad Finalmente se incrementa kd hasta que el lazo tengo una respuestaaceptablemente raacutepida a los impulsos imprevistos Si se incrementa mucho kd puedecausar una respuesta excesiva y sobre impulso perdiendo asiacute la estabilidad Un lazoPID bien seteado usualmente no trabaja tan raacutepido a los impulsos no previstos paradar lugar a una buacutesqueda raacutepida del punto de seteo

4 Materiales

41 Software utilizado

411 Procesador de texto Para ir documentando y realizar este informe sobreel proyecto se decidioacute utilizar un procesador de texto Las ventajas del mismo sonla optimizacioacuten de la presentacioacuten para documentos estaacutendares y poco o nada deinteraccioacuten con el formateo del mismo De gran utilidad para este proyecto Seutilizo el software LYX en su versioacuten 155 el cual es software de licencia GPL comoasiacute gratuito El sitio oficial es httpwwwlyxorg

412 Graficador de diagramas Para la realizacioacuten de los diferentes diagramas seutilizo un graficador de diagramas estructurados llamado DIA en su versioacuten 0961Este software esta tambieacuten amparado bajo la GPL y es de distribucioacuten gratuita Elsitio oficial es httpwwwgnomeorgprojectsdia

7Este valor es el especificado para un BS2

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 11

Figura 41 Boe-bot

413 Entorno de desarrollo Respecto al entorno se intento trabajar con alter-nativas al entorno oficial del que nos otorga la compantildeiacutea Parallax (quien desarrollael boe bot) pero existen pocas opciones y no se teniacutean las libreriacuteas para la compi-lacioacuten Se decidioacute utilizar directamente el IDE Basic Stamp versioacuten 25 de coacutedigopropietario y distribucioacuten gratuita Para la descarga buscar en el sitio oficial de laempresa httpwwwparallaxcom

414 Adaptacioacuten a un sistema GNULinux Para poder utilizar el IDE de paral-lax sobre un sistema GNULinux se utilizo el software WinE (Windows Emulator)en su versioacuten 101-174-gc4039bd El sitio oficial de este proyecto de licencia GPLy distribucioacuten gratuita es httpwwwwinehqorg

42 Plataforma roboacutetica La plataforma donde se implemento el proyecto es elrobot boe-bot (figura 41) producido por la compantildeiacutea Parallax Se decidioacute utilizarel mismo porque habiacutea sido una adquisicioacuten reciente del departamento de elec-troacutenica en la Universidad y ninguacuten equipo de trabajo estaba utilizaacutendolo Ademaacutessu sensillez y facilidad de transferencia del programa lo hace ideal para trabajosexperimentales

Componentes activos de la plataforma

421 Parallax (Futaba) Continuous Rotation ServoRotacioacuten continua bidireccional de 0 a 50 RPM con respuesta linear alcontrol PWM para una faacutecil rampa

bull Requerimientos de tensioacuten de 4 a 6 Vdcbull Comunicacioacuten PWMbull Dimensiones 558 x 19 x 406 mmbull Rango de temperatura operativa -10 a +50 degC

422 Motherboard En la figura 42 se encuentra el motherboard del boebot Acontinuacioacuten una pequentildea descripcioacuten

1 Conector para una pila de 9 voltios2 Condensadores del filtro del regulador de voltaje de 5 voltios en corriente

continua

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 12

Figura 42 Tarjeta electroacutenica del boe-bot

3 Conector del puerto serieusb para la comunicacioacuten con el ordenador4 Zoacutecalo de 24 pines para insertar el moacutedulo BASIC Stamp5 Pulsador para reiniciar el programa cargado en el Boe-Bot6 Interruptor de tres posiciones En la posicioacuten 0 el Boe-Bot estaacute desconecta-

do en la posicioacuten 1 el Boe-Bot estaacute conectado pero los servomotores quemueven las ruedas estaacuten desconectados y en la posicioacuten 2 tanto el Boe-Botcomo los servos estaacuten conectados

7 LED verde que nos indica que el Boe-Bot estaacute encendido8 Conector de las entradassalidas del microcontrolador BASIC Stamp para

su uso en la placa protoboard situada a continuacioacuten9 Placa protoboard para el montaje de los componentes electroacutenicos necesar-

ios para los sensores e indicadores luminosos o acuacutesticos10 Conector de alimentacioacuten Los cinco primeros pines (Vdd) proporcionan una

tensioacuten positiva de 5 voltios los tres siguientes (Vin) una tensioacuten positivadel voltaje que proporcionen las pilas o el adaptador de corriente (6 - 9voltios) y los cinco uacuteltimos (Vss) proporcionan la masa el polo negativo auna tensioacuten de 0 voltios

11 Conectores para cuatro servomotores asociados a las salidas P12 P13 P14y P15

12 Jumper para la seleccioacuten de la alimentacioacuten de los servomotores seguacuten serealice mediante el portapilas de 6 voltios del Boe-Bot o mediante un adap-tador de corriente exterior

13 Regulador de voltaje que proporciona a los circuitos electroacutenicos 5 voltiospositivos (Vdd) y la masa (Vss)

14 Conector para tarjetas de ampliacioacuten Permite conectar las 16 entradassalidasde la P0 a la P15 y los pines de la alimentacioacuten Vdd Vin y Vss

15 Conector para el portapilas de 6 voltios o el adaptador de corriente exteriorde 6 - 9 voltios La varilla central de 21 miliacutemetros corresponde al polopositivo

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 13

Figura 43 BS2 uno de los ldquocerebrosrdquo del boebot

423 Cerebro BS2 En la siguiente enumeracioacuten se describen los componentesque se hallan en el ldquocerebrordquo BS2 del boebot utilizado lo que se puede apreciar enla figura 43

1 Cuatro pines para la comunicacioacuten con el ordenador mediante el puertoserie

2 Memoria EEPROM de una capacidad de 2K en donde se almacena el coacutedigofuente del programa editado en PBASIC

3 Condensador del filtro del regulador de voltaje de 5 voltios4 Ocho pines de las entradassalidas desde la P0 hasta la P75 Microcontrolador PIC16C57C que actuacutea de interprete del lenguaje PBA-

SIC ejecutando el programa a una velocidad de 4000 instrucciones porsegundo

6 Ocho pines de las entradassalidas desde la P8 hasta la P157 Oscilador de cuarzo de 20 megahercios para proporcionar la frecuencia al

reloj interno8 Pin de alimentacioacuten de 5 voltios positivos (Vcc)9 Regulador de voltaje que estabiliza la tensioacuten desde los 6 - 9 voltios de la

alimentacioacuten a los 5 voltios utilizados por los circuitos electroacutenicos10 Pin para reiniciar el programa11 Dos pines de alimentacioacuten a la tensioacuten de 6 - 9 voltios (Vin) y la masa

(Vss)12 Detector de la tensioacuten de alimentacioacuten del moacutedulo BASIC Stamp13 Circuito de gestioacuten de la comunicacioacuten mediante el puerto serieusb

43 Lenguaje de programacioacuten El boe-bot utiliza un interprete para su pro-gramacioacuten basado en el lenguaje pbasic Este lenguaje es muy similar al Basiclo que le agrega mucho facilidad a la programacioacuten de estos equipos limitados enprocesamiento La referencia para utilizar este lenguaje esta totalmente documen-tada por parallax en el texto 5 que se halla en la bibliografiacutea utilizada

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 14

Figura 51 Modificaciones al boe-bot posicioacuten del moacutedulo QTI

5 Implementacioacuten

51 Modificaciones al boe-bot La uacutenica modificacioacuten que se realizo al boe-bot claacutesico es la inversioacuten de la posicioacuten fiacutesica de los servos para que el cuerpo delboe-bot pudiera adoptar la posicioacuten vertical de la figura 11 libremente Esto puedeapreciarse en la figura 51

52 Sensor de distancia El moacutedulo QTI esta disentildeado para la deteccioacuten cer-cana infrarroja El corazoacuten de este moacutedulo es el QRD1114 que es un sensor reflectivode objetos Utiliza un diodo emisor infrarrojo y un phototransistor BJT El moacute-dulo esta disentildeado para utilizarse con la funcioacuten RCTIME que posee la siguientesintaxis

RCTIME Pin State VariableDonde

Pin es alguna de las entradassalidas del puertoState es una constante que puede adoptar el valor 1 o 0 loacutegicosVariable es justamente el registro en memoria donde queremos almacenarel resultado

Esta funcioacuten mide el tiempo que le toma llegar al estado definido en State Usual-mente se utiliza para medir el tiempo de carga o descarga de un circuito RC

En nuestro caso la utilizamos para obtener una ldquomedidardquo de la distancias entreel sensor y la superficie donde esta haciendo equilibrio el robot

La posicioacuten que se adopto para el sensor fue en la parte inferior del boe-bot a nomaacutes de 1 cm de la superficie con una distancia al eje de pivoteo (eje de las ruedas)de no maacutes de 15cm

La conexioacuten de este sensor es muy sencilla el pin W del moacutedulo se conecta a unode los pines de alimentacioacuten del motherboard del robot el pin B al gnd que otorgala placa y el R a una de las entradassalidas del puerto de trabajo que deseemosen nuestro caso utilizamos el 5 Para una mayor comprensioacuten referirse a la figura51

53 Alimentacioacuten eleacutectrica Se elimino el porta pila del boe-bot y se utilizoalimentacioacuten externa con una fuente de voltaje regulable de 3A como maacuteximo tra-bajando a 9V Para no producir una invasioacuten al sistema la alimentacioacuten se hizoa traveacutes de cables muy finos y maneables en una posicioacuten relajada por encima de

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 15

la altura del boe-bot y con el largo suficiente para que el mismo se pudiera moverlibremente

54 Posicioacuten de equilibrio natural del boe-bot Para encontrar la posicioacutende equilibrio se utilizo la siguiente metodologiacutea

Se escribioacute un programa que iba mostrando en la pantalla de debug del IDEla medicioacuten de la distancia del sensor a la superficieManualmente se adoptaba la posicioacuten para la cual se notaba el equilibriodel robotSe anota el valor y se utiliza luego en el programa de control

Todo el trabajo previamente descripto derivo en este programa escrito para tal finfue

rsquo $STAMP BS2rsquo $PBASIC 25front VAR WordDO

HIGH 5RCTIME 51frontPAUSE 1000DEBUG front

LOOP

55 Transferencia de los programas Utilizando el IDE es muy sencillopuesto que posee un herramienta para ldquocorrer el programardquo y lo transfiere al boe-bot por medio del puerto USB como tambieacuten puede ser a traveacutes del puerto serialo una combinacioacuten de los mismos La configuracioacuten es muy sencilla y no requieremucho maacutes esfuerzo

56 Programa para el stamp BS2 El siguiente es el programa definitivo es-crito para controlar la posicioacuten de equilibrio vertical del boe-bot

rsquo $STAMP BS2

rsquo $PBASIC 25

rsquo Licensed under GPLv2 o higher

rsquoBS2 Mapa de las entsal usadas

rsquoP3 Sensor de distancia frontal

Leftservo CON 12 rsquoP12 Servo izquierdo

Rightservo CON 13 rsquoP13 Servo derecho

front VAR Word rsquoDistancia que mide el sensor de contraste

pulseLeft VAR Word rsquoVariable que enviacutea el ancho del pulso al motor izquierdo

pulseRight VAR Word rsquoVariable que enviacutea el ancho del pulso al motor derecho

pulseZero CON 750 rsquoEste es el pulso para el cuacuteal los motores no giran

setpoint VAR Word rsquoEste dato es el setpoint del control PID

kp CON 199100 rsquoValor de la constante de proporcional utilizada

ki CON 399100 rsquoValor de la constante de integracioacuten utilizada

kd CON 190100 rsquoValor de la constante del teacutermino derivativo utilizada

error VAR Word rsquoAlmacena el error que se va obteniendo

p VAR Word rsquoSe almacena el ancho del pulso a sumar al estado estacionario

offsetf VAR Word rsquoDesplaza la medicioacuten de la distancia

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 16

sum1 VAR Word rsquoRepresenta el error anterior al actual

sum2 VAR Word rsquoRepresenta el error anterior al anterior del actual

integrate VAR Word rsquoTeacutermino integral

derivate VAR Word rsquoTeacutermino derivativo

time CON 2510000 rsquoTiempo estimativo entre la obtencioacuten de cada teacutermino

rsquo------Comienzo del programa principal-------

rsquo Incializacioacuten de las variables

offset = pulseZero

sum1 = 0

sum2 = 0

offsetf = 0

PAUSE 2000 rsquoPausa de 2 segundos

SetPoint = 170 rsquoSeteo manual de la posicioacuten a buscar

offsetf = SetPoint

DO rsquoBucle del programa principal

GOSUB Measure rsquoMedicioacuten de la distancia

GOSUB PID rsquoAlgoritmo de control PID

GOSUB Send_Pulse rsquoModulacioacuten de pulso en los motores

LOOP

rsquo-------Subrutinas--------

PID

IF (front ltsetpoint) THEN rsquoHay que revisar el signo y actuar seguacuten para la correccioacuten

error = setpoint - front

integrate = (sum1 + sum2 - error) time 3 rsquoTeacutermino integral

IF error gtsum1 THEN rsquoRevisamos el signo y calculamos el teacutermino derivativo

derivate = (error - sum1) time rsquoEl teacutermino derivativo es en realidad la secante miacutenima

que podemos hallar

ELSE

derivate = (sum1 - error) time

ENDIF

p = error kp + integrate ki + derivate kd rsquoControl PID completo

pulseLeft = p + offset rsquoModulando el ancho del pulso seguacuten se necesite corregir

pulseRight = - p + offset rsquohacia adelante o hacia atraacutes

ENDIF

IF (front gtsetpoint) THEN rsquoEsta parte del programa realiza lo mismo que la anterior soacutelo que

adecua el signo

error = front - setpoint

integrate = (sum1 + sum2 + error) time 3

IF error gtsum1 THEN

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 17

derivate = (error - sum1) time

ELSE

derivate = (sum1 - error) time

ENDIF

p = error kp + integrate ki + derivate kd

pulseLeft = p + offset

pulseRight = - p + offset

ENDIF

sum2 = sum1

sum1 = error

RETURN

rsquo Esta subrutina devuelve la distancia utilizando el sensor de contraste

Measure

HIGH 5

RCTIME 51front

front = front - offsetf

RETURN

rsquo Esta subrutina se encarga de enviar el PWM correcto hacia los motores

Send_Pulse

PULSOUT Leftservo pulseRight

PULSOUT Rightservo pulseLeft

RETURN

6 Resultados

61 Trabajo observado El sistema termino realizando equilibrio y a medidaque el control progresaba en funcionalidad como en tunning8 fue mostrando unaclara mejora No se pudo implementar un sistema que permitiera cotejar las mejorasmaacutes que por el meacutetodo de la observacioacuten Eventualmente el equilibrio en torno ala posicioacuten de equilibrio se obtuvo y demostroacute ser significativamente mejor de lasprimeras pruebas utilizando un control proporcional

62 Aceptacioacuten El programa de control PID logroacute el objetivo permitioacute re-alizar el proyecto en tiempo y forma ademaacutes de sortear una gran cantidad deinconvenientes

8En este caso el seteo de los coeficientes de los teacuterminos PID

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 18

7 Conclusioacuten

Aunque el objetivo inicial de lograr un peacutendulo invertido9 no se alcanzo estaaproximacioacuten es evidentemente un claro progreso hacia la resolucioacuten del mismoAunque el trabajo podriacutea haber sido maacutes ldquoexitosordquo en lo personal fue satisfactoriolograr una solucioacuten y que ademaacutes la misma es bastante aceptable

La estrategia de control PID dejo en evidencia ser a prueba de concepto y logroacuteun importante objetivo a un costo de tiempo dinero y conocimientos10 muy bajos

El boe-bot demostroacute ser una plataforma muy simple pero no asiacute despreciablePermitioacute trabajar raacutepidamente al momento de la programacioacuten pero como contralas limitaciones son algunas veces numerosas pero lo cierto es que es un hardwaredisentildeado para hobbistas y que intenta ser fiel a ello Sin embargo fue muy intere-sante trabajar con el mismo para lograr un ldquoprototipordquo de solucioacuten al problema

Hace muchos antildeos trabaje en instrumentacioacuten en la industria del petroacuteleo y metopaba con sistemas PID de control en muchos de los equipos que se reparaban quecontrolaban desde vaacutelvulas electro-hidraacuteulicas hasta motores de bombas y tornil-los11 para transportar arena Cuando puede estudiar Ing Electroacutenica fue en granmedida por la fascinacioacuten que me produciacutean estos sistemas Asiacute que esta experien-cia fue muy gratificante y me demostroacute el trabajo que conlleva realizar algunas deestas tareas

8 Trabajo a futuro

Muchos puntos no se pudieron estudiar ni tratar los siguientes son los maacutes im-portantes seguacuten un criterio personal que se fue generando a medida que el proyectoavanzaba

Modelizar el hardware con los conocimientos que se adquieren en la materiasistema de controlEstudiar la utilizacioacuten de otros tipos de sensores para la medicioacuten de ladistancia posicionalLograr un equipo de trabajo para incrementar la productividadAunque se abordo una solucioacuten de fuzzy logic12 basada en un ejemplorealizado en python no se pudo implementar Lo ideal seriacutea presentar unasolucioacuten de sistemas hiacutebridosAyudar a la fiacutesica del problema resuelta agregando maacutes peso en la parteinferior cerca al eje de pivoteo

Iacutendice de figuras

11 Posicioacuten de equilibrio del boe-bot self-balanced 221 Diagrama de fuerzas que actuacutean sobre el peacutendulo invertido claacutesico 322 Diagrama de flujo del control PID 431 Diagrama simplificado del programa 732 Diagrama de flujo del programa principal 833 Rutina de medicioacuten 834 Rutina de caacutelculos 935 Rutina de modulacioacuten 9

9Caso claacutesico de control10Sobre sistemas de control11Tipo de Arquiacutemedes12Loacutegica difusa

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 19

36 Un tren de pulsos de 13 ms hace rotar el servo a maacutexima velocidad ensentido de las agujas del reloj 9

37 Un tren de pulsos de 17 ms hace rotar el servo a maacutexima velocidad ensentido contrario al de las agujas del reloj 9

41 Boe-bot 1142 Tarjeta electroacutenica del boe-bot 1243 BS2 uno de los ldquocerebrosrdquo del boebot 1351 Modificaciones al boe-bot posicioacuten del moacutedulo QTI 14

Referencias[1] httpenwikipediaorgwikiPID_controller[2] ldquoModelado y control del peacutendulo invertido sobre carro mediante sistemas hiacutebridosrdquo por Fer-

nando Bote Ortega Universidad de Sevilla[3] rdquoControl of an Inverted Pendulumrdquo por Johnny Lam[4] httpletsmakerobotscomnode22232[5] rdquoBASIC Stamp Syntax and Reference Manualrdquo Version 22 ISBN 1-928982-32-8[6] rdquoPBASIC Language Basicsrdquo Dhinesh Sasidaran Octubre 14 2002[7] rdquoMicrobot PARALLAX Boe - Botrdquo Caacutendido Garciacutea Barroacuten[8] rdquoRobotics with the Boe-Bot Student Guide VERSION 22rdquo wwwparallaxcomdldocs

bookseduroboticsv2_2pdf[9] rdquoMeacutetodo baacutesico para implementar un controlador digital PID en un microcontrolador PIC

para el desarrollo de aplicaciones de bajo costo (Aplicaciones en control de Potencia y laIndustria)rdquo Ilber Adonayt Ruge Ruge Universidad de Cundinamarca Grupo de Investigacioacutenen Tecnologiacuteas de la Informacioacuten y las Comunicaciones GITEINCO Fusagasuga ndash Colombia

[10] rdquoiquestCoacutemo realizar un informe de invetigacioacutenrdquo DrEnrique Teraacuten[11] rdquoDigital PID Controllersrdquo DrVarodom Toochinda wwwdewinzcomdocsecspidpdf[12] rdquoSistemas de control digitalrdquo Benjamin C Kuo Editorial Grupo Patria Cultural ISBN 968-

26-1292[13] rdquoSistemas de control modernordquo Richard C Dorf y Robert H Bishop Deacutecima edicioacuten Edi-

torial Pearson Prentice Hall ISBN 84-205-4401-9

Revisioacuten

101210 - El presente texto es una adaptacioacuten de la versioacuten original titula-da ldquoAproximacioacuten a la solucioacuten del peacutendulo invertido claacutesicordquo Esta modifi-cacioacuten fue realizada con el propoacutesito de poder publicar mi trabajo con maacutessoltura

GABS (Get Another Boe-bot Selfbalanced)copy CopyLeft 2010 Nelson G LombardoPrimera edicioacuten Noviembre 2010Esta documentacioacuten esta licenciada bajo los teacuterminos de la Licencia GNU para

la Documentacioacuten Libre Ver en httpwwwgnuorgcopyleftThis documentation is licensed under the terms of the GNU Free Documentation

License See httpwwwgnuorgcopyleft

E-mail address nelsonlombardogmailcomURL httpetech-nelsonblogspotcom201011primer-pid-funcional-en-el-boebothtmlCurrent address Neuqueacuten Capital Neuqueacuten

  • Contents
  • 1 Introduccioacuten
    • 11 Problema
    • 12 Problema a resolver
    • 13 Alcance
    • 14 Objetivos
      • 2 Marco teoacuterico
        • 21 Peacutendulo claacutesico
        • 22 PID
        • 23 PID digital
        • 24 Concepto PID en referencia al proyecto
        • 25 Retrasos en sistemas de control basados en micropocesadores
          • 3 Disentildeo metodoloacutegico
            • 31 Eleccioacuten del control
            • 32 Trabajo a realizar
            • 33 Inconvenientes de la implementacioacuten
            • 34 Diagrama de flujo del control PID digital
            • 35 Ancho de pulso para el control y velocidad de los motores servo-continuos
            • 36 Obtencioacuten de los coeficientes de los teacuterminos PID
              • 4 Materiales
                • 41 Software utilizado
                • 42 Plataforma roboacutetica
                • 43 Lenguaje de programacioacuten
                  • 5 Implementacioacuten
                    • 51 Modificaciones al boe-bot
                    • 52 Sensor de distancia
                    • 53 Alimentacioacuten eleacutectrica
                    • 54 Posicioacuten de equilibrio natural del boe-bot
                    • 55 Transferencia de los programas
                    • 56 Programa para el stamp BS2
                      • 6 Resultados
                        • 61 Trabajo observado
                        • 62 Aceptacioacuten
                          • 7 Conclusioacuten
                          • 8 Trabajo a futuro
                          • Iacutendice de figuras
                          • Referencias
                          • Revisioacuten
Page 3: Gabs

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 1

1 Introduccioacuten

11 Problema Este sistema constituye un caso concreto de un sistema fiacutesicoen el que se ponen de manifiesto importantes problemas lo que ha hecho de eacutel unbanco de pruebas1 para sistemas de control

El intereacutes en el estudio de este tipo de sistema radica en que salvando las partic-ularidades de cada caso su modelo matemaacutetico presenta una formulacioacuten basadaen ecuaciones diferenciales que guarda cierta analogiacutea con procesos reales de mayorcomplejidad como por ejemplo el generador sincroacutenico conectado a un bus infinitoy el sistema de control de vuelo para aeronaves etc Por tanto su estudio sirvecomo una primera aproximacioacuten a los problemas que plantean sistemas de mayorcomplejidad

El control del peacutendulo invertido presenta una enorme variedad de problemas quehan hecho de eacutel uno de los sistemas concretos para el ensayo de leyes de controlmaacutes analizados en estos uacuteltimos tiempos Los primeros peacutendulos invertidos se con-struyeron en los antildeos 70 y auacuten hoy treinta antildeos despueacutes se sigue experimentandocon el peacutendulo invertido y tratando de analizarlo desde un punto de vista teoacuterico Esnotable que despueacutes de tantos antildeos auacuten no se haya conseguido un estudio unitarioy satisfactorio de dicho problema

En el control del peacutendulo invertido se presentan baacutesicamente dos problemasel problema de la estabilidad local en torno a la posicioacuten de equilibrio que esanaacutelogo al problema del malabarista que pretende mantener un palo en la puntade un dedo y el problema de levantar el peacutendulo desde su posicioacuten de reposo hastala posicioacuten en la que se mantiene erguido hacia arriba Este uacuteltimo problema seconoce con su denominacioacuten inglesa de problema del swing up El primero de losproblemas el de la estabilizacioacuten local puede resolverse satisfactoriamente mediantela legalizacioacuten en torno a la posicioacuten de equilibrio Sin embargo la ley de control asiacuteobtenida tiene un caraacutecter exclusivamente local Para perturbaciones de una ciertamagnitud el control del peacutendulo se pierde En el problema del swing up es necesarioconsiderar todo el espacio de estados de modo que el problema no puede abordarsecon una perspectiva local Se trata por tanto de un problema al que se aplican lasconsideraciones realizadas a lo largo de este capiacutetulo relativas a la imposibilidadde linealizar el sistema y de tratarlo exclusivamente en forma local El problemadel swing up es por su propia naturaleza un problema no lineal que se desenvuelveen una amplia regioacuten del espacio y que por tanto no admite una reduccioacuten localy hay que abordarlo con toda la problemaacutetica inherente a su globalidad y a suno linealidad Por uacuteltimo para terminar esta seccioacuten sobre el problema de controldel peacutendulo invertido conviene resaltar que se puede considerar como un problemaarquetipo de lo que es la ingenieriacutea No existe un meacutetodo universal para resolverloy ante eacutel el ingeniero tiene que desarrollar sus facultades imaginativas y creativascombinando diferentes meacutetodos para resolver los distintos aspectos del complejoproblema que representa el control de este sistema aparentemente simple pero enrealidad muy complejo en sus formas de comportamiento

12 Problema a resolver Al comenzar con el proyecto existieron varios in-convenientes Uno de ellos fue implementar un sensor para obtener el aacutengulo dela varilla Para que el proyecto no se estancaraacute y nunca lograr hacerlo andar secomenzoacute a trabajar en un problema derivado que el robot pudiera mantener elequilibrio sobre sus ruedas buscando una posicioacuten vertical En la figura 11 pode-mos ver el boe-bot y el tipo de problema que se busco solucionar Como se dijoantes la solucioacuten al peacutendulo claacutesico admite problemas de la misma naturaleza

1Benchmark

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 2

Figura 11 Posicioacuten de equilibrio del boe-bot self-balanced

13 Alcance Este trabajo resuelve un problema similar al del peacutendulo invertidoclaacutesico en una pequentildea regioacuten lineal alrededor del punto de seteo utilizando comoestrategia de control un algoritmo PID empiacuterico y un boebot como plataforma parael proyecto

El proyecto se basa fuertemente en la administracioacuten conceptual del problema yde la implementacioacuten basaacutendose en la flexibilidad que otorga la programacioacuten engeneral

14 Objetivos Intentar realizar un estudio sobre el problema del peacutendulo inver-tido utilizando para su implementacioacuten un boe-bot como la base para la instalacioacutendel problema

En la primera parte se estudia el problema de forma teoacuterica y se aprecia losinconvenientes que se tiene Luego en base a esto se define una estrategia de controlpara la solucioacuten del problema y se trabaja en ella

En una segunda parte se decide hacer la implementacioacuten basaacutendose en un controlPID empiacuterico En esta parte se trabaja fuertemente en la obtencioacuten de un programaque permite correr el control PID eliminando la mayor cantidad de inconvenientesposibles y posibilitando una exitosa solucioacuten en torno a la buacutesqueda de la posicioacutende seteo

2 Marco teoacuterico

21 Peacutendulo claacutesico En la figura 21 podemos observar las fuerzas que inter-vienen en el sistema de peacutendulo invertido claacutesico Donde

M masa del carrom masa del peacutenduloBc friccioacuten del carroBv friccioacuten del peacutenduloL longitud al centro de masa del peacutenduloI inercia del peacutendulo

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 3

Figura 21 Diagrama de fuerzas que actuacutean sobre el peacutenduloinvertido claacutesico

F fuerza aplicada al carroX coordenadas de posicioacuten del carroΘ aacutengulo del peacutendulo respecto de la vertical

Para obtener la ecuacioacuten que describe el movimiento del peacutendulo sumamos lasfuerzas perpendiculares al peacutendulo Si resolvemos el sistema a lo largo de esteeje nos ahorramos un montoacuten de aacutelgebra De esta forma obtenemos la siguienteecuacioacuten

P sin (θ) +N cos (θ)minusmg sin (θ) = mx cos (θ) + Frv

Aquiacute es donde realizamos un anaacutelisis de nuestro contexto Existe mucha bibli-ografiacutea y (ya lo he dicho) muchos sistemas que se basan en la teoriacutea del peacutenduloinvertido Puesto que las soluciones a este sistema son ldquocomplicadasrdquo y no son uacuteni-cas se propone entender que tenemos hasta el momento y buscamos comprenderestrategias alternativas maacutes amigables

22 PID En la figura 22 se puede observar el diagrama de flujo que representaun controlador PID En primer lugar existe un setpoint que es ingresado por elusuario la diferencia entre eacutel y la salida nos da un error (e(t)) momento a momentoEl error se procesa para obtener la correccioacuten a la salida el primer caacutelculo esel proporcional tambieacuten denominado ganancia y baacutesicamente actuacutea directamentesobre la salida proporcionalmente al error

Luego existe la contribucioacuten de la parte integral a veces llamada reset Esta esproporcional a la magnitud del error como asiacute del tiempo de duracioacuten del mismoSumando el error a cada momento (integrando el error) acumulamos el offset2 quese fue corrigiendo previamente El teacutermino integral trabajando con el teacutermino pro-porcional acelera la llegada del proceso al setpoint y elimina los errores residualesque provoca el control proporcional El problema resulta cuando una acumulacioacutenimportante del error provoca un desborde de la respuesta

Por uacuteltimo el teacutermino derivativo trabaja sobre la razoacuten de cambio del error sobreel tiempo Este teacutermino a veces denominado tambieacuten rate contribuye a anticiparel posible error futuro y actuar en consecuencia El inconveniente radica en que deexistir mediciones espurias el aporte puede llevar a una oscilacioacuten sobre el sistema

El control PID trabaja gracias a tres teacuterminos el proporcional (P) el integral(I) y el derivativo (D) Estos tienen la siguiente forma matemaacutetica

P = kp lowast e(t)

2Corrimiento desviacioacuten entre el setpoint ideal y el setpoint real

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 4

Figura 22 Diagrama de flujo del control PID

I = ki lowastτint

0

e(t)dt

D = kd lowastde(t)

dtSi bien estas definiciones son correctas son poco praacutecticas en nuestro caso

23 PID digital Para ello tomaremos en cuenta que nuestro control es digital

P = kp lowast e[n]

I = ki lowast (e[n] + e[nminus 1] + + e[nminusN ]) lowast∆t lowastN

D = kd lowaste[n]minus e[nminus 1]

∆tDonde

e[n] es el error actual en el tiempo discretoe[nminus1] es el error en el tiempo discreto que se obtuvo antes del error actuale[nminusN ] es el error en el tiempo discreto que se obtuvo ene3 veces antes delerror actualN es la cantidad de momentos desde que el sistema comenzoacute a funcionarhasta llegar al momento actual∆t es el tiempo que existe entre los momentos discreto

24 Concepto PID en referencia al proyecto El PID resulta ser de vitalimportancia al momento de poder abstraer el problema aunque posee limitacionescomo todo sistema de control El PID puede ldquoverrdquo a nuestro sistema como soacutelo unaentrada un proceso y una devolucioacuten y trabajar para lograr que la devolucioacuten selo maacutes parecida posible a la entrada

En el caso del robot equilibrista este sistema es inestable por naturaleza comoel peacutendulo invertido El PID ldquodesconocerdquo esta inestabilidad4 y soacutelo busca corregirla desviacioacuten que se produce en el sistema En este caso particular intenta llevar ala posicioacuten deseada (la de equilibrio natural del cuerpo del boe-bot vertical la cualseteamos) En este caso no debemos olvidarnos que esto es aplicable a respuestaslineales por lo tanto aacutengulo dentro del cual puede trabajar es limitado pero tal vessuficiente

3Desde que el sistema comenzoacute a funcionar en el momento cero4Es una de las formas de actuar en la implementacioacuten

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 5

25 Retrasos en sistemas de control basados en micropocesadores Ademaacutesde la longitud de palabra finita los microprocesadores5 son maacutequinas de caacutelculo dig-ital relativamente lentos En muchas aplicaciones de coacutemputo digital tal vez la bajavelocidad de coacutemputo no tenga importancia sin embargo en aplicaciones de sis-temas de control a menudo es necesario el caacutelculo en tiempo real y los retrasosencontrados en el manejo de los datos pueden tener efectos significativos sobre eldesempentildeo del sistema En general es importante saber cuaacuten grandes son estosretrasos a fin de tratar con ellos de manera analiacutetica Cabe atribuir dos problemasinmediatos a los retrasos en los sistemas de control Uno es que si el retraso es muygrande no hay tiempo suficiente para llevar a cabo todos los caacutelculos necesariosa fin de ejecutar los algoritmos de control el otro es el efecto adverso del retrasosobre la estabilidad de los sistemas de control a lazo cerrado

Cada programa estaacute formado por un conjunto de instrucciones y cada una re-quiere un determinado nuacutemero de estados de la maacutequina El tiempo necesario paraque el microprocesador ejecute una instruccioacuten en particular es directamente pro-porcional al nuacutemero total de estados de la maacutequina por los que debe pasar elmicroprocesador a fin de completar la instruccioacuten por ejemplo para el interpretedel BS2 del boe-bot ser requiere un tiempo por instruccioacuten de

1[s]4000[inst] = 250micros

Esto permite que el ldquocerebrordquo BS2 pase por 2000 instrucciones por segundoSi bien puede parecer bastante a comparacioacuten de nuestra labor el programa maacutessencillo requiere de miles de estado de la maacutequina puesto que cada instruccioacutende pbasic se debe decodificar a lenguaje maacutequina y a su vez cada instruccioacuten delenguaje maacutequina a microinstrucciones

Es un echo bien conocido que los retrasos son a menudo causa de inestabili-dad en sistemas de lazo cerrado digitales o continuos es esencial considerar estascondiciones imperfectas cuando se disentildea un sistema de control digital

3 Disentildeo metodoloacutegico

31 Eleccioacuten del control Determinados a resolver el problema como se noshabiacutea pedido en la caacutetedra se opta por enumerar las dificultades

No conozco las constante del motorFalta de conocimiento y preparacioacuten formal sobre sistemas de controlControl digital de un sistema analoacutegicoLimitaciones de procesamiento por parte del ldquocerebrordquo del robotFalta de tiempo principalmente impuestas por el comienzo del proyectoluego del primer cuatrimestre de cursado y la cantidad de proyectos anexosa las demaacutes materias del mismo antildeoAcceso a internet limitadoFalta total de experiencia en el uso de este robotGrupo de trabajo de una persona

Esto llevo a tomar la decisioacuten sobre el tipo de estrategia Basaacutendome en los in-convenientes anteriores decidiacute que programar un controlador PID seriacutea la mejorsolucioacuten Algunas de las ventajas

Puede utilizarse de forma de abstraer el problema base y asiacute disminuir draacutes-ticamente la complejidad del sistema a resolver Puede llegar a funcionar aldquoprueba de conceptordquo

5Y los microcontroladores en especial

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 6

Aunque es necesario hallar los coeficientes de los teacuterminos PID no estaestrictamente ligado a modelos complicados y se puede utilizar un seteoempiacutericoEsta estrategia es bastante utilizada y se hallan muchos proyectos de difer-ente iacutendole que asiacute lo demuestran

Algunos de los inconvenientes maacutes importantes que poseeAunque el seteo de los coeficientes pueden obtenerse en base a la experienciay de ciertas pruebas de interpretacioacuten no siempre es factible hallarlos asiacuteExisten algunos inconvenientes derivados de los sobreimpulsos como elwindupLas oscilaciones del control no estaacuten exentas de desaparecer y hasta puedenincrementarse por una mala actuacioacuten del teacutermino derivativoNo todos los problemas pueden solucionarse por medio de este control

32 Trabajo a realizarEntender las limitaciones de velocidad de procesamiento del ldquocerebrordquo delrobotEstablecer un control proporcional y mejorar el mismo refinando su com-portamientoComprender los inconvenientes que apareja controlar un sistema analoacutegicoa traveacutes de un control digitalEscribir el control PID completo

33 Inconvenientes de la implementacioacuten

331 Optimizacioacuten Uno de los mayores problemas es escribir un coacutedigo capazde ser modular simple efectivo y que este optimizado para el procesamiento delmismo

Uno de los factores determinantes en la respuesta del control sobre el robot esla comunicacioacuten con la PC En este caso existen dos limitantes el primero es labaja frecuencia de procesamiento de las instrucciones de pbasic en el cerebro a loque se le suma los tiempos que requiere la comunicacioacuten con la PC Una de lasinstrucciones a eliminar definitivamente es DEBUG esta instrucciones permitenvisualizar en el PC ciertos datos que se pueden configurar esto es un consumoexcesivo de tiempo

El ldquotamantildeordquo de las variables el tipo de variable puede contener longitudes ade-cuadas pero al utilizarlas discriminando el signo acorta a la mitad la longitud loque genera otro problema Se debe cuidar el tipo de variable a asignar

332 Signado El interprete del boe-bot aunque trabaje a un ldquoaltordquo nivel noslimita en el uso de signado de las variables La mejor solucioacuten es generar unaescritura del coacutedigo tipo aacuterbol balanceado que aunque parezca no muy modularestablece una peacuterdida de tiempo miacutenima en comparacioacuten a la cantidad de coacutedigoque se escribioacute

333 Windup Uno de los problemas comunes resultantes de las implementa-ciones del control PID es el windup Este efecto indeseable sucede cuando se daun corrimiento muy grande del punto de seteo entonces el termino integral acu-mula un error significativamente grande que se convierte en una sobrecarga en larealimentacioacuten lo que produce un mayor error provocando asiacute en un incrementoincontrolado de la parte integral

Existen algunas teacutecnicas para corregir estoInicializar el teacutermino integral en un valor conocidoIncrementar el punto de seteo de forma lineal

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 7

Figura 31 Diagrama simplificado del programa

Deshabilitar el control integral cuando el sistema se encuentre en la regioacutenmaacutes linealLimitar el tiempo que se dedica para el caacutelculo del teacutermino integralLimitar los valores que puede alcanzar el teacutermino reduciendo asiacute los ldquore-botesrdquo

334 Debug Lamentablemente al experiencia nos determino que utilizar la in-struccioacuten DEBUG no es una opcioacuten para depurar los errores o comprender algunosde los estados por los que pasa el sistema por lo que hay que valerse de las expe-riencias que se conocen sobre este tipo de sistemas y realizar las interpretacionesque vengan al caso

34 Diagrama de flujo del control PID digital Una de las mejores manerasde abordar el desarrollo de un programa es realizando un diagrama de flujo El puntode partida fue baacutesico pero necesario y lo apreciamos en la figura 31

Se debe utilizar una cantidad miacutenima de variables pero sin dejar de ser lo suficien-temente coacutemodo el programa para su modificacioacuten El programa principal adoptala forma de la figura 32

Se utilizan tres rutinas las cuales pueden ser estudiadas de las figuras 33 34 y35

La rutina de medicioacuten establece los requerimientos desde el punto de vista delboe-bot y la utilizacioacuten del sensor que en nuestro caso seraacute el moacutedulo QTI6

La seccioacuten de caacutelculo representa lo escrito en 23 pero teniendo en cuenta quela parte integral soacutelo ldquointegraraacuterdquo en el modelo de aproximacioacuten por rectaacutengulosel momento actual y dos momentos anteriores El tiempo es representativo deltiempo que toma en el coacutedigo final pasar de realizar todos los caacutelculos a comenzara realizarlos

La rutina de modulacioacuten soacutelo hace referencia a el enviacuteo del impulso necesariopara mover el boe-bot en sentido de buscar el equilibrio En 35 se trata sobre estetema

35 Ancho de pulso para el control y velocidad de los motores servo-continuos Supongamos que se necesita mover el boe-bot a maacutexima velocidadentonces uno de los motores debe girar en sentido horario a velocidad maacutexima y elotro en sentido antihorario por lo tanto de lo que se observa en las figuras 36 y37

6Nuacutemero de parte 555-27401 para el pedido en parallax

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 8

Figura 32 Diagrama de flujo del programa principal

Figura 33 Rutina de medicioacuten

17ms = 2micros lowast rigth

rigth = 17ms2micros = 850

13ms = 2micros lowast left

left = 13ms2micros = 650

Procedemos a utilizar estos valores en pbasic a traveacutes de la instruccioacutenPULSOUT Pin Duracioacuten

Donde

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 9

Figura 34 Rutina de caacutelculos

Figura 35 Rutina de modulacioacuten

Figura 36 Un tren de pulsos de 13 ms hace rotar el servo amaacutexima velocidad en sentido de las agujas del reloj

Figura 37 Un tren de pulsos de 17 ms hace rotar el servo amaacutexima velocidad en sentido contrario al de las agujas del reloj

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 10

Paraacutemetro Tiempo subida Sobreimpulso Tiempo seteado Error de estadiacutea Estabilidad

kp Decrece Se incrementa Cambio Decrece Se degradapequentildeo

ki Decrece Se incrementa Se incrementa Decrece Se degradasignificativamente

kd Decrece Decrece Decrece No tiene efecto Mejora simiacutenimamente miacutenimamente miacutenimamente en teoriacutea kd es pequentildeo

Cuadro 1 Efectos de incrementar cada paraacutemetro independientemente

Pin Es la variable o constante que indica el pin entradasalida a donde sedirige el pulsoDuracioacuten Es la relacioacuten entrel el pulso que queremos y los 2micros7

351 Impulso cero de los motores Al utilizar la Duracioacuten del PULSOUT en 750los motores quedan estaticos Existe el procedimiento descripto en el manual deboe-bot para esto

36 Obtencioacuten de los coeficientes de los teacuterminos PID Existen muchasformas de obtener los coeficientes Una excelente referencia inicial es los descriptoen el artiacuteculo de wikipedia que podemos hallar en el texto 1 de la bibliografiacutea

En este proyecto se opto por la configuracioacuten manual puesto que esto es muyrelativo se propone buscar sobre este puesto que tal vez puede ser confuso comolograrlo Por lo pronto el texto antes recomendado fue el utilizado para el trabajoUna raacutepida diferencia es la del cuadro 1

361 Procedimiento manual Si el sistema debe estar corriendo primero debemosponer kd y ki a cero Incrementar kp hasta que la salida del lazo comience a oscilarentonces kp debe setearse aproximadamente a la mitad de valor para la cual larepuesta decayoacute un cuarto Se incrementar ki hasta que se pueda corregir el offsetde la respuesta del sistema Sin embargo aumentar demasiado ki puede causarinestabilidad Finalmente se incrementa kd hasta que el lazo tengo una respuestaaceptablemente raacutepida a los impulsos imprevistos Si se incrementa mucho kd puedecausar una respuesta excesiva y sobre impulso perdiendo asiacute la estabilidad Un lazoPID bien seteado usualmente no trabaja tan raacutepido a los impulsos no previstos paradar lugar a una buacutesqueda raacutepida del punto de seteo

4 Materiales

41 Software utilizado

411 Procesador de texto Para ir documentando y realizar este informe sobreel proyecto se decidioacute utilizar un procesador de texto Las ventajas del mismo sonla optimizacioacuten de la presentacioacuten para documentos estaacutendares y poco o nada deinteraccioacuten con el formateo del mismo De gran utilidad para este proyecto Seutilizo el software LYX en su versioacuten 155 el cual es software de licencia GPL comoasiacute gratuito El sitio oficial es httpwwwlyxorg

412 Graficador de diagramas Para la realizacioacuten de los diferentes diagramas seutilizo un graficador de diagramas estructurados llamado DIA en su versioacuten 0961Este software esta tambieacuten amparado bajo la GPL y es de distribucioacuten gratuita Elsitio oficial es httpwwwgnomeorgprojectsdia

7Este valor es el especificado para un BS2

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 11

Figura 41 Boe-bot

413 Entorno de desarrollo Respecto al entorno se intento trabajar con alter-nativas al entorno oficial del que nos otorga la compantildeiacutea Parallax (quien desarrollael boe bot) pero existen pocas opciones y no se teniacutean las libreriacuteas para la compi-lacioacuten Se decidioacute utilizar directamente el IDE Basic Stamp versioacuten 25 de coacutedigopropietario y distribucioacuten gratuita Para la descarga buscar en el sitio oficial de laempresa httpwwwparallaxcom

414 Adaptacioacuten a un sistema GNULinux Para poder utilizar el IDE de paral-lax sobre un sistema GNULinux se utilizo el software WinE (Windows Emulator)en su versioacuten 101-174-gc4039bd El sitio oficial de este proyecto de licencia GPLy distribucioacuten gratuita es httpwwwwinehqorg

42 Plataforma roboacutetica La plataforma donde se implemento el proyecto es elrobot boe-bot (figura 41) producido por la compantildeiacutea Parallax Se decidioacute utilizarel mismo porque habiacutea sido una adquisicioacuten reciente del departamento de elec-troacutenica en la Universidad y ninguacuten equipo de trabajo estaba utilizaacutendolo Ademaacutessu sensillez y facilidad de transferencia del programa lo hace ideal para trabajosexperimentales

Componentes activos de la plataforma

421 Parallax (Futaba) Continuous Rotation ServoRotacioacuten continua bidireccional de 0 a 50 RPM con respuesta linear alcontrol PWM para una faacutecil rampa

bull Requerimientos de tensioacuten de 4 a 6 Vdcbull Comunicacioacuten PWMbull Dimensiones 558 x 19 x 406 mmbull Rango de temperatura operativa -10 a +50 degC

422 Motherboard En la figura 42 se encuentra el motherboard del boebot Acontinuacioacuten una pequentildea descripcioacuten

1 Conector para una pila de 9 voltios2 Condensadores del filtro del regulador de voltaje de 5 voltios en corriente

continua

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 12

Figura 42 Tarjeta electroacutenica del boe-bot

3 Conector del puerto serieusb para la comunicacioacuten con el ordenador4 Zoacutecalo de 24 pines para insertar el moacutedulo BASIC Stamp5 Pulsador para reiniciar el programa cargado en el Boe-Bot6 Interruptor de tres posiciones En la posicioacuten 0 el Boe-Bot estaacute desconecta-

do en la posicioacuten 1 el Boe-Bot estaacute conectado pero los servomotores quemueven las ruedas estaacuten desconectados y en la posicioacuten 2 tanto el Boe-Botcomo los servos estaacuten conectados

7 LED verde que nos indica que el Boe-Bot estaacute encendido8 Conector de las entradassalidas del microcontrolador BASIC Stamp para

su uso en la placa protoboard situada a continuacioacuten9 Placa protoboard para el montaje de los componentes electroacutenicos necesar-

ios para los sensores e indicadores luminosos o acuacutesticos10 Conector de alimentacioacuten Los cinco primeros pines (Vdd) proporcionan una

tensioacuten positiva de 5 voltios los tres siguientes (Vin) una tensioacuten positivadel voltaje que proporcionen las pilas o el adaptador de corriente (6 - 9voltios) y los cinco uacuteltimos (Vss) proporcionan la masa el polo negativo auna tensioacuten de 0 voltios

11 Conectores para cuatro servomotores asociados a las salidas P12 P13 P14y P15

12 Jumper para la seleccioacuten de la alimentacioacuten de los servomotores seguacuten serealice mediante el portapilas de 6 voltios del Boe-Bot o mediante un adap-tador de corriente exterior

13 Regulador de voltaje que proporciona a los circuitos electroacutenicos 5 voltiospositivos (Vdd) y la masa (Vss)

14 Conector para tarjetas de ampliacioacuten Permite conectar las 16 entradassalidasde la P0 a la P15 y los pines de la alimentacioacuten Vdd Vin y Vss

15 Conector para el portapilas de 6 voltios o el adaptador de corriente exteriorde 6 - 9 voltios La varilla central de 21 miliacutemetros corresponde al polopositivo

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 13

Figura 43 BS2 uno de los ldquocerebrosrdquo del boebot

423 Cerebro BS2 En la siguiente enumeracioacuten se describen los componentesque se hallan en el ldquocerebrordquo BS2 del boebot utilizado lo que se puede apreciar enla figura 43

1 Cuatro pines para la comunicacioacuten con el ordenador mediante el puertoserie

2 Memoria EEPROM de una capacidad de 2K en donde se almacena el coacutedigofuente del programa editado en PBASIC

3 Condensador del filtro del regulador de voltaje de 5 voltios4 Ocho pines de las entradassalidas desde la P0 hasta la P75 Microcontrolador PIC16C57C que actuacutea de interprete del lenguaje PBA-

SIC ejecutando el programa a una velocidad de 4000 instrucciones porsegundo

6 Ocho pines de las entradassalidas desde la P8 hasta la P157 Oscilador de cuarzo de 20 megahercios para proporcionar la frecuencia al

reloj interno8 Pin de alimentacioacuten de 5 voltios positivos (Vcc)9 Regulador de voltaje que estabiliza la tensioacuten desde los 6 - 9 voltios de la

alimentacioacuten a los 5 voltios utilizados por los circuitos electroacutenicos10 Pin para reiniciar el programa11 Dos pines de alimentacioacuten a la tensioacuten de 6 - 9 voltios (Vin) y la masa

(Vss)12 Detector de la tensioacuten de alimentacioacuten del moacutedulo BASIC Stamp13 Circuito de gestioacuten de la comunicacioacuten mediante el puerto serieusb

43 Lenguaje de programacioacuten El boe-bot utiliza un interprete para su pro-gramacioacuten basado en el lenguaje pbasic Este lenguaje es muy similar al Basiclo que le agrega mucho facilidad a la programacioacuten de estos equipos limitados enprocesamiento La referencia para utilizar este lenguaje esta totalmente documen-tada por parallax en el texto 5 que se halla en la bibliografiacutea utilizada

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 14

Figura 51 Modificaciones al boe-bot posicioacuten del moacutedulo QTI

5 Implementacioacuten

51 Modificaciones al boe-bot La uacutenica modificacioacuten que se realizo al boe-bot claacutesico es la inversioacuten de la posicioacuten fiacutesica de los servos para que el cuerpo delboe-bot pudiera adoptar la posicioacuten vertical de la figura 11 libremente Esto puedeapreciarse en la figura 51

52 Sensor de distancia El moacutedulo QTI esta disentildeado para la deteccioacuten cer-cana infrarroja El corazoacuten de este moacutedulo es el QRD1114 que es un sensor reflectivode objetos Utiliza un diodo emisor infrarrojo y un phototransistor BJT El moacute-dulo esta disentildeado para utilizarse con la funcioacuten RCTIME que posee la siguientesintaxis

RCTIME Pin State VariableDonde

Pin es alguna de las entradassalidas del puertoState es una constante que puede adoptar el valor 1 o 0 loacutegicosVariable es justamente el registro en memoria donde queremos almacenarel resultado

Esta funcioacuten mide el tiempo que le toma llegar al estado definido en State Usual-mente se utiliza para medir el tiempo de carga o descarga de un circuito RC

En nuestro caso la utilizamos para obtener una ldquomedidardquo de la distancias entreel sensor y la superficie donde esta haciendo equilibrio el robot

La posicioacuten que se adopto para el sensor fue en la parte inferior del boe-bot a nomaacutes de 1 cm de la superficie con una distancia al eje de pivoteo (eje de las ruedas)de no maacutes de 15cm

La conexioacuten de este sensor es muy sencilla el pin W del moacutedulo se conecta a unode los pines de alimentacioacuten del motherboard del robot el pin B al gnd que otorgala placa y el R a una de las entradassalidas del puerto de trabajo que deseemosen nuestro caso utilizamos el 5 Para una mayor comprensioacuten referirse a la figura51

53 Alimentacioacuten eleacutectrica Se elimino el porta pila del boe-bot y se utilizoalimentacioacuten externa con una fuente de voltaje regulable de 3A como maacuteximo tra-bajando a 9V Para no producir una invasioacuten al sistema la alimentacioacuten se hizoa traveacutes de cables muy finos y maneables en una posicioacuten relajada por encima de

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 15

la altura del boe-bot y con el largo suficiente para que el mismo se pudiera moverlibremente

54 Posicioacuten de equilibrio natural del boe-bot Para encontrar la posicioacutende equilibrio se utilizo la siguiente metodologiacutea

Se escribioacute un programa que iba mostrando en la pantalla de debug del IDEla medicioacuten de la distancia del sensor a la superficieManualmente se adoptaba la posicioacuten para la cual se notaba el equilibriodel robotSe anota el valor y se utiliza luego en el programa de control

Todo el trabajo previamente descripto derivo en este programa escrito para tal finfue

rsquo $STAMP BS2rsquo $PBASIC 25front VAR WordDO

HIGH 5RCTIME 51frontPAUSE 1000DEBUG front

LOOP

55 Transferencia de los programas Utilizando el IDE es muy sencillopuesto que posee un herramienta para ldquocorrer el programardquo y lo transfiere al boe-bot por medio del puerto USB como tambieacuten puede ser a traveacutes del puerto serialo una combinacioacuten de los mismos La configuracioacuten es muy sencilla y no requieremucho maacutes esfuerzo

56 Programa para el stamp BS2 El siguiente es el programa definitivo es-crito para controlar la posicioacuten de equilibrio vertical del boe-bot

rsquo $STAMP BS2

rsquo $PBASIC 25

rsquo Licensed under GPLv2 o higher

rsquoBS2 Mapa de las entsal usadas

rsquoP3 Sensor de distancia frontal

Leftservo CON 12 rsquoP12 Servo izquierdo

Rightservo CON 13 rsquoP13 Servo derecho

front VAR Word rsquoDistancia que mide el sensor de contraste

pulseLeft VAR Word rsquoVariable que enviacutea el ancho del pulso al motor izquierdo

pulseRight VAR Word rsquoVariable que enviacutea el ancho del pulso al motor derecho

pulseZero CON 750 rsquoEste es el pulso para el cuacuteal los motores no giran

setpoint VAR Word rsquoEste dato es el setpoint del control PID

kp CON 199100 rsquoValor de la constante de proporcional utilizada

ki CON 399100 rsquoValor de la constante de integracioacuten utilizada

kd CON 190100 rsquoValor de la constante del teacutermino derivativo utilizada

error VAR Word rsquoAlmacena el error que se va obteniendo

p VAR Word rsquoSe almacena el ancho del pulso a sumar al estado estacionario

offsetf VAR Word rsquoDesplaza la medicioacuten de la distancia

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 16

sum1 VAR Word rsquoRepresenta el error anterior al actual

sum2 VAR Word rsquoRepresenta el error anterior al anterior del actual

integrate VAR Word rsquoTeacutermino integral

derivate VAR Word rsquoTeacutermino derivativo

time CON 2510000 rsquoTiempo estimativo entre la obtencioacuten de cada teacutermino

rsquo------Comienzo del programa principal-------

rsquo Incializacioacuten de las variables

offset = pulseZero

sum1 = 0

sum2 = 0

offsetf = 0

PAUSE 2000 rsquoPausa de 2 segundos

SetPoint = 170 rsquoSeteo manual de la posicioacuten a buscar

offsetf = SetPoint

DO rsquoBucle del programa principal

GOSUB Measure rsquoMedicioacuten de la distancia

GOSUB PID rsquoAlgoritmo de control PID

GOSUB Send_Pulse rsquoModulacioacuten de pulso en los motores

LOOP

rsquo-------Subrutinas--------

PID

IF (front ltsetpoint) THEN rsquoHay que revisar el signo y actuar seguacuten para la correccioacuten

error = setpoint - front

integrate = (sum1 + sum2 - error) time 3 rsquoTeacutermino integral

IF error gtsum1 THEN rsquoRevisamos el signo y calculamos el teacutermino derivativo

derivate = (error - sum1) time rsquoEl teacutermino derivativo es en realidad la secante miacutenima

que podemos hallar

ELSE

derivate = (sum1 - error) time

ENDIF

p = error kp + integrate ki + derivate kd rsquoControl PID completo

pulseLeft = p + offset rsquoModulando el ancho del pulso seguacuten se necesite corregir

pulseRight = - p + offset rsquohacia adelante o hacia atraacutes

ENDIF

IF (front gtsetpoint) THEN rsquoEsta parte del programa realiza lo mismo que la anterior soacutelo que

adecua el signo

error = front - setpoint

integrate = (sum1 + sum2 + error) time 3

IF error gtsum1 THEN

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 17

derivate = (error - sum1) time

ELSE

derivate = (sum1 - error) time

ENDIF

p = error kp + integrate ki + derivate kd

pulseLeft = p + offset

pulseRight = - p + offset

ENDIF

sum2 = sum1

sum1 = error

RETURN

rsquo Esta subrutina devuelve la distancia utilizando el sensor de contraste

Measure

HIGH 5

RCTIME 51front

front = front - offsetf

RETURN

rsquo Esta subrutina se encarga de enviar el PWM correcto hacia los motores

Send_Pulse

PULSOUT Leftservo pulseRight

PULSOUT Rightservo pulseLeft

RETURN

6 Resultados

61 Trabajo observado El sistema termino realizando equilibrio y a medidaque el control progresaba en funcionalidad como en tunning8 fue mostrando unaclara mejora No se pudo implementar un sistema que permitiera cotejar las mejorasmaacutes que por el meacutetodo de la observacioacuten Eventualmente el equilibrio en torno ala posicioacuten de equilibrio se obtuvo y demostroacute ser significativamente mejor de lasprimeras pruebas utilizando un control proporcional

62 Aceptacioacuten El programa de control PID logroacute el objetivo permitioacute re-alizar el proyecto en tiempo y forma ademaacutes de sortear una gran cantidad deinconvenientes

8En este caso el seteo de los coeficientes de los teacuterminos PID

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 18

7 Conclusioacuten

Aunque el objetivo inicial de lograr un peacutendulo invertido9 no se alcanzo estaaproximacioacuten es evidentemente un claro progreso hacia la resolucioacuten del mismoAunque el trabajo podriacutea haber sido maacutes ldquoexitosordquo en lo personal fue satisfactoriolograr una solucioacuten y que ademaacutes la misma es bastante aceptable

La estrategia de control PID dejo en evidencia ser a prueba de concepto y logroacuteun importante objetivo a un costo de tiempo dinero y conocimientos10 muy bajos

El boe-bot demostroacute ser una plataforma muy simple pero no asiacute despreciablePermitioacute trabajar raacutepidamente al momento de la programacioacuten pero como contralas limitaciones son algunas veces numerosas pero lo cierto es que es un hardwaredisentildeado para hobbistas y que intenta ser fiel a ello Sin embargo fue muy intere-sante trabajar con el mismo para lograr un ldquoprototipordquo de solucioacuten al problema

Hace muchos antildeos trabaje en instrumentacioacuten en la industria del petroacuteleo y metopaba con sistemas PID de control en muchos de los equipos que se reparaban quecontrolaban desde vaacutelvulas electro-hidraacuteulicas hasta motores de bombas y tornil-los11 para transportar arena Cuando puede estudiar Ing Electroacutenica fue en granmedida por la fascinacioacuten que me produciacutean estos sistemas Asiacute que esta experien-cia fue muy gratificante y me demostroacute el trabajo que conlleva realizar algunas deestas tareas

8 Trabajo a futuro

Muchos puntos no se pudieron estudiar ni tratar los siguientes son los maacutes im-portantes seguacuten un criterio personal que se fue generando a medida que el proyectoavanzaba

Modelizar el hardware con los conocimientos que se adquieren en la materiasistema de controlEstudiar la utilizacioacuten de otros tipos de sensores para la medicioacuten de ladistancia posicionalLograr un equipo de trabajo para incrementar la productividadAunque se abordo una solucioacuten de fuzzy logic12 basada en un ejemplorealizado en python no se pudo implementar Lo ideal seriacutea presentar unasolucioacuten de sistemas hiacutebridosAyudar a la fiacutesica del problema resuelta agregando maacutes peso en la parteinferior cerca al eje de pivoteo

Iacutendice de figuras

11 Posicioacuten de equilibrio del boe-bot self-balanced 221 Diagrama de fuerzas que actuacutean sobre el peacutendulo invertido claacutesico 322 Diagrama de flujo del control PID 431 Diagrama simplificado del programa 732 Diagrama de flujo del programa principal 833 Rutina de medicioacuten 834 Rutina de caacutelculos 935 Rutina de modulacioacuten 9

9Caso claacutesico de control10Sobre sistemas de control11Tipo de Arquiacutemedes12Loacutegica difusa

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 19

36 Un tren de pulsos de 13 ms hace rotar el servo a maacutexima velocidad ensentido de las agujas del reloj 9

37 Un tren de pulsos de 17 ms hace rotar el servo a maacutexima velocidad ensentido contrario al de las agujas del reloj 9

41 Boe-bot 1142 Tarjeta electroacutenica del boe-bot 1243 BS2 uno de los ldquocerebrosrdquo del boebot 1351 Modificaciones al boe-bot posicioacuten del moacutedulo QTI 14

Referencias[1] httpenwikipediaorgwikiPID_controller[2] ldquoModelado y control del peacutendulo invertido sobre carro mediante sistemas hiacutebridosrdquo por Fer-

nando Bote Ortega Universidad de Sevilla[3] rdquoControl of an Inverted Pendulumrdquo por Johnny Lam[4] httpletsmakerobotscomnode22232[5] rdquoBASIC Stamp Syntax and Reference Manualrdquo Version 22 ISBN 1-928982-32-8[6] rdquoPBASIC Language Basicsrdquo Dhinesh Sasidaran Octubre 14 2002[7] rdquoMicrobot PARALLAX Boe - Botrdquo Caacutendido Garciacutea Barroacuten[8] rdquoRobotics with the Boe-Bot Student Guide VERSION 22rdquo wwwparallaxcomdldocs

bookseduroboticsv2_2pdf[9] rdquoMeacutetodo baacutesico para implementar un controlador digital PID en un microcontrolador PIC

para el desarrollo de aplicaciones de bajo costo (Aplicaciones en control de Potencia y laIndustria)rdquo Ilber Adonayt Ruge Ruge Universidad de Cundinamarca Grupo de Investigacioacutenen Tecnologiacuteas de la Informacioacuten y las Comunicaciones GITEINCO Fusagasuga ndash Colombia

[10] rdquoiquestCoacutemo realizar un informe de invetigacioacutenrdquo DrEnrique Teraacuten[11] rdquoDigital PID Controllersrdquo DrVarodom Toochinda wwwdewinzcomdocsecspidpdf[12] rdquoSistemas de control digitalrdquo Benjamin C Kuo Editorial Grupo Patria Cultural ISBN 968-

26-1292[13] rdquoSistemas de control modernordquo Richard C Dorf y Robert H Bishop Deacutecima edicioacuten Edi-

torial Pearson Prentice Hall ISBN 84-205-4401-9

Revisioacuten

101210 - El presente texto es una adaptacioacuten de la versioacuten original titula-da ldquoAproximacioacuten a la solucioacuten del peacutendulo invertido claacutesicordquo Esta modifi-cacioacuten fue realizada con el propoacutesito de poder publicar mi trabajo con maacutessoltura

GABS (Get Another Boe-bot Selfbalanced)copy CopyLeft 2010 Nelson G LombardoPrimera edicioacuten Noviembre 2010Esta documentacioacuten esta licenciada bajo los teacuterminos de la Licencia GNU para

la Documentacioacuten Libre Ver en httpwwwgnuorgcopyleftThis documentation is licensed under the terms of the GNU Free Documentation

License See httpwwwgnuorgcopyleft

E-mail address nelsonlombardogmailcomURL httpetech-nelsonblogspotcom201011primer-pid-funcional-en-el-boebothtmlCurrent address Neuqueacuten Capital Neuqueacuten

  • Contents
  • 1 Introduccioacuten
    • 11 Problema
    • 12 Problema a resolver
    • 13 Alcance
    • 14 Objetivos
      • 2 Marco teoacuterico
        • 21 Peacutendulo claacutesico
        • 22 PID
        • 23 PID digital
        • 24 Concepto PID en referencia al proyecto
        • 25 Retrasos en sistemas de control basados en micropocesadores
          • 3 Disentildeo metodoloacutegico
            • 31 Eleccioacuten del control
            • 32 Trabajo a realizar
            • 33 Inconvenientes de la implementacioacuten
            • 34 Diagrama de flujo del control PID digital
            • 35 Ancho de pulso para el control y velocidad de los motores servo-continuos
            • 36 Obtencioacuten de los coeficientes de los teacuterminos PID
              • 4 Materiales
                • 41 Software utilizado
                • 42 Plataforma roboacutetica
                • 43 Lenguaje de programacioacuten
                  • 5 Implementacioacuten
                    • 51 Modificaciones al boe-bot
                    • 52 Sensor de distancia
                    • 53 Alimentacioacuten eleacutectrica
                    • 54 Posicioacuten de equilibrio natural del boe-bot
                    • 55 Transferencia de los programas
                    • 56 Programa para el stamp BS2
                      • 6 Resultados
                        • 61 Trabajo observado
                        • 62 Aceptacioacuten
                          • 7 Conclusioacuten
                          • 8 Trabajo a futuro
                          • Iacutendice de figuras
                          • Referencias
                          • Revisioacuten
Page 4: Gabs

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 2

Figura 11 Posicioacuten de equilibrio del boe-bot self-balanced

13 Alcance Este trabajo resuelve un problema similar al del peacutendulo invertidoclaacutesico en una pequentildea regioacuten lineal alrededor del punto de seteo utilizando comoestrategia de control un algoritmo PID empiacuterico y un boebot como plataforma parael proyecto

El proyecto se basa fuertemente en la administracioacuten conceptual del problema yde la implementacioacuten basaacutendose en la flexibilidad que otorga la programacioacuten engeneral

14 Objetivos Intentar realizar un estudio sobre el problema del peacutendulo inver-tido utilizando para su implementacioacuten un boe-bot como la base para la instalacioacutendel problema

En la primera parte se estudia el problema de forma teoacuterica y se aprecia losinconvenientes que se tiene Luego en base a esto se define una estrategia de controlpara la solucioacuten del problema y se trabaja en ella

En una segunda parte se decide hacer la implementacioacuten basaacutendose en un controlPID empiacuterico En esta parte se trabaja fuertemente en la obtencioacuten de un programaque permite correr el control PID eliminando la mayor cantidad de inconvenientesposibles y posibilitando una exitosa solucioacuten en torno a la buacutesqueda de la posicioacutende seteo

2 Marco teoacuterico

21 Peacutendulo claacutesico En la figura 21 podemos observar las fuerzas que inter-vienen en el sistema de peacutendulo invertido claacutesico Donde

M masa del carrom masa del peacutenduloBc friccioacuten del carroBv friccioacuten del peacutenduloL longitud al centro de masa del peacutenduloI inercia del peacutendulo

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 3

Figura 21 Diagrama de fuerzas que actuacutean sobre el peacutenduloinvertido claacutesico

F fuerza aplicada al carroX coordenadas de posicioacuten del carroΘ aacutengulo del peacutendulo respecto de la vertical

Para obtener la ecuacioacuten que describe el movimiento del peacutendulo sumamos lasfuerzas perpendiculares al peacutendulo Si resolvemos el sistema a lo largo de esteeje nos ahorramos un montoacuten de aacutelgebra De esta forma obtenemos la siguienteecuacioacuten

P sin (θ) +N cos (θ)minusmg sin (θ) = mx cos (θ) + Frv

Aquiacute es donde realizamos un anaacutelisis de nuestro contexto Existe mucha bibli-ografiacutea y (ya lo he dicho) muchos sistemas que se basan en la teoriacutea del peacutenduloinvertido Puesto que las soluciones a este sistema son ldquocomplicadasrdquo y no son uacuteni-cas se propone entender que tenemos hasta el momento y buscamos comprenderestrategias alternativas maacutes amigables

22 PID En la figura 22 se puede observar el diagrama de flujo que representaun controlador PID En primer lugar existe un setpoint que es ingresado por elusuario la diferencia entre eacutel y la salida nos da un error (e(t)) momento a momentoEl error se procesa para obtener la correccioacuten a la salida el primer caacutelculo esel proporcional tambieacuten denominado ganancia y baacutesicamente actuacutea directamentesobre la salida proporcionalmente al error

Luego existe la contribucioacuten de la parte integral a veces llamada reset Esta esproporcional a la magnitud del error como asiacute del tiempo de duracioacuten del mismoSumando el error a cada momento (integrando el error) acumulamos el offset2 quese fue corrigiendo previamente El teacutermino integral trabajando con el teacutermino pro-porcional acelera la llegada del proceso al setpoint y elimina los errores residualesque provoca el control proporcional El problema resulta cuando una acumulacioacutenimportante del error provoca un desborde de la respuesta

Por uacuteltimo el teacutermino derivativo trabaja sobre la razoacuten de cambio del error sobreel tiempo Este teacutermino a veces denominado tambieacuten rate contribuye a anticiparel posible error futuro y actuar en consecuencia El inconveniente radica en que deexistir mediciones espurias el aporte puede llevar a una oscilacioacuten sobre el sistema

El control PID trabaja gracias a tres teacuterminos el proporcional (P) el integral(I) y el derivativo (D) Estos tienen la siguiente forma matemaacutetica

P = kp lowast e(t)

2Corrimiento desviacioacuten entre el setpoint ideal y el setpoint real

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 4

Figura 22 Diagrama de flujo del control PID

I = ki lowastτint

0

e(t)dt

D = kd lowastde(t)

dtSi bien estas definiciones son correctas son poco praacutecticas en nuestro caso

23 PID digital Para ello tomaremos en cuenta que nuestro control es digital

P = kp lowast e[n]

I = ki lowast (e[n] + e[nminus 1] + + e[nminusN ]) lowast∆t lowastN

D = kd lowaste[n]minus e[nminus 1]

∆tDonde

e[n] es el error actual en el tiempo discretoe[nminus1] es el error en el tiempo discreto que se obtuvo antes del error actuale[nminusN ] es el error en el tiempo discreto que se obtuvo ene3 veces antes delerror actualN es la cantidad de momentos desde que el sistema comenzoacute a funcionarhasta llegar al momento actual∆t es el tiempo que existe entre los momentos discreto

24 Concepto PID en referencia al proyecto El PID resulta ser de vitalimportancia al momento de poder abstraer el problema aunque posee limitacionescomo todo sistema de control El PID puede ldquoverrdquo a nuestro sistema como soacutelo unaentrada un proceso y una devolucioacuten y trabajar para lograr que la devolucioacuten selo maacutes parecida posible a la entrada

En el caso del robot equilibrista este sistema es inestable por naturaleza comoel peacutendulo invertido El PID ldquodesconocerdquo esta inestabilidad4 y soacutelo busca corregirla desviacioacuten que se produce en el sistema En este caso particular intenta llevar ala posicioacuten deseada (la de equilibrio natural del cuerpo del boe-bot vertical la cualseteamos) En este caso no debemos olvidarnos que esto es aplicable a respuestaslineales por lo tanto aacutengulo dentro del cual puede trabajar es limitado pero tal vessuficiente

3Desde que el sistema comenzoacute a funcionar en el momento cero4Es una de las formas de actuar en la implementacioacuten

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 5

25 Retrasos en sistemas de control basados en micropocesadores Ademaacutesde la longitud de palabra finita los microprocesadores5 son maacutequinas de caacutelculo dig-ital relativamente lentos En muchas aplicaciones de coacutemputo digital tal vez la bajavelocidad de coacutemputo no tenga importancia sin embargo en aplicaciones de sis-temas de control a menudo es necesario el caacutelculo en tiempo real y los retrasosencontrados en el manejo de los datos pueden tener efectos significativos sobre eldesempentildeo del sistema En general es importante saber cuaacuten grandes son estosretrasos a fin de tratar con ellos de manera analiacutetica Cabe atribuir dos problemasinmediatos a los retrasos en los sistemas de control Uno es que si el retraso es muygrande no hay tiempo suficiente para llevar a cabo todos los caacutelculos necesariosa fin de ejecutar los algoritmos de control el otro es el efecto adverso del retrasosobre la estabilidad de los sistemas de control a lazo cerrado

Cada programa estaacute formado por un conjunto de instrucciones y cada una re-quiere un determinado nuacutemero de estados de la maacutequina El tiempo necesario paraque el microprocesador ejecute una instruccioacuten en particular es directamente pro-porcional al nuacutemero total de estados de la maacutequina por los que debe pasar elmicroprocesador a fin de completar la instruccioacuten por ejemplo para el interpretedel BS2 del boe-bot ser requiere un tiempo por instruccioacuten de

1[s]4000[inst] = 250micros

Esto permite que el ldquocerebrordquo BS2 pase por 2000 instrucciones por segundoSi bien puede parecer bastante a comparacioacuten de nuestra labor el programa maacutessencillo requiere de miles de estado de la maacutequina puesto que cada instruccioacutende pbasic se debe decodificar a lenguaje maacutequina y a su vez cada instruccioacuten delenguaje maacutequina a microinstrucciones

Es un echo bien conocido que los retrasos son a menudo causa de inestabili-dad en sistemas de lazo cerrado digitales o continuos es esencial considerar estascondiciones imperfectas cuando se disentildea un sistema de control digital

3 Disentildeo metodoloacutegico

31 Eleccioacuten del control Determinados a resolver el problema como se noshabiacutea pedido en la caacutetedra se opta por enumerar las dificultades

No conozco las constante del motorFalta de conocimiento y preparacioacuten formal sobre sistemas de controlControl digital de un sistema analoacutegicoLimitaciones de procesamiento por parte del ldquocerebrordquo del robotFalta de tiempo principalmente impuestas por el comienzo del proyectoluego del primer cuatrimestre de cursado y la cantidad de proyectos anexosa las demaacutes materias del mismo antildeoAcceso a internet limitadoFalta total de experiencia en el uso de este robotGrupo de trabajo de una persona

Esto llevo a tomar la decisioacuten sobre el tipo de estrategia Basaacutendome en los in-convenientes anteriores decidiacute que programar un controlador PID seriacutea la mejorsolucioacuten Algunas de las ventajas

Puede utilizarse de forma de abstraer el problema base y asiacute disminuir draacutes-ticamente la complejidad del sistema a resolver Puede llegar a funcionar aldquoprueba de conceptordquo

5Y los microcontroladores en especial

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 6

Aunque es necesario hallar los coeficientes de los teacuterminos PID no estaestrictamente ligado a modelos complicados y se puede utilizar un seteoempiacutericoEsta estrategia es bastante utilizada y se hallan muchos proyectos de difer-ente iacutendole que asiacute lo demuestran

Algunos de los inconvenientes maacutes importantes que poseeAunque el seteo de los coeficientes pueden obtenerse en base a la experienciay de ciertas pruebas de interpretacioacuten no siempre es factible hallarlos asiacuteExisten algunos inconvenientes derivados de los sobreimpulsos como elwindupLas oscilaciones del control no estaacuten exentas de desaparecer y hasta puedenincrementarse por una mala actuacioacuten del teacutermino derivativoNo todos los problemas pueden solucionarse por medio de este control

32 Trabajo a realizarEntender las limitaciones de velocidad de procesamiento del ldquocerebrordquo delrobotEstablecer un control proporcional y mejorar el mismo refinando su com-portamientoComprender los inconvenientes que apareja controlar un sistema analoacutegicoa traveacutes de un control digitalEscribir el control PID completo

33 Inconvenientes de la implementacioacuten

331 Optimizacioacuten Uno de los mayores problemas es escribir un coacutedigo capazde ser modular simple efectivo y que este optimizado para el procesamiento delmismo

Uno de los factores determinantes en la respuesta del control sobre el robot esla comunicacioacuten con la PC En este caso existen dos limitantes el primero es labaja frecuencia de procesamiento de las instrucciones de pbasic en el cerebro a loque se le suma los tiempos que requiere la comunicacioacuten con la PC Una de lasinstrucciones a eliminar definitivamente es DEBUG esta instrucciones permitenvisualizar en el PC ciertos datos que se pueden configurar esto es un consumoexcesivo de tiempo

El ldquotamantildeordquo de las variables el tipo de variable puede contener longitudes ade-cuadas pero al utilizarlas discriminando el signo acorta a la mitad la longitud loque genera otro problema Se debe cuidar el tipo de variable a asignar

332 Signado El interprete del boe-bot aunque trabaje a un ldquoaltordquo nivel noslimita en el uso de signado de las variables La mejor solucioacuten es generar unaescritura del coacutedigo tipo aacuterbol balanceado que aunque parezca no muy modularestablece una peacuterdida de tiempo miacutenima en comparacioacuten a la cantidad de coacutedigoque se escribioacute

333 Windup Uno de los problemas comunes resultantes de las implementa-ciones del control PID es el windup Este efecto indeseable sucede cuando se daun corrimiento muy grande del punto de seteo entonces el termino integral acu-mula un error significativamente grande que se convierte en una sobrecarga en larealimentacioacuten lo que produce un mayor error provocando asiacute en un incrementoincontrolado de la parte integral

Existen algunas teacutecnicas para corregir estoInicializar el teacutermino integral en un valor conocidoIncrementar el punto de seteo de forma lineal

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 7

Figura 31 Diagrama simplificado del programa

Deshabilitar el control integral cuando el sistema se encuentre en la regioacutenmaacutes linealLimitar el tiempo que se dedica para el caacutelculo del teacutermino integralLimitar los valores que puede alcanzar el teacutermino reduciendo asiacute los ldquore-botesrdquo

334 Debug Lamentablemente al experiencia nos determino que utilizar la in-struccioacuten DEBUG no es una opcioacuten para depurar los errores o comprender algunosde los estados por los que pasa el sistema por lo que hay que valerse de las expe-riencias que se conocen sobre este tipo de sistemas y realizar las interpretacionesque vengan al caso

34 Diagrama de flujo del control PID digital Una de las mejores manerasde abordar el desarrollo de un programa es realizando un diagrama de flujo El puntode partida fue baacutesico pero necesario y lo apreciamos en la figura 31

Se debe utilizar una cantidad miacutenima de variables pero sin dejar de ser lo suficien-temente coacutemodo el programa para su modificacioacuten El programa principal adoptala forma de la figura 32

Se utilizan tres rutinas las cuales pueden ser estudiadas de las figuras 33 34 y35

La rutina de medicioacuten establece los requerimientos desde el punto de vista delboe-bot y la utilizacioacuten del sensor que en nuestro caso seraacute el moacutedulo QTI6

La seccioacuten de caacutelculo representa lo escrito en 23 pero teniendo en cuenta quela parte integral soacutelo ldquointegraraacuterdquo en el modelo de aproximacioacuten por rectaacutengulosel momento actual y dos momentos anteriores El tiempo es representativo deltiempo que toma en el coacutedigo final pasar de realizar todos los caacutelculos a comenzara realizarlos

La rutina de modulacioacuten soacutelo hace referencia a el enviacuteo del impulso necesariopara mover el boe-bot en sentido de buscar el equilibrio En 35 se trata sobre estetema

35 Ancho de pulso para el control y velocidad de los motores servo-continuos Supongamos que se necesita mover el boe-bot a maacutexima velocidadentonces uno de los motores debe girar en sentido horario a velocidad maacutexima y elotro en sentido antihorario por lo tanto de lo que se observa en las figuras 36 y37

6Nuacutemero de parte 555-27401 para el pedido en parallax

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 8

Figura 32 Diagrama de flujo del programa principal

Figura 33 Rutina de medicioacuten

17ms = 2micros lowast rigth

rigth = 17ms2micros = 850

13ms = 2micros lowast left

left = 13ms2micros = 650

Procedemos a utilizar estos valores en pbasic a traveacutes de la instruccioacutenPULSOUT Pin Duracioacuten

Donde

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 9

Figura 34 Rutina de caacutelculos

Figura 35 Rutina de modulacioacuten

Figura 36 Un tren de pulsos de 13 ms hace rotar el servo amaacutexima velocidad en sentido de las agujas del reloj

Figura 37 Un tren de pulsos de 17 ms hace rotar el servo amaacutexima velocidad en sentido contrario al de las agujas del reloj

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 10

Paraacutemetro Tiempo subida Sobreimpulso Tiempo seteado Error de estadiacutea Estabilidad

kp Decrece Se incrementa Cambio Decrece Se degradapequentildeo

ki Decrece Se incrementa Se incrementa Decrece Se degradasignificativamente

kd Decrece Decrece Decrece No tiene efecto Mejora simiacutenimamente miacutenimamente miacutenimamente en teoriacutea kd es pequentildeo

Cuadro 1 Efectos de incrementar cada paraacutemetro independientemente

Pin Es la variable o constante que indica el pin entradasalida a donde sedirige el pulsoDuracioacuten Es la relacioacuten entrel el pulso que queremos y los 2micros7

351 Impulso cero de los motores Al utilizar la Duracioacuten del PULSOUT en 750los motores quedan estaticos Existe el procedimiento descripto en el manual deboe-bot para esto

36 Obtencioacuten de los coeficientes de los teacuterminos PID Existen muchasformas de obtener los coeficientes Una excelente referencia inicial es los descriptoen el artiacuteculo de wikipedia que podemos hallar en el texto 1 de la bibliografiacutea

En este proyecto se opto por la configuracioacuten manual puesto que esto es muyrelativo se propone buscar sobre este puesto que tal vez puede ser confuso comolograrlo Por lo pronto el texto antes recomendado fue el utilizado para el trabajoUna raacutepida diferencia es la del cuadro 1

361 Procedimiento manual Si el sistema debe estar corriendo primero debemosponer kd y ki a cero Incrementar kp hasta que la salida del lazo comience a oscilarentonces kp debe setearse aproximadamente a la mitad de valor para la cual larepuesta decayoacute un cuarto Se incrementar ki hasta que se pueda corregir el offsetde la respuesta del sistema Sin embargo aumentar demasiado ki puede causarinestabilidad Finalmente se incrementa kd hasta que el lazo tengo una respuestaaceptablemente raacutepida a los impulsos imprevistos Si se incrementa mucho kd puedecausar una respuesta excesiva y sobre impulso perdiendo asiacute la estabilidad Un lazoPID bien seteado usualmente no trabaja tan raacutepido a los impulsos no previstos paradar lugar a una buacutesqueda raacutepida del punto de seteo

4 Materiales

41 Software utilizado

411 Procesador de texto Para ir documentando y realizar este informe sobreel proyecto se decidioacute utilizar un procesador de texto Las ventajas del mismo sonla optimizacioacuten de la presentacioacuten para documentos estaacutendares y poco o nada deinteraccioacuten con el formateo del mismo De gran utilidad para este proyecto Seutilizo el software LYX en su versioacuten 155 el cual es software de licencia GPL comoasiacute gratuito El sitio oficial es httpwwwlyxorg

412 Graficador de diagramas Para la realizacioacuten de los diferentes diagramas seutilizo un graficador de diagramas estructurados llamado DIA en su versioacuten 0961Este software esta tambieacuten amparado bajo la GPL y es de distribucioacuten gratuita Elsitio oficial es httpwwwgnomeorgprojectsdia

7Este valor es el especificado para un BS2

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 11

Figura 41 Boe-bot

413 Entorno de desarrollo Respecto al entorno se intento trabajar con alter-nativas al entorno oficial del que nos otorga la compantildeiacutea Parallax (quien desarrollael boe bot) pero existen pocas opciones y no se teniacutean las libreriacuteas para la compi-lacioacuten Se decidioacute utilizar directamente el IDE Basic Stamp versioacuten 25 de coacutedigopropietario y distribucioacuten gratuita Para la descarga buscar en el sitio oficial de laempresa httpwwwparallaxcom

414 Adaptacioacuten a un sistema GNULinux Para poder utilizar el IDE de paral-lax sobre un sistema GNULinux se utilizo el software WinE (Windows Emulator)en su versioacuten 101-174-gc4039bd El sitio oficial de este proyecto de licencia GPLy distribucioacuten gratuita es httpwwwwinehqorg

42 Plataforma roboacutetica La plataforma donde se implemento el proyecto es elrobot boe-bot (figura 41) producido por la compantildeiacutea Parallax Se decidioacute utilizarel mismo porque habiacutea sido una adquisicioacuten reciente del departamento de elec-troacutenica en la Universidad y ninguacuten equipo de trabajo estaba utilizaacutendolo Ademaacutessu sensillez y facilidad de transferencia del programa lo hace ideal para trabajosexperimentales

Componentes activos de la plataforma

421 Parallax (Futaba) Continuous Rotation ServoRotacioacuten continua bidireccional de 0 a 50 RPM con respuesta linear alcontrol PWM para una faacutecil rampa

bull Requerimientos de tensioacuten de 4 a 6 Vdcbull Comunicacioacuten PWMbull Dimensiones 558 x 19 x 406 mmbull Rango de temperatura operativa -10 a +50 degC

422 Motherboard En la figura 42 se encuentra el motherboard del boebot Acontinuacioacuten una pequentildea descripcioacuten

1 Conector para una pila de 9 voltios2 Condensadores del filtro del regulador de voltaje de 5 voltios en corriente

continua

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 12

Figura 42 Tarjeta electroacutenica del boe-bot

3 Conector del puerto serieusb para la comunicacioacuten con el ordenador4 Zoacutecalo de 24 pines para insertar el moacutedulo BASIC Stamp5 Pulsador para reiniciar el programa cargado en el Boe-Bot6 Interruptor de tres posiciones En la posicioacuten 0 el Boe-Bot estaacute desconecta-

do en la posicioacuten 1 el Boe-Bot estaacute conectado pero los servomotores quemueven las ruedas estaacuten desconectados y en la posicioacuten 2 tanto el Boe-Botcomo los servos estaacuten conectados

7 LED verde que nos indica que el Boe-Bot estaacute encendido8 Conector de las entradassalidas del microcontrolador BASIC Stamp para

su uso en la placa protoboard situada a continuacioacuten9 Placa protoboard para el montaje de los componentes electroacutenicos necesar-

ios para los sensores e indicadores luminosos o acuacutesticos10 Conector de alimentacioacuten Los cinco primeros pines (Vdd) proporcionan una

tensioacuten positiva de 5 voltios los tres siguientes (Vin) una tensioacuten positivadel voltaje que proporcionen las pilas o el adaptador de corriente (6 - 9voltios) y los cinco uacuteltimos (Vss) proporcionan la masa el polo negativo auna tensioacuten de 0 voltios

11 Conectores para cuatro servomotores asociados a las salidas P12 P13 P14y P15

12 Jumper para la seleccioacuten de la alimentacioacuten de los servomotores seguacuten serealice mediante el portapilas de 6 voltios del Boe-Bot o mediante un adap-tador de corriente exterior

13 Regulador de voltaje que proporciona a los circuitos electroacutenicos 5 voltiospositivos (Vdd) y la masa (Vss)

14 Conector para tarjetas de ampliacioacuten Permite conectar las 16 entradassalidasde la P0 a la P15 y los pines de la alimentacioacuten Vdd Vin y Vss

15 Conector para el portapilas de 6 voltios o el adaptador de corriente exteriorde 6 - 9 voltios La varilla central de 21 miliacutemetros corresponde al polopositivo

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 13

Figura 43 BS2 uno de los ldquocerebrosrdquo del boebot

423 Cerebro BS2 En la siguiente enumeracioacuten se describen los componentesque se hallan en el ldquocerebrordquo BS2 del boebot utilizado lo que se puede apreciar enla figura 43

1 Cuatro pines para la comunicacioacuten con el ordenador mediante el puertoserie

2 Memoria EEPROM de una capacidad de 2K en donde se almacena el coacutedigofuente del programa editado en PBASIC

3 Condensador del filtro del regulador de voltaje de 5 voltios4 Ocho pines de las entradassalidas desde la P0 hasta la P75 Microcontrolador PIC16C57C que actuacutea de interprete del lenguaje PBA-

SIC ejecutando el programa a una velocidad de 4000 instrucciones porsegundo

6 Ocho pines de las entradassalidas desde la P8 hasta la P157 Oscilador de cuarzo de 20 megahercios para proporcionar la frecuencia al

reloj interno8 Pin de alimentacioacuten de 5 voltios positivos (Vcc)9 Regulador de voltaje que estabiliza la tensioacuten desde los 6 - 9 voltios de la

alimentacioacuten a los 5 voltios utilizados por los circuitos electroacutenicos10 Pin para reiniciar el programa11 Dos pines de alimentacioacuten a la tensioacuten de 6 - 9 voltios (Vin) y la masa

(Vss)12 Detector de la tensioacuten de alimentacioacuten del moacutedulo BASIC Stamp13 Circuito de gestioacuten de la comunicacioacuten mediante el puerto serieusb

43 Lenguaje de programacioacuten El boe-bot utiliza un interprete para su pro-gramacioacuten basado en el lenguaje pbasic Este lenguaje es muy similar al Basiclo que le agrega mucho facilidad a la programacioacuten de estos equipos limitados enprocesamiento La referencia para utilizar este lenguaje esta totalmente documen-tada por parallax en el texto 5 que se halla en la bibliografiacutea utilizada

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 14

Figura 51 Modificaciones al boe-bot posicioacuten del moacutedulo QTI

5 Implementacioacuten

51 Modificaciones al boe-bot La uacutenica modificacioacuten que se realizo al boe-bot claacutesico es la inversioacuten de la posicioacuten fiacutesica de los servos para que el cuerpo delboe-bot pudiera adoptar la posicioacuten vertical de la figura 11 libremente Esto puedeapreciarse en la figura 51

52 Sensor de distancia El moacutedulo QTI esta disentildeado para la deteccioacuten cer-cana infrarroja El corazoacuten de este moacutedulo es el QRD1114 que es un sensor reflectivode objetos Utiliza un diodo emisor infrarrojo y un phototransistor BJT El moacute-dulo esta disentildeado para utilizarse con la funcioacuten RCTIME que posee la siguientesintaxis

RCTIME Pin State VariableDonde

Pin es alguna de las entradassalidas del puertoState es una constante que puede adoptar el valor 1 o 0 loacutegicosVariable es justamente el registro en memoria donde queremos almacenarel resultado

Esta funcioacuten mide el tiempo que le toma llegar al estado definido en State Usual-mente se utiliza para medir el tiempo de carga o descarga de un circuito RC

En nuestro caso la utilizamos para obtener una ldquomedidardquo de la distancias entreel sensor y la superficie donde esta haciendo equilibrio el robot

La posicioacuten que se adopto para el sensor fue en la parte inferior del boe-bot a nomaacutes de 1 cm de la superficie con una distancia al eje de pivoteo (eje de las ruedas)de no maacutes de 15cm

La conexioacuten de este sensor es muy sencilla el pin W del moacutedulo se conecta a unode los pines de alimentacioacuten del motherboard del robot el pin B al gnd que otorgala placa y el R a una de las entradassalidas del puerto de trabajo que deseemosen nuestro caso utilizamos el 5 Para una mayor comprensioacuten referirse a la figura51

53 Alimentacioacuten eleacutectrica Se elimino el porta pila del boe-bot y se utilizoalimentacioacuten externa con una fuente de voltaje regulable de 3A como maacuteximo tra-bajando a 9V Para no producir una invasioacuten al sistema la alimentacioacuten se hizoa traveacutes de cables muy finos y maneables en una posicioacuten relajada por encima de

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 15

la altura del boe-bot y con el largo suficiente para que el mismo se pudiera moverlibremente

54 Posicioacuten de equilibrio natural del boe-bot Para encontrar la posicioacutende equilibrio se utilizo la siguiente metodologiacutea

Se escribioacute un programa que iba mostrando en la pantalla de debug del IDEla medicioacuten de la distancia del sensor a la superficieManualmente se adoptaba la posicioacuten para la cual se notaba el equilibriodel robotSe anota el valor y se utiliza luego en el programa de control

Todo el trabajo previamente descripto derivo en este programa escrito para tal finfue

rsquo $STAMP BS2rsquo $PBASIC 25front VAR WordDO

HIGH 5RCTIME 51frontPAUSE 1000DEBUG front

LOOP

55 Transferencia de los programas Utilizando el IDE es muy sencillopuesto que posee un herramienta para ldquocorrer el programardquo y lo transfiere al boe-bot por medio del puerto USB como tambieacuten puede ser a traveacutes del puerto serialo una combinacioacuten de los mismos La configuracioacuten es muy sencilla y no requieremucho maacutes esfuerzo

56 Programa para el stamp BS2 El siguiente es el programa definitivo es-crito para controlar la posicioacuten de equilibrio vertical del boe-bot

rsquo $STAMP BS2

rsquo $PBASIC 25

rsquo Licensed under GPLv2 o higher

rsquoBS2 Mapa de las entsal usadas

rsquoP3 Sensor de distancia frontal

Leftservo CON 12 rsquoP12 Servo izquierdo

Rightservo CON 13 rsquoP13 Servo derecho

front VAR Word rsquoDistancia que mide el sensor de contraste

pulseLeft VAR Word rsquoVariable que enviacutea el ancho del pulso al motor izquierdo

pulseRight VAR Word rsquoVariable que enviacutea el ancho del pulso al motor derecho

pulseZero CON 750 rsquoEste es el pulso para el cuacuteal los motores no giran

setpoint VAR Word rsquoEste dato es el setpoint del control PID

kp CON 199100 rsquoValor de la constante de proporcional utilizada

ki CON 399100 rsquoValor de la constante de integracioacuten utilizada

kd CON 190100 rsquoValor de la constante del teacutermino derivativo utilizada

error VAR Word rsquoAlmacena el error que se va obteniendo

p VAR Word rsquoSe almacena el ancho del pulso a sumar al estado estacionario

offsetf VAR Word rsquoDesplaza la medicioacuten de la distancia

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 16

sum1 VAR Word rsquoRepresenta el error anterior al actual

sum2 VAR Word rsquoRepresenta el error anterior al anterior del actual

integrate VAR Word rsquoTeacutermino integral

derivate VAR Word rsquoTeacutermino derivativo

time CON 2510000 rsquoTiempo estimativo entre la obtencioacuten de cada teacutermino

rsquo------Comienzo del programa principal-------

rsquo Incializacioacuten de las variables

offset = pulseZero

sum1 = 0

sum2 = 0

offsetf = 0

PAUSE 2000 rsquoPausa de 2 segundos

SetPoint = 170 rsquoSeteo manual de la posicioacuten a buscar

offsetf = SetPoint

DO rsquoBucle del programa principal

GOSUB Measure rsquoMedicioacuten de la distancia

GOSUB PID rsquoAlgoritmo de control PID

GOSUB Send_Pulse rsquoModulacioacuten de pulso en los motores

LOOP

rsquo-------Subrutinas--------

PID

IF (front ltsetpoint) THEN rsquoHay que revisar el signo y actuar seguacuten para la correccioacuten

error = setpoint - front

integrate = (sum1 + sum2 - error) time 3 rsquoTeacutermino integral

IF error gtsum1 THEN rsquoRevisamos el signo y calculamos el teacutermino derivativo

derivate = (error - sum1) time rsquoEl teacutermino derivativo es en realidad la secante miacutenima

que podemos hallar

ELSE

derivate = (sum1 - error) time

ENDIF

p = error kp + integrate ki + derivate kd rsquoControl PID completo

pulseLeft = p + offset rsquoModulando el ancho del pulso seguacuten se necesite corregir

pulseRight = - p + offset rsquohacia adelante o hacia atraacutes

ENDIF

IF (front gtsetpoint) THEN rsquoEsta parte del programa realiza lo mismo que la anterior soacutelo que

adecua el signo

error = front - setpoint

integrate = (sum1 + sum2 + error) time 3

IF error gtsum1 THEN

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 17

derivate = (error - sum1) time

ELSE

derivate = (sum1 - error) time

ENDIF

p = error kp + integrate ki + derivate kd

pulseLeft = p + offset

pulseRight = - p + offset

ENDIF

sum2 = sum1

sum1 = error

RETURN

rsquo Esta subrutina devuelve la distancia utilizando el sensor de contraste

Measure

HIGH 5

RCTIME 51front

front = front - offsetf

RETURN

rsquo Esta subrutina se encarga de enviar el PWM correcto hacia los motores

Send_Pulse

PULSOUT Leftservo pulseRight

PULSOUT Rightservo pulseLeft

RETURN

6 Resultados

61 Trabajo observado El sistema termino realizando equilibrio y a medidaque el control progresaba en funcionalidad como en tunning8 fue mostrando unaclara mejora No se pudo implementar un sistema que permitiera cotejar las mejorasmaacutes que por el meacutetodo de la observacioacuten Eventualmente el equilibrio en torno ala posicioacuten de equilibrio se obtuvo y demostroacute ser significativamente mejor de lasprimeras pruebas utilizando un control proporcional

62 Aceptacioacuten El programa de control PID logroacute el objetivo permitioacute re-alizar el proyecto en tiempo y forma ademaacutes de sortear una gran cantidad deinconvenientes

8En este caso el seteo de los coeficientes de los teacuterminos PID

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 18

7 Conclusioacuten

Aunque el objetivo inicial de lograr un peacutendulo invertido9 no se alcanzo estaaproximacioacuten es evidentemente un claro progreso hacia la resolucioacuten del mismoAunque el trabajo podriacutea haber sido maacutes ldquoexitosordquo en lo personal fue satisfactoriolograr una solucioacuten y que ademaacutes la misma es bastante aceptable

La estrategia de control PID dejo en evidencia ser a prueba de concepto y logroacuteun importante objetivo a un costo de tiempo dinero y conocimientos10 muy bajos

El boe-bot demostroacute ser una plataforma muy simple pero no asiacute despreciablePermitioacute trabajar raacutepidamente al momento de la programacioacuten pero como contralas limitaciones son algunas veces numerosas pero lo cierto es que es un hardwaredisentildeado para hobbistas y que intenta ser fiel a ello Sin embargo fue muy intere-sante trabajar con el mismo para lograr un ldquoprototipordquo de solucioacuten al problema

Hace muchos antildeos trabaje en instrumentacioacuten en la industria del petroacuteleo y metopaba con sistemas PID de control en muchos de los equipos que se reparaban quecontrolaban desde vaacutelvulas electro-hidraacuteulicas hasta motores de bombas y tornil-los11 para transportar arena Cuando puede estudiar Ing Electroacutenica fue en granmedida por la fascinacioacuten que me produciacutean estos sistemas Asiacute que esta experien-cia fue muy gratificante y me demostroacute el trabajo que conlleva realizar algunas deestas tareas

8 Trabajo a futuro

Muchos puntos no se pudieron estudiar ni tratar los siguientes son los maacutes im-portantes seguacuten un criterio personal que se fue generando a medida que el proyectoavanzaba

Modelizar el hardware con los conocimientos que se adquieren en la materiasistema de controlEstudiar la utilizacioacuten de otros tipos de sensores para la medicioacuten de ladistancia posicionalLograr un equipo de trabajo para incrementar la productividadAunque se abordo una solucioacuten de fuzzy logic12 basada en un ejemplorealizado en python no se pudo implementar Lo ideal seriacutea presentar unasolucioacuten de sistemas hiacutebridosAyudar a la fiacutesica del problema resuelta agregando maacutes peso en la parteinferior cerca al eje de pivoteo

Iacutendice de figuras

11 Posicioacuten de equilibrio del boe-bot self-balanced 221 Diagrama de fuerzas que actuacutean sobre el peacutendulo invertido claacutesico 322 Diagrama de flujo del control PID 431 Diagrama simplificado del programa 732 Diagrama de flujo del programa principal 833 Rutina de medicioacuten 834 Rutina de caacutelculos 935 Rutina de modulacioacuten 9

9Caso claacutesico de control10Sobre sistemas de control11Tipo de Arquiacutemedes12Loacutegica difusa

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 19

36 Un tren de pulsos de 13 ms hace rotar el servo a maacutexima velocidad ensentido de las agujas del reloj 9

37 Un tren de pulsos de 17 ms hace rotar el servo a maacutexima velocidad ensentido contrario al de las agujas del reloj 9

41 Boe-bot 1142 Tarjeta electroacutenica del boe-bot 1243 BS2 uno de los ldquocerebrosrdquo del boebot 1351 Modificaciones al boe-bot posicioacuten del moacutedulo QTI 14

Referencias[1] httpenwikipediaorgwikiPID_controller[2] ldquoModelado y control del peacutendulo invertido sobre carro mediante sistemas hiacutebridosrdquo por Fer-

nando Bote Ortega Universidad de Sevilla[3] rdquoControl of an Inverted Pendulumrdquo por Johnny Lam[4] httpletsmakerobotscomnode22232[5] rdquoBASIC Stamp Syntax and Reference Manualrdquo Version 22 ISBN 1-928982-32-8[6] rdquoPBASIC Language Basicsrdquo Dhinesh Sasidaran Octubre 14 2002[7] rdquoMicrobot PARALLAX Boe - Botrdquo Caacutendido Garciacutea Barroacuten[8] rdquoRobotics with the Boe-Bot Student Guide VERSION 22rdquo wwwparallaxcomdldocs

bookseduroboticsv2_2pdf[9] rdquoMeacutetodo baacutesico para implementar un controlador digital PID en un microcontrolador PIC

para el desarrollo de aplicaciones de bajo costo (Aplicaciones en control de Potencia y laIndustria)rdquo Ilber Adonayt Ruge Ruge Universidad de Cundinamarca Grupo de Investigacioacutenen Tecnologiacuteas de la Informacioacuten y las Comunicaciones GITEINCO Fusagasuga ndash Colombia

[10] rdquoiquestCoacutemo realizar un informe de invetigacioacutenrdquo DrEnrique Teraacuten[11] rdquoDigital PID Controllersrdquo DrVarodom Toochinda wwwdewinzcomdocsecspidpdf[12] rdquoSistemas de control digitalrdquo Benjamin C Kuo Editorial Grupo Patria Cultural ISBN 968-

26-1292[13] rdquoSistemas de control modernordquo Richard C Dorf y Robert H Bishop Deacutecima edicioacuten Edi-

torial Pearson Prentice Hall ISBN 84-205-4401-9

Revisioacuten

101210 - El presente texto es una adaptacioacuten de la versioacuten original titula-da ldquoAproximacioacuten a la solucioacuten del peacutendulo invertido claacutesicordquo Esta modifi-cacioacuten fue realizada con el propoacutesito de poder publicar mi trabajo con maacutessoltura

GABS (Get Another Boe-bot Selfbalanced)copy CopyLeft 2010 Nelson G LombardoPrimera edicioacuten Noviembre 2010Esta documentacioacuten esta licenciada bajo los teacuterminos de la Licencia GNU para

la Documentacioacuten Libre Ver en httpwwwgnuorgcopyleftThis documentation is licensed under the terms of the GNU Free Documentation

License See httpwwwgnuorgcopyleft

E-mail address nelsonlombardogmailcomURL httpetech-nelsonblogspotcom201011primer-pid-funcional-en-el-boebothtmlCurrent address Neuqueacuten Capital Neuqueacuten

  • Contents
  • 1 Introduccioacuten
    • 11 Problema
    • 12 Problema a resolver
    • 13 Alcance
    • 14 Objetivos
      • 2 Marco teoacuterico
        • 21 Peacutendulo claacutesico
        • 22 PID
        • 23 PID digital
        • 24 Concepto PID en referencia al proyecto
        • 25 Retrasos en sistemas de control basados en micropocesadores
          • 3 Disentildeo metodoloacutegico
            • 31 Eleccioacuten del control
            • 32 Trabajo a realizar
            • 33 Inconvenientes de la implementacioacuten
            • 34 Diagrama de flujo del control PID digital
            • 35 Ancho de pulso para el control y velocidad de los motores servo-continuos
            • 36 Obtencioacuten de los coeficientes de los teacuterminos PID
              • 4 Materiales
                • 41 Software utilizado
                • 42 Plataforma roboacutetica
                • 43 Lenguaje de programacioacuten
                  • 5 Implementacioacuten
                    • 51 Modificaciones al boe-bot
                    • 52 Sensor de distancia
                    • 53 Alimentacioacuten eleacutectrica
                    • 54 Posicioacuten de equilibrio natural del boe-bot
                    • 55 Transferencia de los programas
                    • 56 Programa para el stamp BS2
                      • 6 Resultados
                        • 61 Trabajo observado
                        • 62 Aceptacioacuten
                          • 7 Conclusioacuten
                          • 8 Trabajo a futuro
                          • Iacutendice de figuras
                          • Referencias
                          • Revisioacuten
Page 5: Gabs

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 3

Figura 21 Diagrama de fuerzas que actuacutean sobre el peacutenduloinvertido claacutesico

F fuerza aplicada al carroX coordenadas de posicioacuten del carroΘ aacutengulo del peacutendulo respecto de la vertical

Para obtener la ecuacioacuten que describe el movimiento del peacutendulo sumamos lasfuerzas perpendiculares al peacutendulo Si resolvemos el sistema a lo largo de esteeje nos ahorramos un montoacuten de aacutelgebra De esta forma obtenemos la siguienteecuacioacuten

P sin (θ) +N cos (θ)minusmg sin (θ) = mx cos (θ) + Frv

Aquiacute es donde realizamos un anaacutelisis de nuestro contexto Existe mucha bibli-ografiacutea y (ya lo he dicho) muchos sistemas que se basan en la teoriacutea del peacutenduloinvertido Puesto que las soluciones a este sistema son ldquocomplicadasrdquo y no son uacuteni-cas se propone entender que tenemos hasta el momento y buscamos comprenderestrategias alternativas maacutes amigables

22 PID En la figura 22 se puede observar el diagrama de flujo que representaun controlador PID En primer lugar existe un setpoint que es ingresado por elusuario la diferencia entre eacutel y la salida nos da un error (e(t)) momento a momentoEl error se procesa para obtener la correccioacuten a la salida el primer caacutelculo esel proporcional tambieacuten denominado ganancia y baacutesicamente actuacutea directamentesobre la salida proporcionalmente al error

Luego existe la contribucioacuten de la parte integral a veces llamada reset Esta esproporcional a la magnitud del error como asiacute del tiempo de duracioacuten del mismoSumando el error a cada momento (integrando el error) acumulamos el offset2 quese fue corrigiendo previamente El teacutermino integral trabajando con el teacutermino pro-porcional acelera la llegada del proceso al setpoint y elimina los errores residualesque provoca el control proporcional El problema resulta cuando una acumulacioacutenimportante del error provoca un desborde de la respuesta

Por uacuteltimo el teacutermino derivativo trabaja sobre la razoacuten de cambio del error sobreel tiempo Este teacutermino a veces denominado tambieacuten rate contribuye a anticiparel posible error futuro y actuar en consecuencia El inconveniente radica en que deexistir mediciones espurias el aporte puede llevar a una oscilacioacuten sobre el sistema

El control PID trabaja gracias a tres teacuterminos el proporcional (P) el integral(I) y el derivativo (D) Estos tienen la siguiente forma matemaacutetica

P = kp lowast e(t)

2Corrimiento desviacioacuten entre el setpoint ideal y el setpoint real

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 4

Figura 22 Diagrama de flujo del control PID

I = ki lowastτint

0

e(t)dt

D = kd lowastde(t)

dtSi bien estas definiciones son correctas son poco praacutecticas en nuestro caso

23 PID digital Para ello tomaremos en cuenta que nuestro control es digital

P = kp lowast e[n]

I = ki lowast (e[n] + e[nminus 1] + + e[nminusN ]) lowast∆t lowastN

D = kd lowaste[n]minus e[nminus 1]

∆tDonde

e[n] es el error actual en el tiempo discretoe[nminus1] es el error en el tiempo discreto que se obtuvo antes del error actuale[nminusN ] es el error en el tiempo discreto que se obtuvo ene3 veces antes delerror actualN es la cantidad de momentos desde que el sistema comenzoacute a funcionarhasta llegar al momento actual∆t es el tiempo que existe entre los momentos discreto

24 Concepto PID en referencia al proyecto El PID resulta ser de vitalimportancia al momento de poder abstraer el problema aunque posee limitacionescomo todo sistema de control El PID puede ldquoverrdquo a nuestro sistema como soacutelo unaentrada un proceso y una devolucioacuten y trabajar para lograr que la devolucioacuten selo maacutes parecida posible a la entrada

En el caso del robot equilibrista este sistema es inestable por naturaleza comoel peacutendulo invertido El PID ldquodesconocerdquo esta inestabilidad4 y soacutelo busca corregirla desviacioacuten que se produce en el sistema En este caso particular intenta llevar ala posicioacuten deseada (la de equilibrio natural del cuerpo del boe-bot vertical la cualseteamos) En este caso no debemos olvidarnos que esto es aplicable a respuestaslineales por lo tanto aacutengulo dentro del cual puede trabajar es limitado pero tal vessuficiente

3Desde que el sistema comenzoacute a funcionar en el momento cero4Es una de las formas de actuar en la implementacioacuten

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 5

25 Retrasos en sistemas de control basados en micropocesadores Ademaacutesde la longitud de palabra finita los microprocesadores5 son maacutequinas de caacutelculo dig-ital relativamente lentos En muchas aplicaciones de coacutemputo digital tal vez la bajavelocidad de coacutemputo no tenga importancia sin embargo en aplicaciones de sis-temas de control a menudo es necesario el caacutelculo en tiempo real y los retrasosencontrados en el manejo de los datos pueden tener efectos significativos sobre eldesempentildeo del sistema En general es importante saber cuaacuten grandes son estosretrasos a fin de tratar con ellos de manera analiacutetica Cabe atribuir dos problemasinmediatos a los retrasos en los sistemas de control Uno es que si el retraso es muygrande no hay tiempo suficiente para llevar a cabo todos los caacutelculos necesariosa fin de ejecutar los algoritmos de control el otro es el efecto adverso del retrasosobre la estabilidad de los sistemas de control a lazo cerrado

Cada programa estaacute formado por un conjunto de instrucciones y cada una re-quiere un determinado nuacutemero de estados de la maacutequina El tiempo necesario paraque el microprocesador ejecute una instruccioacuten en particular es directamente pro-porcional al nuacutemero total de estados de la maacutequina por los que debe pasar elmicroprocesador a fin de completar la instruccioacuten por ejemplo para el interpretedel BS2 del boe-bot ser requiere un tiempo por instruccioacuten de

1[s]4000[inst] = 250micros

Esto permite que el ldquocerebrordquo BS2 pase por 2000 instrucciones por segundoSi bien puede parecer bastante a comparacioacuten de nuestra labor el programa maacutessencillo requiere de miles de estado de la maacutequina puesto que cada instruccioacutende pbasic se debe decodificar a lenguaje maacutequina y a su vez cada instruccioacuten delenguaje maacutequina a microinstrucciones

Es un echo bien conocido que los retrasos son a menudo causa de inestabili-dad en sistemas de lazo cerrado digitales o continuos es esencial considerar estascondiciones imperfectas cuando se disentildea un sistema de control digital

3 Disentildeo metodoloacutegico

31 Eleccioacuten del control Determinados a resolver el problema como se noshabiacutea pedido en la caacutetedra se opta por enumerar las dificultades

No conozco las constante del motorFalta de conocimiento y preparacioacuten formal sobre sistemas de controlControl digital de un sistema analoacutegicoLimitaciones de procesamiento por parte del ldquocerebrordquo del robotFalta de tiempo principalmente impuestas por el comienzo del proyectoluego del primer cuatrimestre de cursado y la cantidad de proyectos anexosa las demaacutes materias del mismo antildeoAcceso a internet limitadoFalta total de experiencia en el uso de este robotGrupo de trabajo de una persona

Esto llevo a tomar la decisioacuten sobre el tipo de estrategia Basaacutendome en los in-convenientes anteriores decidiacute que programar un controlador PID seriacutea la mejorsolucioacuten Algunas de las ventajas

Puede utilizarse de forma de abstraer el problema base y asiacute disminuir draacutes-ticamente la complejidad del sistema a resolver Puede llegar a funcionar aldquoprueba de conceptordquo

5Y los microcontroladores en especial

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 6

Aunque es necesario hallar los coeficientes de los teacuterminos PID no estaestrictamente ligado a modelos complicados y se puede utilizar un seteoempiacutericoEsta estrategia es bastante utilizada y se hallan muchos proyectos de difer-ente iacutendole que asiacute lo demuestran

Algunos de los inconvenientes maacutes importantes que poseeAunque el seteo de los coeficientes pueden obtenerse en base a la experienciay de ciertas pruebas de interpretacioacuten no siempre es factible hallarlos asiacuteExisten algunos inconvenientes derivados de los sobreimpulsos como elwindupLas oscilaciones del control no estaacuten exentas de desaparecer y hasta puedenincrementarse por una mala actuacioacuten del teacutermino derivativoNo todos los problemas pueden solucionarse por medio de este control

32 Trabajo a realizarEntender las limitaciones de velocidad de procesamiento del ldquocerebrordquo delrobotEstablecer un control proporcional y mejorar el mismo refinando su com-portamientoComprender los inconvenientes que apareja controlar un sistema analoacutegicoa traveacutes de un control digitalEscribir el control PID completo

33 Inconvenientes de la implementacioacuten

331 Optimizacioacuten Uno de los mayores problemas es escribir un coacutedigo capazde ser modular simple efectivo y que este optimizado para el procesamiento delmismo

Uno de los factores determinantes en la respuesta del control sobre el robot esla comunicacioacuten con la PC En este caso existen dos limitantes el primero es labaja frecuencia de procesamiento de las instrucciones de pbasic en el cerebro a loque se le suma los tiempos que requiere la comunicacioacuten con la PC Una de lasinstrucciones a eliminar definitivamente es DEBUG esta instrucciones permitenvisualizar en el PC ciertos datos que se pueden configurar esto es un consumoexcesivo de tiempo

El ldquotamantildeordquo de las variables el tipo de variable puede contener longitudes ade-cuadas pero al utilizarlas discriminando el signo acorta a la mitad la longitud loque genera otro problema Se debe cuidar el tipo de variable a asignar

332 Signado El interprete del boe-bot aunque trabaje a un ldquoaltordquo nivel noslimita en el uso de signado de las variables La mejor solucioacuten es generar unaescritura del coacutedigo tipo aacuterbol balanceado que aunque parezca no muy modularestablece una peacuterdida de tiempo miacutenima en comparacioacuten a la cantidad de coacutedigoque se escribioacute

333 Windup Uno de los problemas comunes resultantes de las implementa-ciones del control PID es el windup Este efecto indeseable sucede cuando se daun corrimiento muy grande del punto de seteo entonces el termino integral acu-mula un error significativamente grande que se convierte en una sobrecarga en larealimentacioacuten lo que produce un mayor error provocando asiacute en un incrementoincontrolado de la parte integral

Existen algunas teacutecnicas para corregir estoInicializar el teacutermino integral en un valor conocidoIncrementar el punto de seteo de forma lineal

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 7

Figura 31 Diagrama simplificado del programa

Deshabilitar el control integral cuando el sistema se encuentre en la regioacutenmaacutes linealLimitar el tiempo que se dedica para el caacutelculo del teacutermino integralLimitar los valores que puede alcanzar el teacutermino reduciendo asiacute los ldquore-botesrdquo

334 Debug Lamentablemente al experiencia nos determino que utilizar la in-struccioacuten DEBUG no es una opcioacuten para depurar los errores o comprender algunosde los estados por los que pasa el sistema por lo que hay que valerse de las expe-riencias que se conocen sobre este tipo de sistemas y realizar las interpretacionesque vengan al caso

34 Diagrama de flujo del control PID digital Una de las mejores manerasde abordar el desarrollo de un programa es realizando un diagrama de flujo El puntode partida fue baacutesico pero necesario y lo apreciamos en la figura 31

Se debe utilizar una cantidad miacutenima de variables pero sin dejar de ser lo suficien-temente coacutemodo el programa para su modificacioacuten El programa principal adoptala forma de la figura 32

Se utilizan tres rutinas las cuales pueden ser estudiadas de las figuras 33 34 y35

La rutina de medicioacuten establece los requerimientos desde el punto de vista delboe-bot y la utilizacioacuten del sensor que en nuestro caso seraacute el moacutedulo QTI6

La seccioacuten de caacutelculo representa lo escrito en 23 pero teniendo en cuenta quela parte integral soacutelo ldquointegraraacuterdquo en el modelo de aproximacioacuten por rectaacutengulosel momento actual y dos momentos anteriores El tiempo es representativo deltiempo que toma en el coacutedigo final pasar de realizar todos los caacutelculos a comenzara realizarlos

La rutina de modulacioacuten soacutelo hace referencia a el enviacuteo del impulso necesariopara mover el boe-bot en sentido de buscar el equilibrio En 35 se trata sobre estetema

35 Ancho de pulso para el control y velocidad de los motores servo-continuos Supongamos que se necesita mover el boe-bot a maacutexima velocidadentonces uno de los motores debe girar en sentido horario a velocidad maacutexima y elotro en sentido antihorario por lo tanto de lo que se observa en las figuras 36 y37

6Nuacutemero de parte 555-27401 para el pedido en parallax

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 8

Figura 32 Diagrama de flujo del programa principal

Figura 33 Rutina de medicioacuten

17ms = 2micros lowast rigth

rigth = 17ms2micros = 850

13ms = 2micros lowast left

left = 13ms2micros = 650

Procedemos a utilizar estos valores en pbasic a traveacutes de la instruccioacutenPULSOUT Pin Duracioacuten

Donde

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 9

Figura 34 Rutina de caacutelculos

Figura 35 Rutina de modulacioacuten

Figura 36 Un tren de pulsos de 13 ms hace rotar el servo amaacutexima velocidad en sentido de las agujas del reloj

Figura 37 Un tren de pulsos de 17 ms hace rotar el servo amaacutexima velocidad en sentido contrario al de las agujas del reloj

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 10

Paraacutemetro Tiempo subida Sobreimpulso Tiempo seteado Error de estadiacutea Estabilidad

kp Decrece Se incrementa Cambio Decrece Se degradapequentildeo

ki Decrece Se incrementa Se incrementa Decrece Se degradasignificativamente

kd Decrece Decrece Decrece No tiene efecto Mejora simiacutenimamente miacutenimamente miacutenimamente en teoriacutea kd es pequentildeo

Cuadro 1 Efectos de incrementar cada paraacutemetro independientemente

Pin Es la variable o constante que indica el pin entradasalida a donde sedirige el pulsoDuracioacuten Es la relacioacuten entrel el pulso que queremos y los 2micros7

351 Impulso cero de los motores Al utilizar la Duracioacuten del PULSOUT en 750los motores quedan estaticos Existe el procedimiento descripto en el manual deboe-bot para esto

36 Obtencioacuten de los coeficientes de los teacuterminos PID Existen muchasformas de obtener los coeficientes Una excelente referencia inicial es los descriptoen el artiacuteculo de wikipedia que podemos hallar en el texto 1 de la bibliografiacutea

En este proyecto se opto por la configuracioacuten manual puesto que esto es muyrelativo se propone buscar sobre este puesto que tal vez puede ser confuso comolograrlo Por lo pronto el texto antes recomendado fue el utilizado para el trabajoUna raacutepida diferencia es la del cuadro 1

361 Procedimiento manual Si el sistema debe estar corriendo primero debemosponer kd y ki a cero Incrementar kp hasta que la salida del lazo comience a oscilarentonces kp debe setearse aproximadamente a la mitad de valor para la cual larepuesta decayoacute un cuarto Se incrementar ki hasta que se pueda corregir el offsetde la respuesta del sistema Sin embargo aumentar demasiado ki puede causarinestabilidad Finalmente se incrementa kd hasta que el lazo tengo una respuestaaceptablemente raacutepida a los impulsos imprevistos Si se incrementa mucho kd puedecausar una respuesta excesiva y sobre impulso perdiendo asiacute la estabilidad Un lazoPID bien seteado usualmente no trabaja tan raacutepido a los impulsos no previstos paradar lugar a una buacutesqueda raacutepida del punto de seteo

4 Materiales

41 Software utilizado

411 Procesador de texto Para ir documentando y realizar este informe sobreel proyecto se decidioacute utilizar un procesador de texto Las ventajas del mismo sonla optimizacioacuten de la presentacioacuten para documentos estaacutendares y poco o nada deinteraccioacuten con el formateo del mismo De gran utilidad para este proyecto Seutilizo el software LYX en su versioacuten 155 el cual es software de licencia GPL comoasiacute gratuito El sitio oficial es httpwwwlyxorg

412 Graficador de diagramas Para la realizacioacuten de los diferentes diagramas seutilizo un graficador de diagramas estructurados llamado DIA en su versioacuten 0961Este software esta tambieacuten amparado bajo la GPL y es de distribucioacuten gratuita Elsitio oficial es httpwwwgnomeorgprojectsdia

7Este valor es el especificado para un BS2

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 11

Figura 41 Boe-bot

413 Entorno de desarrollo Respecto al entorno se intento trabajar con alter-nativas al entorno oficial del que nos otorga la compantildeiacutea Parallax (quien desarrollael boe bot) pero existen pocas opciones y no se teniacutean las libreriacuteas para la compi-lacioacuten Se decidioacute utilizar directamente el IDE Basic Stamp versioacuten 25 de coacutedigopropietario y distribucioacuten gratuita Para la descarga buscar en el sitio oficial de laempresa httpwwwparallaxcom

414 Adaptacioacuten a un sistema GNULinux Para poder utilizar el IDE de paral-lax sobre un sistema GNULinux se utilizo el software WinE (Windows Emulator)en su versioacuten 101-174-gc4039bd El sitio oficial de este proyecto de licencia GPLy distribucioacuten gratuita es httpwwwwinehqorg

42 Plataforma roboacutetica La plataforma donde se implemento el proyecto es elrobot boe-bot (figura 41) producido por la compantildeiacutea Parallax Se decidioacute utilizarel mismo porque habiacutea sido una adquisicioacuten reciente del departamento de elec-troacutenica en la Universidad y ninguacuten equipo de trabajo estaba utilizaacutendolo Ademaacutessu sensillez y facilidad de transferencia del programa lo hace ideal para trabajosexperimentales

Componentes activos de la plataforma

421 Parallax (Futaba) Continuous Rotation ServoRotacioacuten continua bidireccional de 0 a 50 RPM con respuesta linear alcontrol PWM para una faacutecil rampa

bull Requerimientos de tensioacuten de 4 a 6 Vdcbull Comunicacioacuten PWMbull Dimensiones 558 x 19 x 406 mmbull Rango de temperatura operativa -10 a +50 degC

422 Motherboard En la figura 42 se encuentra el motherboard del boebot Acontinuacioacuten una pequentildea descripcioacuten

1 Conector para una pila de 9 voltios2 Condensadores del filtro del regulador de voltaje de 5 voltios en corriente

continua

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 12

Figura 42 Tarjeta electroacutenica del boe-bot

3 Conector del puerto serieusb para la comunicacioacuten con el ordenador4 Zoacutecalo de 24 pines para insertar el moacutedulo BASIC Stamp5 Pulsador para reiniciar el programa cargado en el Boe-Bot6 Interruptor de tres posiciones En la posicioacuten 0 el Boe-Bot estaacute desconecta-

do en la posicioacuten 1 el Boe-Bot estaacute conectado pero los servomotores quemueven las ruedas estaacuten desconectados y en la posicioacuten 2 tanto el Boe-Botcomo los servos estaacuten conectados

7 LED verde que nos indica que el Boe-Bot estaacute encendido8 Conector de las entradassalidas del microcontrolador BASIC Stamp para

su uso en la placa protoboard situada a continuacioacuten9 Placa protoboard para el montaje de los componentes electroacutenicos necesar-

ios para los sensores e indicadores luminosos o acuacutesticos10 Conector de alimentacioacuten Los cinco primeros pines (Vdd) proporcionan una

tensioacuten positiva de 5 voltios los tres siguientes (Vin) una tensioacuten positivadel voltaje que proporcionen las pilas o el adaptador de corriente (6 - 9voltios) y los cinco uacuteltimos (Vss) proporcionan la masa el polo negativo auna tensioacuten de 0 voltios

11 Conectores para cuatro servomotores asociados a las salidas P12 P13 P14y P15

12 Jumper para la seleccioacuten de la alimentacioacuten de los servomotores seguacuten serealice mediante el portapilas de 6 voltios del Boe-Bot o mediante un adap-tador de corriente exterior

13 Regulador de voltaje que proporciona a los circuitos electroacutenicos 5 voltiospositivos (Vdd) y la masa (Vss)

14 Conector para tarjetas de ampliacioacuten Permite conectar las 16 entradassalidasde la P0 a la P15 y los pines de la alimentacioacuten Vdd Vin y Vss

15 Conector para el portapilas de 6 voltios o el adaptador de corriente exteriorde 6 - 9 voltios La varilla central de 21 miliacutemetros corresponde al polopositivo

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 13

Figura 43 BS2 uno de los ldquocerebrosrdquo del boebot

423 Cerebro BS2 En la siguiente enumeracioacuten se describen los componentesque se hallan en el ldquocerebrordquo BS2 del boebot utilizado lo que se puede apreciar enla figura 43

1 Cuatro pines para la comunicacioacuten con el ordenador mediante el puertoserie

2 Memoria EEPROM de una capacidad de 2K en donde se almacena el coacutedigofuente del programa editado en PBASIC

3 Condensador del filtro del regulador de voltaje de 5 voltios4 Ocho pines de las entradassalidas desde la P0 hasta la P75 Microcontrolador PIC16C57C que actuacutea de interprete del lenguaje PBA-

SIC ejecutando el programa a una velocidad de 4000 instrucciones porsegundo

6 Ocho pines de las entradassalidas desde la P8 hasta la P157 Oscilador de cuarzo de 20 megahercios para proporcionar la frecuencia al

reloj interno8 Pin de alimentacioacuten de 5 voltios positivos (Vcc)9 Regulador de voltaje que estabiliza la tensioacuten desde los 6 - 9 voltios de la

alimentacioacuten a los 5 voltios utilizados por los circuitos electroacutenicos10 Pin para reiniciar el programa11 Dos pines de alimentacioacuten a la tensioacuten de 6 - 9 voltios (Vin) y la masa

(Vss)12 Detector de la tensioacuten de alimentacioacuten del moacutedulo BASIC Stamp13 Circuito de gestioacuten de la comunicacioacuten mediante el puerto serieusb

43 Lenguaje de programacioacuten El boe-bot utiliza un interprete para su pro-gramacioacuten basado en el lenguaje pbasic Este lenguaje es muy similar al Basiclo que le agrega mucho facilidad a la programacioacuten de estos equipos limitados enprocesamiento La referencia para utilizar este lenguaje esta totalmente documen-tada por parallax en el texto 5 que se halla en la bibliografiacutea utilizada

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 14

Figura 51 Modificaciones al boe-bot posicioacuten del moacutedulo QTI

5 Implementacioacuten

51 Modificaciones al boe-bot La uacutenica modificacioacuten que se realizo al boe-bot claacutesico es la inversioacuten de la posicioacuten fiacutesica de los servos para que el cuerpo delboe-bot pudiera adoptar la posicioacuten vertical de la figura 11 libremente Esto puedeapreciarse en la figura 51

52 Sensor de distancia El moacutedulo QTI esta disentildeado para la deteccioacuten cer-cana infrarroja El corazoacuten de este moacutedulo es el QRD1114 que es un sensor reflectivode objetos Utiliza un diodo emisor infrarrojo y un phototransistor BJT El moacute-dulo esta disentildeado para utilizarse con la funcioacuten RCTIME que posee la siguientesintaxis

RCTIME Pin State VariableDonde

Pin es alguna de las entradassalidas del puertoState es una constante que puede adoptar el valor 1 o 0 loacutegicosVariable es justamente el registro en memoria donde queremos almacenarel resultado

Esta funcioacuten mide el tiempo que le toma llegar al estado definido en State Usual-mente se utiliza para medir el tiempo de carga o descarga de un circuito RC

En nuestro caso la utilizamos para obtener una ldquomedidardquo de la distancias entreel sensor y la superficie donde esta haciendo equilibrio el robot

La posicioacuten que se adopto para el sensor fue en la parte inferior del boe-bot a nomaacutes de 1 cm de la superficie con una distancia al eje de pivoteo (eje de las ruedas)de no maacutes de 15cm

La conexioacuten de este sensor es muy sencilla el pin W del moacutedulo se conecta a unode los pines de alimentacioacuten del motherboard del robot el pin B al gnd que otorgala placa y el R a una de las entradassalidas del puerto de trabajo que deseemosen nuestro caso utilizamos el 5 Para una mayor comprensioacuten referirse a la figura51

53 Alimentacioacuten eleacutectrica Se elimino el porta pila del boe-bot y se utilizoalimentacioacuten externa con una fuente de voltaje regulable de 3A como maacuteximo tra-bajando a 9V Para no producir una invasioacuten al sistema la alimentacioacuten se hizoa traveacutes de cables muy finos y maneables en una posicioacuten relajada por encima de

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 15

la altura del boe-bot y con el largo suficiente para que el mismo se pudiera moverlibremente

54 Posicioacuten de equilibrio natural del boe-bot Para encontrar la posicioacutende equilibrio se utilizo la siguiente metodologiacutea

Se escribioacute un programa que iba mostrando en la pantalla de debug del IDEla medicioacuten de la distancia del sensor a la superficieManualmente se adoptaba la posicioacuten para la cual se notaba el equilibriodel robotSe anota el valor y se utiliza luego en el programa de control

Todo el trabajo previamente descripto derivo en este programa escrito para tal finfue

rsquo $STAMP BS2rsquo $PBASIC 25front VAR WordDO

HIGH 5RCTIME 51frontPAUSE 1000DEBUG front

LOOP

55 Transferencia de los programas Utilizando el IDE es muy sencillopuesto que posee un herramienta para ldquocorrer el programardquo y lo transfiere al boe-bot por medio del puerto USB como tambieacuten puede ser a traveacutes del puerto serialo una combinacioacuten de los mismos La configuracioacuten es muy sencilla y no requieremucho maacutes esfuerzo

56 Programa para el stamp BS2 El siguiente es el programa definitivo es-crito para controlar la posicioacuten de equilibrio vertical del boe-bot

rsquo $STAMP BS2

rsquo $PBASIC 25

rsquo Licensed under GPLv2 o higher

rsquoBS2 Mapa de las entsal usadas

rsquoP3 Sensor de distancia frontal

Leftservo CON 12 rsquoP12 Servo izquierdo

Rightservo CON 13 rsquoP13 Servo derecho

front VAR Word rsquoDistancia que mide el sensor de contraste

pulseLeft VAR Word rsquoVariable que enviacutea el ancho del pulso al motor izquierdo

pulseRight VAR Word rsquoVariable que enviacutea el ancho del pulso al motor derecho

pulseZero CON 750 rsquoEste es el pulso para el cuacuteal los motores no giran

setpoint VAR Word rsquoEste dato es el setpoint del control PID

kp CON 199100 rsquoValor de la constante de proporcional utilizada

ki CON 399100 rsquoValor de la constante de integracioacuten utilizada

kd CON 190100 rsquoValor de la constante del teacutermino derivativo utilizada

error VAR Word rsquoAlmacena el error que se va obteniendo

p VAR Word rsquoSe almacena el ancho del pulso a sumar al estado estacionario

offsetf VAR Word rsquoDesplaza la medicioacuten de la distancia

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 16

sum1 VAR Word rsquoRepresenta el error anterior al actual

sum2 VAR Word rsquoRepresenta el error anterior al anterior del actual

integrate VAR Word rsquoTeacutermino integral

derivate VAR Word rsquoTeacutermino derivativo

time CON 2510000 rsquoTiempo estimativo entre la obtencioacuten de cada teacutermino

rsquo------Comienzo del programa principal-------

rsquo Incializacioacuten de las variables

offset = pulseZero

sum1 = 0

sum2 = 0

offsetf = 0

PAUSE 2000 rsquoPausa de 2 segundos

SetPoint = 170 rsquoSeteo manual de la posicioacuten a buscar

offsetf = SetPoint

DO rsquoBucle del programa principal

GOSUB Measure rsquoMedicioacuten de la distancia

GOSUB PID rsquoAlgoritmo de control PID

GOSUB Send_Pulse rsquoModulacioacuten de pulso en los motores

LOOP

rsquo-------Subrutinas--------

PID

IF (front ltsetpoint) THEN rsquoHay que revisar el signo y actuar seguacuten para la correccioacuten

error = setpoint - front

integrate = (sum1 + sum2 - error) time 3 rsquoTeacutermino integral

IF error gtsum1 THEN rsquoRevisamos el signo y calculamos el teacutermino derivativo

derivate = (error - sum1) time rsquoEl teacutermino derivativo es en realidad la secante miacutenima

que podemos hallar

ELSE

derivate = (sum1 - error) time

ENDIF

p = error kp + integrate ki + derivate kd rsquoControl PID completo

pulseLeft = p + offset rsquoModulando el ancho del pulso seguacuten se necesite corregir

pulseRight = - p + offset rsquohacia adelante o hacia atraacutes

ENDIF

IF (front gtsetpoint) THEN rsquoEsta parte del programa realiza lo mismo que la anterior soacutelo que

adecua el signo

error = front - setpoint

integrate = (sum1 + sum2 + error) time 3

IF error gtsum1 THEN

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 17

derivate = (error - sum1) time

ELSE

derivate = (sum1 - error) time

ENDIF

p = error kp + integrate ki + derivate kd

pulseLeft = p + offset

pulseRight = - p + offset

ENDIF

sum2 = sum1

sum1 = error

RETURN

rsquo Esta subrutina devuelve la distancia utilizando el sensor de contraste

Measure

HIGH 5

RCTIME 51front

front = front - offsetf

RETURN

rsquo Esta subrutina se encarga de enviar el PWM correcto hacia los motores

Send_Pulse

PULSOUT Leftservo pulseRight

PULSOUT Rightservo pulseLeft

RETURN

6 Resultados

61 Trabajo observado El sistema termino realizando equilibrio y a medidaque el control progresaba en funcionalidad como en tunning8 fue mostrando unaclara mejora No se pudo implementar un sistema que permitiera cotejar las mejorasmaacutes que por el meacutetodo de la observacioacuten Eventualmente el equilibrio en torno ala posicioacuten de equilibrio se obtuvo y demostroacute ser significativamente mejor de lasprimeras pruebas utilizando un control proporcional

62 Aceptacioacuten El programa de control PID logroacute el objetivo permitioacute re-alizar el proyecto en tiempo y forma ademaacutes de sortear una gran cantidad deinconvenientes

8En este caso el seteo de los coeficientes de los teacuterminos PID

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 18

7 Conclusioacuten

Aunque el objetivo inicial de lograr un peacutendulo invertido9 no se alcanzo estaaproximacioacuten es evidentemente un claro progreso hacia la resolucioacuten del mismoAunque el trabajo podriacutea haber sido maacutes ldquoexitosordquo en lo personal fue satisfactoriolograr una solucioacuten y que ademaacutes la misma es bastante aceptable

La estrategia de control PID dejo en evidencia ser a prueba de concepto y logroacuteun importante objetivo a un costo de tiempo dinero y conocimientos10 muy bajos

El boe-bot demostroacute ser una plataforma muy simple pero no asiacute despreciablePermitioacute trabajar raacutepidamente al momento de la programacioacuten pero como contralas limitaciones son algunas veces numerosas pero lo cierto es que es un hardwaredisentildeado para hobbistas y que intenta ser fiel a ello Sin embargo fue muy intere-sante trabajar con el mismo para lograr un ldquoprototipordquo de solucioacuten al problema

Hace muchos antildeos trabaje en instrumentacioacuten en la industria del petroacuteleo y metopaba con sistemas PID de control en muchos de los equipos que se reparaban quecontrolaban desde vaacutelvulas electro-hidraacuteulicas hasta motores de bombas y tornil-los11 para transportar arena Cuando puede estudiar Ing Electroacutenica fue en granmedida por la fascinacioacuten que me produciacutean estos sistemas Asiacute que esta experien-cia fue muy gratificante y me demostroacute el trabajo que conlleva realizar algunas deestas tareas

8 Trabajo a futuro

Muchos puntos no se pudieron estudiar ni tratar los siguientes son los maacutes im-portantes seguacuten un criterio personal que se fue generando a medida que el proyectoavanzaba

Modelizar el hardware con los conocimientos que se adquieren en la materiasistema de controlEstudiar la utilizacioacuten de otros tipos de sensores para la medicioacuten de ladistancia posicionalLograr un equipo de trabajo para incrementar la productividadAunque se abordo una solucioacuten de fuzzy logic12 basada en un ejemplorealizado en python no se pudo implementar Lo ideal seriacutea presentar unasolucioacuten de sistemas hiacutebridosAyudar a la fiacutesica del problema resuelta agregando maacutes peso en la parteinferior cerca al eje de pivoteo

Iacutendice de figuras

11 Posicioacuten de equilibrio del boe-bot self-balanced 221 Diagrama de fuerzas que actuacutean sobre el peacutendulo invertido claacutesico 322 Diagrama de flujo del control PID 431 Diagrama simplificado del programa 732 Diagrama de flujo del programa principal 833 Rutina de medicioacuten 834 Rutina de caacutelculos 935 Rutina de modulacioacuten 9

9Caso claacutesico de control10Sobre sistemas de control11Tipo de Arquiacutemedes12Loacutegica difusa

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 19

36 Un tren de pulsos de 13 ms hace rotar el servo a maacutexima velocidad ensentido de las agujas del reloj 9

37 Un tren de pulsos de 17 ms hace rotar el servo a maacutexima velocidad ensentido contrario al de las agujas del reloj 9

41 Boe-bot 1142 Tarjeta electroacutenica del boe-bot 1243 BS2 uno de los ldquocerebrosrdquo del boebot 1351 Modificaciones al boe-bot posicioacuten del moacutedulo QTI 14

Referencias[1] httpenwikipediaorgwikiPID_controller[2] ldquoModelado y control del peacutendulo invertido sobre carro mediante sistemas hiacutebridosrdquo por Fer-

nando Bote Ortega Universidad de Sevilla[3] rdquoControl of an Inverted Pendulumrdquo por Johnny Lam[4] httpletsmakerobotscomnode22232[5] rdquoBASIC Stamp Syntax and Reference Manualrdquo Version 22 ISBN 1-928982-32-8[6] rdquoPBASIC Language Basicsrdquo Dhinesh Sasidaran Octubre 14 2002[7] rdquoMicrobot PARALLAX Boe - Botrdquo Caacutendido Garciacutea Barroacuten[8] rdquoRobotics with the Boe-Bot Student Guide VERSION 22rdquo wwwparallaxcomdldocs

bookseduroboticsv2_2pdf[9] rdquoMeacutetodo baacutesico para implementar un controlador digital PID en un microcontrolador PIC

para el desarrollo de aplicaciones de bajo costo (Aplicaciones en control de Potencia y laIndustria)rdquo Ilber Adonayt Ruge Ruge Universidad de Cundinamarca Grupo de Investigacioacutenen Tecnologiacuteas de la Informacioacuten y las Comunicaciones GITEINCO Fusagasuga ndash Colombia

[10] rdquoiquestCoacutemo realizar un informe de invetigacioacutenrdquo DrEnrique Teraacuten[11] rdquoDigital PID Controllersrdquo DrVarodom Toochinda wwwdewinzcomdocsecspidpdf[12] rdquoSistemas de control digitalrdquo Benjamin C Kuo Editorial Grupo Patria Cultural ISBN 968-

26-1292[13] rdquoSistemas de control modernordquo Richard C Dorf y Robert H Bishop Deacutecima edicioacuten Edi-

torial Pearson Prentice Hall ISBN 84-205-4401-9

Revisioacuten

101210 - El presente texto es una adaptacioacuten de la versioacuten original titula-da ldquoAproximacioacuten a la solucioacuten del peacutendulo invertido claacutesicordquo Esta modifi-cacioacuten fue realizada con el propoacutesito de poder publicar mi trabajo con maacutessoltura

GABS (Get Another Boe-bot Selfbalanced)copy CopyLeft 2010 Nelson G LombardoPrimera edicioacuten Noviembre 2010Esta documentacioacuten esta licenciada bajo los teacuterminos de la Licencia GNU para

la Documentacioacuten Libre Ver en httpwwwgnuorgcopyleftThis documentation is licensed under the terms of the GNU Free Documentation

License See httpwwwgnuorgcopyleft

E-mail address nelsonlombardogmailcomURL httpetech-nelsonblogspotcom201011primer-pid-funcional-en-el-boebothtmlCurrent address Neuqueacuten Capital Neuqueacuten

  • Contents
  • 1 Introduccioacuten
    • 11 Problema
    • 12 Problema a resolver
    • 13 Alcance
    • 14 Objetivos
      • 2 Marco teoacuterico
        • 21 Peacutendulo claacutesico
        • 22 PID
        • 23 PID digital
        • 24 Concepto PID en referencia al proyecto
        • 25 Retrasos en sistemas de control basados en micropocesadores
          • 3 Disentildeo metodoloacutegico
            • 31 Eleccioacuten del control
            • 32 Trabajo a realizar
            • 33 Inconvenientes de la implementacioacuten
            • 34 Diagrama de flujo del control PID digital
            • 35 Ancho de pulso para el control y velocidad de los motores servo-continuos
            • 36 Obtencioacuten de los coeficientes de los teacuterminos PID
              • 4 Materiales
                • 41 Software utilizado
                • 42 Plataforma roboacutetica
                • 43 Lenguaje de programacioacuten
                  • 5 Implementacioacuten
                    • 51 Modificaciones al boe-bot
                    • 52 Sensor de distancia
                    • 53 Alimentacioacuten eleacutectrica
                    • 54 Posicioacuten de equilibrio natural del boe-bot
                    • 55 Transferencia de los programas
                    • 56 Programa para el stamp BS2
                      • 6 Resultados
                        • 61 Trabajo observado
                        • 62 Aceptacioacuten
                          • 7 Conclusioacuten
                          • 8 Trabajo a futuro
                          • Iacutendice de figuras
                          • Referencias
                          • Revisioacuten
Page 6: Gabs

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 4

Figura 22 Diagrama de flujo del control PID

I = ki lowastτint

0

e(t)dt

D = kd lowastde(t)

dtSi bien estas definiciones son correctas son poco praacutecticas en nuestro caso

23 PID digital Para ello tomaremos en cuenta que nuestro control es digital

P = kp lowast e[n]

I = ki lowast (e[n] + e[nminus 1] + + e[nminusN ]) lowast∆t lowastN

D = kd lowaste[n]minus e[nminus 1]

∆tDonde

e[n] es el error actual en el tiempo discretoe[nminus1] es el error en el tiempo discreto que se obtuvo antes del error actuale[nminusN ] es el error en el tiempo discreto que se obtuvo ene3 veces antes delerror actualN es la cantidad de momentos desde que el sistema comenzoacute a funcionarhasta llegar al momento actual∆t es el tiempo que existe entre los momentos discreto

24 Concepto PID en referencia al proyecto El PID resulta ser de vitalimportancia al momento de poder abstraer el problema aunque posee limitacionescomo todo sistema de control El PID puede ldquoverrdquo a nuestro sistema como soacutelo unaentrada un proceso y una devolucioacuten y trabajar para lograr que la devolucioacuten selo maacutes parecida posible a la entrada

En el caso del robot equilibrista este sistema es inestable por naturaleza comoel peacutendulo invertido El PID ldquodesconocerdquo esta inestabilidad4 y soacutelo busca corregirla desviacioacuten que se produce en el sistema En este caso particular intenta llevar ala posicioacuten deseada (la de equilibrio natural del cuerpo del boe-bot vertical la cualseteamos) En este caso no debemos olvidarnos que esto es aplicable a respuestaslineales por lo tanto aacutengulo dentro del cual puede trabajar es limitado pero tal vessuficiente

3Desde que el sistema comenzoacute a funcionar en el momento cero4Es una de las formas de actuar en la implementacioacuten

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 5

25 Retrasos en sistemas de control basados en micropocesadores Ademaacutesde la longitud de palabra finita los microprocesadores5 son maacutequinas de caacutelculo dig-ital relativamente lentos En muchas aplicaciones de coacutemputo digital tal vez la bajavelocidad de coacutemputo no tenga importancia sin embargo en aplicaciones de sis-temas de control a menudo es necesario el caacutelculo en tiempo real y los retrasosencontrados en el manejo de los datos pueden tener efectos significativos sobre eldesempentildeo del sistema En general es importante saber cuaacuten grandes son estosretrasos a fin de tratar con ellos de manera analiacutetica Cabe atribuir dos problemasinmediatos a los retrasos en los sistemas de control Uno es que si el retraso es muygrande no hay tiempo suficiente para llevar a cabo todos los caacutelculos necesariosa fin de ejecutar los algoritmos de control el otro es el efecto adverso del retrasosobre la estabilidad de los sistemas de control a lazo cerrado

Cada programa estaacute formado por un conjunto de instrucciones y cada una re-quiere un determinado nuacutemero de estados de la maacutequina El tiempo necesario paraque el microprocesador ejecute una instruccioacuten en particular es directamente pro-porcional al nuacutemero total de estados de la maacutequina por los que debe pasar elmicroprocesador a fin de completar la instruccioacuten por ejemplo para el interpretedel BS2 del boe-bot ser requiere un tiempo por instruccioacuten de

1[s]4000[inst] = 250micros

Esto permite que el ldquocerebrordquo BS2 pase por 2000 instrucciones por segundoSi bien puede parecer bastante a comparacioacuten de nuestra labor el programa maacutessencillo requiere de miles de estado de la maacutequina puesto que cada instruccioacutende pbasic se debe decodificar a lenguaje maacutequina y a su vez cada instruccioacuten delenguaje maacutequina a microinstrucciones

Es un echo bien conocido que los retrasos son a menudo causa de inestabili-dad en sistemas de lazo cerrado digitales o continuos es esencial considerar estascondiciones imperfectas cuando se disentildea un sistema de control digital

3 Disentildeo metodoloacutegico

31 Eleccioacuten del control Determinados a resolver el problema como se noshabiacutea pedido en la caacutetedra se opta por enumerar las dificultades

No conozco las constante del motorFalta de conocimiento y preparacioacuten formal sobre sistemas de controlControl digital de un sistema analoacutegicoLimitaciones de procesamiento por parte del ldquocerebrordquo del robotFalta de tiempo principalmente impuestas por el comienzo del proyectoluego del primer cuatrimestre de cursado y la cantidad de proyectos anexosa las demaacutes materias del mismo antildeoAcceso a internet limitadoFalta total de experiencia en el uso de este robotGrupo de trabajo de una persona

Esto llevo a tomar la decisioacuten sobre el tipo de estrategia Basaacutendome en los in-convenientes anteriores decidiacute que programar un controlador PID seriacutea la mejorsolucioacuten Algunas de las ventajas

Puede utilizarse de forma de abstraer el problema base y asiacute disminuir draacutes-ticamente la complejidad del sistema a resolver Puede llegar a funcionar aldquoprueba de conceptordquo

5Y los microcontroladores en especial

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 6

Aunque es necesario hallar los coeficientes de los teacuterminos PID no estaestrictamente ligado a modelos complicados y se puede utilizar un seteoempiacutericoEsta estrategia es bastante utilizada y se hallan muchos proyectos de difer-ente iacutendole que asiacute lo demuestran

Algunos de los inconvenientes maacutes importantes que poseeAunque el seteo de los coeficientes pueden obtenerse en base a la experienciay de ciertas pruebas de interpretacioacuten no siempre es factible hallarlos asiacuteExisten algunos inconvenientes derivados de los sobreimpulsos como elwindupLas oscilaciones del control no estaacuten exentas de desaparecer y hasta puedenincrementarse por una mala actuacioacuten del teacutermino derivativoNo todos los problemas pueden solucionarse por medio de este control

32 Trabajo a realizarEntender las limitaciones de velocidad de procesamiento del ldquocerebrordquo delrobotEstablecer un control proporcional y mejorar el mismo refinando su com-portamientoComprender los inconvenientes que apareja controlar un sistema analoacutegicoa traveacutes de un control digitalEscribir el control PID completo

33 Inconvenientes de la implementacioacuten

331 Optimizacioacuten Uno de los mayores problemas es escribir un coacutedigo capazde ser modular simple efectivo y que este optimizado para el procesamiento delmismo

Uno de los factores determinantes en la respuesta del control sobre el robot esla comunicacioacuten con la PC En este caso existen dos limitantes el primero es labaja frecuencia de procesamiento de las instrucciones de pbasic en el cerebro a loque se le suma los tiempos que requiere la comunicacioacuten con la PC Una de lasinstrucciones a eliminar definitivamente es DEBUG esta instrucciones permitenvisualizar en el PC ciertos datos que se pueden configurar esto es un consumoexcesivo de tiempo

El ldquotamantildeordquo de las variables el tipo de variable puede contener longitudes ade-cuadas pero al utilizarlas discriminando el signo acorta a la mitad la longitud loque genera otro problema Se debe cuidar el tipo de variable a asignar

332 Signado El interprete del boe-bot aunque trabaje a un ldquoaltordquo nivel noslimita en el uso de signado de las variables La mejor solucioacuten es generar unaescritura del coacutedigo tipo aacuterbol balanceado que aunque parezca no muy modularestablece una peacuterdida de tiempo miacutenima en comparacioacuten a la cantidad de coacutedigoque se escribioacute

333 Windup Uno de los problemas comunes resultantes de las implementa-ciones del control PID es el windup Este efecto indeseable sucede cuando se daun corrimiento muy grande del punto de seteo entonces el termino integral acu-mula un error significativamente grande que se convierte en una sobrecarga en larealimentacioacuten lo que produce un mayor error provocando asiacute en un incrementoincontrolado de la parte integral

Existen algunas teacutecnicas para corregir estoInicializar el teacutermino integral en un valor conocidoIncrementar el punto de seteo de forma lineal

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 7

Figura 31 Diagrama simplificado del programa

Deshabilitar el control integral cuando el sistema se encuentre en la regioacutenmaacutes linealLimitar el tiempo que se dedica para el caacutelculo del teacutermino integralLimitar los valores que puede alcanzar el teacutermino reduciendo asiacute los ldquore-botesrdquo

334 Debug Lamentablemente al experiencia nos determino que utilizar la in-struccioacuten DEBUG no es una opcioacuten para depurar los errores o comprender algunosde los estados por los que pasa el sistema por lo que hay que valerse de las expe-riencias que se conocen sobre este tipo de sistemas y realizar las interpretacionesque vengan al caso

34 Diagrama de flujo del control PID digital Una de las mejores manerasde abordar el desarrollo de un programa es realizando un diagrama de flujo El puntode partida fue baacutesico pero necesario y lo apreciamos en la figura 31

Se debe utilizar una cantidad miacutenima de variables pero sin dejar de ser lo suficien-temente coacutemodo el programa para su modificacioacuten El programa principal adoptala forma de la figura 32

Se utilizan tres rutinas las cuales pueden ser estudiadas de las figuras 33 34 y35

La rutina de medicioacuten establece los requerimientos desde el punto de vista delboe-bot y la utilizacioacuten del sensor que en nuestro caso seraacute el moacutedulo QTI6

La seccioacuten de caacutelculo representa lo escrito en 23 pero teniendo en cuenta quela parte integral soacutelo ldquointegraraacuterdquo en el modelo de aproximacioacuten por rectaacutengulosel momento actual y dos momentos anteriores El tiempo es representativo deltiempo que toma en el coacutedigo final pasar de realizar todos los caacutelculos a comenzara realizarlos

La rutina de modulacioacuten soacutelo hace referencia a el enviacuteo del impulso necesariopara mover el boe-bot en sentido de buscar el equilibrio En 35 se trata sobre estetema

35 Ancho de pulso para el control y velocidad de los motores servo-continuos Supongamos que se necesita mover el boe-bot a maacutexima velocidadentonces uno de los motores debe girar en sentido horario a velocidad maacutexima y elotro en sentido antihorario por lo tanto de lo que se observa en las figuras 36 y37

6Nuacutemero de parte 555-27401 para el pedido en parallax

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 8

Figura 32 Diagrama de flujo del programa principal

Figura 33 Rutina de medicioacuten

17ms = 2micros lowast rigth

rigth = 17ms2micros = 850

13ms = 2micros lowast left

left = 13ms2micros = 650

Procedemos a utilizar estos valores en pbasic a traveacutes de la instruccioacutenPULSOUT Pin Duracioacuten

Donde

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 9

Figura 34 Rutina de caacutelculos

Figura 35 Rutina de modulacioacuten

Figura 36 Un tren de pulsos de 13 ms hace rotar el servo amaacutexima velocidad en sentido de las agujas del reloj

Figura 37 Un tren de pulsos de 17 ms hace rotar el servo amaacutexima velocidad en sentido contrario al de las agujas del reloj

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 10

Paraacutemetro Tiempo subida Sobreimpulso Tiempo seteado Error de estadiacutea Estabilidad

kp Decrece Se incrementa Cambio Decrece Se degradapequentildeo

ki Decrece Se incrementa Se incrementa Decrece Se degradasignificativamente

kd Decrece Decrece Decrece No tiene efecto Mejora simiacutenimamente miacutenimamente miacutenimamente en teoriacutea kd es pequentildeo

Cuadro 1 Efectos de incrementar cada paraacutemetro independientemente

Pin Es la variable o constante que indica el pin entradasalida a donde sedirige el pulsoDuracioacuten Es la relacioacuten entrel el pulso que queremos y los 2micros7

351 Impulso cero de los motores Al utilizar la Duracioacuten del PULSOUT en 750los motores quedan estaticos Existe el procedimiento descripto en el manual deboe-bot para esto

36 Obtencioacuten de los coeficientes de los teacuterminos PID Existen muchasformas de obtener los coeficientes Una excelente referencia inicial es los descriptoen el artiacuteculo de wikipedia que podemos hallar en el texto 1 de la bibliografiacutea

En este proyecto se opto por la configuracioacuten manual puesto que esto es muyrelativo se propone buscar sobre este puesto que tal vez puede ser confuso comolograrlo Por lo pronto el texto antes recomendado fue el utilizado para el trabajoUna raacutepida diferencia es la del cuadro 1

361 Procedimiento manual Si el sistema debe estar corriendo primero debemosponer kd y ki a cero Incrementar kp hasta que la salida del lazo comience a oscilarentonces kp debe setearse aproximadamente a la mitad de valor para la cual larepuesta decayoacute un cuarto Se incrementar ki hasta que se pueda corregir el offsetde la respuesta del sistema Sin embargo aumentar demasiado ki puede causarinestabilidad Finalmente se incrementa kd hasta que el lazo tengo una respuestaaceptablemente raacutepida a los impulsos imprevistos Si se incrementa mucho kd puedecausar una respuesta excesiva y sobre impulso perdiendo asiacute la estabilidad Un lazoPID bien seteado usualmente no trabaja tan raacutepido a los impulsos no previstos paradar lugar a una buacutesqueda raacutepida del punto de seteo

4 Materiales

41 Software utilizado

411 Procesador de texto Para ir documentando y realizar este informe sobreel proyecto se decidioacute utilizar un procesador de texto Las ventajas del mismo sonla optimizacioacuten de la presentacioacuten para documentos estaacutendares y poco o nada deinteraccioacuten con el formateo del mismo De gran utilidad para este proyecto Seutilizo el software LYX en su versioacuten 155 el cual es software de licencia GPL comoasiacute gratuito El sitio oficial es httpwwwlyxorg

412 Graficador de diagramas Para la realizacioacuten de los diferentes diagramas seutilizo un graficador de diagramas estructurados llamado DIA en su versioacuten 0961Este software esta tambieacuten amparado bajo la GPL y es de distribucioacuten gratuita Elsitio oficial es httpwwwgnomeorgprojectsdia

7Este valor es el especificado para un BS2

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 11

Figura 41 Boe-bot

413 Entorno de desarrollo Respecto al entorno se intento trabajar con alter-nativas al entorno oficial del que nos otorga la compantildeiacutea Parallax (quien desarrollael boe bot) pero existen pocas opciones y no se teniacutean las libreriacuteas para la compi-lacioacuten Se decidioacute utilizar directamente el IDE Basic Stamp versioacuten 25 de coacutedigopropietario y distribucioacuten gratuita Para la descarga buscar en el sitio oficial de laempresa httpwwwparallaxcom

414 Adaptacioacuten a un sistema GNULinux Para poder utilizar el IDE de paral-lax sobre un sistema GNULinux se utilizo el software WinE (Windows Emulator)en su versioacuten 101-174-gc4039bd El sitio oficial de este proyecto de licencia GPLy distribucioacuten gratuita es httpwwwwinehqorg

42 Plataforma roboacutetica La plataforma donde se implemento el proyecto es elrobot boe-bot (figura 41) producido por la compantildeiacutea Parallax Se decidioacute utilizarel mismo porque habiacutea sido una adquisicioacuten reciente del departamento de elec-troacutenica en la Universidad y ninguacuten equipo de trabajo estaba utilizaacutendolo Ademaacutessu sensillez y facilidad de transferencia del programa lo hace ideal para trabajosexperimentales

Componentes activos de la plataforma

421 Parallax (Futaba) Continuous Rotation ServoRotacioacuten continua bidireccional de 0 a 50 RPM con respuesta linear alcontrol PWM para una faacutecil rampa

bull Requerimientos de tensioacuten de 4 a 6 Vdcbull Comunicacioacuten PWMbull Dimensiones 558 x 19 x 406 mmbull Rango de temperatura operativa -10 a +50 degC

422 Motherboard En la figura 42 se encuentra el motherboard del boebot Acontinuacioacuten una pequentildea descripcioacuten

1 Conector para una pila de 9 voltios2 Condensadores del filtro del regulador de voltaje de 5 voltios en corriente

continua

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 12

Figura 42 Tarjeta electroacutenica del boe-bot

3 Conector del puerto serieusb para la comunicacioacuten con el ordenador4 Zoacutecalo de 24 pines para insertar el moacutedulo BASIC Stamp5 Pulsador para reiniciar el programa cargado en el Boe-Bot6 Interruptor de tres posiciones En la posicioacuten 0 el Boe-Bot estaacute desconecta-

do en la posicioacuten 1 el Boe-Bot estaacute conectado pero los servomotores quemueven las ruedas estaacuten desconectados y en la posicioacuten 2 tanto el Boe-Botcomo los servos estaacuten conectados

7 LED verde que nos indica que el Boe-Bot estaacute encendido8 Conector de las entradassalidas del microcontrolador BASIC Stamp para

su uso en la placa protoboard situada a continuacioacuten9 Placa protoboard para el montaje de los componentes electroacutenicos necesar-

ios para los sensores e indicadores luminosos o acuacutesticos10 Conector de alimentacioacuten Los cinco primeros pines (Vdd) proporcionan una

tensioacuten positiva de 5 voltios los tres siguientes (Vin) una tensioacuten positivadel voltaje que proporcionen las pilas o el adaptador de corriente (6 - 9voltios) y los cinco uacuteltimos (Vss) proporcionan la masa el polo negativo auna tensioacuten de 0 voltios

11 Conectores para cuatro servomotores asociados a las salidas P12 P13 P14y P15

12 Jumper para la seleccioacuten de la alimentacioacuten de los servomotores seguacuten serealice mediante el portapilas de 6 voltios del Boe-Bot o mediante un adap-tador de corriente exterior

13 Regulador de voltaje que proporciona a los circuitos electroacutenicos 5 voltiospositivos (Vdd) y la masa (Vss)

14 Conector para tarjetas de ampliacioacuten Permite conectar las 16 entradassalidasde la P0 a la P15 y los pines de la alimentacioacuten Vdd Vin y Vss

15 Conector para el portapilas de 6 voltios o el adaptador de corriente exteriorde 6 - 9 voltios La varilla central de 21 miliacutemetros corresponde al polopositivo

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 13

Figura 43 BS2 uno de los ldquocerebrosrdquo del boebot

423 Cerebro BS2 En la siguiente enumeracioacuten se describen los componentesque se hallan en el ldquocerebrordquo BS2 del boebot utilizado lo que se puede apreciar enla figura 43

1 Cuatro pines para la comunicacioacuten con el ordenador mediante el puertoserie

2 Memoria EEPROM de una capacidad de 2K en donde se almacena el coacutedigofuente del programa editado en PBASIC

3 Condensador del filtro del regulador de voltaje de 5 voltios4 Ocho pines de las entradassalidas desde la P0 hasta la P75 Microcontrolador PIC16C57C que actuacutea de interprete del lenguaje PBA-

SIC ejecutando el programa a una velocidad de 4000 instrucciones porsegundo

6 Ocho pines de las entradassalidas desde la P8 hasta la P157 Oscilador de cuarzo de 20 megahercios para proporcionar la frecuencia al

reloj interno8 Pin de alimentacioacuten de 5 voltios positivos (Vcc)9 Regulador de voltaje que estabiliza la tensioacuten desde los 6 - 9 voltios de la

alimentacioacuten a los 5 voltios utilizados por los circuitos electroacutenicos10 Pin para reiniciar el programa11 Dos pines de alimentacioacuten a la tensioacuten de 6 - 9 voltios (Vin) y la masa

(Vss)12 Detector de la tensioacuten de alimentacioacuten del moacutedulo BASIC Stamp13 Circuito de gestioacuten de la comunicacioacuten mediante el puerto serieusb

43 Lenguaje de programacioacuten El boe-bot utiliza un interprete para su pro-gramacioacuten basado en el lenguaje pbasic Este lenguaje es muy similar al Basiclo que le agrega mucho facilidad a la programacioacuten de estos equipos limitados enprocesamiento La referencia para utilizar este lenguaje esta totalmente documen-tada por parallax en el texto 5 que se halla en la bibliografiacutea utilizada

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 14

Figura 51 Modificaciones al boe-bot posicioacuten del moacutedulo QTI

5 Implementacioacuten

51 Modificaciones al boe-bot La uacutenica modificacioacuten que se realizo al boe-bot claacutesico es la inversioacuten de la posicioacuten fiacutesica de los servos para que el cuerpo delboe-bot pudiera adoptar la posicioacuten vertical de la figura 11 libremente Esto puedeapreciarse en la figura 51

52 Sensor de distancia El moacutedulo QTI esta disentildeado para la deteccioacuten cer-cana infrarroja El corazoacuten de este moacutedulo es el QRD1114 que es un sensor reflectivode objetos Utiliza un diodo emisor infrarrojo y un phototransistor BJT El moacute-dulo esta disentildeado para utilizarse con la funcioacuten RCTIME que posee la siguientesintaxis

RCTIME Pin State VariableDonde

Pin es alguna de las entradassalidas del puertoState es una constante que puede adoptar el valor 1 o 0 loacutegicosVariable es justamente el registro en memoria donde queremos almacenarel resultado

Esta funcioacuten mide el tiempo que le toma llegar al estado definido en State Usual-mente se utiliza para medir el tiempo de carga o descarga de un circuito RC

En nuestro caso la utilizamos para obtener una ldquomedidardquo de la distancias entreel sensor y la superficie donde esta haciendo equilibrio el robot

La posicioacuten que se adopto para el sensor fue en la parte inferior del boe-bot a nomaacutes de 1 cm de la superficie con una distancia al eje de pivoteo (eje de las ruedas)de no maacutes de 15cm

La conexioacuten de este sensor es muy sencilla el pin W del moacutedulo se conecta a unode los pines de alimentacioacuten del motherboard del robot el pin B al gnd que otorgala placa y el R a una de las entradassalidas del puerto de trabajo que deseemosen nuestro caso utilizamos el 5 Para una mayor comprensioacuten referirse a la figura51

53 Alimentacioacuten eleacutectrica Se elimino el porta pila del boe-bot y se utilizoalimentacioacuten externa con una fuente de voltaje regulable de 3A como maacuteximo tra-bajando a 9V Para no producir una invasioacuten al sistema la alimentacioacuten se hizoa traveacutes de cables muy finos y maneables en una posicioacuten relajada por encima de

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 15

la altura del boe-bot y con el largo suficiente para que el mismo se pudiera moverlibremente

54 Posicioacuten de equilibrio natural del boe-bot Para encontrar la posicioacutende equilibrio se utilizo la siguiente metodologiacutea

Se escribioacute un programa que iba mostrando en la pantalla de debug del IDEla medicioacuten de la distancia del sensor a la superficieManualmente se adoptaba la posicioacuten para la cual se notaba el equilibriodel robotSe anota el valor y se utiliza luego en el programa de control

Todo el trabajo previamente descripto derivo en este programa escrito para tal finfue

rsquo $STAMP BS2rsquo $PBASIC 25front VAR WordDO

HIGH 5RCTIME 51frontPAUSE 1000DEBUG front

LOOP

55 Transferencia de los programas Utilizando el IDE es muy sencillopuesto que posee un herramienta para ldquocorrer el programardquo y lo transfiere al boe-bot por medio del puerto USB como tambieacuten puede ser a traveacutes del puerto serialo una combinacioacuten de los mismos La configuracioacuten es muy sencilla y no requieremucho maacutes esfuerzo

56 Programa para el stamp BS2 El siguiente es el programa definitivo es-crito para controlar la posicioacuten de equilibrio vertical del boe-bot

rsquo $STAMP BS2

rsquo $PBASIC 25

rsquo Licensed under GPLv2 o higher

rsquoBS2 Mapa de las entsal usadas

rsquoP3 Sensor de distancia frontal

Leftservo CON 12 rsquoP12 Servo izquierdo

Rightservo CON 13 rsquoP13 Servo derecho

front VAR Word rsquoDistancia que mide el sensor de contraste

pulseLeft VAR Word rsquoVariable que enviacutea el ancho del pulso al motor izquierdo

pulseRight VAR Word rsquoVariable que enviacutea el ancho del pulso al motor derecho

pulseZero CON 750 rsquoEste es el pulso para el cuacuteal los motores no giran

setpoint VAR Word rsquoEste dato es el setpoint del control PID

kp CON 199100 rsquoValor de la constante de proporcional utilizada

ki CON 399100 rsquoValor de la constante de integracioacuten utilizada

kd CON 190100 rsquoValor de la constante del teacutermino derivativo utilizada

error VAR Word rsquoAlmacena el error que se va obteniendo

p VAR Word rsquoSe almacena el ancho del pulso a sumar al estado estacionario

offsetf VAR Word rsquoDesplaza la medicioacuten de la distancia

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 16

sum1 VAR Word rsquoRepresenta el error anterior al actual

sum2 VAR Word rsquoRepresenta el error anterior al anterior del actual

integrate VAR Word rsquoTeacutermino integral

derivate VAR Word rsquoTeacutermino derivativo

time CON 2510000 rsquoTiempo estimativo entre la obtencioacuten de cada teacutermino

rsquo------Comienzo del programa principal-------

rsquo Incializacioacuten de las variables

offset = pulseZero

sum1 = 0

sum2 = 0

offsetf = 0

PAUSE 2000 rsquoPausa de 2 segundos

SetPoint = 170 rsquoSeteo manual de la posicioacuten a buscar

offsetf = SetPoint

DO rsquoBucle del programa principal

GOSUB Measure rsquoMedicioacuten de la distancia

GOSUB PID rsquoAlgoritmo de control PID

GOSUB Send_Pulse rsquoModulacioacuten de pulso en los motores

LOOP

rsquo-------Subrutinas--------

PID

IF (front ltsetpoint) THEN rsquoHay que revisar el signo y actuar seguacuten para la correccioacuten

error = setpoint - front

integrate = (sum1 + sum2 - error) time 3 rsquoTeacutermino integral

IF error gtsum1 THEN rsquoRevisamos el signo y calculamos el teacutermino derivativo

derivate = (error - sum1) time rsquoEl teacutermino derivativo es en realidad la secante miacutenima

que podemos hallar

ELSE

derivate = (sum1 - error) time

ENDIF

p = error kp + integrate ki + derivate kd rsquoControl PID completo

pulseLeft = p + offset rsquoModulando el ancho del pulso seguacuten se necesite corregir

pulseRight = - p + offset rsquohacia adelante o hacia atraacutes

ENDIF

IF (front gtsetpoint) THEN rsquoEsta parte del programa realiza lo mismo que la anterior soacutelo que

adecua el signo

error = front - setpoint

integrate = (sum1 + sum2 + error) time 3

IF error gtsum1 THEN

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 17

derivate = (error - sum1) time

ELSE

derivate = (sum1 - error) time

ENDIF

p = error kp + integrate ki + derivate kd

pulseLeft = p + offset

pulseRight = - p + offset

ENDIF

sum2 = sum1

sum1 = error

RETURN

rsquo Esta subrutina devuelve la distancia utilizando el sensor de contraste

Measure

HIGH 5

RCTIME 51front

front = front - offsetf

RETURN

rsquo Esta subrutina se encarga de enviar el PWM correcto hacia los motores

Send_Pulse

PULSOUT Leftservo pulseRight

PULSOUT Rightservo pulseLeft

RETURN

6 Resultados

61 Trabajo observado El sistema termino realizando equilibrio y a medidaque el control progresaba en funcionalidad como en tunning8 fue mostrando unaclara mejora No se pudo implementar un sistema que permitiera cotejar las mejorasmaacutes que por el meacutetodo de la observacioacuten Eventualmente el equilibrio en torno ala posicioacuten de equilibrio se obtuvo y demostroacute ser significativamente mejor de lasprimeras pruebas utilizando un control proporcional

62 Aceptacioacuten El programa de control PID logroacute el objetivo permitioacute re-alizar el proyecto en tiempo y forma ademaacutes de sortear una gran cantidad deinconvenientes

8En este caso el seteo de los coeficientes de los teacuterminos PID

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 18

7 Conclusioacuten

Aunque el objetivo inicial de lograr un peacutendulo invertido9 no se alcanzo estaaproximacioacuten es evidentemente un claro progreso hacia la resolucioacuten del mismoAunque el trabajo podriacutea haber sido maacutes ldquoexitosordquo en lo personal fue satisfactoriolograr una solucioacuten y que ademaacutes la misma es bastante aceptable

La estrategia de control PID dejo en evidencia ser a prueba de concepto y logroacuteun importante objetivo a un costo de tiempo dinero y conocimientos10 muy bajos

El boe-bot demostroacute ser una plataforma muy simple pero no asiacute despreciablePermitioacute trabajar raacutepidamente al momento de la programacioacuten pero como contralas limitaciones son algunas veces numerosas pero lo cierto es que es un hardwaredisentildeado para hobbistas y que intenta ser fiel a ello Sin embargo fue muy intere-sante trabajar con el mismo para lograr un ldquoprototipordquo de solucioacuten al problema

Hace muchos antildeos trabaje en instrumentacioacuten en la industria del petroacuteleo y metopaba con sistemas PID de control en muchos de los equipos que se reparaban quecontrolaban desde vaacutelvulas electro-hidraacuteulicas hasta motores de bombas y tornil-los11 para transportar arena Cuando puede estudiar Ing Electroacutenica fue en granmedida por la fascinacioacuten que me produciacutean estos sistemas Asiacute que esta experien-cia fue muy gratificante y me demostroacute el trabajo que conlleva realizar algunas deestas tareas

8 Trabajo a futuro

Muchos puntos no se pudieron estudiar ni tratar los siguientes son los maacutes im-portantes seguacuten un criterio personal que se fue generando a medida que el proyectoavanzaba

Modelizar el hardware con los conocimientos que se adquieren en la materiasistema de controlEstudiar la utilizacioacuten de otros tipos de sensores para la medicioacuten de ladistancia posicionalLograr un equipo de trabajo para incrementar la productividadAunque se abordo una solucioacuten de fuzzy logic12 basada en un ejemplorealizado en python no se pudo implementar Lo ideal seriacutea presentar unasolucioacuten de sistemas hiacutebridosAyudar a la fiacutesica del problema resuelta agregando maacutes peso en la parteinferior cerca al eje de pivoteo

Iacutendice de figuras

11 Posicioacuten de equilibrio del boe-bot self-balanced 221 Diagrama de fuerzas que actuacutean sobre el peacutendulo invertido claacutesico 322 Diagrama de flujo del control PID 431 Diagrama simplificado del programa 732 Diagrama de flujo del programa principal 833 Rutina de medicioacuten 834 Rutina de caacutelculos 935 Rutina de modulacioacuten 9

9Caso claacutesico de control10Sobre sistemas de control11Tipo de Arquiacutemedes12Loacutegica difusa

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 19

36 Un tren de pulsos de 13 ms hace rotar el servo a maacutexima velocidad ensentido de las agujas del reloj 9

37 Un tren de pulsos de 17 ms hace rotar el servo a maacutexima velocidad ensentido contrario al de las agujas del reloj 9

41 Boe-bot 1142 Tarjeta electroacutenica del boe-bot 1243 BS2 uno de los ldquocerebrosrdquo del boebot 1351 Modificaciones al boe-bot posicioacuten del moacutedulo QTI 14

Referencias[1] httpenwikipediaorgwikiPID_controller[2] ldquoModelado y control del peacutendulo invertido sobre carro mediante sistemas hiacutebridosrdquo por Fer-

nando Bote Ortega Universidad de Sevilla[3] rdquoControl of an Inverted Pendulumrdquo por Johnny Lam[4] httpletsmakerobotscomnode22232[5] rdquoBASIC Stamp Syntax and Reference Manualrdquo Version 22 ISBN 1-928982-32-8[6] rdquoPBASIC Language Basicsrdquo Dhinesh Sasidaran Octubre 14 2002[7] rdquoMicrobot PARALLAX Boe - Botrdquo Caacutendido Garciacutea Barroacuten[8] rdquoRobotics with the Boe-Bot Student Guide VERSION 22rdquo wwwparallaxcomdldocs

bookseduroboticsv2_2pdf[9] rdquoMeacutetodo baacutesico para implementar un controlador digital PID en un microcontrolador PIC

para el desarrollo de aplicaciones de bajo costo (Aplicaciones en control de Potencia y laIndustria)rdquo Ilber Adonayt Ruge Ruge Universidad de Cundinamarca Grupo de Investigacioacutenen Tecnologiacuteas de la Informacioacuten y las Comunicaciones GITEINCO Fusagasuga ndash Colombia

[10] rdquoiquestCoacutemo realizar un informe de invetigacioacutenrdquo DrEnrique Teraacuten[11] rdquoDigital PID Controllersrdquo DrVarodom Toochinda wwwdewinzcomdocsecspidpdf[12] rdquoSistemas de control digitalrdquo Benjamin C Kuo Editorial Grupo Patria Cultural ISBN 968-

26-1292[13] rdquoSistemas de control modernordquo Richard C Dorf y Robert H Bishop Deacutecima edicioacuten Edi-

torial Pearson Prentice Hall ISBN 84-205-4401-9

Revisioacuten

101210 - El presente texto es una adaptacioacuten de la versioacuten original titula-da ldquoAproximacioacuten a la solucioacuten del peacutendulo invertido claacutesicordquo Esta modifi-cacioacuten fue realizada con el propoacutesito de poder publicar mi trabajo con maacutessoltura

GABS (Get Another Boe-bot Selfbalanced)copy CopyLeft 2010 Nelson G LombardoPrimera edicioacuten Noviembre 2010Esta documentacioacuten esta licenciada bajo los teacuterminos de la Licencia GNU para

la Documentacioacuten Libre Ver en httpwwwgnuorgcopyleftThis documentation is licensed under the terms of the GNU Free Documentation

License See httpwwwgnuorgcopyleft

E-mail address nelsonlombardogmailcomURL httpetech-nelsonblogspotcom201011primer-pid-funcional-en-el-boebothtmlCurrent address Neuqueacuten Capital Neuqueacuten

  • Contents
  • 1 Introduccioacuten
    • 11 Problema
    • 12 Problema a resolver
    • 13 Alcance
    • 14 Objetivos
      • 2 Marco teoacuterico
        • 21 Peacutendulo claacutesico
        • 22 PID
        • 23 PID digital
        • 24 Concepto PID en referencia al proyecto
        • 25 Retrasos en sistemas de control basados en micropocesadores
          • 3 Disentildeo metodoloacutegico
            • 31 Eleccioacuten del control
            • 32 Trabajo a realizar
            • 33 Inconvenientes de la implementacioacuten
            • 34 Diagrama de flujo del control PID digital
            • 35 Ancho de pulso para el control y velocidad de los motores servo-continuos
            • 36 Obtencioacuten de los coeficientes de los teacuterminos PID
              • 4 Materiales
                • 41 Software utilizado
                • 42 Plataforma roboacutetica
                • 43 Lenguaje de programacioacuten
                  • 5 Implementacioacuten
                    • 51 Modificaciones al boe-bot
                    • 52 Sensor de distancia
                    • 53 Alimentacioacuten eleacutectrica
                    • 54 Posicioacuten de equilibrio natural del boe-bot
                    • 55 Transferencia de los programas
                    • 56 Programa para el stamp BS2
                      • 6 Resultados
                        • 61 Trabajo observado
                        • 62 Aceptacioacuten
                          • 7 Conclusioacuten
                          • 8 Trabajo a futuro
                          • Iacutendice de figuras
                          • Referencias
                          • Revisioacuten
Page 7: Gabs

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 5

25 Retrasos en sistemas de control basados en micropocesadores Ademaacutesde la longitud de palabra finita los microprocesadores5 son maacutequinas de caacutelculo dig-ital relativamente lentos En muchas aplicaciones de coacutemputo digital tal vez la bajavelocidad de coacutemputo no tenga importancia sin embargo en aplicaciones de sis-temas de control a menudo es necesario el caacutelculo en tiempo real y los retrasosencontrados en el manejo de los datos pueden tener efectos significativos sobre eldesempentildeo del sistema En general es importante saber cuaacuten grandes son estosretrasos a fin de tratar con ellos de manera analiacutetica Cabe atribuir dos problemasinmediatos a los retrasos en los sistemas de control Uno es que si el retraso es muygrande no hay tiempo suficiente para llevar a cabo todos los caacutelculos necesariosa fin de ejecutar los algoritmos de control el otro es el efecto adverso del retrasosobre la estabilidad de los sistemas de control a lazo cerrado

Cada programa estaacute formado por un conjunto de instrucciones y cada una re-quiere un determinado nuacutemero de estados de la maacutequina El tiempo necesario paraque el microprocesador ejecute una instruccioacuten en particular es directamente pro-porcional al nuacutemero total de estados de la maacutequina por los que debe pasar elmicroprocesador a fin de completar la instruccioacuten por ejemplo para el interpretedel BS2 del boe-bot ser requiere un tiempo por instruccioacuten de

1[s]4000[inst] = 250micros

Esto permite que el ldquocerebrordquo BS2 pase por 2000 instrucciones por segundoSi bien puede parecer bastante a comparacioacuten de nuestra labor el programa maacutessencillo requiere de miles de estado de la maacutequina puesto que cada instruccioacutende pbasic se debe decodificar a lenguaje maacutequina y a su vez cada instruccioacuten delenguaje maacutequina a microinstrucciones

Es un echo bien conocido que los retrasos son a menudo causa de inestabili-dad en sistemas de lazo cerrado digitales o continuos es esencial considerar estascondiciones imperfectas cuando se disentildea un sistema de control digital

3 Disentildeo metodoloacutegico

31 Eleccioacuten del control Determinados a resolver el problema como se noshabiacutea pedido en la caacutetedra se opta por enumerar las dificultades

No conozco las constante del motorFalta de conocimiento y preparacioacuten formal sobre sistemas de controlControl digital de un sistema analoacutegicoLimitaciones de procesamiento por parte del ldquocerebrordquo del robotFalta de tiempo principalmente impuestas por el comienzo del proyectoluego del primer cuatrimestre de cursado y la cantidad de proyectos anexosa las demaacutes materias del mismo antildeoAcceso a internet limitadoFalta total de experiencia en el uso de este robotGrupo de trabajo de una persona

Esto llevo a tomar la decisioacuten sobre el tipo de estrategia Basaacutendome en los in-convenientes anteriores decidiacute que programar un controlador PID seriacutea la mejorsolucioacuten Algunas de las ventajas

Puede utilizarse de forma de abstraer el problema base y asiacute disminuir draacutes-ticamente la complejidad del sistema a resolver Puede llegar a funcionar aldquoprueba de conceptordquo

5Y los microcontroladores en especial

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 6

Aunque es necesario hallar los coeficientes de los teacuterminos PID no estaestrictamente ligado a modelos complicados y se puede utilizar un seteoempiacutericoEsta estrategia es bastante utilizada y se hallan muchos proyectos de difer-ente iacutendole que asiacute lo demuestran

Algunos de los inconvenientes maacutes importantes que poseeAunque el seteo de los coeficientes pueden obtenerse en base a la experienciay de ciertas pruebas de interpretacioacuten no siempre es factible hallarlos asiacuteExisten algunos inconvenientes derivados de los sobreimpulsos como elwindupLas oscilaciones del control no estaacuten exentas de desaparecer y hasta puedenincrementarse por una mala actuacioacuten del teacutermino derivativoNo todos los problemas pueden solucionarse por medio de este control

32 Trabajo a realizarEntender las limitaciones de velocidad de procesamiento del ldquocerebrordquo delrobotEstablecer un control proporcional y mejorar el mismo refinando su com-portamientoComprender los inconvenientes que apareja controlar un sistema analoacutegicoa traveacutes de un control digitalEscribir el control PID completo

33 Inconvenientes de la implementacioacuten

331 Optimizacioacuten Uno de los mayores problemas es escribir un coacutedigo capazde ser modular simple efectivo y que este optimizado para el procesamiento delmismo

Uno de los factores determinantes en la respuesta del control sobre el robot esla comunicacioacuten con la PC En este caso existen dos limitantes el primero es labaja frecuencia de procesamiento de las instrucciones de pbasic en el cerebro a loque se le suma los tiempos que requiere la comunicacioacuten con la PC Una de lasinstrucciones a eliminar definitivamente es DEBUG esta instrucciones permitenvisualizar en el PC ciertos datos que se pueden configurar esto es un consumoexcesivo de tiempo

El ldquotamantildeordquo de las variables el tipo de variable puede contener longitudes ade-cuadas pero al utilizarlas discriminando el signo acorta a la mitad la longitud loque genera otro problema Se debe cuidar el tipo de variable a asignar

332 Signado El interprete del boe-bot aunque trabaje a un ldquoaltordquo nivel noslimita en el uso de signado de las variables La mejor solucioacuten es generar unaescritura del coacutedigo tipo aacuterbol balanceado que aunque parezca no muy modularestablece una peacuterdida de tiempo miacutenima en comparacioacuten a la cantidad de coacutedigoque se escribioacute

333 Windup Uno de los problemas comunes resultantes de las implementa-ciones del control PID es el windup Este efecto indeseable sucede cuando se daun corrimiento muy grande del punto de seteo entonces el termino integral acu-mula un error significativamente grande que se convierte en una sobrecarga en larealimentacioacuten lo que produce un mayor error provocando asiacute en un incrementoincontrolado de la parte integral

Existen algunas teacutecnicas para corregir estoInicializar el teacutermino integral en un valor conocidoIncrementar el punto de seteo de forma lineal

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 7

Figura 31 Diagrama simplificado del programa

Deshabilitar el control integral cuando el sistema se encuentre en la regioacutenmaacutes linealLimitar el tiempo que se dedica para el caacutelculo del teacutermino integralLimitar los valores que puede alcanzar el teacutermino reduciendo asiacute los ldquore-botesrdquo

334 Debug Lamentablemente al experiencia nos determino que utilizar la in-struccioacuten DEBUG no es una opcioacuten para depurar los errores o comprender algunosde los estados por los que pasa el sistema por lo que hay que valerse de las expe-riencias que se conocen sobre este tipo de sistemas y realizar las interpretacionesque vengan al caso

34 Diagrama de flujo del control PID digital Una de las mejores manerasde abordar el desarrollo de un programa es realizando un diagrama de flujo El puntode partida fue baacutesico pero necesario y lo apreciamos en la figura 31

Se debe utilizar una cantidad miacutenima de variables pero sin dejar de ser lo suficien-temente coacutemodo el programa para su modificacioacuten El programa principal adoptala forma de la figura 32

Se utilizan tres rutinas las cuales pueden ser estudiadas de las figuras 33 34 y35

La rutina de medicioacuten establece los requerimientos desde el punto de vista delboe-bot y la utilizacioacuten del sensor que en nuestro caso seraacute el moacutedulo QTI6

La seccioacuten de caacutelculo representa lo escrito en 23 pero teniendo en cuenta quela parte integral soacutelo ldquointegraraacuterdquo en el modelo de aproximacioacuten por rectaacutengulosel momento actual y dos momentos anteriores El tiempo es representativo deltiempo que toma en el coacutedigo final pasar de realizar todos los caacutelculos a comenzara realizarlos

La rutina de modulacioacuten soacutelo hace referencia a el enviacuteo del impulso necesariopara mover el boe-bot en sentido de buscar el equilibrio En 35 se trata sobre estetema

35 Ancho de pulso para el control y velocidad de los motores servo-continuos Supongamos que se necesita mover el boe-bot a maacutexima velocidadentonces uno de los motores debe girar en sentido horario a velocidad maacutexima y elotro en sentido antihorario por lo tanto de lo que se observa en las figuras 36 y37

6Nuacutemero de parte 555-27401 para el pedido en parallax

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 8

Figura 32 Diagrama de flujo del programa principal

Figura 33 Rutina de medicioacuten

17ms = 2micros lowast rigth

rigth = 17ms2micros = 850

13ms = 2micros lowast left

left = 13ms2micros = 650

Procedemos a utilizar estos valores en pbasic a traveacutes de la instruccioacutenPULSOUT Pin Duracioacuten

Donde

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 9

Figura 34 Rutina de caacutelculos

Figura 35 Rutina de modulacioacuten

Figura 36 Un tren de pulsos de 13 ms hace rotar el servo amaacutexima velocidad en sentido de las agujas del reloj

Figura 37 Un tren de pulsos de 17 ms hace rotar el servo amaacutexima velocidad en sentido contrario al de las agujas del reloj

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 10

Paraacutemetro Tiempo subida Sobreimpulso Tiempo seteado Error de estadiacutea Estabilidad

kp Decrece Se incrementa Cambio Decrece Se degradapequentildeo

ki Decrece Se incrementa Se incrementa Decrece Se degradasignificativamente

kd Decrece Decrece Decrece No tiene efecto Mejora simiacutenimamente miacutenimamente miacutenimamente en teoriacutea kd es pequentildeo

Cuadro 1 Efectos de incrementar cada paraacutemetro independientemente

Pin Es la variable o constante que indica el pin entradasalida a donde sedirige el pulsoDuracioacuten Es la relacioacuten entrel el pulso que queremos y los 2micros7

351 Impulso cero de los motores Al utilizar la Duracioacuten del PULSOUT en 750los motores quedan estaticos Existe el procedimiento descripto en el manual deboe-bot para esto

36 Obtencioacuten de los coeficientes de los teacuterminos PID Existen muchasformas de obtener los coeficientes Una excelente referencia inicial es los descriptoen el artiacuteculo de wikipedia que podemos hallar en el texto 1 de la bibliografiacutea

En este proyecto se opto por la configuracioacuten manual puesto que esto es muyrelativo se propone buscar sobre este puesto que tal vez puede ser confuso comolograrlo Por lo pronto el texto antes recomendado fue el utilizado para el trabajoUna raacutepida diferencia es la del cuadro 1

361 Procedimiento manual Si el sistema debe estar corriendo primero debemosponer kd y ki a cero Incrementar kp hasta que la salida del lazo comience a oscilarentonces kp debe setearse aproximadamente a la mitad de valor para la cual larepuesta decayoacute un cuarto Se incrementar ki hasta que se pueda corregir el offsetde la respuesta del sistema Sin embargo aumentar demasiado ki puede causarinestabilidad Finalmente se incrementa kd hasta que el lazo tengo una respuestaaceptablemente raacutepida a los impulsos imprevistos Si se incrementa mucho kd puedecausar una respuesta excesiva y sobre impulso perdiendo asiacute la estabilidad Un lazoPID bien seteado usualmente no trabaja tan raacutepido a los impulsos no previstos paradar lugar a una buacutesqueda raacutepida del punto de seteo

4 Materiales

41 Software utilizado

411 Procesador de texto Para ir documentando y realizar este informe sobreel proyecto se decidioacute utilizar un procesador de texto Las ventajas del mismo sonla optimizacioacuten de la presentacioacuten para documentos estaacutendares y poco o nada deinteraccioacuten con el formateo del mismo De gran utilidad para este proyecto Seutilizo el software LYX en su versioacuten 155 el cual es software de licencia GPL comoasiacute gratuito El sitio oficial es httpwwwlyxorg

412 Graficador de diagramas Para la realizacioacuten de los diferentes diagramas seutilizo un graficador de diagramas estructurados llamado DIA en su versioacuten 0961Este software esta tambieacuten amparado bajo la GPL y es de distribucioacuten gratuita Elsitio oficial es httpwwwgnomeorgprojectsdia

7Este valor es el especificado para un BS2

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 11

Figura 41 Boe-bot

413 Entorno de desarrollo Respecto al entorno se intento trabajar con alter-nativas al entorno oficial del que nos otorga la compantildeiacutea Parallax (quien desarrollael boe bot) pero existen pocas opciones y no se teniacutean las libreriacuteas para la compi-lacioacuten Se decidioacute utilizar directamente el IDE Basic Stamp versioacuten 25 de coacutedigopropietario y distribucioacuten gratuita Para la descarga buscar en el sitio oficial de laempresa httpwwwparallaxcom

414 Adaptacioacuten a un sistema GNULinux Para poder utilizar el IDE de paral-lax sobre un sistema GNULinux se utilizo el software WinE (Windows Emulator)en su versioacuten 101-174-gc4039bd El sitio oficial de este proyecto de licencia GPLy distribucioacuten gratuita es httpwwwwinehqorg

42 Plataforma roboacutetica La plataforma donde se implemento el proyecto es elrobot boe-bot (figura 41) producido por la compantildeiacutea Parallax Se decidioacute utilizarel mismo porque habiacutea sido una adquisicioacuten reciente del departamento de elec-troacutenica en la Universidad y ninguacuten equipo de trabajo estaba utilizaacutendolo Ademaacutessu sensillez y facilidad de transferencia del programa lo hace ideal para trabajosexperimentales

Componentes activos de la plataforma

421 Parallax (Futaba) Continuous Rotation ServoRotacioacuten continua bidireccional de 0 a 50 RPM con respuesta linear alcontrol PWM para una faacutecil rampa

bull Requerimientos de tensioacuten de 4 a 6 Vdcbull Comunicacioacuten PWMbull Dimensiones 558 x 19 x 406 mmbull Rango de temperatura operativa -10 a +50 degC

422 Motherboard En la figura 42 se encuentra el motherboard del boebot Acontinuacioacuten una pequentildea descripcioacuten

1 Conector para una pila de 9 voltios2 Condensadores del filtro del regulador de voltaje de 5 voltios en corriente

continua

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 12

Figura 42 Tarjeta electroacutenica del boe-bot

3 Conector del puerto serieusb para la comunicacioacuten con el ordenador4 Zoacutecalo de 24 pines para insertar el moacutedulo BASIC Stamp5 Pulsador para reiniciar el programa cargado en el Boe-Bot6 Interruptor de tres posiciones En la posicioacuten 0 el Boe-Bot estaacute desconecta-

do en la posicioacuten 1 el Boe-Bot estaacute conectado pero los servomotores quemueven las ruedas estaacuten desconectados y en la posicioacuten 2 tanto el Boe-Botcomo los servos estaacuten conectados

7 LED verde que nos indica que el Boe-Bot estaacute encendido8 Conector de las entradassalidas del microcontrolador BASIC Stamp para

su uso en la placa protoboard situada a continuacioacuten9 Placa protoboard para el montaje de los componentes electroacutenicos necesar-

ios para los sensores e indicadores luminosos o acuacutesticos10 Conector de alimentacioacuten Los cinco primeros pines (Vdd) proporcionan una

tensioacuten positiva de 5 voltios los tres siguientes (Vin) una tensioacuten positivadel voltaje que proporcionen las pilas o el adaptador de corriente (6 - 9voltios) y los cinco uacuteltimos (Vss) proporcionan la masa el polo negativo auna tensioacuten de 0 voltios

11 Conectores para cuatro servomotores asociados a las salidas P12 P13 P14y P15

12 Jumper para la seleccioacuten de la alimentacioacuten de los servomotores seguacuten serealice mediante el portapilas de 6 voltios del Boe-Bot o mediante un adap-tador de corriente exterior

13 Regulador de voltaje que proporciona a los circuitos electroacutenicos 5 voltiospositivos (Vdd) y la masa (Vss)

14 Conector para tarjetas de ampliacioacuten Permite conectar las 16 entradassalidasde la P0 a la P15 y los pines de la alimentacioacuten Vdd Vin y Vss

15 Conector para el portapilas de 6 voltios o el adaptador de corriente exteriorde 6 - 9 voltios La varilla central de 21 miliacutemetros corresponde al polopositivo

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 13

Figura 43 BS2 uno de los ldquocerebrosrdquo del boebot

423 Cerebro BS2 En la siguiente enumeracioacuten se describen los componentesque se hallan en el ldquocerebrordquo BS2 del boebot utilizado lo que se puede apreciar enla figura 43

1 Cuatro pines para la comunicacioacuten con el ordenador mediante el puertoserie

2 Memoria EEPROM de una capacidad de 2K en donde se almacena el coacutedigofuente del programa editado en PBASIC

3 Condensador del filtro del regulador de voltaje de 5 voltios4 Ocho pines de las entradassalidas desde la P0 hasta la P75 Microcontrolador PIC16C57C que actuacutea de interprete del lenguaje PBA-

SIC ejecutando el programa a una velocidad de 4000 instrucciones porsegundo

6 Ocho pines de las entradassalidas desde la P8 hasta la P157 Oscilador de cuarzo de 20 megahercios para proporcionar la frecuencia al

reloj interno8 Pin de alimentacioacuten de 5 voltios positivos (Vcc)9 Regulador de voltaje que estabiliza la tensioacuten desde los 6 - 9 voltios de la

alimentacioacuten a los 5 voltios utilizados por los circuitos electroacutenicos10 Pin para reiniciar el programa11 Dos pines de alimentacioacuten a la tensioacuten de 6 - 9 voltios (Vin) y la masa

(Vss)12 Detector de la tensioacuten de alimentacioacuten del moacutedulo BASIC Stamp13 Circuito de gestioacuten de la comunicacioacuten mediante el puerto serieusb

43 Lenguaje de programacioacuten El boe-bot utiliza un interprete para su pro-gramacioacuten basado en el lenguaje pbasic Este lenguaje es muy similar al Basiclo que le agrega mucho facilidad a la programacioacuten de estos equipos limitados enprocesamiento La referencia para utilizar este lenguaje esta totalmente documen-tada por parallax en el texto 5 que se halla en la bibliografiacutea utilizada

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 14

Figura 51 Modificaciones al boe-bot posicioacuten del moacutedulo QTI

5 Implementacioacuten

51 Modificaciones al boe-bot La uacutenica modificacioacuten que se realizo al boe-bot claacutesico es la inversioacuten de la posicioacuten fiacutesica de los servos para que el cuerpo delboe-bot pudiera adoptar la posicioacuten vertical de la figura 11 libremente Esto puedeapreciarse en la figura 51

52 Sensor de distancia El moacutedulo QTI esta disentildeado para la deteccioacuten cer-cana infrarroja El corazoacuten de este moacutedulo es el QRD1114 que es un sensor reflectivode objetos Utiliza un diodo emisor infrarrojo y un phototransistor BJT El moacute-dulo esta disentildeado para utilizarse con la funcioacuten RCTIME que posee la siguientesintaxis

RCTIME Pin State VariableDonde

Pin es alguna de las entradassalidas del puertoState es una constante que puede adoptar el valor 1 o 0 loacutegicosVariable es justamente el registro en memoria donde queremos almacenarel resultado

Esta funcioacuten mide el tiempo que le toma llegar al estado definido en State Usual-mente se utiliza para medir el tiempo de carga o descarga de un circuito RC

En nuestro caso la utilizamos para obtener una ldquomedidardquo de la distancias entreel sensor y la superficie donde esta haciendo equilibrio el robot

La posicioacuten que se adopto para el sensor fue en la parte inferior del boe-bot a nomaacutes de 1 cm de la superficie con una distancia al eje de pivoteo (eje de las ruedas)de no maacutes de 15cm

La conexioacuten de este sensor es muy sencilla el pin W del moacutedulo se conecta a unode los pines de alimentacioacuten del motherboard del robot el pin B al gnd que otorgala placa y el R a una de las entradassalidas del puerto de trabajo que deseemosen nuestro caso utilizamos el 5 Para una mayor comprensioacuten referirse a la figura51

53 Alimentacioacuten eleacutectrica Se elimino el porta pila del boe-bot y se utilizoalimentacioacuten externa con una fuente de voltaje regulable de 3A como maacuteximo tra-bajando a 9V Para no producir una invasioacuten al sistema la alimentacioacuten se hizoa traveacutes de cables muy finos y maneables en una posicioacuten relajada por encima de

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 15

la altura del boe-bot y con el largo suficiente para que el mismo se pudiera moverlibremente

54 Posicioacuten de equilibrio natural del boe-bot Para encontrar la posicioacutende equilibrio se utilizo la siguiente metodologiacutea

Se escribioacute un programa que iba mostrando en la pantalla de debug del IDEla medicioacuten de la distancia del sensor a la superficieManualmente se adoptaba la posicioacuten para la cual se notaba el equilibriodel robotSe anota el valor y se utiliza luego en el programa de control

Todo el trabajo previamente descripto derivo en este programa escrito para tal finfue

rsquo $STAMP BS2rsquo $PBASIC 25front VAR WordDO

HIGH 5RCTIME 51frontPAUSE 1000DEBUG front

LOOP

55 Transferencia de los programas Utilizando el IDE es muy sencillopuesto que posee un herramienta para ldquocorrer el programardquo y lo transfiere al boe-bot por medio del puerto USB como tambieacuten puede ser a traveacutes del puerto serialo una combinacioacuten de los mismos La configuracioacuten es muy sencilla y no requieremucho maacutes esfuerzo

56 Programa para el stamp BS2 El siguiente es el programa definitivo es-crito para controlar la posicioacuten de equilibrio vertical del boe-bot

rsquo $STAMP BS2

rsquo $PBASIC 25

rsquo Licensed under GPLv2 o higher

rsquoBS2 Mapa de las entsal usadas

rsquoP3 Sensor de distancia frontal

Leftservo CON 12 rsquoP12 Servo izquierdo

Rightservo CON 13 rsquoP13 Servo derecho

front VAR Word rsquoDistancia que mide el sensor de contraste

pulseLeft VAR Word rsquoVariable que enviacutea el ancho del pulso al motor izquierdo

pulseRight VAR Word rsquoVariable que enviacutea el ancho del pulso al motor derecho

pulseZero CON 750 rsquoEste es el pulso para el cuacuteal los motores no giran

setpoint VAR Word rsquoEste dato es el setpoint del control PID

kp CON 199100 rsquoValor de la constante de proporcional utilizada

ki CON 399100 rsquoValor de la constante de integracioacuten utilizada

kd CON 190100 rsquoValor de la constante del teacutermino derivativo utilizada

error VAR Word rsquoAlmacena el error que se va obteniendo

p VAR Word rsquoSe almacena el ancho del pulso a sumar al estado estacionario

offsetf VAR Word rsquoDesplaza la medicioacuten de la distancia

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 16

sum1 VAR Word rsquoRepresenta el error anterior al actual

sum2 VAR Word rsquoRepresenta el error anterior al anterior del actual

integrate VAR Word rsquoTeacutermino integral

derivate VAR Word rsquoTeacutermino derivativo

time CON 2510000 rsquoTiempo estimativo entre la obtencioacuten de cada teacutermino

rsquo------Comienzo del programa principal-------

rsquo Incializacioacuten de las variables

offset = pulseZero

sum1 = 0

sum2 = 0

offsetf = 0

PAUSE 2000 rsquoPausa de 2 segundos

SetPoint = 170 rsquoSeteo manual de la posicioacuten a buscar

offsetf = SetPoint

DO rsquoBucle del programa principal

GOSUB Measure rsquoMedicioacuten de la distancia

GOSUB PID rsquoAlgoritmo de control PID

GOSUB Send_Pulse rsquoModulacioacuten de pulso en los motores

LOOP

rsquo-------Subrutinas--------

PID

IF (front ltsetpoint) THEN rsquoHay que revisar el signo y actuar seguacuten para la correccioacuten

error = setpoint - front

integrate = (sum1 + sum2 - error) time 3 rsquoTeacutermino integral

IF error gtsum1 THEN rsquoRevisamos el signo y calculamos el teacutermino derivativo

derivate = (error - sum1) time rsquoEl teacutermino derivativo es en realidad la secante miacutenima

que podemos hallar

ELSE

derivate = (sum1 - error) time

ENDIF

p = error kp + integrate ki + derivate kd rsquoControl PID completo

pulseLeft = p + offset rsquoModulando el ancho del pulso seguacuten se necesite corregir

pulseRight = - p + offset rsquohacia adelante o hacia atraacutes

ENDIF

IF (front gtsetpoint) THEN rsquoEsta parte del programa realiza lo mismo que la anterior soacutelo que

adecua el signo

error = front - setpoint

integrate = (sum1 + sum2 + error) time 3

IF error gtsum1 THEN

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 17

derivate = (error - sum1) time

ELSE

derivate = (sum1 - error) time

ENDIF

p = error kp + integrate ki + derivate kd

pulseLeft = p + offset

pulseRight = - p + offset

ENDIF

sum2 = sum1

sum1 = error

RETURN

rsquo Esta subrutina devuelve la distancia utilizando el sensor de contraste

Measure

HIGH 5

RCTIME 51front

front = front - offsetf

RETURN

rsquo Esta subrutina se encarga de enviar el PWM correcto hacia los motores

Send_Pulse

PULSOUT Leftservo pulseRight

PULSOUT Rightservo pulseLeft

RETURN

6 Resultados

61 Trabajo observado El sistema termino realizando equilibrio y a medidaque el control progresaba en funcionalidad como en tunning8 fue mostrando unaclara mejora No se pudo implementar un sistema que permitiera cotejar las mejorasmaacutes que por el meacutetodo de la observacioacuten Eventualmente el equilibrio en torno ala posicioacuten de equilibrio se obtuvo y demostroacute ser significativamente mejor de lasprimeras pruebas utilizando un control proporcional

62 Aceptacioacuten El programa de control PID logroacute el objetivo permitioacute re-alizar el proyecto en tiempo y forma ademaacutes de sortear una gran cantidad deinconvenientes

8En este caso el seteo de los coeficientes de los teacuterminos PID

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 18

7 Conclusioacuten

Aunque el objetivo inicial de lograr un peacutendulo invertido9 no se alcanzo estaaproximacioacuten es evidentemente un claro progreso hacia la resolucioacuten del mismoAunque el trabajo podriacutea haber sido maacutes ldquoexitosordquo en lo personal fue satisfactoriolograr una solucioacuten y que ademaacutes la misma es bastante aceptable

La estrategia de control PID dejo en evidencia ser a prueba de concepto y logroacuteun importante objetivo a un costo de tiempo dinero y conocimientos10 muy bajos

El boe-bot demostroacute ser una plataforma muy simple pero no asiacute despreciablePermitioacute trabajar raacutepidamente al momento de la programacioacuten pero como contralas limitaciones son algunas veces numerosas pero lo cierto es que es un hardwaredisentildeado para hobbistas y que intenta ser fiel a ello Sin embargo fue muy intere-sante trabajar con el mismo para lograr un ldquoprototipordquo de solucioacuten al problema

Hace muchos antildeos trabaje en instrumentacioacuten en la industria del petroacuteleo y metopaba con sistemas PID de control en muchos de los equipos que se reparaban quecontrolaban desde vaacutelvulas electro-hidraacuteulicas hasta motores de bombas y tornil-los11 para transportar arena Cuando puede estudiar Ing Electroacutenica fue en granmedida por la fascinacioacuten que me produciacutean estos sistemas Asiacute que esta experien-cia fue muy gratificante y me demostroacute el trabajo que conlleva realizar algunas deestas tareas

8 Trabajo a futuro

Muchos puntos no se pudieron estudiar ni tratar los siguientes son los maacutes im-portantes seguacuten un criterio personal que se fue generando a medida que el proyectoavanzaba

Modelizar el hardware con los conocimientos que se adquieren en la materiasistema de controlEstudiar la utilizacioacuten de otros tipos de sensores para la medicioacuten de ladistancia posicionalLograr un equipo de trabajo para incrementar la productividadAunque se abordo una solucioacuten de fuzzy logic12 basada en un ejemplorealizado en python no se pudo implementar Lo ideal seriacutea presentar unasolucioacuten de sistemas hiacutebridosAyudar a la fiacutesica del problema resuelta agregando maacutes peso en la parteinferior cerca al eje de pivoteo

Iacutendice de figuras

11 Posicioacuten de equilibrio del boe-bot self-balanced 221 Diagrama de fuerzas que actuacutean sobre el peacutendulo invertido claacutesico 322 Diagrama de flujo del control PID 431 Diagrama simplificado del programa 732 Diagrama de flujo del programa principal 833 Rutina de medicioacuten 834 Rutina de caacutelculos 935 Rutina de modulacioacuten 9

9Caso claacutesico de control10Sobre sistemas de control11Tipo de Arquiacutemedes12Loacutegica difusa

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 19

36 Un tren de pulsos de 13 ms hace rotar el servo a maacutexima velocidad ensentido de las agujas del reloj 9

37 Un tren de pulsos de 17 ms hace rotar el servo a maacutexima velocidad ensentido contrario al de las agujas del reloj 9

41 Boe-bot 1142 Tarjeta electroacutenica del boe-bot 1243 BS2 uno de los ldquocerebrosrdquo del boebot 1351 Modificaciones al boe-bot posicioacuten del moacutedulo QTI 14

Referencias[1] httpenwikipediaorgwikiPID_controller[2] ldquoModelado y control del peacutendulo invertido sobre carro mediante sistemas hiacutebridosrdquo por Fer-

nando Bote Ortega Universidad de Sevilla[3] rdquoControl of an Inverted Pendulumrdquo por Johnny Lam[4] httpletsmakerobotscomnode22232[5] rdquoBASIC Stamp Syntax and Reference Manualrdquo Version 22 ISBN 1-928982-32-8[6] rdquoPBASIC Language Basicsrdquo Dhinesh Sasidaran Octubre 14 2002[7] rdquoMicrobot PARALLAX Boe - Botrdquo Caacutendido Garciacutea Barroacuten[8] rdquoRobotics with the Boe-Bot Student Guide VERSION 22rdquo wwwparallaxcomdldocs

bookseduroboticsv2_2pdf[9] rdquoMeacutetodo baacutesico para implementar un controlador digital PID en un microcontrolador PIC

para el desarrollo de aplicaciones de bajo costo (Aplicaciones en control de Potencia y laIndustria)rdquo Ilber Adonayt Ruge Ruge Universidad de Cundinamarca Grupo de Investigacioacutenen Tecnologiacuteas de la Informacioacuten y las Comunicaciones GITEINCO Fusagasuga ndash Colombia

[10] rdquoiquestCoacutemo realizar un informe de invetigacioacutenrdquo DrEnrique Teraacuten[11] rdquoDigital PID Controllersrdquo DrVarodom Toochinda wwwdewinzcomdocsecspidpdf[12] rdquoSistemas de control digitalrdquo Benjamin C Kuo Editorial Grupo Patria Cultural ISBN 968-

26-1292[13] rdquoSistemas de control modernordquo Richard C Dorf y Robert H Bishop Deacutecima edicioacuten Edi-

torial Pearson Prentice Hall ISBN 84-205-4401-9

Revisioacuten

101210 - El presente texto es una adaptacioacuten de la versioacuten original titula-da ldquoAproximacioacuten a la solucioacuten del peacutendulo invertido claacutesicordquo Esta modifi-cacioacuten fue realizada con el propoacutesito de poder publicar mi trabajo con maacutessoltura

GABS (Get Another Boe-bot Selfbalanced)copy CopyLeft 2010 Nelson G LombardoPrimera edicioacuten Noviembre 2010Esta documentacioacuten esta licenciada bajo los teacuterminos de la Licencia GNU para

la Documentacioacuten Libre Ver en httpwwwgnuorgcopyleftThis documentation is licensed under the terms of the GNU Free Documentation

License See httpwwwgnuorgcopyleft

E-mail address nelsonlombardogmailcomURL httpetech-nelsonblogspotcom201011primer-pid-funcional-en-el-boebothtmlCurrent address Neuqueacuten Capital Neuqueacuten

  • Contents
  • 1 Introduccioacuten
    • 11 Problema
    • 12 Problema a resolver
    • 13 Alcance
    • 14 Objetivos
      • 2 Marco teoacuterico
        • 21 Peacutendulo claacutesico
        • 22 PID
        • 23 PID digital
        • 24 Concepto PID en referencia al proyecto
        • 25 Retrasos en sistemas de control basados en micropocesadores
          • 3 Disentildeo metodoloacutegico
            • 31 Eleccioacuten del control
            • 32 Trabajo a realizar
            • 33 Inconvenientes de la implementacioacuten
            • 34 Diagrama de flujo del control PID digital
            • 35 Ancho de pulso para el control y velocidad de los motores servo-continuos
            • 36 Obtencioacuten de los coeficientes de los teacuterminos PID
              • 4 Materiales
                • 41 Software utilizado
                • 42 Plataforma roboacutetica
                • 43 Lenguaje de programacioacuten
                  • 5 Implementacioacuten
                    • 51 Modificaciones al boe-bot
                    • 52 Sensor de distancia
                    • 53 Alimentacioacuten eleacutectrica
                    • 54 Posicioacuten de equilibrio natural del boe-bot
                    • 55 Transferencia de los programas
                    • 56 Programa para el stamp BS2
                      • 6 Resultados
                        • 61 Trabajo observado
                        • 62 Aceptacioacuten
                          • 7 Conclusioacuten
                          • 8 Trabajo a futuro
                          • Iacutendice de figuras
                          • Referencias
                          • Revisioacuten
Page 8: Gabs

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 6

Aunque es necesario hallar los coeficientes de los teacuterminos PID no estaestrictamente ligado a modelos complicados y se puede utilizar un seteoempiacutericoEsta estrategia es bastante utilizada y se hallan muchos proyectos de difer-ente iacutendole que asiacute lo demuestran

Algunos de los inconvenientes maacutes importantes que poseeAunque el seteo de los coeficientes pueden obtenerse en base a la experienciay de ciertas pruebas de interpretacioacuten no siempre es factible hallarlos asiacuteExisten algunos inconvenientes derivados de los sobreimpulsos como elwindupLas oscilaciones del control no estaacuten exentas de desaparecer y hasta puedenincrementarse por una mala actuacioacuten del teacutermino derivativoNo todos los problemas pueden solucionarse por medio de este control

32 Trabajo a realizarEntender las limitaciones de velocidad de procesamiento del ldquocerebrordquo delrobotEstablecer un control proporcional y mejorar el mismo refinando su com-portamientoComprender los inconvenientes que apareja controlar un sistema analoacutegicoa traveacutes de un control digitalEscribir el control PID completo

33 Inconvenientes de la implementacioacuten

331 Optimizacioacuten Uno de los mayores problemas es escribir un coacutedigo capazde ser modular simple efectivo y que este optimizado para el procesamiento delmismo

Uno de los factores determinantes en la respuesta del control sobre el robot esla comunicacioacuten con la PC En este caso existen dos limitantes el primero es labaja frecuencia de procesamiento de las instrucciones de pbasic en el cerebro a loque se le suma los tiempos que requiere la comunicacioacuten con la PC Una de lasinstrucciones a eliminar definitivamente es DEBUG esta instrucciones permitenvisualizar en el PC ciertos datos que se pueden configurar esto es un consumoexcesivo de tiempo

El ldquotamantildeordquo de las variables el tipo de variable puede contener longitudes ade-cuadas pero al utilizarlas discriminando el signo acorta a la mitad la longitud loque genera otro problema Se debe cuidar el tipo de variable a asignar

332 Signado El interprete del boe-bot aunque trabaje a un ldquoaltordquo nivel noslimita en el uso de signado de las variables La mejor solucioacuten es generar unaescritura del coacutedigo tipo aacuterbol balanceado que aunque parezca no muy modularestablece una peacuterdida de tiempo miacutenima en comparacioacuten a la cantidad de coacutedigoque se escribioacute

333 Windup Uno de los problemas comunes resultantes de las implementa-ciones del control PID es el windup Este efecto indeseable sucede cuando se daun corrimiento muy grande del punto de seteo entonces el termino integral acu-mula un error significativamente grande que se convierte en una sobrecarga en larealimentacioacuten lo que produce un mayor error provocando asiacute en un incrementoincontrolado de la parte integral

Existen algunas teacutecnicas para corregir estoInicializar el teacutermino integral en un valor conocidoIncrementar el punto de seteo de forma lineal

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 7

Figura 31 Diagrama simplificado del programa

Deshabilitar el control integral cuando el sistema se encuentre en la regioacutenmaacutes linealLimitar el tiempo que se dedica para el caacutelculo del teacutermino integralLimitar los valores que puede alcanzar el teacutermino reduciendo asiacute los ldquore-botesrdquo

334 Debug Lamentablemente al experiencia nos determino que utilizar la in-struccioacuten DEBUG no es una opcioacuten para depurar los errores o comprender algunosde los estados por los que pasa el sistema por lo que hay que valerse de las expe-riencias que se conocen sobre este tipo de sistemas y realizar las interpretacionesque vengan al caso

34 Diagrama de flujo del control PID digital Una de las mejores manerasde abordar el desarrollo de un programa es realizando un diagrama de flujo El puntode partida fue baacutesico pero necesario y lo apreciamos en la figura 31

Se debe utilizar una cantidad miacutenima de variables pero sin dejar de ser lo suficien-temente coacutemodo el programa para su modificacioacuten El programa principal adoptala forma de la figura 32

Se utilizan tres rutinas las cuales pueden ser estudiadas de las figuras 33 34 y35

La rutina de medicioacuten establece los requerimientos desde el punto de vista delboe-bot y la utilizacioacuten del sensor que en nuestro caso seraacute el moacutedulo QTI6

La seccioacuten de caacutelculo representa lo escrito en 23 pero teniendo en cuenta quela parte integral soacutelo ldquointegraraacuterdquo en el modelo de aproximacioacuten por rectaacutengulosel momento actual y dos momentos anteriores El tiempo es representativo deltiempo que toma en el coacutedigo final pasar de realizar todos los caacutelculos a comenzara realizarlos

La rutina de modulacioacuten soacutelo hace referencia a el enviacuteo del impulso necesariopara mover el boe-bot en sentido de buscar el equilibrio En 35 se trata sobre estetema

35 Ancho de pulso para el control y velocidad de los motores servo-continuos Supongamos que se necesita mover el boe-bot a maacutexima velocidadentonces uno de los motores debe girar en sentido horario a velocidad maacutexima y elotro en sentido antihorario por lo tanto de lo que se observa en las figuras 36 y37

6Nuacutemero de parte 555-27401 para el pedido en parallax

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 8

Figura 32 Diagrama de flujo del programa principal

Figura 33 Rutina de medicioacuten

17ms = 2micros lowast rigth

rigth = 17ms2micros = 850

13ms = 2micros lowast left

left = 13ms2micros = 650

Procedemos a utilizar estos valores en pbasic a traveacutes de la instruccioacutenPULSOUT Pin Duracioacuten

Donde

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 9

Figura 34 Rutina de caacutelculos

Figura 35 Rutina de modulacioacuten

Figura 36 Un tren de pulsos de 13 ms hace rotar el servo amaacutexima velocidad en sentido de las agujas del reloj

Figura 37 Un tren de pulsos de 17 ms hace rotar el servo amaacutexima velocidad en sentido contrario al de las agujas del reloj

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 10

Paraacutemetro Tiempo subida Sobreimpulso Tiempo seteado Error de estadiacutea Estabilidad

kp Decrece Se incrementa Cambio Decrece Se degradapequentildeo

ki Decrece Se incrementa Se incrementa Decrece Se degradasignificativamente

kd Decrece Decrece Decrece No tiene efecto Mejora simiacutenimamente miacutenimamente miacutenimamente en teoriacutea kd es pequentildeo

Cuadro 1 Efectos de incrementar cada paraacutemetro independientemente

Pin Es la variable o constante que indica el pin entradasalida a donde sedirige el pulsoDuracioacuten Es la relacioacuten entrel el pulso que queremos y los 2micros7

351 Impulso cero de los motores Al utilizar la Duracioacuten del PULSOUT en 750los motores quedan estaticos Existe el procedimiento descripto en el manual deboe-bot para esto

36 Obtencioacuten de los coeficientes de los teacuterminos PID Existen muchasformas de obtener los coeficientes Una excelente referencia inicial es los descriptoen el artiacuteculo de wikipedia que podemos hallar en el texto 1 de la bibliografiacutea

En este proyecto se opto por la configuracioacuten manual puesto que esto es muyrelativo se propone buscar sobre este puesto que tal vez puede ser confuso comolograrlo Por lo pronto el texto antes recomendado fue el utilizado para el trabajoUna raacutepida diferencia es la del cuadro 1

361 Procedimiento manual Si el sistema debe estar corriendo primero debemosponer kd y ki a cero Incrementar kp hasta que la salida del lazo comience a oscilarentonces kp debe setearse aproximadamente a la mitad de valor para la cual larepuesta decayoacute un cuarto Se incrementar ki hasta que se pueda corregir el offsetde la respuesta del sistema Sin embargo aumentar demasiado ki puede causarinestabilidad Finalmente se incrementa kd hasta que el lazo tengo una respuestaaceptablemente raacutepida a los impulsos imprevistos Si se incrementa mucho kd puedecausar una respuesta excesiva y sobre impulso perdiendo asiacute la estabilidad Un lazoPID bien seteado usualmente no trabaja tan raacutepido a los impulsos no previstos paradar lugar a una buacutesqueda raacutepida del punto de seteo

4 Materiales

41 Software utilizado

411 Procesador de texto Para ir documentando y realizar este informe sobreel proyecto se decidioacute utilizar un procesador de texto Las ventajas del mismo sonla optimizacioacuten de la presentacioacuten para documentos estaacutendares y poco o nada deinteraccioacuten con el formateo del mismo De gran utilidad para este proyecto Seutilizo el software LYX en su versioacuten 155 el cual es software de licencia GPL comoasiacute gratuito El sitio oficial es httpwwwlyxorg

412 Graficador de diagramas Para la realizacioacuten de los diferentes diagramas seutilizo un graficador de diagramas estructurados llamado DIA en su versioacuten 0961Este software esta tambieacuten amparado bajo la GPL y es de distribucioacuten gratuita Elsitio oficial es httpwwwgnomeorgprojectsdia

7Este valor es el especificado para un BS2

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 11

Figura 41 Boe-bot

413 Entorno de desarrollo Respecto al entorno se intento trabajar con alter-nativas al entorno oficial del que nos otorga la compantildeiacutea Parallax (quien desarrollael boe bot) pero existen pocas opciones y no se teniacutean las libreriacuteas para la compi-lacioacuten Se decidioacute utilizar directamente el IDE Basic Stamp versioacuten 25 de coacutedigopropietario y distribucioacuten gratuita Para la descarga buscar en el sitio oficial de laempresa httpwwwparallaxcom

414 Adaptacioacuten a un sistema GNULinux Para poder utilizar el IDE de paral-lax sobre un sistema GNULinux se utilizo el software WinE (Windows Emulator)en su versioacuten 101-174-gc4039bd El sitio oficial de este proyecto de licencia GPLy distribucioacuten gratuita es httpwwwwinehqorg

42 Plataforma roboacutetica La plataforma donde se implemento el proyecto es elrobot boe-bot (figura 41) producido por la compantildeiacutea Parallax Se decidioacute utilizarel mismo porque habiacutea sido una adquisicioacuten reciente del departamento de elec-troacutenica en la Universidad y ninguacuten equipo de trabajo estaba utilizaacutendolo Ademaacutessu sensillez y facilidad de transferencia del programa lo hace ideal para trabajosexperimentales

Componentes activos de la plataforma

421 Parallax (Futaba) Continuous Rotation ServoRotacioacuten continua bidireccional de 0 a 50 RPM con respuesta linear alcontrol PWM para una faacutecil rampa

bull Requerimientos de tensioacuten de 4 a 6 Vdcbull Comunicacioacuten PWMbull Dimensiones 558 x 19 x 406 mmbull Rango de temperatura operativa -10 a +50 degC

422 Motherboard En la figura 42 se encuentra el motherboard del boebot Acontinuacioacuten una pequentildea descripcioacuten

1 Conector para una pila de 9 voltios2 Condensadores del filtro del regulador de voltaje de 5 voltios en corriente

continua

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 12

Figura 42 Tarjeta electroacutenica del boe-bot

3 Conector del puerto serieusb para la comunicacioacuten con el ordenador4 Zoacutecalo de 24 pines para insertar el moacutedulo BASIC Stamp5 Pulsador para reiniciar el programa cargado en el Boe-Bot6 Interruptor de tres posiciones En la posicioacuten 0 el Boe-Bot estaacute desconecta-

do en la posicioacuten 1 el Boe-Bot estaacute conectado pero los servomotores quemueven las ruedas estaacuten desconectados y en la posicioacuten 2 tanto el Boe-Botcomo los servos estaacuten conectados

7 LED verde que nos indica que el Boe-Bot estaacute encendido8 Conector de las entradassalidas del microcontrolador BASIC Stamp para

su uso en la placa protoboard situada a continuacioacuten9 Placa protoboard para el montaje de los componentes electroacutenicos necesar-

ios para los sensores e indicadores luminosos o acuacutesticos10 Conector de alimentacioacuten Los cinco primeros pines (Vdd) proporcionan una

tensioacuten positiva de 5 voltios los tres siguientes (Vin) una tensioacuten positivadel voltaje que proporcionen las pilas o el adaptador de corriente (6 - 9voltios) y los cinco uacuteltimos (Vss) proporcionan la masa el polo negativo auna tensioacuten de 0 voltios

11 Conectores para cuatro servomotores asociados a las salidas P12 P13 P14y P15

12 Jumper para la seleccioacuten de la alimentacioacuten de los servomotores seguacuten serealice mediante el portapilas de 6 voltios del Boe-Bot o mediante un adap-tador de corriente exterior

13 Regulador de voltaje que proporciona a los circuitos electroacutenicos 5 voltiospositivos (Vdd) y la masa (Vss)

14 Conector para tarjetas de ampliacioacuten Permite conectar las 16 entradassalidasde la P0 a la P15 y los pines de la alimentacioacuten Vdd Vin y Vss

15 Conector para el portapilas de 6 voltios o el adaptador de corriente exteriorde 6 - 9 voltios La varilla central de 21 miliacutemetros corresponde al polopositivo

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 13

Figura 43 BS2 uno de los ldquocerebrosrdquo del boebot

423 Cerebro BS2 En la siguiente enumeracioacuten se describen los componentesque se hallan en el ldquocerebrordquo BS2 del boebot utilizado lo que se puede apreciar enla figura 43

1 Cuatro pines para la comunicacioacuten con el ordenador mediante el puertoserie

2 Memoria EEPROM de una capacidad de 2K en donde se almacena el coacutedigofuente del programa editado en PBASIC

3 Condensador del filtro del regulador de voltaje de 5 voltios4 Ocho pines de las entradassalidas desde la P0 hasta la P75 Microcontrolador PIC16C57C que actuacutea de interprete del lenguaje PBA-

SIC ejecutando el programa a una velocidad de 4000 instrucciones porsegundo

6 Ocho pines de las entradassalidas desde la P8 hasta la P157 Oscilador de cuarzo de 20 megahercios para proporcionar la frecuencia al

reloj interno8 Pin de alimentacioacuten de 5 voltios positivos (Vcc)9 Regulador de voltaje que estabiliza la tensioacuten desde los 6 - 9 voltios de la

alimentacioacuten a los 5 voltios utilizados por los circuitos electroacutenicos10 Pin para reiniciar el programa11 Dos pines de alimentacioacuten a la tensioacuten de 6 - 9 voltios (Vin) y la masa

(Vss)12 Detector de la tensioacuten de alimentacioacuten del moacutedulo BASIC Stamp13 Circuito de gestioacuten de la comunicacioacuten mediante el puerto serieusb

43 Lenguaje de programacioacuten El boe-bot utiliza un interprete para su pro-gramacioacuten basado en el lenguaje pbasic Este lenguaje es muy similar al Basiclo que le agrega mucho facilidad a la programacioacuten de estos equipos limitados enprocesamiento La referencia para utilizar este lenguaje esta totalmente documen-tada por parallax en el texto 5 que se halla en la bibliografiacutea utilizada

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 14

Figura 51 Modificaciones al boe-bot posicioacuten del moacutedulo QTI

5 Implementacioacuten

51 Modificaciones al boe-bot La uacutenica modificacioacuten que se realizo al boe-bot claacutesico es la inversioacuten de la posicioacuten fiacutesica de los servos para que el cuerpo delboe-bot pudiera adoptar la posicioacuten vertical de la figura 11 libremente Esto puedeapreciarse en la figura 51

52 Sensor de distancia El moacutedulo QTI esta disentildeado para la deteccioacuten cer-cana infrarroja El corazoacuten de este moacutedulo es el QRD1114 que es un sensor reflectivode objetos Utiliza un diodo emisor infrarrojo y un phototransistor BJT El moacute-dulo esta disentildeado para utilizarse con la funcioacuten RCTIME que posee la siguientesintaxis

RCTIME Pin State VariableDonde

Pin es alguna de las entradassalidas del puertoState es una constante que puede adoptar el valor 1 o 0 loacutegicosVariable es justamente el registro en memoria donde queremos almacenarel resultado

Esta funcioacuten mide el tiempo que le toma llegar al estado definido en State Usual-mente se utiliza para medir el tiempo de carga o descarga de un circuito RC

En nuestro caso la utilizamos para obtener una ldquomedidardquo de la distancias entreel sensor y la superficie donde esta haciendo equilibrio el robot

La posicioacuten que se adopto para el sensor fue en la parte inferior del boe-bot a nomaacutes de 1 cm de la superficie con una distancia al eje de pivoteo (eje de las ruedas)de no maacutes de 15cm

La conexioacuten de este sensor es muy sencilla el pin W del moacutedulo se conecta a unode los pines de alimentacioacuten del motherboard del robot el pin B al gnd que otorgala placa y el R a una de las entradassalidas del puerto de trabajo que deseemosen nuestro caso utilizamos el 5 Para una mayor comprensioacuten referirse a la figura51

53 Alimentacioacuten eleacutectrica Se elimino el porta pila del boe-bot y se utilizoalimentacioacuten externa con una fuente de voltaje regulable de 3A como maacuteximo tra-bajando a 9V Para no producir una invasioacuten al sistema la alimentacioacuten se hizoa traveacutes de cables muy finos y maneables en una posicioacuten relajada por encima de

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 15

la altura del boe-bot y con el largo suficiente para que el mismo se pudiera moverlibremente

54 Posicioacuten de equilibrio natural del boe-bot Para encontrar la posicioacutende equilibrio se utilizo la siguiente metodologiacutea

Se escribioacute un programa que iba mostrando en la pantalla de debug del IDEla medicioacuten de la distancia del sensor a la superficieManualmente se adoptaba la posicioacuten para la cual se notaba el equilibriodel robotSe anota el valor y se utiliza luego en el programa de control

Todo el trabajo previamente descripto derivo en este programa escrito para tal finfue

rsquo $STAMP BS2rsquo $PBASIC 25front VAR WordDO

HIGH 5RCTIME 51frontPAUSE 1000DEBUG front

LOOP

55 Transferencia de los programas Utilizando el IDE es muy sencillopuesto que posee un herramienta para ldquocorrer el programardquo y lo transfiere al boe-bot por medio del puerto USB como tambieacuten puede ser a traveacutes del puerto serialo una combinacioacuten de los mismos La configuracioacuten es muy sencilla y no requieremucho maacutes esfuerzo

56 Programa para el stamp BS2 El siguiente es el programa definitivo es-crito para controlar la posicioacuten de equilibrio vertical del boe-bot

rsquo $STAMP BS2

rsquo $PBASIC 25

rsquo Licensed under GPLv2 o higher

rsquoBS2 Mapa de las entsal usadas

rsquoP3 Sensor de distancia frontal

Leftservo CON 12 rsquoP12 Servo izquierdo

Rightservo CON 13 rsquoP13 Servo derecho

front VAR Word rsquoDistancia que mide el sensor de contraste

pulseLeft VAR Word rsquoVariable que enviacutea el ancho del pulso al motor izquierdo

pulseRight VAR Word rsquoVariable que enviacutea el ancho del pulso al motor derecho

pulseZero CON 750 rsquoEste es el pulso para el cuacuteal los motores no giran

setpoint VAR Word rsquoEste dato es el setpoint del control PID

kp CON 199100 rsquoValor de la constante de proporcional utilizada

ki CON 399100 rsquoValor de la constante de integracioacuten utilizada

kd CON 190100 rsquoValor de la constante del teacutermino derivativo utilizada

error VAR Word rsquoAlmacena el error que se va obteniendo

p VAR Word rsquoSe almacena el ancho del pulso a sumar al estado estacionario

offsetf VAR Word rsquoDesplaza la medicioacuten de la distancia

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 16

sum1 VAR Word rsquoRepresenta el error anterior al actual

sum2 VAR Word rsquoRepresenta el error anterior al anterior del actual

integrate VAR Word rsquoTeacutermino integral

derivate VAR Word rsquoTeacutermino derivativo

time CON 2510000 rsquoTiempo estimativo entre la obtencioacuten de cada teacutermino

rsquo------Comienzo del programa principal-------

rsquo Incializacioacuten de las variables

offset = pulseZero

sum1 = 0

sum2 = 0

offsetf = 0

PAUSE 2000 rsquoPausa de 2 segundos

SetPoint = 170 rsquoSeteo manual de la posicioacuten a buscar

offsetf = SetPoint

DO rsquoBucle del programa principal

GOSUB Measure rsquoMedicioacuten de la distancia

GOSUB PID rsquoAlgoritmo de control PID

GOSUB Send_Pulse rsquoModulacioacuten de pulso en los motores

LOOP

rsquo-------Subrutinas--------

PID

IF (front ltsetpoint) THEN rsquoHay que revisar el signo y actuar seguacuten para la correccioacuten

error = setpoint - front

integrate = (sum1 + sum2 - error) time 3 rsquoTeacutermino integral

IF error gtsum1 THEN rsquoRevisamos el signo y calculamos el teacutermino derivativo

derivate = (error - sum1) time rsquoEl teacutermino derivativo es en realidad la secante miacutenima

que podemos hallar

ELSE

derivate = (sum1 - error) time

ENDIF

p = error kp + integrate ki + derivate kd rsquoControl PID completo

pulseLeft = p + offset rsquoModulando el ancho del pulso seguacuten se necesite corregir

pulseRight = - p + offset rsquohacia adelante o hacia atraacutes

ENDIF

IF (front gtsetpoint) THEN rsquoEsta parte del programa realiza lo mismo que la anterior soacutelo que

adecua el signo

error = front - setpoint

integrate = (sum1 + sum2 + error) time 3

IF error gtsum1 THEN

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 17

derivate = (error - sum1) time

ELSE

derivate = (sum1 - error) time

ENDIF

p = error kp + integrate ki + derivate kd

pulseLeft = p + offset

pulseRight = - p + offset

ENDIF

sum2 = sum1

sum1 = error

RETURN

rsquo Esta subrutina devuelve la distancia utilizando el sensor de contraste

Measure

HIGH 5

RCTIME 51front

front = front - offsetf

RETURN

rsquo Esta subrutina se encarga de enviar el PWM correcto hacia los motores

Send_Pulse

PULSOUT Leftservo pulseRight

PULSOUT Rightservo pulseLeft

RETURN

6 Resultados

61 Trabajo observado El sistema termino realizando equilibrio y a medidaque el control progresaba en funcionalidad como en tunning8 fue mostrando unaclara mejora No se pudo implementar un sistema que permitiera cotejar las mejorasmaacutes que por el meacutetodo de la observacioacuten Eventualmente el equilibrio en torno ala posicioacuten de equilibrio se obtuvo y demostroacute ser significativamente mejor de lasprimeras pruebas utilizando un control proporcional

62 Aceptacioacuten El programa de control PID logroacute el objetivo permitioacute re-alizar el proyecto en tiempo y forma ademaacutes de sortear una gran cantidad deinconvenientes

8En este caso el seteo de los coeficientes de los teacuterminos PID

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 18

7 Conclusioacuten

Aunque el objetivo inicial de lograr un peacutendulo invertido9 no se alcanzo estaaproximacioacuten es evidentemente un claro progreso hacia la resolucioacuten del mismoAunque el trabajo podriacutea haber sido maacutes ldquoexitosordquo en lo personal fue satisfactoriolograr una solucioacuten y que ademaacutes la misma es bastante aceptable

La estrategia de control PID dejo en evidencia ser a prueba de concepto y logroacuteun importante objetivo a un costo de tiempo dinero y conocimientos10 muy bajos

El boe-bot demostroacute ser una plataforma muy simple pero no asiacute despreciablePermitioacute trabajar raacutepidamente al momento de la programacioacuten pero como contralas limitaciones son algunas veces numerosas pero lo cierto es que es un hardwaredisentildeado para hobbistas y que intenta ser fiel a ello Sin embargo fue muy intere-sante trabajar con el mismo para lograr un ldquoprototipordquo de solucioacuten al problema

Hace muchos antildeos trabaje en instrumentacioacuten en la industria del petroacuteleo y metopaba con sistemas PID de control en muchos de los equipos que se reparaban quecontrolaban desde vaacutelvulas electro-hidraacuteulicas hasta motores de bombas y tornil-los11 para transportar arena Cuando puede estudiar Ing Electroacutenica fue en granmedida por la fascinacioacuten que me produciacutean estos sistemas Asiacute que esta experien-cia fue muy gratificante y me demostroacute el trabajo que conlleva realizar algunas deestas tareas

8 Trabajo a futuro

Muchos puntos no se pudieron estudiar ni tratar los siguientes son los maacutes im-portantes seguacuten un criterio personal que se fue generando a medida que el proyectoavanzaba

Modelizar el hardware con los conocimientos que se adquieren en la materiasistema de controlEstudiar la utilizacioacuten de otros tipos de sensores para la medicioacuten de ladistancia posicionalLograr un equipo de trabajo para incrementar la productividadAunque se abordo una solucioacuten de fuzzy logic12 basada en un ejemplorealizado en python no se pudo implementar Lo ideal seriacutea presentar unasolucioacuten de sistemas hiacutebridosAyudar a la fiacutesica del problema resuelta agregando maacutes peso en la parteinferior cerca al eje de pivoteo

Iacutendice de figuras

11 Posicioacuten de equilibrio del boe-bot self-balanced 221 Diagrama de fuerzas que actuacutean sobre el peacutendulo invertido claacutesico 322 Diagrama de flujo del control PID 431 Diagrama simplificado del programa 732 Diagrama de flujo del programa principal 833 Rutina de medicioacuten 834 Rutina de caacutelculos 935 Rutina de modulacioacuten 9

9Caso claacutesico de control10Sobre sistemas de control11Tipo de Arquiacutemedes12Loacutegica difusa

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 19

36 Un tren de pulsos de 13 ms hace rotar el servo a maacutexima velocidad ensentido de las agujas del reloj 9

37 Un tren de pulsos de 17 ms hace rotar el servo a maacutexima velocidad ensentido contrario al de las agujas del reloj 9

41 Boe-bot 1142 Tarjeta electroacutenica del boe-bot 1243 BS2 uno de los ldquocerebrosrdquo del boebot 1351 Modificaciones al boe-bot posicioacuten del moacutedulo QTI 14

Referencias[1] httpenwikipediaorgwikiPID_controller[2] ldquoModelado y control del peacutendulo invertido sobre carro mediante sistemas hiacutebridosrdquo por Fer-

nando Bote Ortega Universidad de Sevilla[3] rdquoControl of an Inverted Pendulumrdquo por Johnny Lam[4] httpletsmakerobotscomnode22232[5] rdquoBASIC Stamp Syntax and Reference Manualrdquo Version 22 ISBN 1-928982-32-8[6] rdquoPBASIC Language Basicsrdquo Dhinesh Sasidaran Octubre 14 2002[7] rdquoMicrobot PARALLAX Boe - Botrdquo Caacutendido Garciacutea Barroacuten[8] rdquoRobotics with the Boe-Bot Student Guide VERSION 22rdquo wwwparallaxcomdldocs

bookseduroboticsv2_2pdf[9] rdquoMeacutetodo baacutesico para implementar un controlador digital PID en un microcontrolador PIC

para el desarrollo de aplicaciones de bajo costo (Aplicaciones en control de Potencia y laIndustria)rdquo Ilber Adonayt Ruge Ruge Universidad de Cundinamarca Grupo de Investigacioacutenen Tecnologiacuteas de la Informacioacuten y las Comunicaciones GITEINCO Fusagasuga ndash Colombia

[10] rdquoiquestCoacutemo realizar un informe de invetigacioacutenrdquo DrEnrique Teraacuten[11] rdquoDigital PID Controllersrdquo DrVarodom Toochinda wwwdewinzcomdocsecspidpdf[12] rdquoSistemas de control digitalrdquo Benjamin C Kuo Editorial Grupo Patria Cultural ISBN 968-

26-1292[13] rdquoSistemas de control modernordquo Richard C Dorf y Robert H Bishop Deacutecima edicioacuten Edi-

torial Pearson Prentice Hall ISBN 84-205-4401-9

Revisioacuten

101210 - El presente texto es una adaptacioacuten de la versioacuten original titula-da ldquoAproximacioacuten a la solucioacuten del peacutendulo invertido claacutesicordquo Esta modifi-cacioacuten fue realizada con el propoacutesito de poder publicar mi trabajo con maacutessoltura

GABS (Get Another Boe-bot Selfbalanced)copy CopyLeft 2010 Nelson G LombardoPrimera edicioacuten Noviembre 2010Esta documentacioacuten esta licenciada bajo los teacuterminos de la Licencia GNU para

la Documentacioacuten Libre Ver en httpwwwgnuorgcopyleftThis documentation is licensed under the terms of the GNU Free Documentation

License See httpwwwgnuorgcopyleft

E-mail address nelsonlombardogmailcomURL httpetech-nelsonblogspotcom201011primer-pid-funcional-en-el-boebothtmlCurrent address Neuqueacuten Capital Neuqueacuten

  • Contents
  • 1 Introduccioacuten
    • 11 Problema
    • 12 Problema a resolver
    • 13 Alcance
    • 14 Objetivos
      • 2 Marco teoacuterico
        • 21 Peacutendulo claacutesico
        • 22 PID
        • 23 PID digital
        • 24 Concepto PID en referencia al proyecto
        • 25 Retrasos en sistemas de control basados en micropocesadores
          • 3 Disentildeo metodoloacutegico
            • 31 Eleccioacuten del control
            • 32 Trabajo a realizar
            • 33 Inconvenientes de la implementacioacuten
            • 34 Diagrama de flujo del control PID digital
            • 35 Ancho de pulso para el control y velocidad de los motores servo-continuos
            • 36 Obtencioacuten de los coeficientes de los teacuterminos PID
              • 4 Materiales
                • 41 Software utilizado
                • 42 Plataforma roboacutetica
                • 43 Lenguaje de programacioacuten
                  • 5 Implementacioacuten
                    • 51 Modificaciones al boe-bot
                    • 52 Sensor de distancia
                    • 53 Alimentacioacuten eleacutectrica
                    • 54 Posicioacuten de equilibrio natural del boe-bot
                    • 55 Transferencia de los programas
                    • 56 Programa para el stamp BS2
                      • 6 Resultados
                        • 61 Trabajo observado
                        • 62 Aceptacioacuten
                          • 7 Conclusioacuten
                          • 8 Trabajo a futuro
                          • Iacutendice de figuras
                          • Referencias
                          • Revisioacuten
Page 9: Gabs

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 7

Figura 31 Diagrama simplificado del programa

Deshabilitar el control integral cuando el sistema se encuentre en la regioacutenmaacutes linealLimitar el tiempo que se dedica para el caacutelculo del teacutermino integralLimitar los valores que puede alcanzar el teacutermino reduciendo asiacute los ldquore-botesrdquo

334 Debug Lamentablemente al experiencia nos determino que utilizar la in-struccioacuten DEBUG no es una opcioacuten para depurar los errores o comprender algunosde los estados por los que pasa el sistema por lo que hay que valerse de las expe-riencias que se conocen sobre este tipo de sistemas y realizar las interpretacionesque vengan al caso

34 Diagrama de flujo del control PID digital Una de las mejores manerasde abordar el desarrollo de un programa es realizando un diagrama de flujo El puntode partida fue baacutesico pero necesario y lo apreciamos en la figura 31

Se debe utilizar una cantidad miacutenima de variables pero sin dejar de ser lo suficien-temente coacutemodo el programa para su modificacioacuten El programa principal adoptala forma de la figura 32

Se utilizan tres rutinas las cuales pueden ser estudiadas de las figuras 33 34 y35

La rutina de medicioacuten establece los requerimientos desde el punto de vista delboe-bot y la utilizacioacuten del sensor que en nuestro caso seraacute el moacutedulo QTI6

La seccioacuten de caacutelculo representa lo escrito en 23 pero teniendo en cuenta quela parte integral soacutelo ldquointegraraacuterdquo en el modelo de aproximacioacuten por rectaacutengulosel momento actual y dos momentos anteriores El tiempo es representativo deltiempo que toma en el coacutedigo final pasar de realizar todos los caacutelculos a comenzara realizarlos

La rutina de modulacioacuten soacutelo hace referencia a el enviacuteo del impulso necesariopara mover el boe-bot en sentido de buscar el equilibrio En 35 se trata sobre estetema

35 Ancho de pulso para el control y velocidad de los motores servo-continuos Supongamos que se necesita mover el boe-bot a maacutexima velocidadentonces uno de los motores debe girar en sentido horario a velocidad maacutexima y elotro en sentido antihorario por lo tanto de lo que se observa en las figuras 36 y37

6Nuacutemero de parte 555-27401 para el pedido en parallax

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 8

Figura 32 Diagrama de flujo del programa principal

Figura 33 Rutina de medicioacuten

17ms = 2micros lowast rigth

rigth = 17ms2micros = 850

13ms = 2micros lowast left

left = 13ms2micros = 650

Procedemos a utilizar estos valores en pbasic a traveacutes de la instruccioacutenPULSOUT Pin Duracioacuten

Donde

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 9

Figura 34 Rutina de caacutelculos

Figura 35 Rutina de modulacioacuten

Figura 36 Un tren de pulsos de 13 ms hace rotar el servo amaacutexima velocidad en sentido de las agujas del reloj

Figura 37 Un tren de pulsos de 17 ms hace rotar el servo amaacutexima velocidad en sentido contrario al de las agujas del reloj

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 10

Paraacutemetro Tiempo subida Sobreimpulso Tiempo seteado Error de estadiacutea Estabilidad

kp Decrece Se incrementa Cambio Decrece Se degradapequentildeo

ki Decrece Se incrementa Se incrementa Decrece Se degradasignificativamente

kd Decrece Decrece Decrece No tiene efecto Mejora simiacutenimamente miacutenimamente miacutenimamente en teoriacutea kd es pequentildeo

Cuadro 1 Efectos de incrementar cada paraacutemetro independientemente

Pin Es la variable o constante que indica el pin entradasalida a donde sedirige el pulsoDuracioacuten Es la relacioacuten entrel el pulso que queremos y los 2micros7

351 Impulso cero de los motores Al utilizar la Duracioacuten del PULSOUT en 750los motores quedan estaticos Existe el procedimiento descripto en el manual deboe-bot para esto

36 Obtencioacuten de los coeficientes de los teacuterminos PID Existen muchasformas de obtener los coeficientes Una excelente referencia inicial es los descriptoen el artiacuteculo de wikipedia que podemos hallar en el texto 1 de la bibliografiacutea

En este proyecto se opto por la configuracioacuten manual puesto que esto es muyrelativo se propone buscar sobre este puesto que tal vez puede ser confuso comolograrlo Por lo pronto el texto antes recomendado fue el utilizado para el trabajoUna raacutepida diferencia es la del cuadro 1

361 Procedimiento manual Si el sistema debe estar corriendo primero debemosponer kd y ki a cero Incrementar kp hasta que la salida del lazo comience a oscilarentonces kp debe setearse aproximadamente a la mitad de valor para la cual larepuesta decayoacute un cuarto Se incrementar ki hasta que se pueda corregir el offsetde la respuesta del sistema Sin embargo aumentar demasiado ki puede causarinestabilidad Finalmente se incrementa kd hasta que el lazo tengo una respuestaaceptablemente raacutepida a los impulsos imprevistos Si se incrementa mucho kd puedecausar una respuesta excesiva y sobre impulso perdiendo asiacute la estabilidad Un lazoPID bien seteado usualmente no trabaja tan raacutepido a los impulsos no previstos paradar lugar a una buacutesqueda raacutepida del punto de seteo

4 Materiales

41 Software utilizado

411 Procesador de texto Para ir documentando y realizar este informe sobreel proyecto se decidioacute utilizar un procesador de texto Las ventajas del mismo sonla optimizacioacuten de la presentacioacuten para documentos estaacutendares y poco o nada deinteraccioacuten con el formateo del mismo De gran utilidad para este proyecto Seutilizo el software LYX en su versioacuten 155 el cual es software de licencia GPL comoasiacute gratuito El sitio oficial es httpwwwlyxorg

412 Graficador de diagramas Para la realizacioacuten de los diferentes diagramas seutilizo un graficador de diagramas estructurados llamado DIA en su versioacuten 0961Este software esta tambieacuten amparado bajo la GPL y es de distribucioacuten gratuita Elsitio oficial es httpwwwgnomeorgprojectsdia

7Este valor es el especificado para un BS2

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 11

Figura 41 Boe-bot

413 Entorno de desarrollo Respecto al entorno se intento trabajar con alter-nativas al entorno oficial del que nos otorga la compantildeiacutea Parallax (quien desarrollael boe bot) pero existen pocas opciones y no se teniacutean las libreriacuteas para la compi-lacioacuten Se decidioacute utilizar directamente el IDE Basic Stamp versioacuten 25 de coacutedigopropietario y distribucioacuten gratuita Para la descarga buscar en el sitio oficial de laempresa httpwwwparallaxcom

414 Adaptacioacuten a un sistema GNULinux Para poder utilizar el IDE de paral-lax sobre un sistema GNULinux se utilizo el software WinE (Windows Emulator)en su versioacuten 101-174-gc4039bd El sitio oficial de este proyecto de licencia GPLy distribucioacuten gratuita es httpwwwwinehqorg

42 Plataforma roboacutetica La plataforma donde se implemento el proyecto es elrobot boe-bot (figura 41) producido por la compantildeiacutea Parallax Se decidioacute utilizarel mismo porque habiacutea sido una adquisicioacuten reciente del departamento de elec-troacutenica en la Universidad y ninguacuten equipo de trabajo estaba utilizaacutendolo Ademaacutessu sensillez y facilidad de transferencia del programa lo hace ideal para trabajosexperimentales

Componentes activos de la plataforma

421 Parallax (Futaba) Continuous Rotation ServoRotacioacuten continua bidireccional de 0 a 50 RPM con respuesta linear alcontrol PWM para una faacutecil rampa

bull Requerimientos de tensioacuten de 4 a 6 Vdcbull Comunicacioacuten PWMbull Dimensiones 558 x 19 x 406 mmbull Rango de temperatura operativa -10 a +50 degC

422 Motherboard En la figura 42 se encuentra el motherboard del boebot Acontinuacioacuten una pequentildea descripcioacuten

1 Conector para una pila de 9 voltios2 Condensadores del filtro del regulador de voltaje de 5 voltios en corriente

continua

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 12

Figura 42 Tarjeta electroacutenica del boe-bot

3 Conector del puerto serieusb para la comunicacioacuten con el ordenador4 Zoacutecalo de 24 pines para insertar el moacutedulo BASIC Stamp5 Pulsador para reiniciar el programa cargado en el Boe-Bot6 Interruptor de tres posiciones En la posicioacuten 0 el Boe-Bot estaacute desconecta-

do en la posicioacuten 1 el Boe-Bot estaacute conectado pero los servomotores quemueven las ruedas estaacuten desconectados y en la posicioacuten 2 tanto el Boe-Botcomo los servos estaacuten conectados

7 LED verde que nos indica que el Boe-Bot estaacute encendido8 Conector de las entradassalidas del microcontrolador BASIC Stamp para

su uso en la placa protoboard situada a continuacioacuten9 Placa protoboard para el montaje de los componentes electroacutenicos necesar-

ios para los sensores e indicadores luminosos o acuacutesticos10 Conector de alimentacioacuten Los cinco primeros pines (Vdd) proporcionan una

tensioacuten positiva de 5 voltios los tres siguientes (Vin) una tensioacuten positivadel voltaje que proporcionen las pilas o el adaptador de corriente (6 - 9voltios) y los cinco uacuteltimos (Vss) proporcionan la masa el polo negativo auna tensioacuten de 0 voltios

11 Conectores para cuatro servomotores asociados a las salidas P12 P13 P14y P15

12 Jumper para la seleccioacuten de la alimentacioacuten de los servomotores seguacuten serealice mediante el portapilas de 6 voltios del Boe-Bot o mediante un adap-tador de corriente exterior

13 Regulador de voltaje que proporciona a los circuitos electroacutenicos 5 voltiospositivos (Vdd) y la masa (Vss)

14 Conector para tarjetas de ampliacioacuten Permite conectar las 16 entradassalidasde la P0 a la P15 y los pines de la alimentacioacuten Vdd Vin y Vss

15 Conector para el portapilas de 6 voltios o el adaptador de corriente exteriorde 6 - 9 voltios La varilla central de 21 miliacutemetros corresponde al polopositivo

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 13

Figura 43 BS2 uno de los ldquocerebrosrdquo del boebot

423 Cerebro BS2 En la siguiente enumeracioacuten se describen los componentesque se hallan en el ldquocerebrordquo BS2 del boebot utilizado lo que se puede apreciar enla figura 43

1 Cuatro pines para la comunicacioacuten con el ordenador mediante el puertoserie

2 Memoria EEPROM de una capacidad de 2K en donde se almacena el coacutedigofuente del programa editado en PBASIC

3 Condensador del filtro del regulador de voltaje de 5 voltios4 Ocho pines de las entradassalidas desde la P0 hasta la P75 Microcontrolador PIC16C57C que actuacutea de interprete del lenguaje PBA-

SIC ejecutando el programa a una velocidad de 4000 instrucciones porsegundo

6 Ocho pines de las entradassalidas desde la P8 hasta la P157 Oscilador de cuarzo de 20 megahercios para proporcionar la frecuencia al

reloj interno8 Pin de alimentacioacuten de 5 voltios positivos (Vcc)9 Regulador de voltaje que estabiliza la tensioacuten desde los 6 - 9 voltios de la

alimentacioacuten a los 5 voltios utilizados por los circuitos electroacutenicos10 Pin para reiniciar el programa11 Dos pines de alimentacioacuten a la tensioacuten de 6 - 9 voltios (Vin) y la masa

(Vss)12 Detector de la tensioacuten de alimentacioacuten del moacutedulo BASIC Stamp13 Circuito de gestioacuten de la comunicacioacuten mediante el puerto serieusb

43 Lenguaje de programacioacuten El boe-bot utiliza un interprete para su pro-gramacioacuten basado en el lenguaje pbasic Este lenguaje es muy similar al Basiclo que le agrega mucho facilidad a la programacioacuten de estos equipos limitados enprocesamiento La referencia para utilizar este lenguaje esta totalmente documen-tada por parallax en el texto 5 que se halla en la bibliografiacutea utilizada

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 14

Figura 51 Modificaciones al boe-bot posicioacuten del moacutedulo QTI

5 Implementacioacuten

51 Modificaciones al boe-bot La uacutenica modificacioacuten que se realizo al boe-bot claacutesico es la inversioacuten de la posicioacuten fiacutesica de los servos para que el cuerpo delboe-bot pudiera adoptar la posicioacuten vertical de la figura 11 libremente Esto puedeapreciarse en la figura 51

52 Sensor de distancia El moacutedulo QTI esta disentildeado para la deteccioacuten cer-cana infrarroja El corazoacuten de este moacutedulo es el QRD1114 que es un sensor reflectivode objetos Utiliza un diodo emisor infrarrojo y un phototransistor BJT El moacute-dulo esta disentildeado para utilizarse con la funcioacuten RCTIME que posee la siguientesintaxis

RCTIME Pin State VariableDonde

Pin es alguna de las entradassalidas del puertoState es una constante que puede adoptar el valor 1 o 0 loacutegicosVariable es justamente el registro en memoria donde queremos almacenarel resultado

Esta funcioacuten mide el tiempo que le toma llegar al estado definido en State Usual-mente se utiliza para medir el tiempo de carga o descarga de un circuito RC

En nuestro caso la utilizamos para obtener una ldquomedidardquo de la distancias entreel sensor y la superficie donde esta haciendo equilibrio el robot

La posicioacuten que se adopto para el sensor fue en la parte inferior del boe-bot a nomaacutes de 1 cm de la superficie con una distancia al eje de pivoteo (eje de las ruedas)de no maacutes de 15cm

La conexioacuten de este sensor es muy sencilla el pin W del moacutedulo se conecta a unode los pines de alimentacioacuten del motherboard del robot el pin B al gnd que otorgala placa y el R a una de las entradassalidas del puerto de trabajo que deseemosen nuestro caso utilizamos el 5 Para una mayor comprensioacuten referirse a la figura51

53 Alimentacioacuten eleacutectrica Se elimino el porta pila del boe-bot y se utilizoalimentacioacuten externa con una fuente de voltaje regulable de 3A como maacuteximo tra-bajando a 9V Para no producir una invasioacuten al sistema la alimentacioacuten se hizoa traveacutes de cables muy finos y maneables en una posicioacuten relajada por encima de

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 15

la altura del boe-bot y con el largo suficiente para que el mismo se pudiera moverlibremente

54 Posicioacuten de equilibrio natural del boe-bot Para encontrar la posicioacutende equilibrio se utilizo la siguiente metodologiacutea

Se escribioacute un programa que iba mostrando en la pantalla de debug del IDEla medicioacuten de la distancia del sensor a la superficieManualmente se adoptaba la posicioacuten para la cual se notaba el equilibriodel robotSe anota el valor y se utiliza luego en el programa de control

Todo el trabajo previamente descripto derivo en este programa escrito para tal finfue

rsquo $STAMP BS2rsquo $PBASIC 25front VAR WordDO

HIGH 5RCTIME 51frontPAUSE 1000DEBUG front

LOOP

55 Transferencia de los programas Utilizando el IDE es muy sencillopuesto que posee un herramienta para ldquocorrer el programardquo y lo transfiere al boe-bot por medio del puerto USB como tambieacuten puede ser a traveacutes del puerto serialo una combinacioacuten de los mismos La configuracioacuten es muy sencilla y no requieremucho maacutes esfuerzo

56 Programa para el stamp BS2 El siguiente es el programa definitivo es-crito para controlar la posicioacuten de equilibrio vertical del boe-bot

rsquo $STAMP BS2

rsquo $PBASIC 25

rsquo Licensed under GPLv2 o higher

rsquoBS2 Mapa de las entsal usadas

rsquoP3 Sensor de distancia frontal

Leftservo CON 12 rsquoP12 Servo izquierdo

Rightservo CON 13 rsquoP13 Servo derecho

front VAR Word rsquoDistancia que mide el sensor de contraste

pulseLeft VAR Word rsquoVariable que enviacutea el ancho del pulso al motor izquierdo

pulseRight VAR Word rsquoVariable que enviacutea el ancho del pulso al motor derecho

pulseZero CON 750 rsquoEste es el pulso para el cuacuteal los motores no giran

setpoint VAR Word rsquoEste dato es el setpoint del control PID

kp CON 199100 rsquoValor de la constante de proporcional utilizada

ki CON 399100 rsquoValor de la constante de integracioacuten utilizada

kd CON 190100 rsquoValor de la constante del teacutermino derivativo utilizada

error VAR Word rsquoAlmacena el error que se va obteniendo

p VAR Word rsquoSe almacena el ancho del pulso a sumar al estado estacionario

offsetf VAR Word rsquoDesplaza la medicioacuten de la distancia

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 16

sum1 VAR Word rsquoRepresenta el error anterior al actual

sum2 VAR Word rsquoRepresenta el error anterior al anterior del actual

integrate VAR Word rsquoTeacutermino integral

derivate VAR Word rsquoTeacutermino derivativo

time CON 2510000 rsquoTiempo estimativo entre la obtencioacuten de cada teacutermino

rsquo------Comienzo del programa principal-------

rsquo Incializacioacuten de las variables

offset = pulseZero

sum1 = 0

sum2 = 0

offsetf = 0

PAUSE 2000 rsquoPausa de 2 segundos

SetPoint = 170 rsquoSeteo manual de la posicioacuten a buscar

offsetf = SetPoint

DO rsquoBucle del programa principal

GOSUB Measure rsquoMedicioacuten de la distancia

GOSUB PID rsquoAlgoritmo de control PID

GOSUB Send_Pulse rsquoModulacioacuten de pulso en los motores

LOOP

rsquo-------Subrutinas--------

PID

IF (front ltsetpoint) THEN rsquoHay que revisar el signo y actuar seguacuten para la correccioacuten

error = setpoint - front

integrate = (sum1 + sum2 - error) time 3 rsquoTeacutermino integral

IF error gtsum1 THEN rsquoRevisamos el signo y calculamos el teacutermino derivativo

derivate = (error - sum1) time rsquoEl teacutermino derivativo es en realidad la secante miacutenima

que podemos hallar

ELSE

derivate = (sum1 - error) time

ENDIF

p = error kp + integrate ki + derivate kd rsquoControl PID completo

pulseLeft = p + offset rsquoModulando el ancho del pulso seguacuten se necesite corregir

pulseRight = - p + offset rsquohacia adelante o hacia atraacutes

ENDIF

IF (front gtsetpoint) THEN rsquoEsta parte del programa realiza lo mismo que la anterior soacutelo que

adecua el signo

error = front - setpoint

integrate = (sum1 + sum2 + error) time 3

IF error gtsum1 THEN

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 17

derivate = (error - sum1) time

ELSE

derivate = (sum1 - error) time

ENDIF

p = error kp + integrate ki + derivate kd

pulseLeft = p + offset

pulseRight = - p + offset

ENDIF

sum2 = sum1

sum1 = error

RETURN

rsquo Esta subrutina devuelve la distancia utilizando el sensor de contraste

Measure

HIGH 5

RCTIME 51front

front = front - offsetf

RETURN

rsquo Esta subrutina se encarga de enviar el PWM correcto hacia los motores

Send_Pulse

PULSOUT Leftservo pulseRight

PULSOUT Rightservo pulseLeft

RETURN

6 Resultados

61 Trabajo observado El sistema termino realizando equilibrio y a medidaque el control progresaba en funcionalidad como en tunning8 fue mostrando unaclara mejora No se pudo implementar un sistema que permitiera cotejar las mejorasmaacutes que por el meacutetodo de la observacioacuten Eventualmente el equilibrio en torno ala posicioacuten de equilibrio se obtuvo y demostroacute ser significativamente mejor de lasprimeras pruebas utilizando un control proporcional

62 Aceptacioacuten El programa de control PID logroacute el objetivo permitioacute re-alizar el proyecto en tiempo y forma ademaacutes de sortear una gran cantidad deinconvenientes

8En este caso el seteo de los coeficientes de los teacuterminos PID

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 18

7 Conclusioacuten

Aunque el objetivo inicial de lograr un peacutendulo invertido9 no se alcanzo estaaproximacioacuten es evidentemente un claro progreso hacia la resolucioacuten del mismoAunque el trabajo podriacutea haber sido maacutes ldquoexitosordquo en lo personal fue satisfactoriolograr una solucioacuten y que ademaacutes la misma es bastante aceptable

La estrategia de control PID dejo en evidencia ser a prueba de concepto y logroacuteun importante objetivo a un costo de tiempo dinero y conocimientos10 muy bajos

El boe-bot demostroacute ser una plataforma muy simple pero no asiacute despreciablePermitioacute trabajar raacutepidamente al momento de la programacioacuten pero como contralas limitaciones son algunas veces numerosas pero lo cierto es que es un hardwaredisentildeado para hobbistas y que intenta ser fiel a ello Sin embargo fue muy intere-sante trabajar con el mismo para lograr un ldquoprototipordquo de solucioacuten al problema

Hace muchos antildeos trabaje en instrumentacioacuten en la industria del petroacuteleo y metopaba con sistemas PID de control en muchos de los equipos que se reparaban quecontrolaban desde vaacutelvulas electro-hidraacuteulicas hasta motores de bombas y tornil-los11 para transportar arena Cuando puede estudiar Ing Electroacutenica fue en granmedida por la fascinacioacuten que me produciacutean estos sistemas Asiacute que esta experien-cia fue muy gratificante y me demostroacute el trabajo que conlleva realizar algunas deestas tareas

8 Trabajo a futuro

Muchos puntos no se pudieron estudiar ni tratar los siguientes son los maacutes im-portantes seguacuten un criterio personal que se fue generando a medida que el proyectoavanzaba

Modelizar el hardware con los conocimientos que se adquieren en la materiasistema de controlEstudiar la utilizacioacuten de otros tipos de sensores para la medicioacuten de ladistancia posicionalLograr un equipo de trabajo para incrementar la productividadAunque se abordo una solucioacuten de fuzzy logic12 basada en un ejemplorealizado en python no se pudo implementar Lo ideal seriacutea presentar unasolucioacuten de sistemas hiacutebridosAyudar a la fiacutesica del problema resuelta agregando maacutes peso en la parteinferior cerca al eje de pivoteo

Iacutendice de figuras

11 Posicioacuten de equilibrio del boe-bot self-balanced 221 Diagrama de fuerzas que actuacutean sobre el peacutendulo invertido claacutesico 322 Diagrama de flujo del control PID 431 Diagrama simplificado del programa 732 Diagrama de flujo del programa principal 833 Rutina de medicioacuten 834 Rutina de caacutelculos 935 Rutina de modulacioacuten 9

9Caso claacutesico de control10Sobre sistemas de control11Tipo de Arquiacutemedes12Loacutegica difusa

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 19

36 Un tren de pulsos de 13 ms hace rotar el servo a maacutexima velocidad ensentido de las agujas del reloj 9

37 Un tren de pulsos de 17 ms hace rotar el servo a maacutexima velocidad ensentido contrario al de las agujas del reloj 9

41 Boe-bot 1142 Tarjeta electroacutenica del boe-bot 1243 BS2 uno de los ldquocerebrosrdquo del boebot 1351 Modificaciones al boe-bot posicioacuten del moacutedulo QTI 14

Referencias[1] httpenwikipediaorgwikiPID_controller[2] ldquoModelado y control del peacutendulo invertido sobre carro mediante sistemas hiacutebridosrdquo por Fer-

nando Bote Ortega Universidad de Sevilla[3] rdquoControl of an Inverted Pendulumrdquo por Johnny Lam[4] httpletsmakerobotscomnode22232[5] rdquoBASIC Stamp Syntax and Reference Manualrdquo Version 22 ISBN 1-928982-32-8[6] rdquoPBASIC Language Basicsrdquo Dhinesh Sasidaran Octubre 14 2002[7] rdquoMicrobot PARALLAX Boe - Botrdquo Caacutendido Garciacutea Barroacuten[8] rdquoRobotics with the Boe-Bot Student Guide VERSION 22rdquo wwwparallaxcomdldocs

bookseduroboticsv2_2pdf[9] rdquoMeacutetodo baacutesico para implementar un controlador digital PID en un microcontrolador PIC

para el desarrollo de aplicaciones de bajo costo (Aplicaciones en control de Potencia y laIndustria)rdquo Ilber Adonayt Ruge Ruge Universidad de Cundinamarca Grupo de Investigacioacutenen Tecnologiacuteas de la Informacioacuten y las Comunicaciones GITEINCO Fusagasuga ndash Colombia

[10] rdquoiquestCoacutemo realizar un informe de invetigacioacutenrdquo DrEnrique Teraacuten[11] rdquoDigital PID Controllersrdquo DrVarodom Toochinda wwwdewinzcomdocsecspidpdf[12] rdquoSistemas de control digitalrdquo Benjamin C Kuo Editorial Grupo Patria Cultural ISBN 968-

26-1292[13] rdquoSistemas de control modernordquo Richard C Dorf y Robert H Bishop Deacutecima edicioacuten Edi-

torial Pearson Prentice Hall ISBN 84-205-4401-9

Revisioacuten

101210 - El presente texto es una adaptacioacuten de la versioacuten original titula-da ldquoAproximacioacuten a la solucioacuten del peacutendulo invertido claacutesicordquo Esta modifi-cacioacuten fue realizada con el propoacutesito de poder publicar mi trabajo con maacutessoltura

GABS (Get Another Boe-bot Selfbalanced)copy CopyLeft 2010 Nelson G LombardoPrimera edicioacuten Noviembre 2010Esta documentacioacuten esta licenciada bajo los teacuterminos de la Licencia GNU para

la Documentacioacuten Libre Ver en httpwwwgnuorgcopyleftThis documentation is licensed under the terms of the GNU Free Documentation

License See httpwwwgnuorgcopyleft

E-mail address nelsonlombardogmailcomURL httpetech-nelsonblogspotcom201011primer-pid-funcional-en-el-boebothtmlCurrent address Neuqueacuten Capital Neuqueacuten

  • Contents
  • 1 Introduccioacuten
    • 11 Problema
    • 12 Problema a resolver
    • 13 Alcance
    • 14 Objetivos
      • 2 Marco teoacuterico
        • 21 Peacutendulo claacutesico
        • 22 PID
        • 23 PID digital
        • 24 Concepto PID en referencia al proyecto
        • 25 Retrasos en sistemas de control basados en micropocesadores
          • 3 Disentildeo metodoloacutegico
            • 31 Eleccioacuten del control
            • 32 Trabajo a realizar
            • 33 Inconvenientes de la implementacioacuten
            • 34 Diagrama de flujo del control PID digital
            • 35 Ancho de pulso para el control y velocidad de los motores servo-continuos
            • 36 Obtencioacuten de los coeficientes de los teacuterminos PID
              • 4 Materiales
                • 41 Software utilizado
                • 42 Plataforma roboacutetica
                • 43 Lenguaje de programacioacuten
                  • 5 Implementacioacuten
                    • 51 Modificaciones al boe-bot
                    • 52 Sensor de distancia
                    • 53 Alimentacioacuten eleacutectrica
                    • 54 Posicioacuten de equilibrio natural del boe-bot
                    • 55 Transferencia de los programas
                    • 56 Programa para el stamp BS2
                      • 6 Resultados
                        • 61 Trabajo observado
                        • 62 Aceptacioacuten
                          • 7 Conclusioacuten
                          • 8 Trabajo a futuro
                          • Iacutendice de figuras
                          • Referencias
                          • Revisioacuten
Page 10: Gabs

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 8

Figura 32 Diagrama de flujo del programa principal

Figura 33 Rutina de medicioacuten

17ms = 2micros lowast rigth

rigth = 17ms2micros = 850

13ms = 2micros lowast left

left = 13ms2micros = 650

Procedemos a utilizar estos valores en pbasic a traveacutes de la instruccioacutenPULSOUT Pin Duracioacuten

Donde

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 9

Figura 34 Rutina de caacutelculos

Figura 35 Rutina de modulacioacuten

Figura 36 Un tren de pulsos de 13 ms hace rotar el servo amaacutexima velocidad en sentido de las agujas del reloj

Figura 37 Un tren de pulsos de 17 ms hace rotar el servo amaacutexima velocidad en sentido contrario al de las agujas del reloj

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 10

Paraacutemetro Tiempo subida Sobreimpulso Tiempo seteado Error de estadiacutea Estabilidad

kp Decrece Se incrementa Cambio Decrece Se degradapequentildeo

ki Decrece Se incrementa Se incrementa Decrece Se degradasignificativamente

kd Decrece Decrece Decrece No tiene efecto Mejora simiacutenimamente miacutenimamente miacutenimamente en teoriacutea kd es pequentildeo

Cuadro 1 Efectos de incrementar cada paraacutemetro independientemente

Pin Es la variable o constante que indica el pin entradasalida a donde sedirige el pulsoDuracioacuten Es la relacioacuten entrel el pulso que queremos y los 2micros7

351 Impulso cero de los motores Al utilizar la Duracioacuten del PULSOUT en 750los motores quedan estaticos Existe el procedimiento descripto en el manual deboe-bot para esto

36 Obtencioacuten de los coeficientes de los teacuterminos PID Existen muchasformas de obtener los coeficientes Una excelente referencia inicial es los descriptoen el artiacuteculo de wikipedia que podemos hallar en el texto 1 de la bibliografiacutea

En este proyecto se opto por la configuracioacuten manual puesto que esto es muyrelativo se propone buscar sobre este puesto que tal vez puede ser confuso comolograrlo Por lo pronto el texto antes recomendado fue el utilizado para el trabajoUna raacutepida diferencia es la del cuadro 1

361 Procedimiento manual Si el sistema debe estar corriendo primero debemosponer kd y ki a cero Incrementar kp hasta que la salida del lazo comience a oscilarentonces kp debe setearse aproximadamente a la mitad de valor para la cual larepuesta decayoacute un cuarto Se incrementar ki hasta que se pueda corregir el offsetde la respuesta del sistema Sin embargo aumentar demasiado ki puede causarinestabilidad Finalmente se incrementa kd hasta que el lazo tengo una respuestaaceptablemente raacutepida a los impulsos imprevistos Si se incrementa mucho kd puedecausar una respuesta excesiva y sobre impulso perdiendo asiacute la estabilidad Un lazoPID bien seteado usualmente no trabaja tan raacutepido a los impulsos no previstos paradar lugar a una buacutesqueda raacutepida del punto de seteo

4 Materiales

41 Software utilizado

411 Procesador de texto Para ir documentando y realizar este informe sobreel proyecto se decidioacute utilizar un procesador de texto Las ventajas del mismo sonla optimizacioacuten de la presentacioacuten para documentos estaacutendares y poco o nada deinteraccioacuten con el formateo del mismo De gran utilidad para este proyecto Seutilizo el software LYX en su versioacuten 155 el cual es software de licencia GPL comoasiacute gratuito El sitio oficial es httpwwwlyxorg

412 Graficador de diagramas Para la realizacioacuten de los diferentes diagramas seutilizo un graficador de diagramas estructurados llamado DIA en su versioacuten 0961Este software esta tambieacuten amparado bajo la GPL y es de distribucioacuten gratuita Elsitio oficial es httpwwwgnomeorgprojectsdia

7Este valor es el especificado para un BS2

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 11

Figura 41 Boe-bot

413 Entorno de desarrollo Respecto al entorno se intento trabajar con alter-nativas al entorno oficial del que nos otorga la compantildeiacutea Parallax (quien desarrollael boe bot) pero existen pocas opciones y no se teniacutean las libreriacuteas para la compi-lacioacuten Se decidioacute utilizar directamente el IDE Basic Stamp versioacuten 25 de coacutedigopropietario y distribucioacuten gratuita Para la descarga buscar en el sitio oficial de laempresa httpwwwparallaxcom

414 Adaptacioacuten a un sistema GNULinux Para poder utilizar el IDE de paral-lax sobre un sistema GNULinux se utilizo el software WinE (Windows Emulator)en su versioacuten 101-174-gc4039bd El sitio oficial de este proyecto de licencia GPLy distribucioacuten gratuita es httpwwwwinehqorg

42 Plataforma roboacutetica La plataforma donde se implemento el proyecto es elrobot boe-bot (figura 41) producido por la compantildeiacutea Parallax Se decidioacute utilizarel mismo porque habiacutea sido una adquisicioacuten reciente del departamento de elec-troacutenica en la Universidad y ninguacuten equipo de trabajo estaba utilizaacutendolo Ademaacutessu sensillez y facilidad de transferencia del programa lo hace ideal para trabajosexperimentales

Componentes activos de la plataforma

421 Parallax (Futaba) Continuous Rotation ServoRotacioacuten continua bidireccional de 0 a 50 RPM con respuesta linear alcontrol PWM para una faacutecil rampa

bull Requerimientos de tensioacuten de 4 a 6 Vdcbull Comunicacioacuten PWMbull Dimensiones 558 x 19 x 406 mmbull Rango de temperatura operativa -10 a +50 degC

422 Motherboard En la figura 42 se encuentra el motherboard del boebot Acontinuacioacuten una pequentildea descripcioacuten

1 Conector para una pila de 9 voltios2 Condensadores del filtro del regulador de voltaje de 5 voltios en corriente

continua

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 12

Figura 42 Tarjeta electroacutenica del boe-bot

3 Conector del puerto serieusb para la comunicacioacuten con el ordenador4 Zoacutecalo de 24 pines para insertar el moacutedulo BASIC Stamp5 Pulsador para reiniciar el programa cargado en el Boe-Bot6 Interruptor de tres posiciones En la posicioacuten 0 el Boe-Bot estaacute desconecta-

do en la posicioacuten 1 el Boe-Bot estaacute conectado pero los servomotores quemueven las ruedas estaacuten desconectados y en la posicioacuten 2 tanto el Boe-Botcomo los servos estaacuten conectados

7 LED verde que nos indica que el Boe-Bot estaacute encendido8 Conector de las entradassalidas del microcontrolador BASIC Stamp para

su uso en la placa protoboard situada a continuacioacuten9 Placa protoboard para el montaje de los componentes electroacutenicos necesar-

ios para los sensores e indicadores luminosos o acuacutesticos10 Conector de alimentacioacuten Los cinco primeros pines (Vdd) proporcionan una

tensioacuten positiva de 5 voltios los tres siguientes (Vin) una tensioacuten positivadel voltaje que proporcionen las pilas o el adaptador de corriente (6 - 9voltios) y los cinco uacuteltimos (Vss) proporcionan la masa el polo negativo auna tensioacuten de 0 voltios

11 Conectores para cuatro servomotores asociados a las salidas P12 P13 P14y P15

12 Jumper para la seleccioacuten de la alimentacioacuten de los servomotores seguacuten serealice mediante el portapilas de 6 voltios del Boe-Bot o mediante un adap-tador de corriente exterior

13 Regulador de voltaje que proporciona a los circuitos electroacutenicos 5 voltiospositivos (Vdd) y la masa (Vss)

14 Conector para tarjetas de ampliacioacuten Permite conectar las 16 entradassalidasde la P0 a la P15 y los pines de la alimentacioacuten Vdd Vin y Vss

15 Conector para el portapilas de 6 voltios o el adaptador de corriente exteriorde 6 - 9 voltios La varilla central de 21 miliacutemetros corresponde al polopositivo

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 13

Figura 43 BS2 uno de los ldquocerebrosrdquo del boebot

423 Cerebro BS2 En la siguiente enumeracioacuten se describen los componentesque se hallan en el ldquocerebrordquo BS2 del boebot utilizado lo que se puede apreciar enla figura 43

1 Cuatro pines para la comunicacioacuten con el ordenador mediante el puertoserie

2 Memoria EEPROM de una capacidad de 2K en donde se almacena el coacutedigofuente del programa editado en PBASIC

3 Condensador del filtro del regulador de voltaje de 5 voltios4 Ocho pines de las entradassalidas desde la P0 hasta la P75 Microcontrolador PIC16C57C que actuacutea de interprete del lenguaje PBA-

SIC ejecutando el programa a una velocidad de 4000 instrucciones porsegundo

6 Ocho pines de las entradassalidas desde la P8 hasta la P157 Oscilador de cuarzo de 20 megahercios para proporcionar la frecuencia al

reloj interno8 Pin de alimentacioacuten de 5 voltios positivos (Vcc)9 Regulador de voltaje que estabiliza la tensioacuten desde los 6 - 9 voltios de la

alimentacioacuten a los 5 voltios utilizados por los circuitos electroacutenicos10 Pin para reiniciar el programa11 Dos pines de alimentacioacuten a la tensioacuten de 6 - 9 voltios (Vin) y la masa

(Vss)12 Detector de la tensioacuten de alimentacioacuten del moacutedulo BASIC Stamp13 Circuito de gestioacuten de la comunicacioacuten mediante el puerto serieusb

43 Lenguaje de programacioacuten El boe-bot utiliza un interprete para su pro-gramacioacuten basado en el lenguaje pbasic Este lenguaje es muy similar al Basiclo que le agrega mucho facilidad a la programacioacuten de estos equipos limitados enprocesamiento La referencia para utilizar este lenguaje esta totalmente documen-tada por parallax en el texto 5 que se halla en la bibliografiacutea utilizada

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 14

Figura 51 Modificaciones al boe-bot posicioacuten del moacutedulo QTI

5 Implementacioacuten

51 Modificaciones al boe-bot La uacutenica modificacioacuten que se realizo al boe-bot claacutesico es la inversioacuten de la posicioacuten fiacutesica de los servos para que el cuerpo delboe-bot pudiera adoptar la posicioacuten vertical de la figura 11 libremente Esto puedeapreciarse en la figura 51

52 Sensor de distancia El moacutedulo QTI esta disentildeado para la deteccioacuten cer-cana infrarroja El corazoacuten de este moacutedulo es el QRD1114 que es un sensor reflectivode objetos Utiliza un diodo emisor infrarrojo y un phototransistor BJT El moacute-dulo esta disentildeado para utilizarse con la funcioacuten RCTIME que posee la siguientesintaxis

RCTIME Pin State VariableDonde

Pin es alguna de las entradassalidas del puertoState es una constante que puede adoptar el valor 1 o 0 loacutegicosVariable es justamente el registro en memoria donde queremos almacenarel resultado

Esta funcioacuten mide el tiempo que le toma llegar al estado definido en State Usual-mente se utiliza para medir el tiempo de carga o descarga de un circuito RC

En nuestro caso la utilizamos para obtener una ldquomedidardquo de la distancias entreel sensor y la superficie donde esta haciendo equilibrio el robot

La posicioacuten que se adopto para el sensor fue en la parte inferior del boe-bot a nomaacutes de 1 cm de la superficie con una distancia al eje de pivoteo (eje de las ruedas)de no maacutes de 15cm

La conexioacuten de este sensor es muy sencilla el pin W del moacutedulo se conecta a unode los pines de alimentacioacuten del motherboard del robot el pin B al gnd que otorgala placa y el R a una de las entradassalidas del puerto de trabajo que deseemosen nuestro caso utilizamos el 5 Para una mayor comprensioacuten referirse a la figura51

53 Alimentacioacuten eleacutectrica Se elimino el porta pila del boe-bot y se utilizoalimentacioacuten externa con una fuente de voltaje regulable de 3A como maacuteximo tra-bajando a 9V Para no producir una invasioacuten al sistema la alimentacioacuten se hizoa traveacutes de cables muy finos y maneables en una posicioacuten relajada por encima de

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 15

la altura del boe-bot y con el largo suficiente para que el mismo se pudiera moverlibremente

54 Posicioacuten de equilibrio natural del boe-bot Para encontrar la posicioacutende equilibrio se utilizo la siguiente metodologiacutea

Se escribioacute un programa que iba mostrando en la pantalla de debug del IDEla medicioacuten de la distancia del sensor a la superficieManualmente se adoptaba la posicioacuten para la cual se notaba el equilibriodel robotSe anota el valor y se utiliza luego en el programa de control

Todo el trabajo previamente descripto derivo en este programa escrito para tal finfue

rsquo $STAMP BS2rsquo $PBASIC 25front VAR WordDO

HIGH 5RCTIME 51frontPAUSE 1000DEBUG front

LOOP

55 Transferencia de los programas Utilizando el IDE es muy sencillopuesto que posee un herramienta para ldquocorrer el programardquo y lo transfiere al boe-bot por medio del puerto USB como tambieacuten puede ser a traveacutes del puerto serialo una combinacioacuten de los mismos La configuracioacuten es muy sencilla y no requieremucho maacutes esfuerzo

56 Programa para el stamp BS2 El siguiente es el programa definitivo es-crito para controlar la posicioacuten de equilibrio vertical del boe-bot

rsquo $STAMP BS2

rsquo $PBASIC 25

rsquo Licensed under GPLv2 o higher

rsquoBS2 Mapa de las entsal usadas

rsquoP3 Sensor de distancia frontal

Leftservo CON 12 rsquoP12 Servo izquierdo

Rightservo CON 13 rsquoP13 Servo derecho

front VAR Word rsquoDistancia que mide el sensor de contraste

pulseLeft VAR Word rsquoVariable que enviacutea el ancho del pulso al motor izquierdo

pulseRight VAR Word rsquoVariable que enviacutea el ancho del pulso al motor derecho

pulseZero CON 750 rsquoEste es el pulso para el cuacuteal los motores no giran

setpoint VAR Word rsquoEste dato es el setpoint del control PID

kp CON 199100 rsquoValor de la constante de proporcional utilizada

ki CON 399100 rsquoValor de la constante de integracioacuten utilizada

kd CON 190100 rsquoValor de la constante del teacutermino derivativo utilizada

error VAR Word rsquoAlmacena el error que se va obteniendo

p VAR Word rsquoSe almacena el ancho del pulso a sumar al estado estacionario

offsetf VAR Word rsquoDesplaza la medicioacuten de la distancia

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 16

sum1 VAR Word rsquoRepresenta el error anterior al actual

sum2 VAR Word rsquoRepresenta el error anterior al anterior del actual

integrate VAR Word rsquoTeacutermino integral

derivate VAR Word rsquoTeacutermino derivativo

time CON 2510000 rsquoTiempo estimativo entre la obtencioacuten de cada teacutermino

rsquo------Comienzo del programa principal-------

rsquo Incializacioacuten de las variables

offset = pulseZero

sum1 = 0

sum2 = 0

offsetf = 0

PAUSE 2000 rsquoPausa de 2 segundos

SetPoint = 170 rsquoSeteo manual de la posicioacuten a buscar

offsetf = SetPoint

DO rsquoBucle del programa principal

GOSUB Measure rsquoMedicioacuten de la distancia

GOSUB PID rsquoAlgoritmo de control PID

GOSUB Send_Pulse rsquoModulacioacuten de pulso en los motores

LOOP

rsquo-------Subrutinas--------

PID

IF (front ltsetpoint) THEN rsquoHay que revisar el signo y actuar seguacuten para la correccioacuten

error = setpoint - front

integrate = (sum1 + sum2 - error) time 3 rsquoTeacutermino integral

IF error gtsum1 THEN rsquoRevisamos el signo y calculamos el teacutermino derivativo

derivate = (error - sum1) time rsquoEl teacutermino derivativo es en realidad la secante miacutenima

que podemos hallar

ELSE

derivate = (sum1 - error) time

ENDIF

p = error kp + integrate ki + derivate kd rsquoControl PID completo

pulseLeft = p + offset rsquoModulando el ancho del pulso seguacuten se necesite corregir

pulseRight = - p + offset rsquohacia adelante o hacia atraacutes

ENDIF

IF (front gtsetpoint) THEN rsquoEsta parte del programa realiza lo mismo que la anterior soacutelo que

adecua el signo

error = front - setpoint

integrate = (sum1 + sum2 + error) time 3

IF error gtsum1 THEN

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 17

derivate = (error - sum1) time

ELSE

derivate = (sum1 - error) time

ENDIF

p = error kp + integrate ki + derivate kd

pulseLeft = p + offset

pulseRight = - p + offset

ENDIF

sum2 = sum1

sum1 = error

RETURN

rsquo Esta subrutina devuelve la distancia utilizando el sensor de contraste

Measure

HIGH 5

RCTIME 51front

front = front - offsetf

RETURN

rsquo Esta subrutina se encarga de enviar el PWM correcto hacia los motores

Send_Pulse

PULSOUT Leftservo pulseRight

PULSOUT Rightservo pulseLeft

RETURN

6 Resultados

61 Trabajo observado El sistema termino realizando equilibrio y a medidaque el control progresaba en funcionalidad como en tunning8 fue mostrando unaclara mejora No se pudo implementar un sistema que permitiera cotejar las mejorasmaacutes que por el meacutetodo de la observacioacuten Eventualmente el equilibrio en torno ala posicioacuten de equilibrio se obtuvo y demostroacute ser significativamente mejor de lasprimeras pruebas utilizando un control proporcional

62 Aceptacioacuten El programa de control PID logroacute el objetivo permitioacute re-alizar el proyecto en tiempo y forma ademaacutes de sortear una gran cantidad deinconvenientes

8En este caso el seteo de los coeficientes de los teacuterminos PID

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 18

7 Conclusioacuten

Aunque el objetivo inicial de lograr un peacutendulo invertido9 no se alcanzo estaaproximacioacuten es evidentemente un claro progreso hacia la resolucioacuten del mismoAunque el trabajo podriacutea haber sido maacutes ldquoexitosordquo en lo personal fue satisfactoriolograr una solucioacuten y que ademaacutes la misma es bastante aceptable

La estrategia de control PID dejo en evidencia ser a prueba de concepto y logroacuteun importante objetivo a un costo de tiempo dinero y conocimientos10 muy bajos

El boe-bot demostroacute ser una plataforma muy simple pero no asiacute despreciablePermitioacute trabajar raacutepidamente al momento de la programacioacuten pero como contralas limitaciones son algunas veces numerosas pero lo cierto es que es un hardwaredisentildeado para hobbistas y que intenta ser fiel a ello Sin embargo fue muy intere-sante trabajar con el mismo para lograr un ldquoprototipordquo de solucioacuten al problema

Hace muchos antildeos trabaje en instrumentacioacuten en la industria del petroacuteleo y metopaba con sistemas PID de control en muchos de los equipos que se reparaban quecontrolaban desde vaacutelvulas electro-hidraacuteulicas hasta motores de bombas y tornil-los11 para transportar arena Cuando puede estudiar Ing Electroacutenica fue en granmedida por la fascinacioacuten que me produciacutean estos sistemas Asiacute que esta experien-cia fue muy gratificante y me demostroacute el trabajo que conlleva realizar algunas deestas tareas

8 Trabajo a futuro

Muchos puntos no se pudieron estudiar ni tratar los siguientes son los maacutes im-portantes seguacuten un criterio personal que se fue generando a medida que el proyectoavanzaba

Modelizar el hardware con los conocimientos que se adquieren en la materiasistema de controlEstudiar la utilizacioacuten de otros tipos de sensores para la medicioacuten de ladistancia posicionalLograr un equipo de trabajo para incrementar la productividadAunque se abordo una solucioacuten de fuzzy logic12 basada en un ejemplorealizado en python no se pudo implementar Lo ideal seriacutea presentar unasolucioacuten de sistemas hiacutebridosAyudar a la fiacutesica del problema resuelta agregando maacutes peso en la parteinferior cerca al eje de pivoteo

Iacutendice de figuras

11 Posicioacuten de equilibrio del boe-bot self-balanced 221 Diagrama de fuerzas que actuacutean sobre el peacutendulo invertido claacutesico 322 Diagrama de flujo del control PID 431 Diagrama simplificado del programa 732 Diagrama de flujo del programa principal 833 Rutina de medicioacuten 834 Rutina de caacutelculos 935 Rutina de modulacioacuten 9

9Caso claacutesico de control10Sobre sistemas de control11Tipo de Arquiacutemedes12Loacutegica difusa

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 19

36 Un tren de pulsos de 13 ms hace rotar el servo a maacutexima velocidad ensentido de las agujas del reloj 9

37 Un tren de pulsos de 17 ms hace rotar el servo a maacutexima velocidad ensentido contrario al de las agujas del reloj 9

41 Boe-bot 1142 Tarjeta electroacutenica del boe-bot 1243 BS2 uno de los ldquocerebrosrdquo del boebot 1351 Modificaciones al boe-bot posicioacuten del moacutedulo QTI 14

Referencias[1] httpenwikipediaorgwikiPID_controller[2] ldquoModelado y control del peacutendulo invertido sobre carro mediante sistemas hiacutebridosrdquo por Fer-

nando Bote Ortega Universidad de Sevilla[3] rdquoControl of an Inverted Pendulumrdquo por Johnny Lam[4] httpletsmakerobotscomnode22232[5] rdquoBASIC Stamp Syntax and Reference Manualrdquo Version 22 ISBN 1-928982-32-8[6] rdquoPBASIC Language Basicsrdquo Dhinesh Sasidaran Octubre 14 2002[7] rdquoMicrobot PARALLAX Boe - Botrdquo Caacutendido Garciacutea Barroacuten[8] rdquoRobotics with the Boe-Bot Student Guide VERSION 22rdquo wwwparallaxcomdldocs

bookseduroboticsv2_2pdf[9] rdquoMeacutetodo baacutesico para implementar un controlador digital PID en un microcontrolador PIC

para el desarrollo de aplicaciones de bajo costo (Aplicaciones en control de Potencia y laIndustria)rdquo Ilber Adonayt Ruge Ruge Universidad de Cundinamarca Grupo de Investigacioacutenen Tecnologiacuteas de la Informacioacuten y las Comunicaciones GITEINCO Fusagasuga ndash Colombia

[10] rdquoiquestCoacutemo realizar un informe de invetigacioacutenrdquo DrEnrique Teraacuten[11] rdquoDigital PID Controllersrdquo DrVarodom Toochinda wwwdewinzcomdocsecspidpdf[12] rdquoSistemas de control digitalrdquo Benjamin C Kuo Editorial Grupo Patria Cultural ISBN 968-

26-1292[13] rdquoSistemas de control modernordquo Richard C Dorf y Robert H Bishop Deacutecima edicioacuten Edi-

torial Pearson Prentice Hall ISBN 84-205-4401-9

Revisioacuten

101210 - El presente texto es una adaptacioacuten de la versioacuten original titula-da ldquoAproximacioacuten a la solucioacuten del peacutendulo invertido claacutesicordquo Esta modifi-cacioacuten fue realizada con el propoacutesito de poder publicar mi trabajo con maacutessoltura

GABS (Get Another Boe-bot Selfbalanced)copy CopyLeft 2010 Nelson G LombardoPrimera edicioacuten Noviembre 2010Esta documentacioacuten esta licenciada bajo los teacuterminos de la Licencia GNU para

la Documentacioacuten Libre Ver en httpwwwgnuorgcopyleftThis documentation is licensed under the terms of the GNU Free Documentation

License See httpwwwgnuorgcopyleft

E-mail address nelsonlombardogmailcomURL httpetech-nelsonblogspotcom201011primer-pid-funcional-en-el-boebothtmlCurrent address Neuqueacuten Capital Neuqueacuten

  • Contents
  • 1 Introduccioacuten
    • 11 Problema
    • 12 Problema a resolver
    • 13 Alcance
    • 14 Objetivos
      • 2 Marco teoacuterico
        • 21 Peacutendulo claacutesico
        • 22 PID
        • 23 PID digital
        • 24 Concepto PID en referencia al proyecto
        • 25 Retrasos en sistemas de control basados en micropocesadores
          • 3 Disentildeo metodoloacutegico
            • 31 Eleccioacuten del control
            • 32 Trabajo a realizar
            • 33 Inconvenientes de la implementacioacuten
            • 34 Diagrama de flujo del control PID digital
            • 35 Ancho de pulso para el control y velocidad de los motores servo-continuos
            • 36 Obtencioacuten de los coeficientes de los teacuterminos PID
              • 4 Materiales
                • 41 Software utilizado
                • 42 Plataforma roboacutetica
                • 43 Lenguaje de programacioacuten
                  • 5 Implementacioacuten
                    • 51 Modificaciones al boe-bot
                    • 52 Sensor de distancia
                    • 53 Alimentacioacuten eleacutectrica
                    • 54 Posicioacuten de equilibrio natural del boe-bot
                    • 55 Transferencia de los programas
                    • 56 Programa para el stamp BS2
                      • 6 Resultados
                        • 61 Trabajo observado
                        • 62 Aceptacioacuten
                          • 7 Conclusioacuten
                          • 8 Trabajo a futuro
                          • Iacutendice de figuras
                          • Referencias
                          • Revisioacuten
Page 11: Gabs

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 9

Figura 34 Rutina de caacutelculos

Figura 35 Rutina de modulacioacuten

Figura 36 Un tren de pulsos de 13 ms hace rotar el servo amaacutexima velocidad en sentido de las agujas del reloj

Figura 37 Un tren de pulsos de 17 ms hace rotar el servo amaacutexima velocidad en sentido contrario al de las agujas del reloj

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 10

Paraacutemetro Tiempo subida Sobreimpulso Tiempo seteado Error de estadiacutea Estabilidad

kp Decrece Se incrementa Cambio Decrece Se degradapequentildeo

ki Decrece Se incrementa Se incrementa Decrece Se degradasignificativamente

kd Decrece Decrece Decrece No tiene efecto Mejora simiacutenimamente miacutenimamente miacutenimamente en teoriacutea kd es pequentildeo

Cuadro 1 Efectos de incrementar cada paraacutemetro independientemente

Pin Es la variable o constante que indica el pin entradasalida a donde sedirige el pulsoDuracioacuten Es la relacioacuten entrel el pulso que queremos y los 2micros7

351 Impulso cero de los motores Al utilizar la Duracioacuten del PULSOUT en 750los motores quedan estaticos Existe el procedimiento descripto en el manual deboe-bot para esto

36 Obtencioacuten de los coeficientes de los teacuterminos PID Existen muchasformas de obtener los coeficientes Una excelente referencia inicial es los descriptoen el artiacuteculo de wikipedia que podemos hallar en el texto 1 de la bibliografiacutea

En este proyecto se opto por la configuracioacuten manual puesto que esto es muyrelativo se propone buscar sobre este puesto que tal vez puede ser confuso comolograrlo Por lo pronto el texto antes recomendado fue el utilizado para el trabajoUna raacutepida diferencia es la del cuadro 1

361 Procedimiento manual Si el sistema debe estar corriendo primero debemosponer kd y ki a cero Incrementar kp hasta que la salida del lazo comience a oscilarentonces kp debe setearse aproximadamente a la mitad de valor para la cual larepuesta decayoacute un cuarto Se incrementar ki hasta que se pueda corregir el offsetde la respuesta del sistema Sin embargo aumentar demasiado ki puede causarinestabilidad Finalmente se incrementa kd hasta que el lazo tengo una respuestaaceptablemente raacutepida a los impulsos imprevistos Si se incrementa mucho kd puedecausar una respuesta excesiva y sobre impulso perdiendo asiacute la estabilidad Un lazoPID bien seteado usualmente no trabaja tan raacutepido a los impulsos no previstos paradar lugar a una buacutesqueda raacutepida del punto de seteo

4 Materiales

41 Software utilizado

411 Procesador de texto Para ir documentando y realizar este informe sobreel proyecto se decidioacute utilizar un procesador de texto Las ventajas del mismo sonla optimizacioacuten de la presentacioacuten para documentos estaacutendares y poco o nada deinteraccioacuten con el formateo del mismo De gran utilidad para este proyecto Seutilizo el software LYX en su versioacuten 155 el cual es software de licencia GPL comoasiacute gratuito El sitio oficial es httpwwwlyxorg

412 Graficador de diagramas Para la realizacioacuten de los diferentes diagramas seutilizo un graficador de diagramas estructurados llamado DIA en su versioacuten 0961Este software esta tambieacuten amparado bajo la GPL y es de distribucioacuten gratuita Elsitio oficial es httpwwwgnomeorgprojectsdia

7Este valor es el especificado para un BS2

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 11

Figura 41 Boe-bot

413 Entorno de desarrollo Respecto al entorno se intento trabajar con alter-nativas al entorno oficial del que nos otorga la compantildeiacutea Parallax (quien desarrollael boe bot) pero existen pocas opciones y no se teniacutean las libreriacuteas para la compi-lacioacuten Se decidioacute utilizar directamente el IDE Basic Stamp versioacuten 25 de coacutedigopropietario y distribucioacuten gratuita Para la descarga buscar en el sitio oficial de laempresa httpwwwparallaxcom

414 Adaptacioacuten a un sistema GNULinux Para poder utilizar el IDE de paral-lax sobre un sistema GNULinux se utilizo el software WinE (Windows Emulator)en su versioacuten 101-174-gc4039bd El sitio oficial de este proyecto de licencia GPLy distribucioacuten gratuita es httpwwwwinehqorg

42 Plataforma roboacutetica La plataforma donde se implemento el proyecto es elrobot boe-bot (figura 41) producido por la compantildeiacutea Parallax Se decidioacute utilizarel mismo porque habiacutea sido una adquisicioacuten reciente del departamento de elec-troacutenica en la Universidad y ninguacuten equipo de trabajo estaba utilizaacutendolo Ademaacutessu sensillez y facilidad de transferencia del programa lo hace ideal para trabajosexperimentales

Componentes activos de la plataforma

421 Parallax (Futaba) Continuous Rotation ServoRotacioacuten continua bidireccional de 0 a 50 RPM con respuesta linear alcontrol PWM para una faacutecil rampa

bull Requerimientos de tensioacuten de 4 a 6 Vdcbull Comunicacioacuten PWMbull Dimensiones 558 x 19 x 406 mmbull Rango de temperatura operativa -10 a +50 degC

422 Motherboard En la figura 42 se encuentra el motherboard del boebot Acontinuacioacuten una pequentildea descripcioacuten

1 Conector para una pila de 9 voltios2 Condensadores del filtro del regulador de voltaje de 5 voltios en corriente

continua

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 12

Figura 42 Tarjeta electroacutenica del boe-bot

3 Conector del puerto serieusb para la comunicacioacuten con el ordenador4 Zoacutecalo de 24 pines para insertar el moacutedulo BASIC Stamp5 Pulsador para reiniciar el programa cargado en el Boe-Bot6 Interruptor de tres posiciones En la posicioacuten 0 el Boe-Bot estaacute desconecta-

do en la posicioacuten 1 el Boe-Bot estaacute conectado pero los servomotores quemueven las ruedas estaacuten desconectados y en la posicioacuten 2 tanto el Boe-Botcomo los servos estaacuten conectados

7 LED verde que nos indica que el Boe-Bot estaacute encendido8 Conector de las entradassalidas del microcontrolador BASIC Stamp para

su uso en la placa protoboard situada a continuacioacuten9 Placa protoboard para el montaje de los componentes electroacutenicos necesar-

ios para los sensores e indicadores luminosos o acuacutesticos10 Conector de alimentacioacuten Los cinco primeros pines (Vdd) proporcionan una

tensioacuten positiva de 5 voltios los tres siguientes (Vin) una tensioacuten positivadel voltaje que proporcionen las pilas o el adaptador de corriente (6 - 9voltios) y los cinco uacuteltimos (Vss) proporcionan la masa el polo negativo auna tensioacuten de 0 voltios

11 Conectores para cuatro servomotores asociados a las salidas P12 P13 P14y P15

12 Jumper para la seleccioacuten de la alimentacioacuten de los servomotores seguacuten serealice mediante el portapilas de 6 voltios del Boe-Bot o mediante un adap-tador de corriente exterior

13 Regulador de voltaje que proporciona a los circuitos electroacutenicos 5 voltiospositivos (Vdd) y la masa (Vss)

14 Conector para tarjetas de ampliacioacuten Permite conectar las 16 entradassalidasde la P0 a la P15 y los pines de la alimentacioacuten Vdd Vin y Vss

15 Conector para el portapilas de 6 voltios o el adaptador de corriente exteriorde 6 - 9 voltios La varilla central de 21 miliacutemetros corresponde al polopositivo

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 13

Figura 43 BS2 uno de los ldquocerebrosrdquo del boebot

423 Cerebro BS2 En la siguiente enumeracioacuten se describen los componentesque se hallan en el ldquocerebrordquo BS2 del boebot utilizado lo que se puede apreciar enla figura 43

1 Cuatro pines para la comunicacioacuten con el ordenador mediante el puertoserie

2 Memoria EEPROM de una capacidad de 2K en donde se almacena el coacutedigofuente del programa editado en PBASIC

3 Condensador del filtro del regulador de voltaje de 5 voltios4 Ocho pines de las entradassalidas desde la P0 hasta la P75 Microcontrolador PIC16C57C que actuacutea de interprete del lenguaje PBA-

SIC ejecutando el programa a una velocidad de 4000 instrucciones porsegundo

6 Ocho pines de las entradassalidas desde la P8 hasta la P157 Oscilador de cuarzo de 20 megahercios para proporcionar la frecuencia al

reloj interno8 Pin de alimentacioacuten de 5 voltios positivos (Vcc)9 Regulador de voltaje que estabiliza la tensioacuten desde los 6 - 9 voltios de la

alimentacioacuten a los 5 voltios utilizados por los circuitos electroacutenicos10 Pin para reiniciar el programa11 Dos pines de alimentacioacuten a la tensioacuten de 6 - 9 voltios (Vin) y la masa

(Vss)12 Detector de la tensioacuten de alimentacioacuten del moacutedulo BASIC Stamp13 Circuito de gestioacuten de la comunicacioacuten mediante el puerto serieusb

43 Lenguaje de programacioacuten El boe-bot utiliza un interprete para su pro-gramacioacuten basado en el lenguaje pbasic Este lenguaje es muy similar al Basiclo que le agrega mucho facilidad a la programacioacuten de estos equipos limitados enprocesamiento La referencia para utilizar este lenguaje esta totalmente documen-tada por parallax en el texto 5 que se halla en la bibliografiacutea utilizada

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 14

Figura 51 Modificaciones al boe-bot posicioacuten del moacutedulo QTI

5 Implementacioacuten

51 Modificaciones al boe-bot La uacutenica modificacioacuten que se realizo al boe-bot claacutesico es la inversioacuten de la posicioacuten fiacutesica de los servos para que el cuerpo delboe-bot pudiera adoptar la posicioacuten vertical de la figura 11 libremente Esto puedeapreciarse en la figura 51

52 Sensor de distancia El moacutedulo QTI esta disentildeado para la deteccioacuten cer-cana infrarroja El corazoacuten de este moacutedulo es el QRD1114 que es un sensor reflectivode objetos Utiliza un diodo emisor infrarrojo y un phototransistor BJT El moacute-dulo esta disentildeado para utilizarse con la funcioacuten RCTIME que posee la siguientesintaxis

RCTIME Pin State VariableDonde

Pin es alguna de las entradassalidas del puertoState es una constante que puede adoptar el valor 1 o 0 loacutegicosVariable es justamente el registro en memoria donde queremos almacenarel resultado

Esta funcioacuten mide el tiempo que le toma llegar al estado definido en State Usual-mente se utiliza para medir el tiempo de carga o descarga de un circuito RC

En nuestro caso la utilizamos para obtener una ldquomedidardquo de la distancias entreel sensor y la superficie donde esta haciendo equilibrio el robot

La posicioacuten que se adopto para el sensor fue en la parte inferior del boe-bot a nomaacutes de 1 cm de la superficie con una distancia al eje de pivoteo (eje de las ruedas)de no maacutes de 15cm

La conexioacuten de este sensor es muy sencilla el pin W del moacutedulo se conecta a unode los pines de alimentacioacuten del motherboard del robot el pin B al gnd que otorgala placa y el R a una de las entradassalidas del puerto de trabajo que deseemosen nuestro caso utilizamos el 5 Para una mayor comprensioacuten referirse a la figura51

53 Alimentacioacuten eleacutectrica Se elimino el porta pila del boe-bot y se utilizoalimentacioacuten externa con una fuente de voltaje regulable de 3A como maacuteximo tra-bajando a 9V Para no producir una invasioacuten al sistema la alimentacioacuten se hizoa traveacutes de cables muy finos y maneables en una posicioacuten relajada por encima de

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 15

la altura del boe-bot y con el largo suficiente para que el mismo se pudiera moverlibremente

54 Posicioacuten de equilibrio natural del boe-bot Para encontrar la posicioacutende equilibrio se utilizo la siguiente metodologiacutea

Se escribioacute un programa que iba mostrando en la pantalla de debug del IDEla medicioacuten de la distancia del sensor a la superficieManualmente se adoptaba la posicioacuten para la cual se notaba el equilibriodel robotSe anota el valor y se utiliza luego en el programa de control

Todo el trabajo previamente descripto derivo en este programa escrito para tal finfue

rsquo $STAMP BS2rsquo $PBASIC 25front VAR WordDO

HIGH 5RCTIME 51frontPAUSE 1000DEBUG front

LOOP

55 Transferencia de los programas Utilizando el IDE es muy sencillopuesto que posee un herramienta para ldquocorrer el programardquo y lo transfiere al boe-bot por medio del puerto USB como tambieacuten puede ser a traveacutes del puerto serialo una combinacioacuten de los mismos La configuracioacuten es muy sencilla y no requieremucho maacutes esfuerzo

56 Programa para el stamp BS2 El siguiente es el programa definitivo es-crito para controlar la posicioacuten de equilibrio vertical del boe-bot

rsquo $STAMP BS2

rsquo $PBASIC 25

rsquo Licensed under GPLv2 o higher

rsquoBS2 Mapa de las entsal usadas

rsquoP3 Sensor de distancia frontal

Leftservo CON 12 rsquoP12 Servo izquierdo

Rightservo CON 13 rsquoP13 Servo derecho

front VAR Word rsquoDistancia que mide el sensor de contraste

pulseLeft VAR Word rsquoVariable que enviacutea el ancho del pulso al motor izquierdo

pulseRight VAR Word rsquoVariable que enviacutea el ancho del pulso al motor derecho

pulseZero CON 750 rsquoEste es el pulso para el cuacuteal los motores no giran

setpoint VAR Word rsquoEste dato es el setpoint del control PID

kp CON 199100 rsquoValor de la constante de proporcional utilizada

ki CON 399100 rsquoValor de la constante de integracioacuten utilizada

kd CON 190100 rsquoValor de la constante del teacutermino derivativo utilizada

error VAR Word rsquoAlmacena el error que se va obteniendo

p VAR Word rsquoSe almacena el ancho del pulso a sumar al estado estacionario

offsetf VAR Word rsquoDesplaza la medicioacuten de la distancia

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 16

sum1 VAR Word rsquoRepresenta el error anterior al actual

sum2 VAR Word rsquoRepresenta el error anterior al anterior del actual

integrate VAR Word rsquoTeacutermino integral

derivate VAR Word rsquoTeacutermino derivativo

time CON 2510000 rsquoTiempo estimativo entre la obtencioacuten de cada teacutermino

rsquo------Comienzo del programa principal-------

rsquo Incializacioacuten de las variables

offset = pulseZero

sum1 = 0

sum2 = 0

offsetf = 0

PAUSE 2000 rsquoPausa de 2 segundos

SetPoint = 170 rsquoSeteo manual de la posicioacuten a buscar

offsetf = SetPoint

DO rsquoBucle del programa principal

GOSUB Measure rsquoMedicioacuten de la distancia

GOSUB PID rsquoAlgoritmo de control PID

GOSUB Send_Pulse rsquoModulacioacuten de pulso en los motores

LOOP

rsquo-------Subrutinas--------

PID

IF (front ltsetpoint) THEN rsquoHay que revisar el signo y actuar seguacuten para la correccioacuten

error = setpoint - front

integrate = (sum1 + sum2 - error) time 3 rsquoTeacutermino integral

IF error gtsum1 THEN rsquoRevisamos el signo y calculamos el teacutermino derivativo

derivate = (error - sum1) time rsquoEl teacutermino derivativo es en realidad la secante miacutenima

que podemos hallar

ELSE

derivate = (sum1 - error) time

ENDIF

p = error kp + integrate ki + derivate kd rsquoControl PID completo

pulseLeft = p + offset rsquoModulando el ancho del pulso seguacuten se necesite corregir

pulseRight = - p + offset rsquohacia adelante o hacia atraacutes

ENDIF

IF (front gtsetpoint) THEN rsquoEsta parte del programa realiza lo mismo que la anterior soacutelo que

adecua el signo

error = front - setpoint

integrate = (sum1 + sum2 + error) time 3

IF error gtsum1 THEN

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 17

derivate = (error - sum1) time

ELSE

derivate = (sum1 - error) time

ENDIF

p = error kp + integrate ki + derivate kd

pulseLeft = p + offset

pulseRight = - p + offset

ENDIF

sum2 = sum1

sum1 = error

RETURN

rsquo Esta subrutina devuelve la distancia utilizando el sensor de contraste

Measure

HIGH 5

RCTIME 51front

front = front - offsetf

RETURN

rsquo Esta subrutina se encarga de enviar el PWM correcto hacia los motores

Send_Pulse

PULSOUT Leftservo pulseRight

PULSOUT Rightservo pulseLeft

RETURN

6 Resultados

61 Trabajo observado El sistema termino realizando equilibrio y a medidaque el control progresaba en funcionalidad como en tunning8 fue mostrando unaclara mejora No se pudo implementar un sistema que permitiera cotejar las mejorasmaacutes que por el meacutetodo de la observacioacuten Eventualmente el equilibrio en torno ala posicioacuten de equilibrio se obtuvo y demostroacute ser significativamente mejor de lasprimeras pruebas utilizando un control proporcional

62 Aceptacioacuten El programa de control PID logroacute el objetivo permitioacute re-alizar el proyecto en tiempo y forma ademaacutes de sortear una gran cantidad deinconvenientes

8En este caso el seteo de los coeficientes de los teacuterminos PID

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 18

7 Conclusioacuten

Aunque el objetivo inicial de lograr un peacutendulo invertido9 no se alcanzo estaaproximacioacuten es evidentemente un claro progreso hacia la resolucioacuten del mismoAunque el trabajo podriacutea haber sido maacutes ldquoexitosordquo en lo personal fue satisfactoriolograr una solucioacuten y que ademaacutes la misma es bastante aceptable

La estrategia de control PID dejo en evidencia ser a prueba de concepto y logroacuteun importante objetivo a un costo de tiempo dinero y conocimientos10 muy bajos

El boe-bot demostroacute ser una plataforma muy simple pero no asiacute despreciablePermitioacute trabajar raacutepidamente al momento de la programacioacuten pero como contralas limitaciones son algunas veces numerosas pero lo cierto es que es un hardwaredisentildeado para hobbistas y que intenta ser fiel a ello Sin embargo fue muy intere-sante trabajar con el mismo para lograr un ldquoprototipordquo de solucioacuten al problema

Hace muchos antildeos trabaje en instrumentacioacuten en la industria del petroacuteleo y metopaba con sistemas PID de control en muchos de los equipos que se reparaban quecontrolaban desde vaacutelvulas electro-hidraacuteulicas hasta motores de bombas y tornil-los11 para transportar arena Cuando puede estudiar Ing Electroacutenica fue en granmedida por la fascinacioacuten que me produciacutean estos sistemas Asiacute que esta experien-cia fue muy gratificante y me demostroacute el trabajo que conlleva realizar algunas deestas tareas

8 Trabajo a futuro

Muchos puntos no se pudieron estudiar ni tratar los siguientes son los maacutes im-portantes seguacuten un criterio personal que se fue generando a medida que el proyectoavanzaba

Modelizar el hardware con los conocimientos que se adquieren en la materiasistema de controlEstudiar la utilizacioacuten de otros tipos de sensores para la medicioacuten de ladistancia posicionalLograr un equipo de trabajo para incrementar la productividadAunque se abordo una solucioacuten de fuzzy logic12 basada en un ejemplorealizado en python no se pudo implementar Lo ideal seriacutea presentar unasolucioacuten de sistemas hiacutebridosAyudar a la fiacutesica del problema resuelta agregando maacutes peso en la parteinferior cerca al eje de pivoteo

Iacutendice de figuras

11 Posicioacuten de equilibrio del boe-bot self-balanced 221 Diagrama de fuerzas que actuacutean sobre el peacutendulo invertido claacutesico 322 Diagrama de flujo del control PID 431 Diagrama simplificado del programa 732 Diagrama de flujo del programa principal 833 Rutina de medicioacuten 834 Rutina de caacutelculos 935 Rutina de modulacioacuten 9

9Caso claacutesico de control10Sobre sistemas de control11Tipo de Arquiacutemedes12Loacutegica difusa

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 19

36 Un tren de pulsos de 13 ms hace rotar el servo a maacutexima velocidad ensentido de las agujas del reloj 9

37 Un tren de pulsos de 17 ms hace rotar el servo a maacutexima velocidad ensentido contrario al de las agujas del reloj 9

41 Boe-bot 1142 Tarjeta electroacutenica del boe-bot 1243 BS2 uno de los ldquocerebrosrdquo del boebot 1351 Modificaciones al boe-bot posicioacuten del moacutedulo QTI 14

Referencias[1] httpenwikipediaorgwikiPID_controller[2] ldquoModelado y control del peacutendulo invertido sobre carro mediante sistemas hiacutebridosrdquo por Fer-

nando Bote Ortega Universidad de Sevilla[3] rdquoControl of an Inverted Pendulumrdquo por Johnny Lam[4] httpletsmakerobotscomnode22232[5] rdquoBASIC Stamp Syntax and Reference Manualrdquo Version 22 ISBN 1-928982-32-8[6] rdquoPBASIC Language Basicsrdquo Dhinesh Sasidaran Octubre 14 2002[7] rdquoMicrobot PARALLAX Boe - Botrdquo Caacutendido Garciacutea Barroacuten[8] rdquoRobotics with the Boe-Bot Student Guide VERSION 22rdquo wwwparallaxcomdldocs

bookseduroboticsv2_2pdf[9] rdquoMeacutetodo baacutesico para implementar un controlador digital PID en un microcontrolador PIC

para el desarrollo de aplicaciones de bajo costo (Aplicaciones en control de Potencia y laIndustria)rdquo Ilber Adonayt Ruge Ruge Universidad de Cundinamarca Grupo de Investigacioacutenen Tecnologiacuteas de la Informacioacuten y las Comunicaciones GITEINCO Fusagasuga ndash Colombia

[10] rdquoiquestCoacutemo realizar un informe de invetigacioacutenrdquo DrEnrique Teraacuten[11] rdquoDigital PID Controllersrdquo DrVarodom Toochinda wwwdewinzcomdocsecspidpdf[12] rdquoSistemas de control digitalrdquo Benjamin C Kuo Editorial Grupo Patria Cultural ISBN 968-

26-1292[13] rdquoSistemas de control modernordquo Richard C Dorf y Robert H Bishop Deacutecima edicioacuten Edi-

torial Pearson Prentice Hall ISBN 84-205-4401-9

Revisioacuten

101210 - El presente texto es una adaptacioacuten de la versioacuten original titula-da ldquoAproximacioacuten a la solucioacuten del peacutendulo invertido claacutesicordquo Esta modifi-cacioacuten fue realizada con el propoacutesito de poder publicar mi trabajo con maacutessoltura

GABS (Get Another Boe-bot Selfbalanced)copy CopyLeft 2010 Nelson G LombardoPrimera edicioacuten Noviembre 2010Esta documentacioacuten esta licenciada bajo los teacuterminos de la Licencia GNU para

la Documentacioacuten Libre Ver en httpwwwgnuorgcopyleftThis documentation is licensed under the terms of the GNU Free Documentation

License See httpwwwgnuorgcopyleft

E-mail address nelsonlombardogmailcomURL httpetech-nelsonblogspotcom201011primer-pid-funcional-en-el-boebothtmlCurrent address Neuqueacuten Capital Neuqueacuten

  • Contents
  • 1 Introduccioacuten
    • 11 Problema
    • 12 Problema a resolver
    • 13 Alcance
    • 14 Objetivos
      • 2 Marco teoacuterico
        • 21 Peacutendulo claacutesico
        • 22 PID
        • 23 PID digital
        • 24 Concepto PID en referencia al proyecto
        • 25 Retrasos en sistemas de control basados en micropocesadores
          • 3 Disentildeo metodoloacutegico
            • 31 Eleccioacuten del control
            • 32 Trabajo a realizar
            • 33 Inconvenientes de la implementacioacuten
            • 34 Diagrama de flujo del control PID digital
            • 35 Ancho de pulso para el control y velocidad de los motores servo-continuos
            • 36 Obtencioacuten de los coeficientes de los teacuterminos PID
              • 4 Materiales
                • 41 Software utilizado
                • 42 Plataforma roboacutetica
                • 43 Lenguaje de programacioacuten
                  • 5 Implementacioacuten
                    • 51 Modificaciones al boe-bot
                    • 52 Sensor de distancia
                    • 53 Alimentacioacuten eleacutectrica
                    • 54 Posicioacuten de equilibrio natural del boe-bot
                    • 55 Transferencia de los programas
                    • 56 Programa para el stamp BS2
                      • 6 Resultados
                        • 61 Trabajo observado
                        • 62 Aceptacioacuten
                          • 7 Conclusioacuten
                          • 8 Trabajo a futuro
                          • Iacutendice de figuras
                          • Referencias
                          • Revisioacuten
Page 12: Gabs

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 10

Paraacutemetro Tiempo subida Sobreimpulso Tiempo seteado Error de estadiacutea Estabilidad

kp Decrece Se incrementa Cambio Decrece Se degradapequentildeo

ki Decrece Se incrementa Se incrementa Decrece Se degradasignificativamente

kd Decrece Decrece Decrece No tiene efecto Mejora simiacutenimamente miacutenimamente miacutenimamente en teoriacutea kd es pequentildeo

Cuadro 1 Efectos de incrementar cada paraacutemetro independientemente

Pin Es la variable o constante que indica el pin entradasalida a donde sedirige el pulsoDuracioacuten Es la relacioacuten entrel el pulso que queremos y los 2micros7

351 Impulso cero de los motores Al utilizar la Duracioacuten del PULSOUT en 750los motores quedan estaticos Existe el procedimiento descripto en el manual deboe-bot para esto

36 Obtencioacuten de los coeficientes de los teacuterminos PID Existen muchasformas de obtener los coeficientes Una excelente referencia inicial es los descriptoen el artiacuteculo de wikipedia que podemos hallar en el texto 1 de la bibliografiacutea

En este proyecto se opto por la configuracioacuten manual puesto que esto es muyrelativo se propone buscar sobre este puesto que tal vez puede ser confuso comolograrlo Por lo pronto el texto antes recomendado fue el utilizado para el trabajoUna raacutepida diferencia es la del cuadro 1

361 Procedimiento manual Si el sistema debe estar corriendo primero debemosponer kd y ki a cero Incrementar kp hasta que la salida del lazo comience a oscilarentonces kp debe setearse aproximadamente a la mitad de valor para la cual larepuesta decayoacute un cuarto Se incrementar ki hasta que se pueda corregir el offsetde la respuesta del sistema Sin embargo aumentar demasiado ki puede causarinestabilidad Finalmente se incrementa kd hasta que el lazo tengo una respuestaaceptablemente raacutepida a los impulsos imprevistos Si se incrementa mucho kd puedecausar una respuesta excesiva y sobre impulso perdiendo asiacute la estabilidad Un lazoPID bien seteado usualmente no trabaja tan raacutepido a los impulsos no previstos paradar lugar a una buacutesqueda raacutepida del punto de seteo

4 Materiales

41 Software utilizado

411 Procesador de texto Para ir documentando y realizar este informe sobreel proyecto se decidioacute utilizar un procesador de texto Las ventajas del mismo sonla optimizacioacuten de la presentacioacuten para documentos estaacutendares y poco o nada deinteraccioacuten con el formateo del mismo De gran utilidad para este proyecto Seutilizo el software LYX en su versioacuten 155 el cual es software de licencia GPL comoasiacute gratuito El sitio oficial es httpwwwlyxorg

412 Graficador de diagramas Para la realizacioacuten de los diferentes diagramas seutilizo un graficador de diagramas estructurados llamado DIA en su versioacuten 0961Este software esta tambieacuten amparado bajo la GPL y es de distribucioacuten gratuita Elsitio oficial es httpwwwgnomeorgprojectsdia

7Este valor es el especificado para un BS2

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 11

Figura 41 Boe-bot

413 Entorno de desarrollo Respecto al entorno se intento trabajar con alter-nativas al entorno oficial del que nos otorga la compantildeiacutea Parallax (quien desarrollael boe bot) pero existen pocas opciones y no se teniacutean las libreriacuteas para la compi-lacioacuten Se decidioacute utilizar directamente el IDE Basic Stamp versioacuten 25 de coacutedigopropietario y distribucioacuten gratuita Para la descarga buscar en el sitio oficial de laempresa httpwwwparallaxcom

414 Adaptacioacuten a un sistema GNULinux Para poder utilizar el IDE de paral-lax sobre un sistema GNULinux se utilizo el software WinE (Windows Emulator)en su versioacuten 101-174-gc4039bd El sitio oficial de este proyecto de licencia GPLy distribucioacuten gratuita es httpwwwwinehqorg

42 Plataforma roboacutetica La plataforma donde se implemento el proyecto es elrobot boe-bot (figura 41) producido por la compantildeiacutea Parallax Se decidioacute utilizarel mismo porque habiacutea sido una adquisicioacuten reciente del departamento de elec-troacutenica en la Universidad y ninguacuten equipo de trabajo estaba utilizaacutendolo Ademaacutessu sensillez y facilidad de transferencia del programa lo hace ideal para trabajosexperimentales

Componentes activos de la plataforma

421 Parallax (Futaba) Continuous Rotation ServoRotacioacuten continua bidireccional de 0 a 50 RPM con respuesta linear alcontrol PWM para una faacutecil rampa

bull Requerimientos de tensioacuten de 4 a 6 Vdcbull Comunicacioacuten PWMbull Dimensiones 558 x 19 x 406 mmbull Rango de temperatura operativa -10 a +50 degC

422 Motherboard En la figura 42 se encuentra el motherboard del boebot Acontinuacioacuten una pequentildea descripcioacuten

1 Conector para una pila de 9 voltios2 Condensadores del filtro del regulador de voltaje de 5 voltios en corriente

continua

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 12

Figura 42 Tarjeta electroacutenica del boe-bot

3 Conector del puerto serieusb para la comunicacioacuten con el ordenador4 Zoacutecalo de 24 pines para insertar el moacutedulo BASIC Stamp5 Pulsador para reiniciar el programa cargado en el Boe-Bot6 Interruptor de tres posiciones En la posicioacuten 0 el Boe-Bot estaacute desconecta-

do en la posicioacuten 1 el Boe-Bot estaacute conectado pero los servomotores quemueven las ruedas estaacuten desconectados y en la posicioacuten 2 tanto el Boe-Botcomo los servos estaacuten conectados

7 LED verde que nos indica que el Boe-Bot estaacute encendido8 Conector de las entradassalidas del microcontrolador BASIC Stamp para

su uso en la placa protoboard situada a continuacioacuten9 Placa protoboard para el montaje de los componentes electroacutenicos necesar-

ios para los sensores e indicadores luminosos o acuacutesticos10 Conector de alimentacioacuten Los cinco primeros pines (Vdd) proporcionan una

tensioacuten positiva de 5 voltios los tres siguientes (Vin) una tensioacuten positivadel voltaje que proporcionen las pilas o el adaptador de corriente (6 - 9voltios) y los cinco uacuteltimos (Vss) proporcionan la masa el polo negativo auna tensioacuten de 0 voltios

11 Conectores para cuatro servomotores asociados a las salidas P12 P13 P14y P15

12 Jumper para la seleccioacuten de la alimentacioacuten de los servomotores seguacuten serealice mediante el portapilas de 6 voltios del Boe-Bot o mediante un adap-tador de corriente exterior

13 Regulador de voltaje que proporciona a los circuitos electroacutenicos 5 voltiospositivos (Vdd) y la masa (Vss)

14 Conector para tarjetas de ampliacioacuten Permite conectar las 16 entradassalidasde la P0 a la P15 y los pines de la alimentacioacuten Vdd Vin y Vss

15 Conector para el portapilas de 6 voltios o el adaptador de corriente exteriorde 6 - 9 voltios La varilla central de 21 miliacutemetros corresponde al polopositivo

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 13

Figura 43 BS2 uno de los ldquocerebrosrdquo del boebot

423 Cerebro BS2 En la siguiente enumeracioacuten se describen los componentesque se hallan en el ldquocerebrordquo BS2 del boebot utilizado lo que se puede apreciar enla figura 43

1 Cuatro pines para la comunicacioacuten con el ordenador mediante el puertoserie

2 Memoria EEPROM de una capacidad de 2K en donde se almacena el coacutedigofuente del programa editado en PBASIC

3 Condensador del filtro del regulador de voltaje de 5 voltios4 Ocho pines de las entradassalidas desde la P0 hasta la P75 Microcontrolador PIC16C57C que actuacutea de interprete del lenguaje PBA-

SIC ejecutando el programa a una velocidad de 4000 instrucciones porsegundo

6 Ocho pines de las entradassalidas desde la P8 hasta la P157 Oscilador de cuarzo de 20 megahercios para proporcionar la frecuencia al

reloj interno8 Pin de alimentacioacuten de 5 voltios positivos (Vcc)9 Regulador de voltaje que estabiliza la tensioacuten desde los 6 - 9 voltios de la

alimentacioacuten a los 5 voltios utilizados por los circuitos electroacutenicos10 Pin para reiniciar el programa11 Dos pines de alimentacioacuten a la tensioacuten de 6 - 9 voltios (Vin) y la masa

(Vss)12 Detector de la tensioacuten de alimentacioacuten del moacutedulo BASIC Stamp13 Circuito de gestioacuten de la comunicacioacuten mediante el puerto serieusb

43 Lenguaje de programacioacuten El boe-bot utiliza un interprete para su pro-gramacioacuten basado en el lenguaje pbasic Este lenguaje es muy similar al Basiclo que le agrega mucho facilidad a la programacioacuten de estos equipos limitados enprocesamiento La referencia para utilizar este lenguaje esta totalmente documen-tada por parallax en el texto 5 que se halla en la bibliografiacutea utilizada

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 14

Figura 51 Modificaciones al boe-bot posicioacuten del moacutedulo QTI

5 Implementacioacuten

51 Modificaciones al boe-bot La uacutenica modificacioacuten que se realizo al boe-bot claacutesico es la inversioacuten de la posicioacuten fiacutesica de los servos para que el cuerpo delboe-bot pudiera adoptar la posicioacuten vertical de la figura 11 libremente Esto puedeapreciarse en la figura 51

52 Sensor de distancia El moacutedulo QTI esta disentildeado para la deteccioacuten cer-cana infrarroja El corazoacuten de este moacutedulo es el QRD1114 que es un sensor reflectivode objetos Utiliza un diodo emisor infrarrojo y un phototransistor BJT El moacute-dulo esta disentildeado para utilizarse con la funcioacuten RCTIME que posee la siguientesintaxis

RCTIME Pin State VariableDonde

Pin es alguna de las entradassalidas del puertoState es una constante que puede adoptar el valor 1 o 0 loacutegicosVariable es justamente el registro en memoria donde queremos almacenarel resultado

Esta funcioacuten mide el tiempo que le toma llegar al estado definido en State Usual-mente se utiliza para medir el tiempo de carga o descarga de un circuito RC

En nuestro caso la utilizamos para obtener una ldquomedidardquo de la distancias entreel sensor y la superficie donde esta haciendo equilibrio el robot

La posicioacuten que se adopto para el sensor fue en la parte inferior del boe-bot a nomaacutes de 1 cm de la superficie con una distancia al eje de pivoteo (eje de las ruedas)de no maacutes de 15cm

La conexioacuten de este sensor es muy sencilla el pin W del moacutedulo se conecta a unode los pines de alimentacioacuten del motherboard del robot el pin B al gnd que otorgala placa y el R a una de las entradassalidas del puerto de trabajo que deseemosen nuestro caso utilizamos el 5 Para una mayor comprensioacuten referirse a la figura51

53 Alimentacioacuten eleacutectrica Se elimino el porta pila del boe-bot y se utilizoalimentacioacuten externa con una fuente de voltaje regulable de 3A como maacuteximo tra-bajando a 9V Para no producir una invasioacuten al sistema la alimentacioacuten se hizoa traveacutes de cables muy finos y maneables en una posicioacuten relajada por encima de

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 15

la altura del boe-bot y con el largo suficiente para que el mismo se pudiera moverlibremente

54 Posicioacuten de equilibrio natural del boe-bot Para encontrar la posicioacutende equilibrio se utilizo la siguiente metodologiacutea

Se escribioacute un programa que iba mostrando en la pantalla de debug del IDEla medicioacuten de la distancia del sensor a la superficieManualmente se adoptaba la posicioacuten para la cual se notaba el equilibriodel robotSe anota el valor y se utiliza luego en el programa de control

Todo el trabajo previamente descripto derivo en este programa escrito para tal finfue

rsquo $STAMP BS2rsquo $PBASIC 25front VAR WordDO

HIGH 5RCTIME 51frontPAUSE 1000DEBUG front

LOOP

55 Transferencia de los programas Utilizando el IDE es muy sencillopuesto que posee un herramienta para ldquocorrer el programardquo y lo transfiere al boe-bot por medio del puerto USB como tambieacuten puede ser a traveacutes del puerto serialo una combinacioacuten de los mismos La configuracioacuten es muy sencilla y no requieremucho maacutes esfuerzo

56 Programa para el stamp BS2 El siguiente es el programa definitivo es-crito para controlar la posicioacuten de equilibrio vertical del boe-bot

rsquo $STAMP BS2

rsquo $PBASIC 25

rsquo Licensed under GPLv2 o higher

rsquoBS2 Mapa de las entsal usadas

rsquoP3 Sensor de distancia frontal

Leftservo CON 12 rsquoP12 Servo izquierdo

Rightservo CON 13 rsquoP13 Servo derecho

front VAR Word rsquoDistancia que mide el sensor de contraste

pulseLeft VAR Word rsquoVariable que enviacutea el ancho del pulso al motor izquierdo

pulseRight VAR Word rsquoVariable que enviacutea el ancho del pulso al motor derecho

pulseZero CON 750 rsquoEste es el pulso para el cuacuteal los motores no giran

setpoint VAR Word rsquoEste dato es el setpoint del control PID

kp CON 199100 rsquoValor de la constante de proporcional utilizada

ki CON 399100 rsquoValor de la constante de integracioacuten utilizada

kd CON 190100 rsquoValor de la constante del teacutermino derivativo utilizada

error VAR Word rsquoAlmacena el error que se va obteniendo

p VAR Word rsquoSe almacena el ancho del pulso a sumar al estado estacionario

offsetf VAR Word rsquoDesplaza la medicioacuten de la distancia

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 16

sum1 VAR Word rsquoRepresenta el error anterior al actual

sum2 VAR Word rsquoRepresenta el error anterior al anterior del actual

integrate VAR Word rsquoTeacutermino integral

derivate VAR Word rsquoTeacutermino derivativo

time CON 2510000 rsquoTiempo estimativo entre la obtencioacuten de cada teacutermino

rsquo------Comienzo del programa principal-------

rsquo Incializacioacuten de las variables

offset = pulseZero

sum1 = 0

sum2 = 0

offsetf = 0

PAUSE 2000 rsquoPausa de 2 segundos

SetPoint = 170 rsquoSeteo manual de la posicioacuten a buscar

offsetf = SetPoint

DO rsquoBucle del programa principal

GOSUB Measure rsquoMedicioacuten de la distancia

GOSUB PID rsquoAlgoritmo de control PID

GOSUB Send_Pulse rsquoModulacioacuten de pulso en los motores

LOOP

rsquo-------Subrutinas--------

PID

IF (front ltsetpoint) THEN rsquoHay que revisar el signo y actuar seguacuten para la correccioacuten

error = setpoint - front

integrate = (sum1 + sum2 - error) time 3 rsquoTeacutermino integral

IF error gtsum1 THEN rsquoRevisamos el signo y calculamos el teacutermino derivativo

derivate = (error - sum1) time rsquoEl teacutermino derivativo es en realidad la secante miacutenima

que podemos hallar

ELSE

derivate = (sum1 - error) time

ENDIF

p = error kp + integrate ki + derivate kd rsquoControl PID completo

pulseLeft = p + offset rsquoModulando el ancho del pulso seguacuten se necesite corregir

pulseRight = - p + offset rsquohacia adelante o hacia atraacutes

ENDIF

IF (front gtsetpoint) THEN rsquoEsta parte del programa realiza lo mismo que la anterior soacutelo que

adecua el signo

error = front - setpoint

integrate = (sum1 + sum2 + error) time 3

IF error gtsum1 THEN

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 17

derivate = (error - sum1) time

ELSE

derivate = (sum1 - error) time

ENDIF

p = error kp + integrate ki + derivate kd

pulseLeft = p + offset

pulseRight = - p + offset

ENDIF

sum2 = sum1

sum1 = error

RETURN

rsquo Esta subrutina devuelve la distancia utilizando el sensor de contraste

Measure

HIGH 5

RCTIME 51front

front = front - offsetf

RETURN

rsquo Esta subrutina se encarga de enviar el PWM correcto hacia los motores

Send_Pulse

PULSOUT Leftservo pulseRight

PULSOUT Rightservo pulseLeft

RETURN

6 Resultados

61 Trabajo observado El sistema termino realizando equilibrio y a medidaque el control progresaba en funcionalidad como en tunning8 fue mostrando unaclara mejora No se pudo implementar un sistema que permitiera cotejar las mejorasmaacutes que por el meacutetodo de la observacioacuten Eventualmente el equilibrio en torno ala posicioacuten de equilibrio se obtuvo y demostroacute ser significativamente mejor de lasprimeras pruebas utilizando un control proporcional

62 Aceptacioacuten El programa de control PID logroacute el objetivo permitioacute re-alizar el proyecto en tiempo y forma ademaacutes de sortear una gran cantidad deinconvenientes

8En este caso el seteo de los coeficientes de los teacuterminos PID

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 18

7 Conclusioacuten

Aunque el objetivo inicial de lograr un peacutendulo invertido9 no se alcanzo estaaproximacioacuten es evidentemente un claro progreso hacia la resolucioacuten del mismoAunque el trabajo podriacutea haber sido maacutes ldquoexitosordquo en lo personal fue satisfactoriolograr una solucioacuten y que ademaacutes la misma es bastante aceptable

La estrategia de control PID dejo en evidencia ser a prueba de concepto y logroacuteun importante objetivo a un costo de tiempo dinero y conocimientos10 muy bajos

El boe-bot demostroacute ser una plataforma muy simple pero no asiacute despreciablePermitioacute trabajar raacutepidamente al momento de la programacioacuten pero como contralas limitaciones son algunas veces numerosas pero lo cierto es que es un hardwaredisentildeado para hobbistas y que intenta ser fiel a ello Sin embargo fue muy intere-sante trabajar con el mismo para lograr un ldquoprototipordquo de solucioacuten al problema

Hace muchos antildeos trabaje en instrumentacioacuten en la industria del petroacuteleo y metopaba con sistemas PID de control en muchos de los equipos que se reparaban quecontrolaban desde vaacutelvulas electro-hidraacuteulicas hasta motores de bombas y tornil-los11 para transportar arena Cuando puede estudiar Ing Electroacutenica fue en granmedida por la fascinacioacuten que me produciacutean estos sistemas Asiacute que esta experien-cia fue muy gratificante y me demostroacute el trabajo que conlleva realizar algunas deestas tareas

8 Trabajo a futuro

Muchos puntos no se pudieron estudiar ni tratar los siguientes son los maacutes im-portantes seguacuten un criterio personal que se fue generando a medida que el proyectoavanzaba

Modelizar el hardware con los conocimientos que se adquieren en la materiasistema de controlEstudiar la utilizacioacuten de otros tipos de sensores para la medicioacuten de ladistancia posicionalLograr un equipo de trabajo para incrementar la productividadAunque se abordo una solucioacuten de fuzzy logic12 basada en un ejemplorealizado en python no se pudo implementar Lo ideal seriacutea presentar unasolucioacuten de sistemas hiacutebridosAyudar a la fiacutesica del problema resuelta agregando maacutes peso en la parteinferior cerca al eje de pivoteo

Iacutendice de figuras

11 Posicioacuten de equilibrio del boe-bot self-balanced 221 Diagrama de fuerzas que actuacutean sobre el peacutendulo invertido claacutesico 322 Diagrama de flujo del control PID 431 Diagrama simplificado del programa 732 Diagrama de flujo del programa principal 833 Rutina de medicioacuten 834 Rutina de caacutelculos 935 Rutina de modulacioacuten 9

9Caso claacutesico de control10Sobre sistemas de control11Tipo de Arquiacutemedes12Loacutegica difusa

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 19

36 Un tren de pulsos de 13 ms hace rotar el servo a maacutexima velocidad ensentido de las agujas del reloj 9

37 Un tren de pulsos de 17 ms hace rotar el servo a maacutexima velocidad ensentido contrario al de las agujas del reloj 9

41 Boe-bot 1142 Tarjeta electroacutenica del boe-bot 1243 BS2 uno de los ldquocerebrosrdquo del boebot 1351 Modificaciones al boe-bot posicioacuten del moacutedulo QTI 14

Referencias[1] httpenwikipediaorgwikiPID_controller[2] ldquoModelado y control del peacutendulo invertido sobre carro mediante sistemas hiacutebridosrdquo por Fer-

nando Bote Ortega Universidad de Sevilla[3] rdquoControl of an Inverted Pendulumrdquo por Johnny Lam[4] httpletsmakerobotscomnode22232[5] rdquoBASIC Stamp Syntax and Reference Manualrdquo Version 22 ISBN 1-928982-32-8[6] rdquoPBASIC Language Basicsrdquo Dhinesh Sasidaran Octubre 14 2002[7] rdquoMicrobot PARALLAX Boe - Botrdquo Caacutendido Garciacutea Barroacuten[8] rdquoRobotics with the Boe-Bot Student Guide VERSION 22rdquo wwwparallaxcomdldocs

bookseduroboticsv2_2pdf[9] rdquoMeacutetodo baacutesico para implementar un controlador digital PID en un microcontrolador PIC

para el desarrollo de aplicaciones de bajo costo (Aplicaciones en control de Potencia y laIndustria)rdquo Ilber Adonayt Ruge Ruge Universidad de Cundinamarca Grupo de Investigacioacutenen Tecnologiacuteas de la Informacioacuten y las Comunicaciones GITEINCO Fusagasuga ndash Colombia

[10] rdquoiquestCoacutemo realizar un informe de invetigacioacutenrdquo DrEnrique Teraacuten[11] rdquoDigital PID Controllersrdquo DrVarodom Toochinda wwwdewinzcomdocsecspidpdf[12] rdquoSistemas de control digitalrdquo Benjamin C Kuo Editorial Grupo Patria Cultural ISBN 968-

26-1292[13] rdquoSistemas de control modernordquo Richard C Dorf y Robert H Bishop Deacutecima edicioacuten Edi-

torial Pearson Prentice Hall ISBN 84-205-4401-9

Revisioacuten

101210 - El presente texto es una adaptacioacuten de la versioacuten original titula-da ldquoAproximacioacuten a la solucioacuten del peacutendulo invertido claacutesicordquo Esta modifi-cacioacuten fue realizada con el propoacutesito de poder publicar mi trabajo con maacutessoltura

GABS (Get Another Boe-bot Selfbalanced)copy CopyLeft 2010 Nelson G LombardoPrimera edicioacuten Noviembre 2010Esta documentacioacuten esta licenciada bajo los teacuterminos de la Licencia GNU para

la Documentacioacuten Libre Ver en httpwwwgnuorgcopyleftThis documentation is licensed under the terms of the GNU Free Documentation

License See httpwwwgnuorgcopyleft

E-mail address nelsonlombardogmailcomURL httpetech-nelsonblogspotcom201011primer-pid-funcional-en-el-boebothtmlCurrent address Neuqueacuten Capital Neuqueacuten

  • Contents
  • 1 Introduccioacuten
    • 11 Problema
    • 12 Problema a resolver
    • 13 Alcance
    • 14 Objetivos
      • 2 Marco teoacuterico
        • 21 Peacutendulo claacutesico
        • 22 PID
        • 23 PID digital
        • 24 Concepto PID en referencia al proyecto
        • 25 Retrasos en sistemas de control basados en micropocesadores
          • 3 Disentildeo metodoloacutegico
            • 31 Eleccioacuten del control
            • 32 Trabajo a realizar
            • 33 Inconvenientes de la implementacioacuten
            • 34 Diagrama de flujo del control PID digital
            • 35 Ancho de pulso para el control y velocidad de los motores servo-continuos
            • 36 Obtencioacuten de los coeficientes de los teacuterminos PID
              • 4 Materiales
                • 41 Software utilizado
                • 42 Plataforma roboacutetica
                • 43 Lenguaje de programacioacuten
                  • 5 Implementacioacuten
                    • 51 Modificaciones al boe-bot
                    • 52 Sensor de distancia
                    • 53 Alimentacioacuten eleacutectrica
                    • 54 Posicioacuten de equilibrio natural del boe-bot
                    • 55 Transferencia de los programas
                    • 56 Programa para el stamp BS2
                      • 6 Resultados
                        • 61 Trabajo observado
                        • 62 Aceptacioacuten
                          • 7 Conclusioacuten
                          • 8 Trabajo a futuro
                          • Iacutendice de figuras
                          • Referencias
                          • Revisioacuten
Page 13: Gabs

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 11

Figura 41 Boe-bot

413 Entorno de desarrollo Respecto al entorno se intento trabajar con alter-nativas al entorno oficial del que nos otorga la compantildeiacutea Parallax (quien desarrollael boe bot) pero existen pocas opciones y no se teniacutean las libreriacuteas para la compi-lacioacuten Se decidioacute utilizar directamente el IDE Basic Stamp versioacuten 25 de coacutedigopropietario y distribucioacuten gratuita Para la descarga buscar en el sitio oficial de laempresa httpwwwparallaxcom

414 Adaptacioacuten a un sistema GNULinux Para poder utilizar el IDE de paral-lax sobre un sistema GNULinux se utilizo el software WinE (Windows Emulator)en su versioacuten 101-174-gc4039bd El sitio oficial de este proyecto de licencia GPLy distribucioacuten gratuita es httpwwwwinehqorg

42 Plataforma roboacutetica La plataforma donde se implemento el proyecto es elrobot boe-bot (figura 41) producido por la compantildeiacutea Parallax Se decidioacute utilizarel mismo porque habiacutea sido una adquisicioacuten reciente del departamento de elec-troacutenica en la Universidad y ninguacuten equipo de trabajo estaba utilizaacutendolo Ademaacutessu sensillez y facilidad de transferencia del programa lo hace ideal para trabajosexperimentales

Componentes activos de la plataforma

421 Parallax (Futaba) Continuous Rotation ServoRotacioacuten continua bidireccional de 0 a 50 RPM con respuesta linear alcontrol PWM para una faacutecil rampa

bull Requerimientos de tensioacuten de 4 a 6 Vdcbull Comunicacioacuten PWMbull Dimensiones 558 x 19 x 406 mmbull Rango de temperatura operativa -10 a +50 degC

422 Motherboard En la figura 42 se encuentra el motherboard del boebot Acontinuacioacuten una pequentildea descripcioacuten

1 Conector para una pila de 9 voltios2 Condensadores del filtro del regulador de voltaje de 5 voltios en corriente

continua

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 12

Figura 42 Tarjeta electroacutenica del boe-bot

3 Conector del puerto serieusb para la comunicacioacuten con el ordenador4 Zoacutecalo de 24 pines para insertar el moacutedulo BASIC Stamp5 Pulsador para reiniciar el programa cargado en el Boe-Bot6 Interruptor de tres posiciones En la posicioacuten 0 el Boe-Bot estaacute desconecta-

do en la posicioacuten 1 el Boe-Bot estaacute conectado pero los servomotores quemueven las ruedas estaacuten desconectados y en la posicioacuten 2 tanto el Boe-Botcomo los servos estaacuten conectados

7 LED verde que nos indica que el Boe-Bot estaacute encendido8 Conector de las entradassalidas del microcontrolador BASIC Stamp para

su uso en la placa protoboard situada a continuacioacuten9 Placa protoboard para el montaje de los componentes electroacutenicos necesar-

ios para los sensores e indicadores luminosos o acuacutesticos10 Conector de alimentacioacuten Los cinco primeros pines (Vdd) proporcionan una

tensioacuten positiva de 5 voltios los tres siguientes (Vin) una tensioacuten positivadel voltaje que proporcionen las pilas o el adaptador de corriente (6 - 9voltios) y los cinco uacuteltimos (Vss) proporcionan la masa el polo negativo auna tensioacuten de 0 voltios

11 Conectores para cuatro servomotores asociados a las salidas P12 P13 P14y P15

12 Jumper para la seleccioacuten de la alimentacioacuten de los servomotores seguacuten serealice mediante el portapilas de 6 voltios del Boe-Bot o mediante un adap-tador de corriente exterior

13 Regulador de voltaje que proporciona a los circuitos electroacutenicos 5 voltiospositivos (Vdd) y la masa (Vss)

14 Conector para tarjetas de ampliacioacuten Permite conectar las 16 entradassalidasde la P0 a la P15 y los pines de la alimentacioacuten Vdd Vin y Vss

15 Conector para el portapilas de 6 voltios o el adaptador de corriente exteriorde 6 - 9 voltios La varilla central de 21 miliacutemetros corresponde al polopositivo

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 13

Figura 43 BS2 uno de los ldquocerebrosrdquo del boebot

423 Cerebro BS2 En la siguiente enumeracioacuten se describen los componentesque se hallan en el ldquocerebrordquo BS2 del boebot utilizado lo que se puede apreciar enla figura 43

1 Cuatro pines para la comunicacioacuten con el ordenador mediante el puertoserie

2 Memoria EEPROM de una capacidad de 2K en donde se almacena el coacutedigofuente del programa editado en PBASIC

3 Condensador del filtro del regulador de voltaje de 5 voltios4 Ocho pines de las entradassalidas desde la P0 hasta la P75 Microcontrolador PIC16C57C que actuacutea de interprete del lenguaje PBA-

SIC ejecutando el programa a una velocidad de 4000 instrucciones porsegundo

6 Ocho pines de las entradassalidas desde la P8 hasta la P157 Oscilador de cuarzo de 20 megahercios para proporcionar la frecuencia al

reloj interno8 Pin de alimentacioacuten de 5 voltios positivos (Vcc)9 Regulador de voltaje que estabiliza la tensioacuten desde los 6 - 9 voltios de la

alimentacioacuten a los 5 voltios utilizados por los circuitos electroacutenicos10 Pin para reiniciar el programa11 Dos pines de alimentacioacuten a la tensioacuten de 6 - 9 voltios (Vin) y la masa

(Vss)12 Detector de la tensioacuten de alimentacioacuten del moacutedulo BASIC Stamp13 Circuito de gestioacuten de la comunicacioacuten mediante el puerto serieusb

43 Lenguaje de programacioacuten El boe-bot utiliza un interprete para su pro-gramacioacuten basado en el lenguaje pbasic Este lenguaje es muy similar al Basiclo que le agrega mucho facilidad a la programacioacuten de estos equipos limitados enprocesamiento La referencia para utilizar este lenguaje esta totalmente documen-tada por parallax en el texto 5 que se halla en la bibliografiacutea utilizada

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 14

Figura 51 Modificaciones al boe-bot posicioacuten del moacutedulo QTI

5 Implementacioacuten

51 Modificaciones al boe-bot La uacutenica modificacioacuten que se realizo al boe-bot claacutesico es la inversioacuten de la posicioacuten fiacutesica de los servos para que el cuerpo delboe-bot pudiera adoptar la posicioacuten vertical de la figura 11 libremente Esto puedeapreciarse en la figura 51

52 Sensor de distancia El moacutedulo QTI esta disentildeado para la deteccioacuten cer-cana infrarroja El corazoacuten de este moacutedulo es el QRD1114 que es un sensor reflectivode objetos Utiliza un diodo emisor infrarrojo y un phototransistor BJT El moacute-dulo esta disentildeado para utilizarse con la funcioacuten RCTIME que posee la siguientesintaxis

RCTIME Pin State VariableDonde

Pin es alguna de las entradassalidas del puertoState es una constante que puede adoptar el valor 1 o 0 loacutegicosVariable es justamente el registro en memoria donde queremos almacenarel resultado

Esta funcioacuten mide el tiempo que le toma llegar al estado definido en State Usual-mente se utiliza para medir el tiempo de carga o descarga de un circuito RC

En nuestro caso la utilizamos para obtener una ldquomedidardquo de la distancias entreel sensor y la superficie donde esta haciendo equilibrio el robot

La posicioacuten que se adopto para el sensor fue en la parte inferior del boe-bot a nomaacutes de 1 cm de la superficie con una distancia al eje de pivoteo (eje de las ruedas)de no maacutes de 15cm

La conexioacuten de este sensor es muy sencilla el pin W del moacutedulo se conecta a unode los pines de alimentacioacuten del motherboard del robot el pin B al gnd que otorgala placa y el R a una de las entradassalidas del puerto de trabajo que deseemosen nuestro caso utilizamos el 5 Para una mayor comprensioacuten referirse a la figura51

53 Alimentacioacuten eleacutectrica Se elimino el porta pila del boe-bot y se utilizoalimentacioacuten externa con una fuente de voltaje regulable de 3A como maacuteximo tra-bajando a 9V Para no producir una invasioacuten al sistema la alimentacioacuten se hizoa traveacutes de cables muy finos y maneables en una posicioacuten relajada por encima de

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 15

la altura del boe-bot y con el largo suficiente para que el mismo se pudiera moverlibremente

54 Posicioacuten de equilibrio natural del boe-bot Para encontrar la posicioacutende equilibrio se utilizo la siguiente metodologiacutea

Se escribioacute un programa que iba mostrando en la pantalla de debug del IDEla medicioacuten de la distancia del sensor a la superficieManualmente se adoptaba la posicioacuten para la cual se notaba el equilibriodel robotSe anota el valor y se utiliza luego en el programa de control

Todo el trabajo previamente descripto derivo en este programa escrito para tal finfue

rsquo $STAMP BS2rsquo $PBASIC 25front VAR WordDO

HIGH 5RCTIME 51frontPAUSE 1000DEBUG front

LOOP

55 Transferencia de los programas Utilizando el IDE es muy sencillopuesto que posee un herramienta para ldquocorrer el programardquo y lo transfiere al boe-bot por medio del puerto USB como tambieacuten puede ser a traveacutes del puerto serialo una combinacioacuten de los mismos La configuracioacuten es muy sencilla y no requieremucho maacutes esfuerzo

56 Programa para el stamp BS2 El siguiente es el programa definitivo es-crito para controlar la posicioacuten de equilibrio vertical del boe-bot

rsquo $STAMP BS2

rsquo $PBASIC 25

rsquo Licensed under GPLv2 o higher

rsquoBS2 Mapa de las entsal usadas

rsquoP3 Sensor de distancia frontal

Leftservo CON 12 rsquoP12 Servo izquierdo

Rightservo CON 13 rsquoP13 Servo derecho

front VAR Word rsquoDistancia que mide el sensor de contraste

pulseLeft VAR Word rsquoVariable que enviacutea el ancho del pulso al motor izquierdo

pulseRight VAR Word rsquoVariable que enviacutea el ancho del pulso al motor derecho

pulseZero CON 750 rsquoEste es el pulso para el cuacuteal los motores no giran

setpoint VAR Word rsquoEste dato es el setpoint del control PID

kp CON 199100 rsquoValor de la constante de proporcional utilizada

ki CON 399100 rsquoValor de la constante de integracioacuten utilizada

kd CON 190100 rsquoValor de la constante del teacutermino derivativo utilizada

error VAR Word rsquoAlmacena el error que se va obteniendo

p VAR Word rsquoSe almacena el ancho del pulso a sumar al estado estacionario

offsetf VAR Word rsquoDesplaza la medicioacuten de la distancia

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 16

sum1 VAR Word rsquoRepresenta el error anterior al actual

sum2 VAR Word rsquoRepresenta el error anterior al anterior del actual

integrate VAR Word rsquoTeacutermino integral

derivate VAR Word rsquoTeacutermino derivativo

time CON 2510000 rsquoTiempo estimativo entre la obtencioacuten de cada teacutermino

rsquo------Comienzo del programa principal-------

rsquo Incializacioacuten de las variables

offset = pulseZero

sum1 = 0

sum2 = 0

offsetf = 0

PAUSE 2000 rsquoPausa de 2 segundos

SetPoint = 170 rsquoSeteo manual de la posicioacuten a buscar

offsetf = SetPoint

DO rsquoBucle del programa principal

GOSUB Measure rsquoMedicioacuten de la distancia

GOSUB PID rsquoAlgoritmo de control PID

GOSUB Send_Pulse rsquoModulacioacuten de pulso en los motores

LOOP

rsquo-------Subrutinas--------

PID

IF (front ltsetpoint) THEN rsquoHay que revisar el signo y actuar seguacuten para la correccioacuten

error = setpoint - front

integrate = (sum1 + sum2 - error) time 3 rsquoTeacutermino integral

IF error gtsum1 THEN rsquoRevisamos el signo y calculamos el teacutermino derivativo

derivate = (error - sum1) time rsquoEl teacutermino derivativo es en realidad la secante miacutenima

que podemos hallar

ELSE

derivate = (sum1 - error) time

ENDIF

p = error kp + integrate ki + derivate kd rsquoControl PID completo

pulseLeft = p + offset rsquoModulando el ancho del pulso seguacuten se necesite corregir

pulseRight = - p + offset rsquohacia adelante o hacia atraacutes

ENDIF

IF (front gtsetpoint) THEN rsquoEsta parte del programa realiza lo mismo que la anterior soacutelo que

adecua el signo

error = front - setpoint

integrate = (sum1 + sum2 + error) time 3

IF error gtsum1 THEN

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 17

derivate = (error - sum1) time

ELSE

derivate = (sum1 - error) time

ENDIF

p = error kp + integrate ki + derivate kd

pulseLeft = p + offset

pulseRight = - p + offset

ENDIF

sum2 = sum1

sum1 = error

RETURN

rsquo Esta subrutina devuelve la distancia utilizando el sensor de contraste

Measure

HIGH 5

RCTIME 51front

front = front - offsetf

RETURN

rsquo Esta subrutina se encarga de enviar el PWM correcto hacia los motores

Send_Pulse

PULSOUT Leftservo pulseRight

PULSOUT Rightservo pulseLeft

RETURN

6 Resultados

61 Trabajo observado El sistema termino realizando equilibrio y a medidaque el control progresaba en funcionalidad como en tunning8 fue mostrando unaclara mejora No se pudo implementar un sistema que permitiera cotejar las mejorasmaacutes que por el meacutetodo de la observacioacuten Eventualmente el equilibrio en torno ala posicioacuten de equilibrio se obtuvo y demostroacute ser significativamente mejor de lasprimeras pruebas utilizando un control proporcional

62 Aceptacioacuten El programa de control PID logroacute el objetivo permitioacute re-alizar el proyecto en tiempo y forma ademaacutes de sortear una gran cantidad deinconvenientes

8En este caso el seteo de los coeficientes de los teacuterminos PID

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 18

7 Conclusioacuten

Aunque el objetivo inicial de lograr un peacutendulo invertido9 no se alcanzo estaaproximacioacuten es evidentemente un claro progreso hacia la resolucioacuten del mismoAunque el trabajo podriacutea haber sido maacutes ldquoexitosordquo en lo personal fue satisfactoriolograr una solucioacuten y que ademaacutes la misma es bastante aceptable

La estrategia de control PID dejo en evidencia ser a prueba de concepto y logroacuteun importante objetivo a un costo de tiempo dinero y conocimientos10 muy bajos

El boe-bot demostroacute ser una plataforma muy simple pero no asiacute despreciablePermitioacute trabajar raacutepidamente al momento de la programacioacuten pero como contralas limitaciones son algunas veces numerosas pero lo cierto es que es un hardwaredisentildeado para hobbistas y que intenta ser fiel a ello Sin embargo fue muy intere-sante trabajar con el mismo para lograr un ldquoprototipordquo de solucioacuten al problema

Hace muchos antildeos trabaje en instrumentacioacuten en la industria del petroacuteleo y metopaba con sistemas PID de control en muchos de los equipos que se reparaban quecontrolaban desde vaacutelvulas electro-hidraacuteulicas hasta motores de bombas y tornil-los11 para transportar arena Cuando puede estudiar Ing Electroacutenica fue en granmedida por la fascinacioacuten que me produciacutean estos sistemas Asiacute que esta experien-cia fue muy gratificante y me demostroacute el trabajo que conlleva realizar algunas deestas tareas

8 Trabajo a futuro

Muchos puntos no se pudieron estudiar ni tratar los siguientes son los maacutes im-portantes seguacuten un criterio personal que se fue generando a medida que el proyectoavanzaba

Modelizar el hardware con los conocimientos que se adquieren en la materiasistema de controlEstudiar la utilizacioacuten de otros tipos de sensores para la medicioacuten de ladistancia posicionalLograr un equipo de trabajo para incrementar la productividadAunque se abordo una solucioacuten de fuzzy logic12 basada en un ejemplorealizado en python no se pudo implementar Lo ideal seriacutea presentar unasolucioacuten de sistemas hiacutebridosAyudar a la fiacutesica del problema resuelta agregando maacutes peso en la parteinferior cerca al eje de pivoteo

Iacutendice de figuras

11 Posicioacuten de equilibrio del boe-bot self-balanced 221 Diagrama de fuerzas que actuacutean sobre el peacutendulo invertido claacutesico 322 Diagrama de flujo del control PID 431 Diagrama simplificado del programa 732 Diagrama de flujo del programa principal 833 Rutina de medicioacuten 834 Rutina de caacutelculos 935 Rutina de modulacioacuten 9

9Caso claacutesico de control10Sobre sistemas de control11Tipo de Arquiacutemedes12Loacutegica difusa

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 19

36 Un tren de pulsos de 13 ms hace rotar el servo a maacutexima velocidad ensentido de las agujas del reloj 9

37 Un tren de pulsos de 17 ms hace rotar el servo a maacutexima velocidad ensentido contrario al de las agujas del reloj 9

41 Boe-bot 1142 Tarjeta electroacutenica del boe-bot 1243 BS2 uno de los ldquocerebrosrdquo del boebot 1351 Modificaciones al boe-bot posicioacuten del moacutedulo QTI 14

Referencias[1] httpenwikipediaorgwikiPID_controller[2] ldquoModelado y control del peacutendulo invertido sobre carro mediante sistemas hiacutebridosrdquo por Fer-

nando Bote Ortega Universidad de Sevilla[3] rdquoControl of an Inverted Pendulumrdquo por Johnny Lam[4] httpletsmakerobotscomnode22232[5] rdquoBASIC Stamp Syntax and Reference Manualrdquo Version 22 ISBN 1-928982-32-8[6] rdquoPBASIC Language Basicsrdquo Dhinesh Sasidaran Octubre 14 2002[7] rdquoMicrobot PARALLAX Boe - Botrdquo Caacutendido Garciacutea Barroacuten[8] rdquoRobotics with the Boe-Bot Student Guide VERSION 22rdquo wwwparallaxcomdldocs

bookseduroboticsv2_2pdf[9] rdquoMeacutetodo baacutesico para implementar un controlador digital PID en un microcontrolador PIC

para el desarrollo de aplicaciones de bajo costo (Aplicaciones en control de Potencia y laIndustria)rdquo Ilber Adonayt Ruge Ruge Universidad de Cundinamarca Grupo de Investigacioacutenen Tecnologiacuteas de la Informacioacuten y las Comunicaciones GITEINCO Fusagasuga ndash Colombia

[10] rdquoiquestCoacutemo realizar un informe de invetigacioacutenrdquo DrEnrique Teraacuten[11] rdquoDigital PID Controllersrdquo DrVarodom Toochinda wwwdewinzcomdocsecspidpdf[12] rdquoSistemas de control digitalrdquo Benjamin C Kuo Editorial Grupo Patria Cultural ISBN 968-

26-1292[13] rdquoSistemas de control modernordquo Richard C Dorf y Robert H Bishop Deacutecima edicioacuten Edi-

torial Pearson Prentice Hall ISBN 84-205-4401-9

Revisioacuten

101210 - El presente texto es una adaptacioacuten de la versioacuten original titula-da ldquoAproximacioacuten a la solucioacuten del peacutendulo invertido claacutesicordquo Esta modifi-cacioacuten fue realizada con el propoacutesito de poder publicar mi trabajo con maacutessoltura

GABS (Get Another Boe-bot Selfbalanced)copy CopyLeft 2010 Nelson G LombardoPrimera edicioacuten Noviembre 2010Esta documentacioacuten esta licenciada bajo los teacuterminos de la Licencia GNU para

la Documentacioacuten Libre Ver en httpwwwgnuorgcopyleftThis documentation is licensed under the terms of the GNU Free Documentation

License See httpwwwgnuorgcopyleft

E-mail address nelsonlombardogmailcomURL httpetech-nelsonblogspotcom201011primer-pid-funcional-en-el-boebothtmlCurrent address Neuqueacuten Capital Neuqueacuten

  • Contents
  • 1 Introduccioacuten
    • 11 Problema
    • 12 Problema a resolver
    • 13 Alcance
    • 14 Objetivos
      • 2 Marco teoacuterico
        • 21 Peacutendulo claacutesico
        • 22 PID
        • 23 PID digital
        • 24 Concepto PID en referencia al proyecto
        • 25 Retrasos en sistemas de control basados en micropocesadores
          • 3 Disentildeo metodoloacutegico
            • 31 Eleccioacuten del control
            • 32 Trabajo a realizar
            • 33 Inconvenientes de la implementacioacuten
            • 34 Diagrama de flujo del control PID digital
            • 35 Ancho de pulso para el control y velocidad de los motores servo-continuos
            • 36 Obtencioacuten de los coeficientes de los teacuterminos PID
              • 4 Materiales
                • 41 Software utilizado
                • 42 Plataforma roboacutetica
                • 43 Lenguaje de programacioacuten
                  • 5 Implementacioacuten
                    • 51 Modificaciones al boe-bot
                    • 52 Sensor de distancia
                    • 53 Alimentacioacuten eleacutectrica
                    • 54 Posicioacuten de equilibrio natural del boe-bot
                    • 55 Transferencia de los programas
                    • 56 Programa para el stamp BS2
                      • 6 Resultados
                        • 61 Trabajo observado
                        • 62 Aceptacioacuten
                          • 7 Conclusioacuten
                          • 8 Trabajo a futuro
                          • Iacutendice de figuras
                          • Referencias
                          • Revisioacuten
Page 14: Gabs

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 12

Figura 42 Tarjeta electroacutenica del boe-bot

3 Conector del puerto serieusb para la comunicacioacuten con el ordenador4 Zoacutecalo de 24 pines para insertar el moacutedulo BASIC Stamp5 Pulsador para reiniciar el programa cargado en el Boe-Bot6 Interruptor de tres posiciones En la posicioacuten 0 el Boe-Bot estaacute desconecta-

do en la posicioacuten 1 el Boe-Bot estaacute conectado pero los servomotores quemueven las ruedas estaacuten desconectados y en la posicioacuten 2 tanto el Boe-Botcomo los servos estaacuten conectados

7 LED verde que nos indica que el Boe-Bot estaacute encendido8 Conector de las entradassalidas del microcontrolador BASIC Stamp para

su uso en la placa protoboard situada a continuacioacuten9 Placa protoboard para el montaje de los componentes electroacutenicos necesar-

ios para los sensores e indicadores luminosos o acuacutesticos10 Conector de alimentacioacuten Los cinco primeros pines (Vdd) proporcionan una

tensioacuten positiva de 5 voltios los tres siguientes (Vin) una tensioacuten positivadel voltaje que proporcionen las pilas o el adaptador de corriente (6 - 9voltios) y los cinco uacuteltimos (Vss) proporcionan la masa el polo negativo auna tensioacuten de 0 voltios

11 Conectores para cuatro servomotores asociados a las salidas P12 P13 P14y P15

12 Jumper para la seleccioacuten de la alimentacioacuten de los servomotores seguacuten serealice mediante el portapilas de 6 voltios del Boe-Bot o mediante un adap-tador de corriente exterior

13 Regulador de voltaje que proporciona a los circuitos electroacutenicos 5 voltiospositivos (Vdd) y la masa (Vss)

14 Conector para tarjetas de ampliacioacuten Permite conectar las 16 entradassalidasde la P0 a la P15 y los pines de la alimentacioacuten Vdd Vin y Vss

15 Conector para el portapilas de 6 voltios o el adaptador de corriente exteriorde 6 - 9 voltios La varilla central de 21 miliacutemetros corresponde al polopositivo

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 13

Figura 43 BS2 uno de los ldquocerebrosrdquo del boebot

423 Cerebro BS2 En la siguiente enumeracioacuten se describen los componentesque se hallan en el ldquocerebrordquo BS2 del boebot utilizado lo que se puede apreciar enla figura 43

1 Cuatro pines para la comunicacioacuten con el ordenador mediante el puertoserie

2 Memoria EEPROM de una capacidad de 2K en donde se almacena el coacutedigofuente del programa editado en PBASIC

3 Condensador del filtro del regulador de voltaje de 5 voltios4 Ocho pines de las entradassalidas desde la P0 hasta la P75 Microcontrolador PIC16C57C que actuacutea de interprete del lenguaje PBA-

SIC ejecutando el programa a una velocidad de 4000 instrucciones porsegundo

6 Ocho pines de las entradassalidas desde la P8 hasta la P157 Oscilador de cuarzo de 20 megahercios para proporcionar la frecuencia al

reloj interno8 Pin de alimentacioacuten de 5 voltios positivos (Vcc)9 Regulador de voltaje que estabiliza la tensioacuten desde los 6 - 9 voltios de la

alimentacioacuten a los 5 voltios utilizados por los circuitos electroacutenicos10 Pin para reiniciar el programa11 Dos pines de alimentacioacuten a la tensioacuten de 6 - 9 voltios (Vin) y la masa

(Vss)12 Detector de la tensioacuten de alimentacioacuten del moacutedulo BASIC Stamp13 Circuito de gestioacuten de la comunicacioacuten mediante el puerto serieusb

43 Lenguaje de programacioacuten El boe-bot utiliza un interprete para su pro-gramacioacuten basado en el lenguaje pbasic Este lenguaje es muy similar al Basiclo que le agrega mucho facilidad a la programacioacuten de estos equipos limitados enprocesamiento La referencia para utilizar este lenguaje esta totalmente documen-tada por parallax en el texto 5 que se halla en la bibliografiacutea utilizada

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 14

Figura 51 Modificaciones al boe-bot posicioacuten del moacutedulo QTI

5 Implementacioacuten

51 Modificaciones al boe-bot La uacutenica modificacioacuten que se realizo al boe-bot claacutesico es la inversioacuten de la posicioacuten fiacutesica de los servos para que el cuerpo delboe-bot pudiera adoptar la posicioacuten vertical de la figura 11 libremente Esto puedeapreciarse en la figura 51

52 Sensor de distancia El moacutedulo QTI esta disentildeado para la deteccioacuten cer-cana infrarroja El corazoacuten de este moacutedulo es el QRD1114 que es un sensor reflectivode objetos Utiliza un diodo emisor infrarrojo y un phototransistor BJT El moacute-dulo esta disentildeado para utilizarse con la funcioacuten RCTIME que posee la siguientesintaxis

RCTIME Pin State VariableDonde

Pin es alguna de las entradassalidas del puertoState es una constante que puede adoptar el valor 1 o 0 loacutegicosVariable es justamente el registro en memoria donde queremos almacenarel resultado

Esta funcioacuten mide el tiempo que le toma llegar al estado definido en State Usual-mente se utiliza para medir el tiempo de carga o descarga de un circuito RC

En nuestro caso la utilizamos para obtener una ldquomedidardquo de la distancias entreel sensor y la superficie donde esta haciendo equilibrio el robot

La posicioacuten que se adopto para el sensor fue en la parte inferior del boe-bot a nomaacutes de 1 cm de la superficie con una distancia al eje de pivoteo (eje de las ruedas)de no maacutes de 15cm

La conexioacuten de este sensor es muy sencilla el pin W del moacutedulo se conecta a unode los pines de alimentacioacuten del motherboard del robot el pin B al gnd que otorgala placa y el R a una de las entradassalidas del puerto de trabajo que deseemosen nuestro caso utilizamos el 5 Para una mayor comprensioacuten referirse a la figura51

53 Alimentacioacuten eleacutectrica Se elimino el porta pila del boe-bot y se utilizoalimentacioacuten externa con una fuente de voltaje regulable de 3A como maacuteximo tra-bajando a 9V Para no producir una invasioacuten al sistema la alimentacioacuten se hizoa traveacutes de cables muy finos y maneables en una posicioacuten relajada por encima de

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 15

la altura del boe-bot y con el largo suficiente para que el mismo se pudiera moverlibremente

54 Posicioacuten de equilibrio natural del boe-bot Para encontrar la posicioacutende equilibrio se utilizo la siguiente metodologiacutea

Se escribioacute un programa que iba mostrando en la pantalla de debug del IDEla medicioacuten de la distancia del sensor a la superficieManualmente se adoptaba la posicioacuten para la cual se notaba el equilibriodel robotSe anota el valor y se utiliza luego en el programa de control

Todo el trabajo previamente descripto derivo en este programa escrito para tal finfue

rsquo $STAMP BS2rsquo $PBASIC 25front VAR WordDO

HIGH 5RCTIME 51frontPAUSE 1000DEBUG front

LOOP

55 Transferencia de los programas Utilizando el IDE es muy sencillopuesto que posee un herramienta para ldquocorrer el programardquo y lo transfiere al boe-bot por medio del puerto USB como tambieacuten puede ser a traveacutes del puerto serialo una combinacioacuten de los mismos La configuracioacuten es muy sencilla y no requieremucho maacutes esfuerzo

56 Programa para el stamp BS2 El siguiente es el programa definitivo es-crito para controlar la posicioacuten de equilibrio vertical del boe-bot

rsquo $STAMP BS2

rsquo $PBASIC 25

rsquo Licensed under GPLv2 o higher

rsquoBS2 Mapa de las entsal usadas

rsquoP3 Sensor de distancia frontal

Leftservo CON 12 rsquoP12 Servo izquierdo

Rightservo CON 13 rsquoP13 Servo derecho

front VAR Word rsquoDistancia que mide el sensor de contraste

pulseLeft VAR Word rsquoVariable que enviacutea el ancho del pulso al motor izquierdo

pulseRight VAR Word rsquoVariable que enviacutea el ancho del pulso al motor derecho

pulseZero CON 750 rsquoEste es el pulso para el cuacuteal los motores no giran

setpoint VAR Word rsquoEste dato es el setpoint del control PID

kp CON 199100 rsquoValor de la constante de proporcional utilizada

ki CON 399100 rsquoValor de la constante de integracioacuten utilizada

kd CON 190100 rsquoValor de la constante del teacutermino derivativo utilizada

error VAR Word rsquoAlmacena el error que se va obteniendo

p VAR Word rsquoSe almacena el ancho del pulso a sumar al estado estacionario

offsetf VAR Word rsquoDesplaza la medicioacuten de la distancia

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 16

sum1 VAR Word rsquoRepresenta el error anterior al actual

sum2 VAR Word rsquoRepresenta el error anterior al anterior del actual

integrate VAR Word rsquoTeacutermino integral

derivate VAR Word rsquoTeacutermino derivativo

time CON 2510000 rsquoTiempo estimativo entre la obtencioacuten de cada teacutermino

rsquo------Comienzo del programa principal-------

rsquo Incializacioacuten de las variables

offset = pulseZero

sum1 = 0

sum2 = 0

offsetf = 0

PAUSE 2000 rsquoPausa de 2 segundos

SetPoint = 170 rsquoSeteo manual de la posicioacuten a buscar

offsetf = SetPoint

DO rsquoBucle del programa principal

GOSUB Measure rsquoMedicioacuten de la distancia

GOSUB PID rsquoAlgoritmo de control PID

GOSUB Send_Pulse rsquoModulacioacuten de pulso en los motores

LOOP

rsquo-------Subrutinas--------

PID

IF (front ltsetpoint) THEN rsquoHay que revisar el signo y actuar seguacuten para la correccioacuten

error = setpoint - front

integrate = (sum1 + sum2 - error) time 3 rsquoTeacutermino integral

IF error gtsum1 THEN rsquoRevisamos el signo y calculamos el teacutermino derivativo

derivate = (error - sum1) time rsquoEl teacutermino derivativo es en realidad la secante miacutenima

que podemos hallar

ELSE

derivate = (sum1 - error) time

ENDIF

p = error kp + integrate ki + derivate kd rsquoControl PID completo

pulseLeft = p + offset rsquoModulando el ancho del pulso seguacuten se necesite corregir

pulseRight = - p + offset rsquohacia adelante o hacia atraacutes

ENDIF

IF (front gtsetpoint) THEN rsquoEsta parte del programa realiza lo mismo que la anterior soacutelo que

adecua el signo

error = front - setpoint

integrate = (sum1 + sum2 + error) time 3

IF error gtsum1 THEN

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 17

derivate = (error - sum1) time

ELSE

derivate = (sum1 - error) time

ENDIF

p = error kp + integrate ki + derivate kd

pulseLeft = p + offset

pulseRight = - p + offset

ENDIF

sum2 = sum1

sum1 = error

RETURN

rsquo Esta subrutina devuelve la distancia utilizando el sensor de contraste

Measure

HIGH 5

RCTIME 51front

front = front - offsetf

RETURN

rsquo Esta subrutina se encarga de enviar el PWM correcto hacia los motores

Send_Pulse

PULSOUT Leftservo pulseRight

PULSOUT Rightservo pulseLeft

RETURN

6 Resultados

61 Trabajo observado El sistema termino realizando equilibrio y a medidaque el control progresaba en funcionalidad como en tunning8 fue mostrando unaclara mejora No se pudo implementar un sistema que permitiera cotejar las mejorasmaacutes que por el meacutetodo de la observacioacuten Eventualmente el equilibrio en torno ala posicioacuten de equilibrio se obtuvo y demostroacute ser significativamente mejor de lasprimeras pruebas utilizando un control proporcional

62 Aceptacioacuten El programa de control PID logroacute el objetivo permitioacute re-alizar el proyecto en tiempo y forma ademaacutes de sortear una gran cantidad deinconvenientes

8En este caso el seteo de los coeficientes de los teacuterminos PID

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 18

7 Conclusioacuten

Aunque el objetivo inicial de lograr un peacutendulo invertido9 no se alcanzo estaaproximacioacuten es evidentemente un claro progreso hacia la resolucioacuten del mismoAunque el trabajo podriacutea haber sido maacutes ldquoexitosordquo en lo personal fue satisfactoriolograr una solucioacuten y que ademaacutes la misma es bastante aceptable

La estrategia de control PID dejo en evidencia ser a prueba de concepto y logroacuteun importante objetivo a un costo de tiempo dinero y conocimientos10 muy bajos

El boe-bot demostroacute ser una plataforma muy simple pero no asiacute despreciablePermitioacute trabajar raacutepidamente al momento de la programacioacuten pero como contralas limitaciones son algunas veces numerosas pero lo cierto es que es un hardwaredisentildeado para hobbistas y que intenta ser fiel a ello Sin embargo fue muy intere-sante trabajar con el mismo para lograr un ldquoprototipordquo de solucioacuten al problema

Hace muchos antildeos trabaje en instrumentacioacuten en la industria del petroacuteleo y metopaba con sistemas PID de control en muchos de los equipos que se reparaban quecontrolaban desde vaacutelvulas electro-hidraacuteulicas hasta motores de bombas y tornil-los11 para transportar arena Cuando puede estudiar Ing Electroacutenica fue en granmedida por la fascinacioacuten que me produciacutean estos sistemas Asiacute que esta experien-cia fue muy gratificante y me demostroacute el trabajo que conlleva realizar algunas deestas tareas

8 Trabajo a futuro

Muchos puntos no se pudieron estudiar ni tratar los siguientes son los maacutes im-portantes seguacuten un criterio personal que se fue generando a medida que el proyectoavanzaba

Modelizar el hardware con los conocimientos que se adquieren en la materiasistema de controlEstudiar la utilizacioacuten de otros tipos de sensores para la medicioacuten de ladistancia posicionalLograr un equipo de trabajo para incrementar la productividadAunque se abordo una solucioacuten de fuzzy logic12 basada en un ejemplorealizado en python no se pudo implementar Lo ideal seriacutea presentar unasolucioacuten de sistemas hiacutebridosAyudar a la fiacutesica del problema resuelta agregando maacutes peso en la parteinferior cerca al eje de pivoteo

Iacutendice de figuras

11 Posicioacuten de equilibrio del boe-bot self-balanced 221 Diagrama de fuerzas que actuacutean sobre el peacutendulo invertido claacutesico 322 Diagrama de flujo del control PID 431 Diagrama simplificado del programa 732 Diagrama de flujo del programa principal 833 Rutina de medicioacuten 834 Rutina de caacutelculos 935 Rutina de modulacioacuten 9

9Caso claacutesico de control10Sobre sistemas de control11Tipo de Arquiacutemedes12Loacutegica difusa

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 19

36 Un tren de pulsos de 13 ms hace rotar el servo a maacutexima velocidad ensentido de las agujas del reloj 9

37 Un tren de pulsos de 17 ms hace rotar el servo a maacutexima velocidad ensentido contrario al de las agujas del reloj 9

41 Boe-bot 1142 Tarjeta electroacutenica del boe-bot 1243 BS2 uno de los ldquocerebrosrdquo del boebot 1351 Modificaciones al boe-bot posicioacuten del moacutedulo QTI 14

Referencias[1] httpenwikipediaorgwikiPID_controller[2] ldquoModelado y control del peacutendulo invertido sobre carro mediante sistemas hiacutebridosrdquo por Fer-

nando Bote Ortega Universidad de Sevilla[3] rdquoControl of an Inverted Pendulumrdquo por Johnny Lam[4] httpletsmakerobotscomnode22232[5] rdquoBASIC Stamp Syntax and Reference Manualrdquo Version 22 ISBN 1-928982-32-8[6] rdquoPBASIC Language Basicsrdquo Dhinesh Sasidaran Octubre 14 2002[7] rdquoMicrobot PARALLAX Boe - Botrdquo Caacutendido Garciacutea Barroacuten[8] rdquoRobotics with the Boe-Bot Student Guide VERSION 22rdquo wwwparallaxcomdldocs

bookseduroboticsv2_2pdf[9] rdquoMeacutetodo baacutesico para implementar un controlador digital PID en un microcontrolador PIC

para el desarrollo de aplicaciones de bajo costo (Aplicaciones en control de Potencia y laIndustria)rdquo Ilber Adonayt Ruge Ruge Universidad de Cundinamarca Grupo de Investigacioacutenen Tecnologiacuteas de la Informacioacuten y las Comunicaciones GITEINCO Fusagasuga ndash Colombia

[10] rdquoiquestCoacutemo realizar un informe de invetigacioacutenrdquo DrEnrique Teraacuten[11] rdquoDigital PID Controllersrdquo DrVarodom Toochinda wwwdewinzcomdocsecspidpdf[12] rdquoSistemas de control digitalrdquo Benjamin C Kuo Editorial Grupo Patria Cultural ISBN 968-

26-1292[13] rdquoSistemas de control modernordquo Richard C Dorf y Robert H Bishop Deacutecima edicioacuten Edi-

torial Pearson Prentice Hall ISBN 84-205-4401-9

Revisioacuten

101210 - El presente texto es una adaptacioacuten de la versioacuten original titula-da ldquoAproximacioacuten a la solucioacuten del peacutendulo invertido claacutesicordquo Esta modifi-cacioacuten fue realizada con el propoacutesito de poder publicar mi trabajo con maacutessoltura

GABS (Get Another Boe-bot Selfbalanced)copy CopyLeft 2010 Nelson G LombardoPrimera edicioacuten Noviembre 2010Esta documentacioacuten esta licenciada bajo los teacuterminos de la Licencia GNU para

la Documentacioacuten Libre Ver en httpwwwgnuorgcopyleftThis documentation is licensed under the terms of the GNU Free Documentation

License See httpwwwgnuorgcopyleft

E-mail address nelsonlombardogmailcomURL httpetech-nelsonblogspotcom201011primer-pid-funcional-en-el-boebothtmlCurrent address Neuqueacuten Capital Neuqueacuten

  • Contents
  • 1 Introduccioacuten
    • 11 Problema
    • 12 Problema a resolver
    • 13 Alcance
    • 14 Objetivos
      • 2 Marco teoacuterico
        • 21 Peacutendulo claacutesico
        • 22 PID
        • 23 PID digital
        • 24 Concepto PID en referencia al proyecto
        • 25 Retrasos en sistemas de control basados en micropocesadores
          • 3 Disentildeo metodoloacutegico
            • 31 Eleccioacuten del control
            • 32 Trabajo a realizar
            • 33 Inconvenientes de la implementacioacuten
            • 34 Diagrama de flujo del control PID digital
            • 35 Ancho de pulso para el control y velocidad de los motores servo-continuos
            • 36 Obtencioacuten de los coeficientes de los teacuterminos PID
              • 4 Materiales
                • 41 Software utilizado
                • 42 Plataforma roboacutetica
                • 43 Lenguaje de programacioacuten
                  • 5 Implementacioacuten
                    • 51 Modificaciones al boe-bot
                    • 52 Sensor de distancia
                    • 53 Alimentacioacuten eleacutectrica
                    • 54 Posicioacuten de equilibrio natural del boe-bot
                    • 55 Transferencia de los programas
                    • 56 Programa para el stamp BS2
                      • 6 Resultados
                        • 61 Trabajo observado
                        • 62 Aceptacioacuten
                          • 7 Conclusioacuten
                          • 8 Trabajo a futuro
                          • Iacutendice de figuras
                          • Referencias
                          • Revisioacuten
Page 15: Gabs

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 13

Figura 43 BS2 uno de los ldquocerebrosrdquo del boebot

423 Cerebro BS2 En la siguiente enumeracioacuten se describen los componentesque se hallan en el ldquocerebrordquo BS2 del boebot utilizado lo que se puede apreciar enla figura 43

1 Cuatro pines para la comunicacioacuten con el ordenador mediante el puertoserie

2 Memoria EEPROM de una capacidad de 2K en donde se almacena el coacutedigofuente del programa editado en PBASIC

3 Condensador del filtro del regulador de voltaje de 5 voltios4 Ocho pines de las entradassalidas desde la P0 hasta la P75 Microcontrolador PIC16C57C que actuacutea de interprete del lenguaje PBA-

SIC ejecutando el programa a una velocidad de 4000 instrucciones porsegundo

6 Ocho pines de las entradassalidas desde la P8 hasta la P157 Oscilador de cuarzo de 20 megahercios para proporcionar la frecuencia al

reloj interno8 Pin de alimentacioacuten de 5 voltios positivos (Vcc)9 Regulador de voltaje que estabiliza la tensioacuten desde los 6 - 9 voltios de la

alimentacioacuten a los 5 voltios utilizados por los circuitos electroacutenicos10 Pin para reiniciar el programa11 Dos pines de alimentacioacuten a la tensioacuten de 6 - 9 voltios (Vin) y la masa

(Vss)12 Detector de la tensioacuten de alimentacioacuten del moacutedulo BASIC Stamp13 Circuito de gestioacuten de la comunicacioacuten mediante el puerto serieusb

43 Lenguaje de programacioacuten El boe-bot utiliza un interprete para su pro-gramacioacuten basado en el lenguaje pbasic Este lenguaje es muy similar al Basiclo que le agrega mucho facilidad a la programacioacuten de estos equipos limitados enprocesamiento La referencia para utilizar este lenguaje esta totalmente documen-tada por parallax en el texto 5 que se halla en la bibliografiacutea utilizada

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 14

Figura 51 Modificaciones al boe-bot posicioacuten del moacutedulo QTI

5 Implementacioacuten

51 Modificaciones al boe-bot La uacutenica modificacioacuten que se realizo al boe-bot claacutesico es la inversioacuten de la posicioacuten fiacutesica de los servos para que el cuerpo delboe-bot pudiera adoptar la posicioacuten vertical de la figura 11 libremente Esto puedeapreciarse en la figura 51

52 Sensor de distancia El moacutedulo QTI esta disentildeado para la deteccioacuten cer-cana infrarroja El corazoacuten de este moacutedulo es el QRD1114 que es un sensor reflectivode objetos Utiliza un diodo emisor infrarrojo y un phototransistor BJT El moacute-dulo esta disentildeado para utilizarse con la funcioacuten RCTIME que posee la siguientesintaxis

RCTIME Pin State VariableDonde

Pin es alguna de las entradassalidas del puertoState es una constante que puede adoptar el valor 1 o 0 loacutegicosVariable es justamente el registro en memoria donde queremos almacenarel resultado

Esta funcioacuten mide el tiempo que le toma llegar al estado definido en State Usual-mente se utiliza para medir el tiempo de carga o descarga de un circuito RC

En nuestro caso la utilizamos para obtener una ldquomedidardquo de la distancias entreel sensor y la superficie donde esta haciendo equilibrio el robot

La posicioacuten que se adopto para el sensor fue en la parte inferior del boe-bot a nomaacutes de 1 cm de la superficie con una distancia al eje de pivoteo (eje de las ruedas)de no maacutes de 15cm

La conexioacuten de este sensor es muy sencilla el pin W del moacutedulo se conecta a unode los pines de alimentacioacuten del motherboard del robot el pin B al gnd que otorgala placa y el R a una de las entradassalidas del puerto de trabajo que deseemosen nuestro caso utilizamos el 5 Para una mayor comprensioacuten referirse a la figura51

53 Alimentacioacuten eleacutectrica Se elimino el porta pila del boe-bot y se utilizoalimentacioacuten externa con una fuente de voltaje regulable de 3A como maacuteximo tra-bajando a 9V Para no producir una invasioacuten al sistema la alimentacioacuten se hizoa traveacutes de cables muy finos y maneables en una posicioacuten relajada por encima de

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 15

la altura del boe-bot y con el largo suficiente para que el mismo se pudiera moverlibremente

54 Posicioacuten de equilibrio natural del boe-bot Para encontrar la posicioacutende equilibrio se utilizo la siguiente metodologiacutea

Se escribioacute un programa que iba mostrando en la pantalla de debug del IDEla medicioacuten de la distancia del sensor a la superficieManualmente se adoptaba la posicioacuten para la cual se notaba el equilibriodel robotSe anota el valor y se utiliza luego en el programa de control

Todo el trabajo previamente descripto derivo en este programa escrito para tal finfue

rsquo $STAMP BS2rsquo $PBASIC 25front VAR WordDO

HIGH 5RCTIME 51frontPAUSE 1000DEBUG front

LOOP

55 Transferencia de los programas Utilizando el IDE es muy sencillopuesto que posee un herramienta para ldquocorrer el programardquo y lo transfiere al boe-bot por medio del puerto USB como tambieacuten puede ser a traveacutes del puerto serialo una combinacioacuten de los mismos La configuracioacuten es muy sencilla y no requieremucho maacutes esfuerzo

56 Programa para el stamp BS2 El siguiente es el programa definitivo es-crito para controlar la posicioacuten de equilibrio vertical del boe-bot

rsquo $STAMP BS2

rsquo $PBASIC 25

rsquo Licensed under GPLv2 o higher

rsquoBS2 Mapa de las entsal usadas

rsquoP3 Sensor de distancia frontal

Leftservo CON 12 rsquoP12 Servo izquierdo

Rightservo CON 13 rsquoP13 Servo derecho

front VAR Word rsquoDistancia que mide el sensor de contraste

pulseLeft VAR Word rsquoVariable que enviacutea el ancho del pulso al motor izquierdo

pulseRight VAR Word rsquoVariable que enviacutea el ancho del pulso al motor derecho

pulseZero CON 750 rsquoEste es el pulso para el cuacuteal los motores no giran

setpoint VAR Word rsquoEste dato es el setpoint del control PID

kp CON 199100 rsquoValor de la constante de proporcional utilizada

ki CON 399100 rsquoValor de la constante de integracioacuten utilizada

kd CON 190100 rsquoValor de la constante del teacutermino derivativo utilizada

error VAR Word rsquoAlmacena el error que se va obteniendo

p VAR Word rsquoSe almacena el ancho del pulso a sumar al estado estacionario

offsetf VAR Word rsquoDesplaza la medicioacuten de la distancia

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 16

sum1 VAR Word rsquoRepresenta el error anterior al actual

sum2 VAR Word rsquoRepresenta el error anterior al anterior del actual

integrate VAR Word rsquoTeacutermino integral

derivate VAR Word rsquoTeacutermino derivativo

time CON 2510000 rsquoTiempo estimativo entre la obtencioacuten de cada teacutermino

rsquo------Comienzo del programa principal-------

rsquo Incializacioacuten de las variables

offset = pulseZero

sum1 = 0

sum2 = 0

offsetf = 0

PAUSE 2000 rsquoPausa de 2 segundos

SetPoint = 170 rsquoSeteo manual de la posicioacuten a buscar

offsetf = SetPoint

DO rsquoBucle del programa principal

GOSUB Measure rsquoMedicioacuten de la distancia

GOSUB PID rsquoAlgoritmo de control PID

GOSUB Send_Pulse rsquoModulacioacuten de pulso en los motores

LOOP

rsquo-------Subrutinas--------

PID

IF (front ltsetpoint) THEN rsquoHay que revisar el signo y actuar seguacuten para la correccioacuten

error = setpoint - front

integrate = (sum1 + sum2 - error) time 3 rsquoTeacutermino integral

IF error gtsum1 THEN rsquoRevisamos el signo y calculamos el teacutermino derivativo

derivate = (error - sum1) time rsquoEl teacutermino derivativo es en realidad la secante miacutenima

que podemos hallar

ELSE

derivate = (sum1 - error) time

ENDIF

p = error kp + integrate ki + derivate kd rsquoControl PID completo

pulseLeft = p + offset rsquoModulando el ancho del pulso seguacuten se necesite corregir

pulseRight = - p + offset rsquohacia adelante o hacia atraacutes

ENDIF

IF (front gtsetpoint) THEN rsquoEsta parte del programa realiza lo mismo que la anterior soacutelo que

adecua el signo

error = front - setpoint

integrate = (sum1 + sum2 + error) time 3

IF error gtsum1 THEN

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 17

derivate = (error - sum1) time

ELSE

derivate = (sum1 - error) time

ENDIF

p = error kp + integrate ki + derivate kd

pulseLeft = p + offset

pulseRight = - p + offset

ENDIF

sum2 = sum1

sum1 = error

RETURN

rsquo Esta subrutina devuelve la distancia utilizando el sensor de contraste

Measure

HIGH 5

RCTIME 51front

front = front - offsetf

RETURN

rsquo Esta subrutina se encarga de enviar el PWM correcto hacia los motores

Send_Pulse

PULSOUT Leftservo pulseRight

PULSOUT Rightservo pulseLeft

RETURN

6 Resultados

61 Trabajo observado El sistema termino realizando equilibrio y a medidaque el control progresaba en funcionalidad como en tunning8 fue mostrando unaclara mejora No se pudo implementar un sistema que permitiera cotejar las mejorasmaacutes que por el meacutetodo de la observacioacuten Eventualmente el equilibrio en torno ala posicioacuten de equilibrio se obtuvo y demostroacute ser significativamente mejor de lasprimeras pruebas utilizando un control proporcional

62 Aceptacioacuten El programa de control PID logroacute el objetivo permitioacute re-alizar el proyecto en tiempo y forma ademaacutes de sortear una gran cantidad deinconvenientes

8En este caso el seteo de los coeficientes de los teacuterminos PID

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 18

7 Conclusioacuten

Aunque el objetivo inicial de lograr un peacutendulo invertido9 no se alcanzo estaaproximacioacuten es evidentemente un claro progreso hacia la resolucioacuten del mismoAunque el trabajo podriacutea haber sido maacutes ldquoexitosordquo en lo personal fue satisfactoriolograr una solucioacuten y que ademaacutes la misma es bastante aceptable

La estrategia de control PID dejo en evidencia ser a prueba de concepto y logroacuteun importante objetivo a un costo de tiempo dinero y conocimientos10 muy bajos

El boe-bot demostroacute ser una plataforma muy simple pero no asiacute despreciablePermitioacute trabajar raacutepidamente al momento de la programacioacuten pero como contralas limitaciones son algunas veces numerosas pero lo cierto es que es un hardwaredisentildeado para hobbistas y que intenta ser fiel a ello Sin embargo fue muy intere-sante trabajar con el mismo para lograr un ldquoprototipordquo de solucioacuten al problema

Hace muchos antildeos trabaje en instrumentacioacuten en la industria del petroacuteleo y metopaba con sistemas PID de control en muchos de los equipos que se reparaban quecontrolaban desde vaacutelvulas electro-hidraacuteulicas hasta motores de bombas y tornil-los11 para transportar arena Cuando puede estudiar Ing Electroacutenica fue en granmedida por la fascinacioacuten que me produciacutean estos sistemas Asiacute que esta experien-cia fue muy gratificante y me demostroacute el trabajo que conlleva realizar algunas deestas tareas

8 Trabajo a futuro

Muchos puntos no se pudieron estudiar ni tratar los siguientes son los maacutes im-portantes seguacuten un criterio personal que se fue generando a medida que el proyectoavanzaba

Modelizar el hardware con los conocimientos que se adquieren en la materiasistema de controlEstudiar la utilizacioacuten de otros tipos de sensores para la medicioacuten de ladistancia posicionalLograr un equipo de trabajo para incrementar la productividadAunque se abordo una solucioacuten de fuzzy logic12 basada en un ejemplorealizado en python no se pudo implementar Lo ideal seriacutea presentar unasolucioacuten de sistemas hiacutebridosAyudar a la fiacutesica del problema resuelta agregando maacutes peso en la parteinferior cerca al eje de pivoteo

Iacutendice de figuras

11 Posicioacuten de equilibrio del boe-bot self-balanced 221 Diagrama de fuerzas que actuacutean sobre el peacutendulo invertido claacutesico 322 Diagrama de flujo del control PID 431 Diagrama simplificado del programa 732 Diagrama de flujo del programa principal 833 Rutina de medicioacuten 834 Rutina de caacutelculos 935 Rutina de modulacioacuten 9

9Caso claacutesico de control10Sobre sistemas de control11Tipo de Arquiacutemedes12Loacutegica difusa

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 19

36 Un tren de pulsos de 13 ms hace rotar el servo a maacutexima velocidad ensentido de las agujas del reloj 9

37 Un tren de pulsos de 17 ms hace rotar el servo a maacutexima velocidad ensentido contrario al de las agujas del reloj 9

41 Boe-bot 1142 Tarjeta electroacutenica del boe-bot 1243 BS2 uno de los ldquocerebrosrdquo del boebot 1351 Modificaciones al boe-bot posicioacuten del moacutedulo QTI 14

Referencias[1] httpenwikipediaorgwikiPID_controller[2] ldquoModelado y control del peacutendulo invertido sobre carro mediante sistemas hiacutebridosrdquo por Fer-

nando Bote Ortega Universidad de Sevilla[3] rdquoControl of an Inverted Pendulumrdquo por Johnny Lam[4] httpletsmakerobotscomnode22232[5] rdquoBASIC Stamp Syntax and Reference Manualrdquo Version 22 ISBN 1-928982-32-8[6] rdquoPBASIC Language Basicsrdquo Dhinesh Sasidaran Octubre 14 2002[7] rdquoMicrobot PARALLAX Boe - Botrdquo Caacutendido Garciacutea Barroacuten[8] rdquoRobotics with the Boe-Bot Student Guide VERSION 22rdquo wwwparallaxcomdldocs

bookseduroboticsv2_2pdf[9] rdquoMeacutetodo baacutesico para implementar un controlador digital PID en un microcontrolador PIC

para el desarrollo de aplicaciones de bajo costo (Aplicaciones en control de Potencia y laIndustria)rdquo Ilber Adonayt Ruge Ruge Universidad de Cundinamarca Grupo de Investigacioacutenen Tecnologiacuteas de la Informacioacuten y las Comunicaciones GITEINCO Fusagasuga ndash Colombia

[10] rdquoiquestCoacutemo realizar un informe de invetigacioacutenrdquo DrEnrique Teraacuten[11] rdquoDigital PID Controllersrdquo DrVarodom Toochinda wwwdewinzcomdocsecspidpdf[12] rdquoSistemas de control digitalrdquo Benjamin C Kuo Editorial Grupo Patria Cultural ISBN 968-

26-1292[13] rdquoSistemas de control modernordquo Richard C Dorf y Robert H Bishop Deacutecima edicioacuten Edi-

torial Pearson Prentice Hall ISBN 84-205-4401-9

Revisioacuten

101210 - El presente texto es una adaptacioacuten de la versioacuten original titula-da ldquoAproximacioacuten a la solucioacuten del peacutendulo invertido claacutesicordquo Esta modifi-cacioacuten fue realizada con el propoacutesito de poder publicar mi trabajo con maacutessoltura

GABS (Get Another Boe-bot Selfbalanced)copy CopyLeft 2010 Nelson G LombardoPrimera edicioacuten Noviembre 2010Esta documentacioacuten esta licenciada bajo los teacuterminos de la Licencia GNU para

la Documentacioacuten Libre Ver en httpwwwgnuorgcopyleftThis documentation is licensed under the terms of the GNU Free Documentation

License See httpwwwgnuorgcopyleft

E-mail address nelsonlombardogmailcomURL httpetech-nelsonblogspotcom201011primer-pid-funcional-en-el-boebothtmlCurrent address Neuqueacuten Capital Neuqueacuten

  • Contents
  • 1 Introduccioacuten
    • 11 Problema
    • 12 Problema a resolver
    • 13 Alcance
    • 14 Objetivos
      • 2 Marco teoacuterico
        • 21 Peacutendulo claacutesico
        • 22 PID
        • 23 PID digital
        • 24 Concepto PID en referencia al proyecto
        • 25 Retrasos en sistemas de control basados en micropocesadores
          • 3 Disentildeo metodoloacutegico
            • 31 Eleccioacuten del control
            • 32 Trabajo a realizar
            • 33 Inconvenientes de la implementacioacuten
            • 34 Diagrama de flujo del control PID digital
            • 35 Ancho de pulso para el control y velocidad de los motores servo-continuos
            • 36 Obtencioacuten de los coeficientes de los teacuterminos PID
              • 4 Materiales
                • 41 Software utilizado
                • 42 Plataforma roboacutetica
                • 43 Lenguaje de programacioacuten
                  • 5 Implementacioacuten
                    • 51 Modificaciones al boe-bot
                    • 52 Sensor de distancia
                    • 53 Alimentacioacuten eleacutectrica
                    • 54 Posicioacuten de equilibrio natural del boe-bot
                    • 55 Transferencia de los programas
                    • 56 Programa para el stamp BS2
                      • 6 Resultados
                        • 61 Trabajo observado
                        • 62 Aceptacioacuten
                          • 7 Conclusioacuten
                          • 8 Trabajo a futuro
                          • Iacutendice de figuras
                          • Referencias
                          • Revisioacuten
Page 16: Gabs

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 14

Figura 51 Modificaciones al boe-bot posicioacuten del moacutedulo QTI

5 Implementacioacuten

51 Modificaciones al boe-bot La uacutenica modificacioacuten que se realizo al boe-bot claacutesico es la inversioacuten de la posicioacuten fiacutesica de los servos para que el cuerpo delboe-bot pudiera adoptar la posicioacuten vertical de la figura 11 libremente Esto puedeapreciarse en la figura 51

52 Sensor de distancia El moacutedulo QTI esta disentildeado para la deteccioacuten cer-cana infrarroja El corazoacuten de este moacutedulo es el QRD1114 que es un sensor reflectivode objetos Utiliza un diodo emisor infrarrojo y un phototransistor BJT El moacute-dulo esta disentildeado para utilizarse con la funcioacuten RCTIME que posee la siguientesintaxis

RCTIME Pin State VariableDonde

Pin es alguna de las entradassalidas del puertoState es una constante que puede adoptar el valor 1 o 0 loacutegicosVariable es justamente el registro en memoria donde queremos almacenarel resultado

Esta funcioacuten mide el tiempo que le toma llegar al estado definido en State Usual-mente se utiliza para medir el tiempo de carga o descarga de un circuito RC

En nuestro caso la utilizamos para obtener una ldquomedidardquo de la distancias entreel sensor y la superficie donde esta haciendo equilibrio el robot

La posicioacuten que se adopto para el sensor fue en la parte inferior del boe-bot a nomaacutes de 1 cm de la superficie con una distancia al eje de pivoteo (eje de las ruedas)de no maacutes de 15cm

La conexioacuten de este sensor es muy sencilla el pin W del moacutedulo se conecta a unode los pines de alimentacioacuten del motherboard del robot el pin B al gnd que otorgala placa y el R a una de las entradassalidas del puerto de trabajo que deseemosen nuestro caso utilizamos el 5 Para una mayor comprensioacuten referirse a la figura51

53 Alimentacioacuten eleacutectrica Se elimino el porta pila del boe-bot y se utilizoalimentacioacuten externa con una fuente de voltaje regulable de 3A como maacuteximo tra-bajando a 9V Para no producir una invasioacuten al sistema la alimentacioacuten se hizoa traveacutes de cables muy finos y maneables en una posicioacuten relajada por encima de

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 15

la altura del boe-bot y con el largo suficiente para que el mismo se pudiera moverlibremente

54 Posicioacuten de equilibrio natural del boe-bot Para encontrar la posicioacutende equilibrio se utilizo la siguiente metodologiacutea

Se escribioacute un programa que iba mostrando en la pantalla de debug del IDEla medicioacuten de la distancia del sensor a la superficieManualmente se adoptaba la posicioacuten para la cual se notaba el equilibriodel robotSe anota el valor y se utiliza luego en el programa de control

Todo el trabajo previamente descripto derivo en este programa escrito para tal finfue

rsquo $STAMP BS2rsquo $PBASIC 25front VAR WordDO

HIGH 5RCTIME 51frontPAUSE 1000DEBUG front

LOOP

55 Transferencia de los programas Utilizando el IDE es muy sencillopuesto que posee un herramienta para ldquocorrer el programardquo y lo transfiere al boe-bot por medio del puerto USB como tambieacuten puede ser a traveacutes del puerto serialo una combinacioacuten de los mismos La configuracioacuten es muy sencilla y no requieremucho maacutes esfuerzo

56 Programa para el stamp BS2 El siguiente es el programa definitivo es-crito para controlar la posicioacuten de equilibrio vertical del boe-bot

rsquo $STAMP BS2

rsquo $PBASIC 25

rsquo Licensed under GPLv2 o higher

rsquoBS2 Mapa de las entsal usadas

rsquoP3 Sensor de distancia frontal

Leftservo CON 12 rsquoP12 Servo izquierdo

Rightservo CON 13 rsquoP13 Servo derecho

front VAR Word rsquoDistancia que mide el sensor de contraste

pulseLeft VAR Word rsquoVariable que enviacutea el ancho del pulso al motor izquierdo

pulseRight VAR Word rsquoVariable que enviacutea el ancho del pulso al motor derecho

pulseZero CON 750 rsquoEste es el pulso para el cuacuteal los motores no giran

setpoint VAR Word rsquoEste dato es el setpoint del control PID

kp CON 199100 rsquoValor de la constante de proporcional utilizada

ki CON 399100 rsquoValor de la constante de integracioacuten utilizada

kd CON 190100 rsquoValor de la constante del teacutermino derivativo utilizada

error VAR Word rsquoAlmacena el error que se va obteniendo

p VAR Word rsquoSe almacena el ancho del pulso a sumar al estado estacionario

offsetf VAR Word rsquoDesplaza la medicioacuten de la distancia

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 16

sum1 VAR Word rsquoRepresenta el error anterior al actual

sum2 VAR Word rsquoRepresenta el error anterior al anterior del actual

integrate VAR Word rsquoTeacutermino integral

derivate VAR Word rsquoTeacutermino derivativo

time CON 2510000 rsquoTiempo estimativo entre la obtencioacuten de cada teacutermino

rsquo------Comienzo del programa principal-------

rsquo Incializacioacuten de las variables

offset = pulseZero

sum1 = 0

sum2 = 0

offsetf = 0

PAUSE 2000 rsquoPausa de 2 segundos

SetPoint = 170 rsquoSeteo manual de la posicioacuten a buscar

offsetf = SetPoint

DO rsquoBucle del programa principal

GOSUB Measure rsquoMedicioacuten de la distancia

GOSUB PID rsquoAlgoritmo de control PID

GOSUB Send_Pulse rsquoModulacioacuten de pulso en los motores

LOOP

rsquo-------Subrutinas--------

PID

IF (front ltsetpoint) THEN rsquoHay que revisar el signo y actuar seguacuten para la correccioacuten

error = setpoint - front

integrate = (sum1 + sum2 - error) time 3 rsquoTeacutermino integral

IF error gtsum1 THEN rsquoRevisamos el signo y calculamos el teacutermino derivativo

derivate = (error - sum1) time rsquoEl teacutermino derivativo es en realidad la secante miacutenima

que podemos hallar

ELSE

derivate = (sum1 - error) time

ENDIF

p = error kp + integrate ki + derivate kd rsquoControl PID completo

pulseLeft = p + offset rsquoModulando el ancho del pulso seguacuten se necesite corregir

pulseRight = - p + offset rsquohacia adelante o hacia atraacutes

ENDIF

IF (front gtsetpoint) THEN rsquoEsta parte del programa realiza lo mismo que la anterior soacutelo que

adecua el signo

error = front - setpoint

integrate = (sum1 + sum2 + error) time 3

IF error gtsum1 THEN

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 17

derivate = (error - sum1) time

ELSE

derivate = (sum1 - error) time

ENDIF

p = error kp + integrate ki + derivate kd

pulseLeft = p + offset

pulseRight = - p + offset

ENDIF

sum2 = sum1

sum1 = error

RETURN

rsquo Esta subrutina devuelve la distancia utilizando el sensor de contraste

Measure

HIGH 5

RCTIME 51front

front = front - offsetf

RETURN

rsquo Esta subrutina se encarga de enviar el PWM correcto hacia los motores

Send_Pulse

PULSOUT Leftservo pulseRight

PULSOUT Rightservo pulseLeft

RETURN

6 Resultados

61 Trabajo observado El sistema termino realizando equilibrio y a medidaque el control progresaba en funcionalidad como en tunning8 fue mostrando unaclara mejora No se pudo implementar un sistema que permitiera cotejar las mejorasmaacutes que por el meacutetodo de la observacioacuten Eventualmente el equilibrio en torno ala posicioacuten de equilibrio se obtuvo y demostroacute ser significativamente mejor de lasprimeras pruebas utilizando un control proporcional

62 Aceptacioacuten El programa de control PID logroacute el objetivo permitioacute re-alizar el proyecto en tiempo y forma ademaacutes de sortear una gran cantidad deinconvenientes

8En este caso el seteo de los coeficientes de los teacuterminos PID

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 18

7 Conclusioacuten

Aunque el objetivo inicial de lograr un peacutendulo invertido9 no se alcanzo estaaproximacioacuten es evidentemente un claro progreso hacia la resolucioacuten del mismoAunque el trabajo podriacutea haber sido maacutes ldquoexitosordquo en lo personal fue satisfactoriolograr una solucioacuten y que ademaacutes la misma es bastante aceptable

La estrategia de control PID dejo en evidencia ser a prueba de concepto y logroacuteun importante objetivo a un costo de tiempo dinero y conocimientos10 muy bajos

El boe-bot demostroacute ser una plataforma muy simple pero no asiacute despreciablePermitioacute trabajar raacutepidamente al momento de la programacioacuten pero como contralas limitaciones son algunas veces numerosas pero lo cierto es que es un hardwaredisentildeado para hobbistas y que intenta ser fiel a ello Sin embargo fue muy intere-sante trabajar con el mismo para lograr un ldquoprototipordquo de solucioacuten al problema

Hace muchos antildeos trabaje en instrumentacioacuten en la industria del petroacuteleo y metopaba con sistemas PID de control en muchos de los equipos que se reparaban quecontrolaban desde vaacutelvulas electro-hidraacuteulicas hasta motores de bombas y tornil-los11 para transportar arena Cuando puede estudiar Ing Electroacutenica fue en granmedida por la fascinacioacuten que me produciacutean estos sistemas Asiacute que esta experien-cia fue muy gratificante y me demostroacute el trabajo que conlleva realizar algunas deestas tareas

8 Trabajo a futuro

Muchos puntos no se pudieron estudiar ni tratar los siguientes son los maacutes im-portantes seguacuten un criterio personal que se fue generando a medida que el proyectoavanzaba

Modelizar el hardware con los conocimientos que se adquieren en la materiasistema de controlEstudiar la utilizacioacuten de otros tipos de sensores para la medicioacuten de ladistancia posicionalLograr un equipo de trabajo para incrementar la productividadAunque se abordo una solucioacuten de fuzzy logic12 basada en un ejemplorealizado en python no se pudo implementar Lo ideal seriacutea presentar unasolucioacuten de sistemas hiacutebridosAyudar a la fiacutesica del problema resuelta agregando maacutes peso en la parteinferior cerca al eje de pivoteo

Iacutendice de figuras

11 Posicioacuten de equilibrio del boe-bot self-balanced 221 Diagrama de fuerzas que actuacutean sobre el peacutendulo invertido claacutesico 322 Diagrama de flujo del control PID 431 Diagrama simplificado del programa 732 Diagrama de flujo del programa principal 833 Rutina de medicioacuten 834 Rutina de caacutelculos 935 Rutina de modulacioacuten 9

9Caso claacutesico de control10Sobre sistemas de control11Tipo de Arquiacutemedes12Loacutegica difusa

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 19

36 Un tren de pulsos de 13 ms hace rotar el servo a maacutexima velocidad ensentido de las agujas del reloj 9

37 Un tren de pulsos de 17 ms hace rotar el servo a maacutexima velocidad ensentido contrario al de las agujas del reloj 9

41 Boe-bot 1142 Tarjeta electroacutenica del boe-bot 1243 BS2 uno de los ldquocerebrosrdquo del boebot 1351 Modificaciones al boe-bot posicioacuten del moacutedulo QTI 14

Referencias[1] httpenwikipediaorgwikiPID_controller[2] ldquoModelado y control del peacutendulo invertido sobre carro mediante sistemas hiacutebridosrdquo por Fer-

nando Bote Ortega Universidad de Sevilla[3] rdquoControl of an Inverted Pendulumrdquo por Johnny Lam[4] httpletsmakerobotscomnode22232[5] rdquoBASIC Stamp Syntax and Reference Manualrdquo Version 22 ISBN 1-928982-32-8[6] rdquoPBASIC Language Basicsrdquo Dhinesh Sasidaran Octubre 14 2002[7] rdquoMicrobot PARALLAX Boe - Botrdquo Caacutendido Garciacutea Barroacuten[8] rdquoRobotics with the Boe-Bot Student Guide VERSION 22rdquo wwwparallaxcomdldocs

bookseduroboticsv2_2pdf[9] rdquoMeacutetodo baacutesico para implementar un controlador digital PID en un microcontrolador PIC

para el desarrollo de aplicaciones de bajo costo (Aplicaciones en control de Potencia y laIndustria)rdquo Ilber Adonayt Ruge Ruge Universidad de Cundinamarca Grupo de Investigacioacutenen Tecnologiacuteas de la Informacioacuten y las Comunicaciones GITEINCO Fusagasuga ndash Colombia

[10] rdquoiquestCoacutemo realizar un informe de invetigacioacutenrdquo DrEnrique Teraacuten[11] rdquoDigital PID Controllersrdquo DrVarodom Toochinda wwwdewinzcomdocsecspidpdf[12] rdquoSistemas de control digitalrdquo Benjamin C Kuo Editorial Grupo Patria Cultural ISBN 968-

26-1292[13] rdquoSistemas de control modernordquo Richard C Dorf y Robert H Bishop Deacutecima edicioacuten Edi-

torial Pearson Prentice Hall ISBN 84-205-4401-9

Revisioacuten

101210 - El presente texto es una adaptacioacuten de la versioacuten original titula-da ldquoAproximacioacuten a la solucioacuten del peacutendulo invertido claacutesicordquo Esta modifi-cacioacuten fue realizada con el propoacutesito de poder publicar mi trabajo con maacutessoltura

GABS (Get Another Boe-bot Selfbalanced)copy CopyLeft 2010 Nelson G LombardoPrimera edicioacuten Noviembre 2010Esta documentacioacuten esta licenciada bajo los teacuterminos de la Licencia GNU para

la Documentacioacuten Libre Ver en httpwwwgnuorgcopyleftThis documentation is licensed under the terms of the GNU Free Documentation

License See httpwwwgnuorgcopyleft

E-mail address nelsonlombardogmailcomURL httpetech-nelsonblogspotcom201011primer-pid-funcional-en-el-boebothtmlCurrent address Neuqueacuten Capital Neuqueacuten

  • Contents
  • 1 Introduccioacuten
    • 11 Problema
    • 12 Problema a resolver
    • 13 Alcance
    • 14 Objetivos
      • 2 Marco teoacuterico
        • 21 Peacutendulo claacutesico
        • 22 PID
        • 23 PID digital
        • 24 Concepto PID en referencia al proyecto
        • 25 Retrasos en sistemas de control basados en micropocesadores
          • 3 Disentildeo metodoloacutegico
            • 31 Eleccioacuten del control
            • 32 Trabajo a realizar
            • 33 Inconvenientes de la implementacioacuten
            • 34 Diagrama de flujo del control PID digital
            • 35 Ancho de pulso para el control y velocidad de los motores servo-continuos
            • 36 Obtencioacuten de los coeficientes de los teacuterminos PID
              • 4 Materiales
                • 41 Software utilizado
                • 42 Plataforma roboacutetica
                • 43 Lenguaje de programacioacuten
                  • 5 Implementacioacuten
                    • 51 Modificaciones al boe-bot
                    • 52 Sensor de distancia
                    • 53 Alimentacioacuten eleacutectrica
                    • 54 Posicioacuten de equilibrio natural del boe-bot
                    • 55 Transferencia de los programas
                    • 56 Programa para el stamp BS2
                      • 6 Resultados
                        • 61 Trabajo observado
                        • 62 Aceptacioacuten
                          • 7 Conclusioacuten
                          • 8 Trabajo a futuro
                          • Iacutendice de figuras
                          • Referencias
                          • Revisioacuten
Page 17: Gabs

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 15

la altura del boe-bot y con el largo suficiente para que el mismo se pudiera moverlibremente

54 Posicioacuten de equilibrio natural del boe-bot Para encontrar la posicioacutende equilibrio se utilizo la siguiente metodologiacutea

Se escribioacute un programa que iba mostrando en la pantalla de debug del IDEla medicioacuten de la distancia del sensor a la superficieManualmente se adoptaba la posicioacuten para la cual se notaba el equilibriodel robotSe anota el valor y se utiliza luego en el programa de control

Todo el trabajo previamente descripto derivo en este programa escrito para tal finfue

rsquo $STAMP BS2rsquo $PBASIC 25front VAR WordDO

HIGH 5RCTIME 51frontPAUSE 1000DEBUG front

LOOP

55 Transferencia de los programas Utilizando el IDE es muy sencillopuesto que posee un herramienta para ldquocorrer el programardquo y lo transfiere al boe-bot por medio del puerto USB como tambieacuten puede ser a traveacutes del puerto serialo una combinacioacuten de los mismos La configuracioacuten es muy sencilla y no requieremucho maacutes esfuerzo

56 Programa para el stamp BS2 El siguiente es el programa definitivo es-crito para controlar la posicioacuten de equilibrio vertical del boe-bot

rsquo $STAMP BS2

rsquo $PBASIC 25

rsquo Licensed under GPLv2 o higher

rsquoBS2 Mapa de las entsal usadas

rsquoP3 Sensor de distancia frontal

Leftservo CON 12 rsquoP12 Servo izquierdo

Rightservo CON 13 rsquoP13 Servo derecho

front VAR Word rsquoDistancia que mide el sensor de contraste

pulseLeft VAR Word rsquoVariable que enviacutea el ancho del pulso al motor izquierdo

pulseRight VAR Word rsquoVariable que enviacutea el ancho del pulso al motor derecho

pulseZero CON 750 rsquoEste es el pulso para el cuacuteal los motores no giran

setpoint VAR Word rsquoEste dato es el setpoint del control PID

kp CON 199100 rsquoValor de la constante de proporcional utilizada

ki CON 399100 rsquoValor de la constante de integracioacuten utilizada

kd CON 190100 rsquoValor de la constante del teacutermino derivativo utilizada

error VAR Word rsquoAlmacena el error que se va obteniendo

p VAR Word rsquoSe almacena el ancho del pulso a sumar al estado estacionario

offsetf VAR Word rsquoDesplaza la medicioacuten de la distancia

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 16

sum1 VAR Word rsquoRepresenta el error anterior al actual

sum2 VAR Word rsquoRepresenta el error anterior al anterior del actual

integrate VAR Word rsquoTeacutermino integral

derivate VAR Word rsquoTeacutermino derivativo

time CON 2510000 rsquoTiempo estimativo entre la obtencioacuten de cada teacutermino

rsquo------Comienzo del programa principal-------

rsquo Incializacioacuten de las variables

offset = pulseZero

sum1 = 0

sum2 = 0

offsetf = 0

PAUSE 2000 rsquoPausa de 2 segundos

SetPoint = 170 rsquoSeteo manual de la posicioacuten a buscar

offsetf = SetPoint

DO rsquoBucle del programa principal

GOSUB Measure rsquoMedicioacuten de la distancia

GOSUB PID rsquoAlgoritmo de control PID

GOSUB Send_Pulse rsquoModulacioacuten de pulso en los motores

LOOP

rsquo-------Subrutinas--------

PID

IF (front ltsetpoint) THEN rsquoHay que revisar el signo y actuar seguacuten para la correccioacuten

error = setpoint - front

integrate = (sum1 + sum2 - error) time 3 rsquoTeacutermino integral

IF error gtsum1 THEN rsquoRevisamos el signo y calculamos el teacutermino derivativo

derivate = (error - sum1) time rsquoEl teacutermino derivativo es en realidad la secante miacutenima

que podemos hallar

ELSE

derivate = (sum1 - error) time

ENDIF

p = error kp + integrate ki + derivate kd rsquoControl PID completo

pulseLeft = p + offset rsquoModulando el ancho del pulso seguacuten se necesite corregir

pulseRight = - p + offset rsquohacia adelante o hacia atraacutes

ENDIF

IF (front gtsetpoint) THEN rsquoEsta parte del programa realiza lo mismo que la anterior soacutelo que

adecua el signo

error = front - setpoint

integrate = (sum1 + sum2 + error) time 3

IF error gtsum1 THEN

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 17

derivate = (error - sum1) time

ELSE

derivate = (sum1 - error) time

ENDIF

p = error kp + integrate ki + derivate kd

pulseLeft = p + offset

pulseRight = - p + offset

ENDIF

sum2 = sum1

sum1 = error

RETURN

rsquo Esta subrutina devuelve la distancia utilizando el sensor de contraste

Measure

HIGH 5

RCTIME 51front

front = front - offsetf

RETURN

rsquo Esta subrutina se encarga de enviar el PWM correcto hacia los motores

Send_Pulse

PULSOUT Leftservo pulseRight

PULSOUT Rightservo pulseLeft

RETURN

6 Resultados

61 Trabajo observado El sistema termino realizando equilibrio y a medidaque el control progresaba en funcionalidad como en tunning8 fue mostrando unaclara mejora No se pudo implementar un sistema que permitiera cotejar las mejorasmaacutes que por el meacutetodo de la observacioacuten Eventualmente el equilibrio en torno ala posicioacuten de equilibrio se obtuvo y demostroacute ser significativamente mejor de lasprimeras pruebas utilizando un control proporcional

62 Aceptacioacuten El programa de control PID logroacute el objetivo permitioacute re-alizar el proyecto en tiempo y forma ademaacutes de sortear una gran cantidad deinconvenientes

8En este caso el seteo de los coeficientes de los teacuterminos PID

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 18

7 Conclusioacuten

Aunque el objetivo inicial de lograr un peacutendulo invertido9 no se alcanzo estaaproximacioacuten es evidentemente un claro progreso hacia la resolucioacuten del mismoAunque el trabajo podriacutea haber sido maacutes ldquoexitosordquo en lo personal fue satisfactoriolograr una solucioacuten y que ademaacutes la misma es bastante aceptable

La estrategia de control PID dejo en evidencia ser a prueba de concepto y logroacuteun importante objetivo a un costo de tiempo dinero y conocimientos10 muy bajos

El boe-bot demostroacute ser una plataforma muy simple pero no asiacute despreciablePermitioacute trabajar raacutepidamente al momento de la programacioacuten pero como contralas limitaciones son algunas veces numerosas pero lo cierto es que es un hardwaredisentildeado para hobbistas y que intenta ser fiel a ello Sin embargo fue muy intere-sante trabajar con el mismo para lograr un ldquoprototipordquo de solucioacuten al problema

Hace muchos antildeos trabaje en instrumentacioacuten en la industria del petroacuteleo y metopaba con sistemas PID de control en muchos de los equipos que se reparaban quecontrolaban desde vaacutelvulas electro-hidraacuteulicas hasta motores de bombas y tornil-los11 para transportar arena Cuando puede estudiar Ing Electroacutenica fue en granmedida por la fascinacioacuten que me produciacutean estos sistemas Asiacute que esta experien-cia fue muy gratificante y me demostroacute el trabajo que conlleva realizar algunas deestas tareas

8 Trabajo a futuro

Muchos puntos no se pudieron estudiar ni tratar los siguientes son los maacutes im-portantes seguacuten un criterio personal que se fue generando a medida que el proyectoavanzaba

Modelizar el hardware con los conocimientos que se adquieren en la materiasistema de controlEstudiar la utilizacioacuten de otros tipos de sensores para la medicioacuten de ladistancia posicionalLograr un equipo de trabajo para incrementar la productividadAunque se abordo una solucioacuten de fuzzy logic12 basada en un ejemplorealizado en python no se pudo implementar Lo ideal seriacutea presentar unasolucioacuten de sistemas hiacutebridosAyudar a la fiacutesica del problema resuelta agregando maacutes peso en la parteinferior cerca al eje de pivoteo

Iacutendice de figuras

11 Posicioacuten de equilibrio del boe-bot self-balanced 221 Diagrama de fuerzas que actuacutean sobre el peacutendulo invertido claacutesico 322 Diagrama de flujo del control PID 431 Diagrama simplificado del programa 732 Diagrama de flujo del programa principal 833 Rutina de medicioacuten 834 Rutina de caacutelculos 935 Rutina de modulacioacuten 9

9Caso claacutesico de control10Sobre sistemas de control11Tipo de Arquiacutemedes12Loacutegica difusa

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 19

36 Un tren de pulsos de 13 ms hace rotar el servo a maacutexima velocidad ensentido de las agujas del reloj 9

37 Un tren de pulsos de 17 ms hace rotar el servo a maacutexima velocidad ensentido contrario al de las agujas del reloj 9

41 Boe-bot 1142 Tarjeta electroacutenica del boe-bot 1243 BS2 uno de los ldquocerebrosrdquo del boebot 1351 Modificaciones al boe-bot posicioacuten del moacutedulo QTI 14

Referencias[1] httpenwikipediaorgwikiPID_controller[2] ldquoModelado y control del peacutendulo invertido sobre carro mediante sistemas hiacutebridosrdquo por Fer-

nando Bote Ortega Universidad de Sevilla[3] rdquoControl of an Inverted Pendulumrdquo por Johnny Lam[4] httpletsmakerobotscomnode22232[5] rdquoBASIC Stamp Syntax and Reference Manualrdquo Version 22 ISBN 1-928982-32-8[6] rdquoPBASIC Language Basicsrdquo Dhinesh Sasidaran Octubre 14 2002[7] rdquoMicrobot PARALLAX Boe - Botrdquo Caacutendido Garciacutea Barroacuten[8] rdquoRobotics with the Boe-Bot Student Guide VERSION 22rdquo wwwparallaxcomdldocs

bookseduroboticsv2_2pdf[9] rdquoMeacutetodo baacutesico para implementar un controlador digital PID en un microcontrolador PIC

para el desarrollo de aplicaciones de bajo costo (Aplicaciones en control de Potencia y laIndustria)rdquo Ilber Adonayt Ruge Ruge Universidad de Cundinamarca Grupo de Investigacioacutenen Tecnologiacuteas de la Informacioacuten y las Comunicaciones GITEINCO Fusagasuga ndash Colombia

[10] rdquoiquestCoacutemo realizar un informe de invetigacioacutenrdquo DrEnrique Teraacuten[11] rdquoDigital PID Controllersrdquo DrVarodom Toochinda wwwdewinzcomdocsecspidpdf[12] rdquoSistemas de control digitalrdquo Benjamin C Kuo Editorial Grupo Patria Cultural ISBN 968-

26-1292[13] rdquoSistemas de control modernordquo Richard C Dorf y Robert H Bishop Deacutecima edicioacuten Edi-

torial Pearson Prentice Hall ISBN 84-205-4401-9

Revisioacuten

101210 - El presente texto es una adaptacioacuten de la versioacuten original titula-da ldquoAproximacioacuten a la solucioacuten del peacutendulo invertido claacutesicordquo Esta modifi-cacioacuten fue realizada con el propoacutesito de poder publicar mi trabajo con maacutessoltura

GABS (Get Another Boe-bot Selfbalanced)copy CopyLeft 2010 Nelson G LombardoPrimera edicioacuten Noviembre 2010Esta documentacioacuten esta licenciada bajo los teacuterminos de la Licencia GNU para

la Documentacioacuten Libre Ver en httpwwwgnuorgcopyleftThis documentation is licensed under the terms of the GNU Free Documentation

License See httpwwwgnuorgcopyleft

E-mail address nelsonlombardogmailcomURL httpetech-nelsonblogspotcom201011primer-pid-funcional-en-el-boebothtmlCurrent address Neuqueacuten Capital Neuqueacuten

  • Contents
  • 1 Introduccioacuten
    • 11 Problema
    • 12 Problema a resolver
    • 13 Alcance
    • 14 Objetivos
      • 2 Marco teoacuterico
        • 21 Peacutendulo claacutesico
        • 22 PID
        • 23 PID digital
        • 24 Concepto PID en referencia al proyecto
        • 25 Retrasos en sistemas de control basados en micropocesadores
          • 3 Disentildeo metodoloacutegico
            • 31 Eleccioacuten del control
            • 32 Trabajo a realizar
            • 33 Inconvenientes de la implementacioacuten
            • 34 Diagrama de flujo del control PID digital
            • 35 Ancho de pulso para el control y velocidad de los motores servo-continuos
            • 36 Obtencioacuten de los coeficientes de los teacuterminos PID
              • 4 Materiales
                • 41 Software utilizado
                • 42 Plataforma roboacutetica
                • 43 Lenguaje de programacioacuten
                  • 5 Implementacioacuten
                    • 51 Modificaciones al boe-bot
                    • 52 Sensor de distancia
                    • 53 Alimentacioacuten eleacutectrica
                    • 54 Posicioacuten de equilibrio natural del boe-bot
                    • 55 Transferencia de los programas
                    • 56 Programa para el stamp BS2
                      • 6 Resultados
                        • 61 Trabajo observado
                        • 62 Aceptacioacuten
                          • 7 Conclusioacuten
                          • 8 Trabajo a futuro
                          • Iacutendice de figuras
                          • Referencias
                          • Revisioacuten
Page 18: Gabs

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 16

sum1 VAR Word rsquoRepresenta el error anterior al actual

sum2 VAR Word rsquoRepresenta el error anterior al anterior del actual

integrate VAR Word rsquoTeacutermino integral

derivate VAR Word rsquoTeacutermino derivativo

time CON 2510000 rsquoTiempo estimativo entre la obtencioacuten de cada teacutermino

rsquo------Comienzo del programa principal-------

rsquo Incializacioacuten de las variables

offset = pulseZero

sum1 = 0

sum2 = 0

offsetf = 0

PAUSE 2000 rsquoPausa de 2 segundos

SetPoint = 170 rsquoSeteo manual de la posicioacuten a buscar

offsetf = SetPoint

DO rsquoBucle del programa principal

GOSUB Measure rsquoMedicioacuten de la distancia

GOSUB PID rsquoAlgoritmo de control PID

GOSUB Send_Pulse rsquoModulacioacuten de pulso en los motores

LOOP

rsquo-------Subrutinas--------

PID

IF (front ltsetpoint) THEN rsquoHay que revisar el signo y actuar seguacuten para la correccioacuten

error = setpoint - front

integrate = (sum1 + sum2 - error) time 3 rsquoTeacutermino integral

IF error gtsum1 THEN rsquoRevisamos el signo y calculamos el teacutermino derivativo

derivate = (error - sum1) time rsquoEl teacutermino derivativo es en realidad la secante miacutenima

que podemos hallar

ELSE

derivate = (sum1 - error) time

ENDIF

p = error kp + integrate ki + derivate kd rsquoControl PID completo

pulseLeft = p + offset rsquoModulando el ancho del pulso seguacuten se necesite corregir

pulseRight = - p + offset rsquohacia adelante o hacia atraacutes

ENDIF

IF (front gtsetpoint) THEN rsquoEsta parte del programa realiza lo mismo que la anterior soacutelo que

adecua el signo

error = front - setpoint

integrate = (sum1 + sum2 + error) time 3

IF error gtsum1 THEN

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 17

derivate = (error - sum1) time

ELSE

derivate = (sum1 - error) time

ENDIF

p = error kp + integrate ki + derivate kd

pulseLeft = p + offset

pulseRight = - p + offset

ENDIF

sum2 = sum1

sum1 = error

RETURN

rsquo Esta subrutina devuelve la distancia utilizando el sensor de contraste

Measure

HIGH 5

RCTIME 51front

front = front - offsetf

RETURN

rsquo Esta subrutina se encarga de enviar el PWM correcto hacia los motores

Send_Pulse

PULSOUT Leftservo pulseRight

PULSOUT Rightservo pulseLeft

RETURN

6 Resultados

61 Trabajo observado El sistema termino realizando equilibrio y a medidaque el control progresaba en funcionalidad como en tunning8 fue mostrando unaclara mejora No se pudo implementar un sistema que permitiera cotejar las mejorasmaacutes que por el meacutetodo de la observacioacuten Eventualmente el equilibrio en torno ala posicioacuten de equilibrio se obtuvo y demostroacute ser significativamente mejor de lasprimeras pruebas utilizando un control proporcional

62 Aceptacioacuten El programa de control PID logroacute el objetivo permitioacute re-alizar el proyecto en tiempo y forma ademaacutes de sortear una gran cantidad deinconvenientes

8En este caso el seteo de los coeficientes de los teacuterminos PID

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 18

7 Conclusioacuten

Aunque el objetivo inicial de lograr un peacutendulo invertido9 no se alcanzo estaaproximacioacuten es evidentemente un claro progreso hacia la resolucioacuten del mismoAunque el trabajo podriacutea haber sido maacutes ldquoexitosordquo en lo personal fue satisfactoriolograr una solucioacuten y que ademaacutes la misma es bastante aceptable

La estrategia de control PID dejo en evidencia ser a prueba de concepto y logroacuteun importante objetivo a un costo de tiempo dinero y conocimientos10 muy bajos

El boe-bot demostroacute ser una plataforma muy simple pero no asiacute despreciablePermitioacute trabajar raacutepidamente al momento de la programacioacuten pero como contralas limitaciones son algunas veces numerosas pero lo cierto es que es un hardwaredisentildeado para hobbistas y que intenta ser fiel a ello Sin embargo fue muy intere-sante trabajar con el mismo para lograr un ldquoprototipordquo de solucioacuten al problema

Hace muchos antildeos trabaje en instrumentacioacuten en la industria del petroacuteleo y metopaba con sistemas PID de control en muchos de los equipos que se reparaban quecontrolaban desde vaacutelvulas electro-hidraacuteulicas hasta motores de bombas y tornil-los11 para transportar arena Cuando puede estudiar Ing Electroacutenica fue en granmedida por la fascinacioacuten que me produciacutean estos sistemas Asiacute que esta experien-cia fue muy gratificante y me demostroacute el trabajo que conlleva realizar algunas deestas tareas

8 Trabajo a futuro

Muchos puntos no se pudieron estudiar ni tratar los siguientes son los maacutes im-portantes seguacuten un criterio personal que se fue generando a medida que el proyectoavanzaba

Modelizar el hardware con los conocimientos que se adquieren en la materiasistema de controlEstudiar la utilizacioacuten de otros tipos de sensores para la medicioacuten de ladistancia posicionalLograr un equipo de trabajo para incrementar la productividadAunque se abordo una solucioacuten de fuzzy logic12 basada en un ejemplorealizado en python no se pudo implementar Lo ideal seriacutea presentar unasolucioacuten de sistemas hiacutebridosAyudar a la fiacutesica del problema resuelta agregando maacutes peso en la parteinferior cerca al eje de pivoteo

Iacutendice de figuras

11 Posicioacuten de equilibrio del boe-bot self-balanced 221 Diagrama de fuerzas que actuacutean sobre el peacutendulo invertido claacutesico 322 Diagrama de flujo del control PID 431 Diagrama simplificado del programa 732 Diagrama de flujo del programa principal 833 Rutina de medicioacuten 834 Rutina de caacutelculos 935 Rutina de modulacioacuten 9

9Caso claacutesico de control10Sobre sistemas de control11Tipo de Arquiacutemedes12Loacutegica difusa

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 19

36 Un tren de pulsos de 13 ms hace rotar el servo a maacutexima velocidad ensentido de las agujas del reloj 9

37 Un tren de pulsos de 17 ms hace rotar el servo a maacutexima velocidad ensentido contrario al de las agujas del reloj 9

41 Boe-bot 1142 Tarjeta electroacutenica del boe-bot 1243 BS2 uno de los ldquocerebrosrdquo del boebot 1351 Modificaciones al boe-bot posicioacuten del moacutedulo QTI 14

Referencias[1] httpenwikipediaorgwikiPID_controller[2] ldquoModelado y control del peacutendulo invertido sobre carro mediante sistemas hiacutebridosrdquo por Fer-

nando Bote Ortega Universidad de Sevilla[3] rdquoControl of an Inverted Pendulumrdquo por Johnny Lam[4] httpletsmakerobotscomnode22232[5] rdquoBASIC Stamp Syntax and Reference Manualrdquo Version 22 ISBN 1-928982-32-8[6] rdquoPBASIC Language Basicsrdquo Dhinesh Sasidaran Octubre 14 2002[7] rdquoMicrobot PARALLAX Boe - Botrdquo Caacutendido Garciacutea Barroacuten[8] rdquoRobotics with the Boe-Bot Student Guide VERSION 22rdquo wwwparallaxcomdldocs

bookseduroboticsv2_2pdf[9] rdquoMeacutetodo baacutesico para implementar un controlador digital PID en un microcontrolador PIC

para el desarrollo de aplicaciones de bajo costo (Aplicaciones en control de Potencia y laIndustria)rdquo Ilber Adonayt Ruge Ruge Universidad de Cundinamarca Grupo de Investigacioacutenen Tecnologiacuteas de la Informacioacuten y las Comunicaciones GITEINCO Fusagasuga ndash Colombia

[10] rdquoiquestCoacutemo realizar un informe de invetigacioacutenrdquo DrEnrique Teraacuten[11] rdquoDigital PID Controllersrdquo DrVarodom Toochinda wwwdewinzcomdocsecspidpdf[12] rdquoSistemas de control digitalrdquo Benjamin C Kuo Editorial Grupo Patria Cultural ISBN 968-

26-1292[13] rdquoSistemas de control modernordquo Richard C Dorf y Robert H Bishop Deacutecima edicioacuten Edi-

torial Pearson Prentice Hall ISBN 84-205-4401-9

Revisioacuten

101210 - El presente texto es una adaptacioacuten de la versioacuten original titula-da ldquoAproximacioacuten a la solucioacuten del peacutendulo invertido claacutesicordquo Esta modifi-cacioacuten fue realizada con el propoacutesito de poder publicar mi trabajo con maacutessoltura

GABS (Get Another Boe-bot Selfbalanced)copy CopyLeft 2010 Nelson G LombardoPrimera edicioacuten Noviembre 2010Esta documentacioacuten esta licenciada bajo los teacuterminos de la Licencia GNU para

la Documentacioacuten Libre Ver en httpwwwgnuorgcopyleftThis documentation is licensed under the terms of the GNU Free Documentation

License See httpwwwgnuorgcopyleft

E-mail address nelsonlombardogmailcomURL httpetech-nelsonblogspotcom201011primer-pid-funcional-en-el-boebothtmlCurrent address Neuqueacuten Capital Neuqueacuten

  • Contents
  • 1 Introduccioacuten
    • 11 Problema
    • 12 Problema a resolver
    • 13 Alcance
    • 14 Objetivos
      • 2 Marco teoacuterico
        • 21 Peacutendulo claacutesico
        • 22 PID
        • 23 PID digital
        • 24 Concepto PID en referencia al proyecto
        • 25 Retrasos en sistemas de control basados en micropocesadores
          • 3 Disentildeo metodoloacutegico
            • 31 Eleccioacuten del control
            • 32 Trabajo a realizar
            • 33 Inconvenientes de la implementacioacuten
            • 34 Diagrama de flujo del control PID digital
            • 35 Ancho de pulso para el control y velocidad de los motores servo-continuos
            • 36 Obtencioacuten de los coeficientes de los teacuterminos PID
              • 4 Materiales
                • 41 Software utilizado
                • 42 Plataforma roboacutetica
                • 43 Lenguaje de programacioacuten
                  • 5 Implementacioacuten
                    • 51 Modificaciones al boe-bot
                    • 52 Sensor de distancia
                    • 53 Alimentacioacuten eleacutectrica
                    • 54 Posicioacuten de equilibrio natural del boe-bot
                    • 55 Transferencia de los programas
                    • 56 Programa para el stamp BS2
                      • 6 Resultados
                        • 61 Trabajo observado
                        • 62 Aceptacioacuten
                          • 7 Conclusioacuten
                          • 8 Trabajo a futuro
                          • Iacutendice de figuras
                          • Referencias
                          • Revisioacuten
Page 19: Gabs

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 17

derivate = (error - sum1) time

ELSE

derivate = (sum1 - error) time

ENDIF

p = error kp + integrate ki + derivate kd

pulseLeft = p + offset

pulseRight = - p + offset

ENDIF

sum2 = sum1

sum1 = error

RETURN

rsquo Esta subrutina devuelve la distancia utilizando el sensor de contraste

Measure

HIGH 5

RCTIME 51front

front = front - offsetf

RETURN

rsquo Esta subrutina se encarga de enviar el PWM correcto hacia los motores

Send_Pulse

PULSOUT Leftservo pulseRight

PULSOUT Rightservo pulseLeft

RETURN

6 Resultados

61 Trabajo observado El sistema termino realizando equilibrio y a medidaque el control progresaba en funcionalidad como en tunning8 fue mostrando unaclara mejora No se pudo implementar un sistema que permitiera cotejar las mejorasmaacutes que por el meacutetodo de la observacioacuten Eventualmente el equilibrio en torno ala posicioacuten de equilibrio se obtuvo y demostroacute ser significativamente mejor de lasprimeras pruebas utilizando un control proporcional

62 Aceptacioacuten El programa de control PID logroacute el objetivo permitioacute re-alizar el proyecto en tiempo y forma ademaacutes de sortear una gran cantidad deinconvenientes

8En este caso el seteo de los coeficientes de los teacuterminos PID

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 18

7 Conclusioacuten

Aunque el objetivo inicial de lograr un peacutendulo invertido9 no se alcanzo estaaproximacioacuten es evidentemente un claro progreso hacia la resolucioacuten del mismoAunque el trabajo podriacutea haber sido maacutes ldquoexitosordquo en lo personal fue satisfactoriolograr una solucioacuten y que ademaacutes la misma es bastante aceptable

La estrategia de control PID dejo en evidencia ser a prueba de concepto y logroacuteun importante objetivo a un costo de tiempo dinero y conocimientos10 muy bajos

El boe-bot demostroacute ser una plataforma muy simple pero no asiacute despreciablePermitioacute trabajar raacutepidamente al momento de la programacioacuten pero como contralas limitaciones son algunas veces numerosas pero lo cierto es que es un hardwaredisentildeado para hobbistas y que intenta ser fiel a ello Sin embargo fue muy intere-sante trabajar con el mismo para lograr un ldquoprototipordquo de solucioacuten al problema

Hace muchos antildeos trabaje en instrumentacioacuten en la industria del petroacuteleo y metopaba con sistemas PID de control en muchos de los equipos que se reparaban quecontrolaban desde vaacutelvulas electro-hidraacuteulicas hasta motores de bombas y tornil-los11 para transportar arena Cuando puede estudiar Ing Electroacutenica fue en granmedida por la fascinacioacuten que me produciacutean estos sistemas Asiacute que esta experien-cia fue muy gratificante y me demostroacute el trabajo que conlleva realizar algunas deestas tareas

8 Trabajo a futuro

Muchos puntos no se pudieron estudiar ni tratar los siguientes son los maacutes im-portantes seguacuten un criterio personal que se fue generando a medida que el proyectoavanzaba

Modelizar el hardware con los conocimientos que se adquieren en la materiasistema de controlEstudiar la utilizacioacuten de otros tipos de sensores para la medicioacuten de ladistancia posicionalLograr un equipo de trabajo para incrementar la productividadAunque se abordo una solucioacuten de fuzzy logic12 basada en un ejemplorealizado en python no se pudo implementar Lo ideal seriacutea presentar unasolucioacuten de sistemas hiacutebridosAyudar a la fiacutesica del problema resuelta agregando maacutes peso en la parteinferior cerca al eje de pivoteo

Iacutendice de figuras

11 Posicioacuten de equilibrio del boe-bot self-balanced 221 Diagrama de fuerzas que actuacutean sobre el peacutendulo invertido claacutesico 322 Diagrama de flujo del control PID 431 Diagrama simplificado del programa 732 Diagrama de flujo del programa principal 833 Rutina de medicioacuten 834 Rutina de caacutelculos 935 Rutina de modulacioacuten 9

9Caso claacutesico de control10Sobre sistemas de control11Tipo de Arquiacutemedes12Loacutegica difusa

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 19

36 Un tren de pulsos de 13 ms hace rotar el servo a maacutexima velocidad ensentido de las agujas del reloj 9

37 Un tren de pulsos de 17 ms hace rotar el servo a maacutexima velocidad ensentido contrario al de las agujas del reloj 9

41 Boe-bot 1142 Tarjeta electroacutenica del boe-bot 1243 BS2 uno de los ldquocerebrosrdquo del boebot 1351 Modificaciones al boe-bot posicioacuten del moacutedulo QTI 14

Referencias[1] httpenwikipediaorgwikiPID_controller[2] ldquoModelado y control del peacutendulo invertido sobre carro mediante sistemas hiacutebridosrdquo por Fer-

nando Bote Ortega Universidad de Sevilla[3] rdquoControl of an Inverted Pendulumrdquo por Johnny Lam[4] httpletsmakerobotscomnode22232[5] rdquoBASIC Stamp Syntax and Reference Manualrdquo Version 22 ISBN 1-928982-32-8[6] rdquoPBASIC Language Basicsrdquo Dhinesh Sasidaran Octubre 14 2002[7] rdquoMicrobot PARALLAX Boe - Botrdquo Caacutendido Garciacutea Barroacuten[8] rdquoRobotics with the Boe-Bot Student Guide VERSION 22rdquo wwwparallaxcomdldocs

bookseduroboticsv2_2pdf[9] rdquoMeacutetodo baacutesico para implementar un controlador digital PID en un microcontrolador PIC

para el desarrollo de aplicaciones de bajo costo (Aplicaciones en control de Potencia y laIndustria)rdquo Ilber Adonayt Ruge Ruge Universidad de Cundinamarca Grupo de Investigacioacutenen Tecnologiacuteas de la Informacioacuten y las Comunicaciones GITEINCO Fusagasuga ndash Colombia

[10] rdquoiquestCoacutemo realizar un informe de invetigacioacutenrdquo DrEnrique Teraacuten[11] rdquoDigital PID Controllersrdquo DrVarodom Toochinda wwwdewinzcomdocsecspidpdf[12] rdquoSistemas de control digitalrdquo Benjamin C Kuo Editorial Grupo Patria Cultural ISBN 968-

26-1292[13] rdquoSistemas de control modernordquo Richard C Dorf y Robert H Bishop Deacutecima edicioacuten Edi-

torial Pearson Prentice Hall ISBN 84-205-4401-9

Revisioacuten

101210 - El presente texto es una adaptacioacuten de la versioacuten original titula-da ldquoAproximacioacuten a la solucioacuten del peacutendulo invertido claacutesicordquo Esta modifi-cacioacuten fue realizada con el propoacutesito de poder publicar mi trabajo con maacutessoltura

GABS (Get Another Boe-bot Selfbalanced)copy CopyLeft 2010 Nelson G LombardoPrimera edicioacuten Noviembre 2010Esta documentacioacuten esta licenciada bajo los teacuterminos de la Licencia GNU para

la Documentacioacuten Libre Ver en httpwwwgnuorgcopyleftThis documentation is licensed under the terms of the GNU Free Documentation

License See httpwwwgnuorgcopyleft

E-mail address nelsonlombardogmailcomURL httpetech-nelsonblogspotcom201011primer-pid-funcional-en-el-boebothtmlCurrent address Neuqueacuten Capital Neuqueacuten

  • Contents
  • 1 Introduccioacuten
    • 11 Problema
    • 12 Problema a resolver
    • 13 Alcance
    • 14 Objetivos
      • 2 Marco teoacuterico
        • 21 Peacutendulo claacutesico
        • 22 PID
        • 23 PID digital
        • 24 Concepto PID en referencia al proyecto
        • 25 Retrasos en sistemas de control basados en micropocesadores
          • 3 Disentildeo metodoloacutegico
            • 31 Eleccioacuten del control
            • 32 Trabajo a realizar
            • 33 Inconvenientes de la implementacioacuten
            • 34 Diagrama de flujo del control PID digital
            • 35 Ancho de pulso para el control y velocidad de los motores servo-continuos
            • 36 Obtencioacuten de los coeficientes de los teacuterminos PID
              • 4 Materiales
                • 41 Software utilizado
                • 42 Plataforma roboacutetica
                • 43 Lenguaje de programacioacuten
                  • 5 Implementacioacuten
                    • 51 Modificaciones al boe-bot
                    • 52 Sensor de distancia
                    • 53 Alimentacioacuten eleacutectrica
                    • 54 Posicioacuten de equilibrio natural del boe-bot
                    • 55 Transferencia de los programas
                    • 56 Programa para el stamp BS2
                      • 6 Resultados
                        • 61 Trabajo observado
                        • 62 Aceptacioacuten
                          • 7 Conclusioacuten
                          • 8 Trabajo a futuro
                          • Iacutendice de figuras
                          • Referencias
                          • Revisioacuten
Page 20: Gabs

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 18

7 Conclusioacuten

Aunque el objetivo inicial de lograr un peacutendulo invertido9 no se alcanzo estaaproximacioacuten es evidentemente un claro progreso hacia la resolucioacuten del mismoAunque el trabajo podriacutea haber sido maacutes ldquoexitosordquo en lo personal fue satisfactoriolograr una solucioacuten y que ademaacutes la misma es bastante aceptable

La estrategia de control PID dejo en evidencia ser a prueba de concepto y logroacuteun importante objetivo a un costo de tiempo dinero y conocimientos10 muy bajos

El boe-bot demostroacute ser una plataforma muy simple pero no asiacute despreciablePermitioacute trabajar raacutepidamente al momento de la programacioacuten pero como contralas limitaciones son algunas veces numerosas pero lo cierto es que es un hardwaredisentildeado para hobbistas y que intenta ser fiel a ello Sin embargo fue muy intere-sante trabajar con el mismo para lograr un ldquoprototipordquo de solucioacuten al problema

Hace muchos antildeos trabaje en instrumentacioacuten en la industria del petroacuteleo y metopaba con sistemas PID de control en muchos de los equipos que se reparaban quecontrolaban desde vaacutelvulas electro-hidraacuteulicas hasta motores de bombas y tornil-los11 para transportar arena Cuando puede estudiar Ing Electroacutenica fue en granmedida por la fascinacioacuten que me produciacutean estos sistemas Asiacute que esta experien-cia fue muy gratificante y me demostroacute el trabajo que conlleva realizar algunas deestas tareas

8 Trabajo a futuro

Muchos puntos no se pudieron estudiar ni tratar los siguientes son los maacutes im-portantes seguacuten un criterio personal que se fue generando a medida que el proyectoavanzaba

Modelizar el hardware con los conocimientos que se adquieren en la materiasistema de controlEstudiar la utilizacioacuten de otros tipos de sensores para la medicioacuten de ladistancia posicionalLograr un equipo de trabajo para incrementar la productividadAunque se abordo una solucioacuten de fuzzy logic12 basada en un ejemplorealizado en python no se pudo implementar Lo ideal seriacutea presentar unasolucioacuten de sistemas hiacutebridosAyudar a la fiacutesica del problema resuelta agregando maacutes peso en la parteinferior cerca al eje de pivoteo

Iacutendice de figuras

11 Posicioacuten de equilibrio del boe-bot self-balanced 221 Diagrama de fuerzas que actuacutean sobre el peacutendulo invertido claacutesico 322 Diagrama de flujo del control PID 431 Diagrama simplificado del programa 732 Diagrama de flujo del programa principal 833 Rutina de medicioacuten 834 Rutina de caacutelculos 935 Rutina de modulacioacuten 9

9Caso claacutesico de control10Sobre sistemas de control11Tipo de Arquiacutemedes12Loacutegica difusa

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 19

36 Un tren de pulsos de 13 ms hace rotar el servo a maacutexima velocidad ensentido de las agujas del reloj 9

37 Un tren de pulsos de 17 ms hace rotar el servo a maacutexima velocidad ensentido contrario al de las agujas del reloj 9

41 Boe-bot 1142 Tarjeta electroacutenica del boe-bot 1243 BS2 uno de los ldquocerebrosrdquo del boebot 1351 Modificaciones al boe-bot posicioacuten del moacutedulo QTI 14

Referencias[1] httpenwikipediaorgwikiPID_controller[2] ldquoModelado y control del peacutendulo invertido sobre carro mediante sistemas hiacutebridosrdquo por Fer-

nando Bote Ortega Universidad de Sevilla[3] rdquoControl of an Inverted Pendulumrdquo por Johnny Lam[4] httpletsmakerobotscomnode22232[5] rdquoBASIC Stamp Syntax and Reference Manualrdquo Version 22 ISBN 1-928982-32-8[6] rdquoPBASIC Language Basicsrdquo Dhinesh Sasidaran Octubre 14 2002[7] rdquoMicrobot PARALLAX Boe - Botrdquo Caacutendido Garciacutea Barroacuten[8] rdquoRobotics with the Boe-Bot Student Guide VERSION 22rdquo wwwparallaxcomdldocs

bookseduroboticsv2_2pdf[9] rdquoMeacutetodo baacutesico para implementar un controlador digital PID en un microcontrolador PIC

para el desarrollo de aplicaciones de bajo costo (Aplicaciones en control de Potencia y laIndustria)rdquo Ilber Adonayt Ruge Ruge Universidad de Cundinamarca Grupo de Investigacioacutenen Tecnologiacuteas de la Informacioacuten y las Comunicaciones GITEINCO Fusagasuga ndash Colombia

[10] rdquoiquestCoacutemo realizar un informe de invetigacioacutenrdquo DrEnrique Teraacuten[11] rdquoDigital PID Controllersrdquo DrVarodom Toochinda wwwdewinzcomdocsecspidpdf[12] rdquoSistemas de control digitalrdquo Benjamin C Kuo Editorial Grupo Patria Cultural ISBN 968-

26-1292[13] rdquoSistemas de control modernordquo Richard C Dorf y Robert H Bishop Deacutecima edicioacuten Edi-

torial Pearson Prentice Hall ISBN 84-205-4401-9

Revisioacuten

101210 - El presente texto es una adaptacioacuten de la versioacuten original titula-da ldquoAproximacioacuten a la solucioacuten del peacutendulo invertido claacutesicordquo Esta modifi-cacioacuten fue realizada con el propoacutesito de poder publicar mi trabajo con maacutessoltura

GABS (Get Another Boe-bot Selfbalanced)copy CopyLeft 2010 Nelson G LombardoPrimera edicioacuten Noviembre 2010Esta documentacioacuten esta licenciada bajo los teacuterminos de la Licencia GNU para

la Documentacioacuten Libre Ver en httpwwwgnuorgcopyleftThis documentation is licensed under the terms of the GNU Free Documentation

License See httpwwwgnuorgcopyleft

E-mail address nelsonlombardogmailcomURL httpetech-nelsonblogspotcom201011primer-pid-funcional-en-el-boebothtmlCurrent address Neuqueacuten Capital Neuqueacuten

  • Contents
  • 1 Introduccioacuten
    • 11 Problema
    • 12 Problema a resolver
    • 13 Alcance
    • 14 Objetivos
      • 2 Marco teoacuterico
        • 21 Peacutendulo claacutesico
        • 22 PID
        • 23 PID digital
        • 24 Concepto PID en referencia al proyecto
        • 25 Retrasos en sistemas de control basados en micropocesadores
          • 3 Disentildeo metodoloacutegico
            • 31 Eleccioacuten del control
            • 32 Trabajo a realizar
            • 33 Inconvenientes de la implementacioacuten
            • 34 Diagrama de flujo del control PID digital
            • 35 Ancho de pulso para el control y velocidad de los motores servo-continuos
            • 36 Obtencioacuten de los coeficientes de los teacuterminos PID
              • 4 Materiales
                • 41 Software utilizado
                • 42 Plataforma roboacutetica
                • 43 Lenguaje de programacioacuten
                  • 5 Implementacioacuten
                    • 51 Modificaciones al boe-bot
                    • 52 Sensor de distancia
                    • 53 Alimentacioacuten eleacutectrica
                    • 54 Posicioacuten de equilibrio natural del boe-bot
                    • 55 Transferencia de los programas
                    • 56 Programa para el stamp BS2
                      • 6 Resultados
                        • 61 Trabajo observado
                        • 62 Aceptacioacuten
                          • 7 Conclusioacuten
                          • 8 Trabajo a futuro
                          • Iacutendice de figuras
                          • Referencias
                          • Revisioacuten
Page 21: Gabs

GABS (GET ANOTHER BOE-BOT SELFBALANCED) 19

36 Un tren de pulsos de 13 ms hace rotar el servo a maacutexima velocidad ensentido de las agujas del reloj 9

37 Un tren de pulsos de 17 ms hace rotar el servo a maacutexima velocidad ensentido contrario al de las agujas del reloj 9

41 Boe-bot 1142 Tarjeta electroacutenica del boe-bot 1243 BS2 uno de los ldquocerebrosrdquo del boebot 1351 Modificaciones al boe-bot posicioacuten del moacutedulo QTI 14

Referencias[1] httpenwikipediaorgwikiPID_controller[2] ldquoModelado y control del peacutendulo invertido sobre carro mediante sistemas hiacutebridosrdquo por Fer-

nando Bote Ortega Universidad de Sevilla[3] rdquoControl of an Inverted Pendulumrdquo por Johnny Lam[4] httpletsmakerobotscomnode22232[5] rdquoBASIC Stamp Syntax and Reference Manualrdquo Version 22 ISBN 1-928982-32-8[6] rdquoPBASIC Language Basicsrdquo Dhinesh Sasidaran Octubre 14 2002[7] rdquoMicrobot PARALLAX Boe - Botrdquo Caacutendido Garciacutea Barroacuten[8] rdquoRobotics with the Boe-Bot Student Guide VERSION 22rdquo wwwparallaxcomdldocs

bookseduroboticsv2_2pdf[9] rdquoMeacutetodo baacutesico para implementar un controlador digital PID en un microcontrolador PIC

para el desarrollo de aplicaciones de bajo costo (Aplicaciones en control de Potencia y laIndustria)rdquo Ilber Adonayt Ruge Ruge Universidad de Cundinamarca Grupo de Investigacioacutenen Tecnologiacuteas de la Informacioacuten y las Comunicaciones GITEINCO Fusagasuga ndash Colombia

[10] rdquoiquestCoacutemo realizar un informe de invetigacioacutenrdquo DrEnrique Teraacuten[11] rdquoDigital PID Controllersrdquo DrVarodom Toochinda wwwdewinzcomdocsecspidpdf[12] rdquoSistemas de control digitalrdquo Benjamin C Kuo Editorial Grupo Patria Cultural ISBN 968-

26-1292[13] rdquoSistemas de control modernordquo Richard C Dorf y Robert H Bishop Deacutecima edicioacuten Edi-

torial Pearson Prentice Hall ISBN 84-205-4401-9

Revisioacuten

101210 - El presente texto es una adaptacioacuten de la versioacuten original titula-da ldquoAproximacioacuten a la solucioacuten del peacutendulo invertido claacutesicordquo Esta modifi-cacioacuten fue realizada con el propoacutesito de poder publicar mi trabajo con maacutessoltura

GABS (Get Another Boe-bot Selfbalanced)copy CopyLeft 2010 Nelson G LombardoPrimera edicioacuten Noviembre 2010Esta documentacioacuten esta licenciada bajo los teacuterminos de la Licencia GNU para

la Documentacioacuten Libre Ver en httpwwwgnuorgcopyleftThis documentation is licensed under the terms of the GNU Free Documentation

License See httpwwwgnuorgcopyleft

E-mail address nelsonlombardogmailcomURL httpetech-nelsonblogspotcom201011primer-pid-funcional-en-el-boebothtmlCurrent address Neuqueacuten Capital Neuqueacuten

  • Contents
  • 1 Introduccioacuten
    • 11 Problema
    • 12 Problema a resolver
    • 13 Alcance
    • 14 Objetivos
      • 2 Marco teoacuterico
        • 21 Peacutendulo claacutesico
        • 22 PID
        • 23 PID digital
        • 24 Concepto PID en referencia al proyecto
        • 25 Retrasos en sistemas de control basados en micropocesadores
          • 3 Disentildeo metodoloacutegico
            • 31 Eleccioacuten del control
            • 32 Trabajo a realizar
            • 33 Inconvenientes de la implementacioacuten
            • 34 Diagrama de flujo del control PID digital
            • 35 Ancho de pulso para el control y velocidad de los motores servo-continuos
            • 36 Obtencioacuten de los coeficientes de los teacuterminos PID
              • 4 Materiales
                • 41 Software utilizado
                • 42 Plataforma roboacutetica
                • 43 Lenguaje de programacioacuten
                  • 5 Implementacioacuten
                    • 51 Modificaciones al boe-bot
                    • 52 Sensor de distancia
                    • 53 Alimentacioacuten eleacutectrica
                    • 54 Posicioacuten de equilibrio natural del boe-bot
                    • 55 Transferencia de los programas
                    • 56 Programa para el stamp BS2
                      • 6 Resultados
                        • 61 Trabajo observado
                        • 62 Aceptacioacuten
                          • 7 Conclusioacuten
                          • 8 Trabajo a futuro
                          • Iacutendice de figuras
                          • Referencias
                          • Revisioacuten