48
Implementació d'un Controlador PID En Lego Mindstorm NXT. David González Ros Abel Sánchez Martínez 2on Batxillerat Tecnològic Curs 2010 - 2011

Implementació d'un controlador PID en Lego Mindstorn NXT

Embed Size (px)

DESCRIPTION

Treball de recerca de David González Ros i Abel Sánchez Martínez.

Citation preview

Page 1: Implementació d'un controlador PID en Lego Mindstorn NXT

Implementació d'unControlador PID

En Lego Mindstorm NXT.

David González RosAbel Sánchez Martínez

2on Batxillerat TecnològicCurs 2010 - 2011

Page 2: Implementació d'un controlador PID en Lego Mindstorn NXT

Índex: 1 Introducció. Pàg. 02 2 Introducció a la robòtica. Pàg. 04 3 Lego Mindstorm. Pàg. 07

3.1 Història dels Lego Mindstorm. Pàg. 07 3.2 Elements del Lego Mindstorm. Pàg. 08

3.2.1 Bloc NXT. Pàg. 08 3.2.2 Servo motors. Pàg. 10 3.2.3 Sensors. Pàg. 10

3.3 Entorn de programació. Pàg. 14 3.3.1 Entorn gràfic de Lego . Pàg. 14 3.3.2 Tipus de programació. Pàg. 17

3.4 Disseny en 3D. Pàg. 18 3.5 Desenvolupament de projectes amb NXT. Pàg. 20

4 Disseny d'un robot seguidor d'objectes. Pàg. 23 4.1 Funcionament. Pàg. 23 4.2 Disseny de la Placa de Sensors. Pàg. 24

4.2.1 Sistema de comunicació (BusI2C). Pàg. 25 5 Sistemes de control. Pàg. 28

5.1 Introducció (explicació PID). Pàg. 29 5.2 Acció Inicial. Pàg. 32 5.3 Tot o res. Pàg. 32 5.4 Acció Proporcional. Pàg. 33 5.5 Acció Derivativa. Pàg. 33 5.6 Acció Integral. Pàg. 33

6 Estudi dels diferents sistemes de control. Pàg. 35 7 Desenvolupament d'altres aplicacions. Pàg. 41 8 Conclusions. Pàg. 43 9 Fonts d'informació. Pàg. 47

David González i Abel Sánchez 1

Page 3: Implementació d'un controlador PID en Lego Mindstorn NXT

1 Introducció.

Aquest treball de recerca esta basat en la robòtica educativa que presenta la companyia comercial Lego mindstorm. Ens centrem en la creació d’un robot seguidor d’objectes amb sensors analògics Sharp GP2D120, els quals es comuniquen amb el bloc NXT amb un BUS I2C, i la implementació d'un controlador PID.

Aquest controlador té tres funcions diferents. La funció proporcional ha d'amplificar l'error per a millorar la resposta. La funció derivativa ha d'intentar anticipar-se al error, també busca un millor rendiment en la resposta. L'última funció, l'integral, busca minimitzar l'error permanent.

El treball d'investigació que presentem pretén analitzar el comportament d’un robot de Lego mindstorm amb un controlador proporcional integral derivatiu a través de dos sensors SHARP GP2D120. En concret, volem centrar el nostre estudi en aconseguir la màxima precisió del controlador variant les diferents constants del PID, també volem estudiar el comportament del Lego Nxt quan adaptem una placa amb dos sensors analògics d’ultrasò externs al Lego.

David González i Abel Sánchez 2

Page 4: Implementació d'un controlador PID en Lego Mindstorn NXT

L'objectiu prioritari del nostre treball era aconseguir un robot que mantingués una distància X respecte un objecte mitjançant dos sensors d’ultrasò. Aquest robot, l’hem construït amb peces de Lego Mindstorm, adaptades a la construcció de robots, i amb una placa de circuit imprès que controla els dos sensors analògics mitjançant un Bus-I2C.

El nostre objectiu secundari era aconseguir que el robot mantingués la distància X i que a la vegada girés amb l’objecte. Això ho hem intentat amb un doble PID, però per causa de les limitacions morfològiques del Lego i el seu entorn de programació no ha sigut possible.

David González i Abel Sánchez 3

Page 5: Implementació d'un controlador PID en Lego Mindstorn NXT

2 Introducció a la robòtica.

L’any 1921 va ser introduïda la paraula txeca robota, que significa servitud o treball monòton, en l'obra de ciència ficció Robots Universals de Rossum1, per referir-se al que avui en dia en diríem robot.El Gran Diccionari de la llengua catalana2 defineix robot com:

Màquina automàtica capaç de manipular objectes, executar operacions i moviments diversos segons un programa que pot ésser modificable o adaptable, i que pot anar equipat amb sensors per tal de detectar els senyals d'entrada i les condicions ambientals.

Aquesta definició només ens diu què és un robot, però no explica res sobre el més important, la transcendència d'aquestes màquines per al desenvolupament de la humanitat ja que en l'actualitat els robots ens relleven de tasques que poden ser repetitives o perilloses per a l'ésser humà. També milloren la qualitat de feines en les que és necessària una gran precisió i fins i tot ens permeten fer treballs irrealitzables per impossibilitats ja siguin físiques o d'altres tipus.

La robòtica és el conjunt d'estudis i tècniques que s'utilitzen per a la construcció i l'ús de robots.Aquesta branca de la tecnologia ha estat unida l'anhel humà de crear artefactes que facin feines per a nosaltres sense la nostra intervenció directa.

Fig. 01 Portada del llibre R.U.R

David González i Abel Sánchez 4

Page 6: Implementació d'un controlador PID en Lego Mindstorn NXT

Però la història de la robòtica no comença pas al segle XXI, Da Vinci en el segle XVIII va fer el disseny d'una espècie d'humanoide, entenem que amb l'objectiu de crear un robot. A finals del segle XIX Nikola Tesla construïa vehicles controlats per ràdio. Aquest gran avenç va ser utilitzat més tard per a la indústria nuclear, degut a la impossibilitat de contacte entre els elements nuclears i les persones. Després, cap a meitat del segle passat Georege C. Devol i Joseph F. Engelberger van construir un robot anomenat Unimate. Aquest invent va ser desenvolupat per a la manipulació de peces en llocs com General Motors. Cosa que ara encara s'utilitza en totes les fàbriques de producció en sèrie de cotxes.

Durant la dècada dels 70, la investigació en robòtica se centra en l'ús de sensors externs per a la seva utilització en tasques de manipulació. És també en aquests anys quan es consolida definitivament la presència de robots en les cadenes de muntatge i plantes industrials en l'àmbit mundial.D'aquesta manera se segueixen investigant encara nous sensors i la millora de la major part d'ells. Això és important perquè els robots ens eximeixen de fer tasques perilloses i desagradables, per tant és possible imaginar un món on feines com la construcció o medicina molt avançada puguin ser fetes per robots.Aquest tema va plantejar idees com per exemple si algun dia els robots podrien sortir del nostre control i pensar per ells sols. Aquest tema es va començar a tractar a mitjans del segle XX, quan Isaac Asimov va escriure el llibre Jo, robot on ell va proposar les 3 lleis de la robòtica.

David González i Abel Sánchez 5

Page 7: Implementació d'un controlador PID en Lego Mindstorn NXT

1.Un robot no pot fer mal a un ésser humà o, per inacció, permetre que un ésser humà prengui mal.

2.Un robot ha d'obeir les ordres dels éssers humans, excepte si entren en conflicte amb la primera llei.

3.Un robot ha de protegir la seva pròpia existència en la mesura que aquesta protecció no entri en conflicte amb la primera o la segona llei.

Fig. 02 Porada del llibre: “Yo, robot”

David González i Abel Sánchez 6

Page 8: Implementació d'un controlador PID en Lego Mindstorn NXT

3 Lego Mindstorm.

En aquest apartat ens centrem en explicar la història, els elements, l'entorn de programació i com fer un disseny en 3D, de manera virtual, de la plataforma principal que hem utilitzat per al nostre treball.

3.1 Història dels Lego Mindstorm.

Lego Mindstorm NXT és resultat de la col·laboració entre la marca de joguines Lego i l’institut Tecnològic de Massachusetts(MIT), originada al 1986, en virtut de la qual LEGO finança les investigacions del grup del MIT, però, a canvi, obté noves idees per als seus productes.Les investigacions i el treball del grup del MIT van desembocar en la programació de bloc, utilitzat en l’estudi complex i l’aprenentatge. La primera sèrie que van crear va sortir al mercat amb el nom de Lego Mindstorm RCX, al setembre de 1998. Els resultats d’aquest productes van ser molt bons, superant totes les expectatives.

El RCX , la primera generació de Lego, comptava amb una potència de 16KB de memòria ROM i 32 KB de RAM, també comptava amb tres entrades per sensors y tres sortides amb motors, a sobre d’un port d’infrarojos. La seva aparença era molt similar als blocs de Lego tradicionals, a les joguines.

Fig. 03 Lego RCX amb els sensors

David González i Abel Sánchez 7

Page 9: Implementació d'un controlador PID en Lego Mindstorn NXT

L’any 2006, després d’un període de negativitat en la línia LEGO Mindstorms, Lego va llençar al mercat el nou model, el bloc NXT, que millorava la capacitat de l’anterior. Aquest microcontrolador inclou, entre altres coses, una memòria flaix de 256kb, que el diferencia del bloc antecessor ja que

posseeix una major capacitat d'execució de programes, evitant processos incoherents de dades que produïen errors. A part, el bloc NXT té quatre entrades i tres sortides.

Fig. 04 Lego NXT amb els servomotors i els sensors

3.2 Elements del Lego Mindstorm.

A continuació expliquem els tres elements principals de Lego Mindstorm, el Bloc NXT que és el processador; els servomotors que són les sortides; i els sensors que són les entrades.

3.2.1 Bloc NXT.

El Bloc NXT és l'element imprescindible per al robot Lego. Deixant de banda les qüestions anatòmiques, el Bloc NXT desenvolupa les mateixes funcions que el nostre cervell, és a dir, rep informació per les entrades, en el cas del Bloc 4; les interpreta i dóna ordres a les sortides, 3. El controlador NXT és un controlador que disposa de convertidors ADC (d'analògic a digital), per a poder reutilitzar els sensors del sistema RCX. És molt versàtil i educatiu, ja que qualsevol persona el pot utilitzar i també pot donar un bon rendiment a un nivell de programació professional, utilitzant els diferents tipus de programació possibles.

David González i Abel Sánchez 8

Page 10: Implementació d'un controlador PID en Lego Mindstorn NXT

Aquest bloc és de plàstic sòlid, amb diversos punts on es poden connectar peces de Lego. A més, té quatre botons: un de color taronja que utilitzem com un On o Enter; el botó inferior a aquest s'utilitza per retrocedir o netejar la pantalla; els dos botons grisos de forma triangular s'utilitzen per desplaçar-se pel menú de Lego. També disposa d'un micròfon, un altaveu i un receptor de Bluetooth.

Fig. 05 Bloc NXT

A part, té tres sortides, un connector USB i quatre entrades on podem connectar els diversos actuadors o sensors de Lego, o com veurem algunes aplicacions creades per nosaltres mateixos.La seva alimentació utilitza sis piles AA d'1,5 V o bé la bateria de liti de sèrie. Totes dues fonts d'alimentació es poden extreure per la part posterior del Bloc NXT.El robot disposa de dos microcontroladors: l’ARM7 de 32 bits amb una memòria FLASH de 256 Kilobytes i una RAM de 64 Kilobytes i l’ATmega48 de 8 bits amb una memòria FLASH de 4 Kilobytes i una de RAM de 512 Bytes.

David González i Abel Sánchez 9

Page 11: Implementació d'un controlador PID en Lego Mindstorn NXT

3.2.2 Servo motors.

Els actuadors del LEGO Mindstorm es redueixen bàsicament a petits motors de corrent contínua. Aquest robot té una potència petita i un rang d'actuació reduït. Mitjançant l'ús de motors podem utilitzar qualsevol altre tipus d'actuadors que necessitem. Els motors, encara que tinguin una mida reduïda, al seu interior tenen un complex sistema d'engranatges i un sensor tacomètric. Podem trobar diversos punts d'unió per connectar-los amb la nostra construcció de Lego. El motor pot arribar, sense càrrega, a una velocitat de 160rpm, alimentat per 9V.

Fig. 06 Servomotor de Lego NXT

3.2.3 Sensors.

Un sensor és un element que actua com a dispositiu sensible a determinats estímuls de l’entorn. Aquests senyals, que el sensor capta, s’anomenen variables de treball. El funcionament del sensor consisteix en captar aquests estímuls per produir un senyal elèctric i transmetre’l a un altre dispositiu del circuit elèctric de manera pugi actuar.

David González i Abel Sánchez 10

Page 12: Implementació d'un controlador PID en Lego Mindstorn NXT

Al pac de Lego adquirit per nosaltres, podem distingir 4 sensors.

•El sensor de pressió o de contacte:

Aquest sensor també es coneix amb el nom de “final de cursa”. Es tracta d’un dispositiu que permet donar diferents informacions al robot, com ara saber on hi ha un objecte, gràcies al polsament directe d’una part del sensor. Forma part del grup de sensors electrònics de posició, ja que gràcies al polsador un robot es pot orientar en l’espai. Utilitza un senyal digital binari quan s'activa i es desactiva.

Fig. 07 Sensor de pressió de Lego NXT

•Sensor de llum infraroig:Un sensor de llum és un dispositiu fotoelèctric de posició que permet captar el grau d’intensitat lumínica de l’ambient, ja sigui per rebot d’una llum generada per un LED del propi sensor o per barrera, degut a una interferència de l’objecte en el senyal lluminós normal. El sensor de llum de Lego pot detectar la intensitat de llum per qualsevol de les dues maneres, ja que disposa d’un emissor de llum infraroig. El seu funcionament es basa en els fototransistors situats al

seu interior que transmeten un senyal elèctric al circuit a partir de la intensitat de llum que reben. Això permet donar visió al robot.

Fig. 08 Sensor de llum de Lego NXT

David González i Abel Sánchez 11

Page 13: Implementació d'un controlador PID en Lego Mindstorn NXT

•Sensor de so:Un sensor de so és un dispositiu de posició que capta diferents intensitats de so d’un espai proper. La unitat amb què es mesura la intensitat del so és el decibel (dB), una unitat relativa i logarítmica utilitzada en acústica. No obstant, el robot, per fer més fàcil la comprensió de les diferents mesures, utilitza una mesura percentual, que augmenta com més intens i potent és un so. El sensor de so Mindstorms NXT pot mesurar pressions de sons màximes de l’ordre de 90 dB. 0 dB. Fig. 09 Sensor de so de Lego NXT

•Sensor d'ultrasò:

Un sensor d’ultrasò és un dispositiu que permet orientar el robot en un espai. La seva funció principal és la de mesurar la distància a que es troba amb un objecte o un obstacle frontal. A més, pot detectar moviment i dóna sensibilitat al conjunt del robot. El mecanisme de funcionament en que es basa és semblant al sonar d’un submarí, ja que funciona a partir de l’emissió d’ultrasons que topen amb un objecte i reboten. Llavors, les ones són captades de nou pel receptor del sensor. Per calcular la distància respecte a aquest objecte, el controlador mesura l’interval de temps entre l’emissió i la recepció de l’eco dels impulsos emesos, sent coneixedor de la longitud de l’ona de so enviada. El sensor de Lego mesura distàncies de 5 fins a 250 centímetres amb un marge d'error que ronda els 3-5 centímetres; quan augmenta la velocitat, augmenta l'error.

Fig. 10 Sensor d'ultrasò de Lego NXT

David González i Abel Sánchez 12

Page 14: Implementació d'un controlador PID en Lego Mindstorn NXT

Per al nostre treball utilitzem un sensor d'ultrasò SHARP GP2D120

perquè volíem millorar la precisió utilitzant dos sensors analògics, els quals són més econòmics que un sensor d'ultrasò de Lego.

Fig. 11 Sensor d'ultrasò SHARP GP2D120

•Sensor de temperatura:

El sensor de temperatura ens permet calcular el valor aproximat de temperatura, mitjançant la interacció d’un termistor en un dels extrems, generant un camp magnètic que permet la detecció de la temperatura del contingut del bloc que volem mesurar. Es un sensor analògic passiu que mesura el rang de temperatura entre -20ºC a +50ºC. Fig. 12 Sensor de temperatura

• Sensor electro-òptic:•El sensor EOPD detecta amb molta precisió objectes i petits

canvis de distancia. Utilitza una font de llum interna per detectar la presencia d’un objecte. Generant la seva pròpia font de llum , fent així possible que el robot es mogui per llocs molt lluminoses o obscures.

Fig. 13 Sensor electro-òptic

David González i Abel Sánchez 13

Page 15: Implementació d'un controlador PID en Lego Mindstorn NXT

3.3 Entorn de programació.

Lego Mindstorm NXT inclou un software de desenvolupament en blocs, per tant gràfic, basat en Labview, relativament senzill d'utilitzar, el qual funciona en Windows i Mac. Encara que si es vol programar amb més precisió o amb accés a un nivell més baix de la programació, és necessària l'existència d'un llenguatge de programació per entrada de text, més funcional i orientat a un ús més seriós que el proposat per Lego (que, no obstant, és bastant complet i útil per a començar a programar), ja que és com un joc.

Alguns dels altres llenguatges de programació són:

• El RobotC és un entorn que possibilita el llenguatge C. No és un programa gratuït. Disponible a la seva web (http://www.robotc.net/)

• El Labview és una eina gràfica per a fer proves, control i disseny mitjançant la programació. Utilitza un llenguatge anomenat G, d'aquí que el nostre entorn de programació sigui anomenat NXT-G, on la G simbolitza el llenguatge gràfic.

3.3.1 Entorn gràfic de Lego.

Al estar dissenyat per un públic molt ampli, presenta un funcionament molt simple. Inclou un tutorial que ens ensenya les bases per a programar i ofereix il·lustracions molt visuals en l'apartat “Ajuda”. L'NXT-G disposa d'un full de treball amb una icona immòbil que marca l'inici del programa. És important saber que podem crear seqüències paral·leles clicant a Shift just on volem crear una altre biga.Per a la nostra programació utilitzem l'anomenada Complette Palette. On trobem els següents blocs:

David González i Abel Sánchez 14

Page 16: Implementació d'un controlador PID en Lego Mindstorn NXT

Fig. 14 Entorn de programació de Lego NXT

•Common: El move Block és el bloc més utilitzat, s'utilitza per activar qualsevol dels 3 motor del NXT, per conjunt o separats. A més podem controlar la potència, la duració el tipus de gir parabòlic o l'estat dels motors en la següent acció.

Fig. 15 Move BlockEl Display Block ens permet mostrar un text, una imatge o una forma qualsevol a la pantalla del controlador (100 x 64 pixels).

Fig. 16 Display Block

David González i Abel Sánchez 15

Page 17: Implementació d'un controlador PID en Lego Mindstorn NXT

•Flow: En els quatre blocs de Flow hi ha un flux continu d'accions que desenvolupen en diferents funcions que tenen un paper molt important. Ja sigui dividint la seqüència o repetint-la de forma indefinida.

•Data: En quest grup trobem blocs que treballen exclusivament amb dades, ja sigui creant-les, modificant-es o emmagatzemant-les.

a)Compare Block: aquest bloc determina tres condicions sobre un valor numèric d'entrada: si és més gran, més petit o igual.

b)Math Block: Aquest bloc fa les operacions matemàtiques més bàsiques, sumar, restar, multiplicar o dividir; amb els valors d'entrada o valors fixes.

c)Range Block: Amb aquest bloc situem una dada dins o fora d'un interval, per tal de transmetre un senyal lògic.

David González i Abel Sánchez 16

Page 18: Implementació d'un controlador PID en Lego Mindstorn NXT

d)Variable Block: Aquest bloc emmagatzema valors numèrics fixes o resultants d'una operació anterior.

•Advanced: És el grup on trobem accions més complexes ja que, a més, podem importar-ne.

a)Number to text: Transforma dades en forma de nombres en text, per a poder treure-les per un display.

b)Bloc PCF8591-NX: Aquest bloc és un bloc importat per nosaltres, que fem servir per agafar dades des del BusI2C. En aquest bloc seleccionem diferents opcions com l'adreça del BUS o el port on es troba, a més de si és un senyal entrada o sortida. D'aquesta manera podem agafar dades d'un sensor analògic.

3.3.2 Tipus de programació.

Encara que l'entorn gràfic de Lego pot ser de gran ajuda per programar, no pot esprémer totes les possibilitats que ens ofereixen el controlador i els sensors. Per això podem programar en altres tipus de llenguatges. Els més utilitzats són: C, MATLAB, RobotRealm, LABVIEW, NXC, NBC i NBC.Cal dir que l'entorn gràfic de Lego és un derivat de LABVIEW.

David González i Abel Sánchez 17

Page 19: Implementació d'un controlador PID en Lego Mindstorn NXT

3.4 Disseny en 3D.

Per a dissenyar el nostre robot hem utilitzat un programa anomenat Lego Digital Designer. Aquest és un programa de CAD tridimensional per fer dissenys i reproduir construccions reals de Lego. Té una gran paleta de peces, on podem trobar des de les més clàssiques dels LEGO City fins a les més complexes de LEGO Mindstorms NXT. Per tant el LDD ens permet construir la nostra construcció en un entorn 3D amb una aparença real. Aquest, de tota la saga de programes de LEGO, és el mes complet i actualitzat.Entre les seves opcions més útils, n'hi ha una que ens permet calcular el preu de la nostra construcció en funció de les peces que utilitzem. Però sobretot, l'aplicació més pràctica per a la construcció del nostre robot, ha estat la manera que té de generar, a partir del disseny final, una guia de construcció pas a pas, que pots imprimir i seguir a l’hora de crear el teu disseny a la realitat.El funcionament del programa es molt intuïtiu i senzill. De vegades podem trobar algun problema quan volem connectar dues peces en una posició difícil, però malgrat la complexitat, sempre és possible. Aquest software funciona amb Windows i Mac, i es pot descarregar gratuïtament en la web de Lego.

David González i Abel Sánchez 18

Page 20: Implementació d'un controlador PID en Lego Mindstorn NXT

Fig. 17 El nostre robot amb LDD Fig. 18 Un disseny amb LDD

Fig. 18 El nostre robot amb LDD. Fig. 19 El nostre robot amb LDD

Fig. 20 Entorn del LDD

Tots els passos de la construcció estan en el CD adjunt al treball. El LDD és un programa gratuït que podem descarregar de la seva pàgina web (http://ldd.lego.com/)

David González i Abel Sánchez 19

Page 21: Implementació d'un controlador PID en Lego Mindstorn NXT

3.5 Desenvolupament de projectes amb NXT.

Entenem que la NXT va ser creada amb una finalitat educativa, encara i així, com hem vist, pot arribat a nivells molt alts de programació. Alguns dels projectes més complicats que s'han fet amb la NXT són:

•Resolució del cub de Rubik mitjançant Lego NXT:

El funcionament d'aquest muntatge el podem descompondre en tres fases: la primera, reconeixement del cub per a extreure el mapa de posició inicial, aquesta fase es pot realitzar mitjançant una càmera o un sensor del llum o un sensor de color, que realitzi un sondeig dels 9 quadrats de les 6 cares del cub. Fig. 21 Rubik NXT

En la segona fase el controlador aplica un algoritme de resolució que, amb les dades anteriors, ens crea una seqüència de moviments per resoldre el cub. La tercera fase és una execució física dels moviments creats anteriorment, per a poder resoldre el cub hem de poder fer girs de 90º en vàries direccions.

David González i Abel Sánchez 20

Page 22: Implementació d'un controlador PID en Lego Mindstorn NXT

•Segway:

És la primera màquina de transport impulsada elèctricament que manté el seu propi equilibri. El segway pot seguir el model de pèndol invertit, un problema clàssic de control, un sistema no alineat i inestable. Aquest model es basa en la realimentació de la posició. Amb el sensor de lluminositat podem deduir la inclinació del robot tenint en compte que hi ha una relació entre lluminositat i angle. Partint d'una posició inicial d'equilibri es pren la mesura de referència de lluminositat. Si el robot cau cap al costat del sensor, és a dir, el sensor s'apropa al terra, augmenta el valor de

lluminositat i varia l'angle. Per a què aquest sistema funcioni hem de treballar en unes condicions d'il·luminació controlada i també disposar d'una superfície com a més homogènia millor.

Fig. 22 Segway NXT

David González i Abel Sánchez 21

Page 23: Implementació d'un controlador PID en Lego Mindstorn NXT

•Els robots seguidors de línies són robots molt senzills, ja que compleixen una única missió: seguir una línia marcada al terra. Tots aquest robots basen el seu funcionament en els sensors. Depenent de les característiques del recorregut que ha de fer, el robot ha d’utilitzar més o menys sensors per realitzar-lo.Els més simples utilitzen 2 sensors, ubicats a la part inferior de la estructura, un al costat de l'altre. Quan un dels dos sensors detecta el color blanc, significa que el robot està sortint de la línea negra per aquest costat. En aquest moment, el robot gira cap a el costat contrari fins que torna a estar sobre la línea indicada. Podem utilitzar un microcontrolador per realitzar les funcions de control o guardar la fórmula del recorregut de la pista.Les seves parts més importants són:

•Sensors: infrarojos o fototransistors. •Servomotors•Rodes.•Font d’energia: bateries o piles. •Bloc NXT

Fig 23. Robot seguidor de línies NXT

David González i Abel Sánchez 22

Page 24: Implementació d'un controlador PID en Lego Mindstorn NXT

4 Disseny d'un robot seguidor d'objectes:

En el nostre projecte volem aconseguir un robot que segueixi un objecte determinat i pla a una distància inicial que es mantingui constant en tot el procés. Per a això vam haver d'introduir un sistema de comunicació BUS I2C per a utilitzar dos sensors analògics, ja que els sensors digitals de Lego tenen un preu més elevat.La part morfològica del robot buscava ser simple però bastant pràctica, és a dir, que no fes funcionar malament el robot.En aquest apartat expliquem el funcionament del robot i la placa de sensors.

4.1 Funcionament.

Teòricament l'objectiu del nostre robot és que compari la distància que volem tenir amb la real, i que segons aquesta avanci o retrocedeixi. Però fer un programa que englobi aquesta acció perfectament és bastant complicat, ja que la precisió en els motors és bastant complexa, per a això utilitzem els diferents controladors, els quals expliquem més endavant.

David González i Abel Sánchez 23

Page 25: Implementació d'un controlador PID en Lego Mindstorn NXT

4.2 Placa de sensors:

Per fer la placa amb els sensors SHARP GP2D120 hem utilitzat dos sensors SHARP GP2D120, pins mascle i femella, termoretràctil, condensadors 100 mF, dues resistències de 82kΩ, un BusI2C-8591, una placa CT10, dos separadors hexagonals, dos cargols autoblocants, un sòcol per 8591, cable paral·lel amb connector RJ12, estany, soldador, estenalles de tall, serra de marqueteria, cianocrilat i una grimpadora de cable telefònic.

Fig. 23 La nostra placa

Fig. 24 La nostra placa feta amb Crocodile Tecnology

David González i Abel Sánchez 24

Page 26: Implementació d'un controlador PID en Lego Mindstorn NXT

4.2.1 Sistema de comunicació (BusI 2 C).

Sota les sigles del Bus I2C (Inter-Integrated Circuit), trobem un els estàndard d'ús de comunicacions sèrie més conegut en la indústria electrònica.El Bus I2C neix en 1992 de la mà de Philips, que és responsable del seu disseny. Es determina un Bus de comunicacions en sèrie i està adaptat a l'àmbit de les comunicacions a curta distància entre dispositius electrònics amb un alt nivell d'integració i proximitat. La seva velocitat no és excessivament alta, és de 100Kb/s en la implementació normalitzada, però pot arribar, si és necessari, fins a varis Mb/s.Una de les característiques més interessants del I2C és que té un menor nombre d'interconnexions i això representa menys problemes de interferències. Donada la seva senzillesa de cablejat i la seva mecanització, fa que es redueixi la superfície ocupada en un entorn on l'espai és un factor crític.Un únic bus de comunicació I2C pot suportar fins a 128 dispositius connectats a ell directament. Per poder identificar cadascun d'ells i comunicar-s'hi, tots els dispositius han de comptar amb una direcció única de 7 bits. Els dispositius poden estar en dues posicions: mestre, es el que té prioritat sobre els altres; i esclaus, els que van desprès del mestre. En cada moment només pot haver-hi un dispositiu en posició mestre.

David González i Abel Sánchez 25

Page 27: Implementació d'un controlador PID en Lego Mindstorn NXT

Característiques del Bus I2C:•Format d'una transacció del bus:•|start|A7 A6 A5 A4 A3 A2 A1|R/W|ACK|... DATA ...|stop|idle|•El mestre comença la comunicació enviant un patró anomenat “start condition”. Això alerta als esclaus, posant-los en espera d'una transició.•El mestre es dirigeix al dispositiu amb el que vol establir una comunicació, enviant un byte que conté els 7 bits (A7-A1) que componen la direcció del dispositiu esclau amb el que es vol comunicar; i el vuitè bit (A0), de menor pes es correspon a l'operació desitjada.•La direcció enviada es comparada per cada esclau del bus amb la seva pròpia direcció. Si totes dues coincideixen, l'esclau es considera direccional com esclau-transmisor o esclau-receptor.•El esclau respon enviant un bit de ACK que li indica al dispositiu mestre que el dispositiu esclau reconeix la sol·licitud i està en condicions de comunicar-se.•Seguidament comença l'intercanvi d'informació entre els 2 dispositius.•El mestre envia la direcció de registre intern al dispositiu que es desitja llegir o escriure.•El esclau respon amb un bit ACK.•Ara el mestre pot començar a llegir o escriure bytes de dades. Tots els bytes de dades han constar de vuit bits. El nombre màxim de bytes que es pot enviar en una transmissió no està registrat, sent l'esclau qui determina aquesta característica.•Cada byte llegit o escrit pel mestre ha de ser obligatòriament reconegut per un bite de ACK pel dispositiu mestre o esclau.

David González i Abel Sánchez 26

Page 28: Implementació d'un controlador PID en Lego Mindstorn NXT

•Es repeteixen els dos passos anteriors fins finalitzar la comunicació entre mestre i esclau.•Quan la comunicació finalitza, el mestre transmet un “stop condition” per deixar lliure el bus.•Desprès de la “stop condition” és obligatori per al bus estar durant uns microsegons en IDLE.

David González i Abel Sánchez 27

Page 29: Implementació d'un controlador PID en Lego Mindstorn NXT

5 Sistemes de control:

Un sistema de control es pot definir conceptualment com un ens que rep unes accions externes o variables d'entrada i que produeix una resposta mitjançant les variables de sortida. En considerem bàsicament dos tipus:

• Sistema de control en llaç o bucle obert:En aquest sistema l'acció de control és totalment independent a la de sortida. Per tant, les variables de control s'ajusten a partir del comportament previsible del sistema. La resposta depèn únicament de les variables d'entrada.

• Sistema de control en llaç o bucle tancat:En aquest tipus de control existeix una relació entre la resposta del sistema i les variables d'entrada i sortida. Perquè existeixi aquesta influència de la sortida, cal que l'entrada es modifiqui a partir de la senyal de sortida convenientment tractat; és el que es coneix com realimentació. Així, doncs, un sistema en llaç tancat és aquell que existeix una realimentació del senyal de sortida, de manera que aquest exerceix una acció sobre el sistema de control.

David González i Abel Sánchez 28

Page 30: Implementació d'un controlador PID en Lego Mindstorn NXT

5.1 Introducció

El sistema de control que utilitzarem és el PID, a continuació explicarem que fa cadascuna dels mètodes de control que provarem en la programació:

•Control tot o res, aquesta modalitat de control no utilitza cap controlador. Aquest control activa i desactiva, d'una manera ràpida, el sistema controlat quan aquest s'allunya o assoleix respectivament el punt de referència.El PID inclou tres accions: la proporcional(P), l'integral (I) i la derivativa (D). Amb aquestes accions es poden fer els següents controladors: P, I, D, PI, PD, PID.

•Acció de control proporcional (P), consisteix a amplificar la senyal d'error avanç d'aplicar-la al procés, el règim normal del funcionament d'un sistema no es produeix immediatament desprès d'aplicar-li una entrada determinada, sinó que passa per una sèrie de fases:

•Règim transitori: és el temps entre que es dóna l'ordre de referència fins que el sistema respon i assoleix un valor estable.

•Règim permanent: en aquesta fase el sistema ha de mantenir la resposta assolida i resoldre els problemes de pertorbacions.

David González i Abel Sánchez 29

Page 31: Implementació d'un controlador PID en Lego Mindstorn NXT

En la pràctica, si la variació del senyal d'entrada és molt ràpida, el regulador no la podrà seguir i, com a conseqüència, el senyal de sortida seguirà un trajectòria fins a arribar al valor estable.En resum, un regulador P fa funcionar el sistema amb més rapidesa però triga més temps a estabilitzar-se.

•Acció de control integral (I), consisteix en fer la integral de la senyal d'error, per així eliminar-la. El problema d'aquest controlador és el temps de resposta, ja que depèn del valor de l'error. Per aquest motiu no acostumem a utilitzar aquest controlador en acció única, sinó que normalment l'utilitzem combinat amb altres tipus de reguladors.

•Acció de control derivada (D), aquesta acció consisteix en anticipar-se, es a dir, avança l'acció de control davant l'aparició d'una tendència d'error, la qual cosa tendeix a estabilitzar el sistema. Aquest regulador, com l'anterior, no s'acostuma a utilitzar de manera aïllada, sinó que s'uneix amb altres reguladors com el (P) i el (I).

•Regulador d'acció proporcional derivativa (PD), a causa de la seva condició proporcional, aquest regulador ajusta la sortida a la proximitat de la variable de referència. Pel fet de ser també derivatiu la sortida respon de manera proporcional a la velocitat dels canvis de la magnitud controlada. El regulador PD tracta de millorar el règim transitori, fase del controlador P, és a dir que el sistema respongui més ràpidament assolint un valor més ràpid gràcies al controlador derivatiu.

David González i Abel Sánchez 30

Page 32: Implementació d'un controlador PID en Lego Mindstorn NXT

•Regulador d'acció proporcional integral (PI), el regulador PI introdueix una acció integradora que permet millorar exclusivament el règim permanent sense modificar el règim transitori, que és el que no pot fer el regulador P. Aquesta acció també es durà a terme quan es produeix una pertorbació permanent.En la pràctica, aquest temps d'integral s'ha d'ajustar a les característiques de la càrrega.

•Per a una càrrega donada, si el temps d'integral és massa curt, es pot produir inestabilitats amb les oscil·lacions de la magnitud que es vol controlar.

•D'alta banda, si el temps d'integral és gran, la resposta serà lenta, com també l'eliminació de l'OFFSET.

•Regulador d'acció proporcional integral derivativa (PID), combina simultàniament les accions que hem anat analitzant fins ara la proporcional, la integral i la derivativa. D'aquesta manera podem efectuar un control precís de qualsevol procés.

•L'acció proporcional ens permet efectuar el control reduint les oscil·lacions del règim transitori.

•L'acció derivativa actua ràpidament per corregir els canvis que es produeixen en la magnitud controlada durant el règim permanent com a conseqüència d'una pertorbació externa.

•L'acció integral corregeix automàticament l'OFFSET i ajusta el valor de la variable al punt de referència.

Fig. 25 Controlador PID

David González i Abel Sánchez 31

Page 33: Implementació d'un controlador PID en Lego Mindstorn NXT

La resposta i l'estabilitat de control depèn de les característiques de la càrrega i del regulador. El regulador PID s'utilitza per obtenir un control exacte i concret en processos continus. En el control automàtic existeixen dues àrees d'interès principal per controlar la resposta i l'estabilitat de control:

•La resposta en règim permanent (control continu) davant de modificacions en les condicions de funcionament com ara canvis de punts de referències o variació de càrrega.

•La resposta en règim transitori (engegada inicial).

5.2 Acció Inicial

Primer, s'agafen els valors dels 2 sensors connectats al BusI2C, amb aquests 2 valors se'n fa la mitja sumant-los i dividint-los entre 2. Aquest valor el guardem a una variable anomenada Consigna, la qual amb un convertidor a text, mostrem en la pantalla del Lego gràcies a un Display. Per evitar errors posem una espera de 2 segons.

5.3 Tot o res

Fet això entrem en un bucle infinit que fa le següents accions: Mesura, com hem vist a l'inici del programa, la distància mitja que mesuren els dos sensors. Després, a aquest nombre se li resta la variable que hem guardat com a Consigna. Això calcula l'error, el qual va a un Compare amb acció de Less than que va a la direcció dels motors.

David González i Abel Sánchez 32

Page 34: Implementació d'un controlador PID en Lego Mindstorn NXT

5.4 Acció proporcional

L'acció proporcional multiplica l'error calculat per la constant proporcional que dóna com a resultat el terme proporcional, el qual determina la potència del motor.

ERROR · Kp = Terme Proporcional

5.5 Acció Derivativa

En l'acció derivativa restem el penúltim error a l'últim error que és igual a l'error derivatiu. Aquest multiplicat per la constant derivativa dóna el terme derivatiu. Si sumem aquest al terme proporcional i determinem la potència, tenim el controlador PD.

ERROR = ERROR_PREVIERROR – ERROR_PREVI = ERROR DERIVATIU

ERROR DERIVATIU · Kd = Terme Derivatiu

5.6 Acció Integral

En l'acció integral es suma l'error integral més l'error el que dóna un nou error integral, després aquest és multiplicat per la constant integral el que dóna el terme integral. Aquest sumat al terme proporcional i això a la potència fa el PI i si a més hi sumem el terme derivatiu ja fem el controlador PID.

ERROR + ERROR INTEGRAL = ERROR INTEGRALKi · ERROR INTEGRAL = Terme Integral

David González i Abel Sánchez 33

Page 35: Implementació d'un controlador PID en Lego Mindstorn NXT

Potència PI = Terme Proporcional + Terme IntegralPotència PD = Terme Proporcional + Terme Derivatiu

Potència PID = Terme Proporcional + Terme Derivatiu + Terme Integral

Fig. 26 Gràfiques dels controladors

David González i Abel Sánchez 34

Page 36: Implementació d'un controlador PID en Lego Mindstorn NXT

6 Estudi dels diferents sistemes de control.

Tots els controladors estan tenint problemes per anar cap a endavant.

Tot o res: en aquest programa que observem en la figura 23 el robot no va bé, ja que es queda oscil·lant en un punt mort perquè no controlem la potencia del robot, per tant es quasi impossible aconseguir la distància indicada.

Fig. 27 Programa Tot o res fet per nosaltres amb el programa de Lego Mindsotrm.

David González i Abel Sánchez 35

Page 37: Implementació d'un controlador PID en Lego Mindstorn NXT

Controlador proporcional: amb la constant proporcional a 2, té una reacció lenta però precisa, gràcies a que amplifica l’error de manera alta però sense generar errors. És la variable preferida de la constant proporcional.

-Variable proporcional a 3: en augmentar la variable s’amplifica massa l’error i el robot té problemes per estabilitzar-se.

-Variable proporcional a 1: El robot es comporta extremadament lent, ja que al multiplicar per 1 la potència queda molt baixa.

-Variable proporcional a 4: l'error multiplicat per 4 genera un nombre tan alt, que genera un error tan gran, que fa que el robot quedi aturat.

Fig. 28 Programa controlador P fet per nosaltres amb el programa de Lego Mindsotrm.

David González i Abel Sánchez 36

Page 38: Implementació d'un controlador PID en Lego Mindstorn NXT

Controlador proporcional derivatiu: en intentar anticipar-se al error amplificat per el controlador proporcional genera més errors dels que arregla tenint problemes de reacció. Encara que intentem minimitzar aquest problemes jugant amb la variable, segueix sense agradar-nos gaire aquest controlador.

Fig. 29 Programa controlador PD fet per nosaltres amb el programa de Lego Mindsotrm.

David González i Abel Sánchez 37

Page 39: Implementació d'un controlador PID en Lego Mindstorn NXT

Controlador proporcional integral: -Constant proporcional a 2 i constant integral a 0,04: el

robot pren una eficiència molt alta però una baixa velocitat. És el nostre controlador preferit.

- Constant proporcional a 3 i constant integral a 0,04: el robot com hem vist en el controlador P al tenir la constant 3, suposem que genera un error més gran de 100, fent així que la potència quedi desequilibrada i no s’estabilitzi.

- Constant proporcional a 2 i constant integral a 0,02: la potència té el terme integral massa petit, fent que aquest programa no arribi a tanta precisió i eficiència com el programa que té la constant proporcional a 2 i la constant integral a 0,04.

Fig. 30 Programa controlador PI fet per nosaltres amb el programa de Lego Mindsotrm.

David González i Abel Sánchez 38

Page 40: Implementació d'un controlador PID en Lego Mindstorn NXT

Controlador proporcional integral derivatiu (PID): Aconseguim una precisió més gran que en el PD però al incloure l’acció derivativa no arriba a la precisió del controlador proporcional integral. Encara que teòricament hauria de ser el millor a nivell pràctic i teòric, cosa que no posem en dubte, per les característiques del nostre treball, no és la millor solució. Però tot i així anem a veure les diferents variables.

– Constant proporcional a 2, constant integral a 0,04 i constant derivativa a 2: aquestes constants són les que més rendiment ens donen, mirant de no minimitzar al màxim la funció D per deixar un PI. Aquest programa dona un bon rendiment, encara que no té la eficiència que ens dona el PI amb la constant proporcional a 2 i la constant integral a 0,04.

- Constant proporcional a 3, constant integral a 0,04 i constant derivativa a 2: Aquesta composició de variables arrossega els mateixos errors que ja hem vist varies vegades, per culpa de la constant proporcional a 3.

David González i Abel Sánchez 39

Page 41: Implementació d'un controlador PID en Lego Mindstorn NXT

Fig. 31 Programa controlador PID fet per nosaltres amb el programa de Lego Mindsotrm.

David González i Abel Sánchez 40

Page 42: Implementació d'un controlador PID en Lego Mindstorn NXT

7 Desenvolupament d'altres aplicacions.

Aquest sistema que hem estudiat, amb els sensor d'ultrasò, l'han utilitzat varies empreses per a desenvolupar aplicacions com les següents:

•City Safety (Volvo) és una tecnologia dissenyada per prevenir col·lisions, és una novetat mundial desenvolupada per Volvo per conduir de una forma més segura per la ciutat. Es va crear principalment per evitar les col·lisions per darrera amb altres vehicles. Aquest sistema només funciona a velocitats inferiors a 30km/h i la seva funció principal és d’ajuda al conductor que es troba en un moment crític perquè s’ha distret.Quan aquest sistema detecta una col·lisió imminent activa una funció on els frens del cotxe es preaccionen per respondre amb mes eficàcia i rapidesa. Si el conductor no frena , City Safety acciona automàticament els frens i desconnecta el accelerador per evitar la col·lisió o disminuir-la. Aquest sistema utilitza un sensor de làser infrarojos que mesura els reflexos dels altres vehicles. Aquest sistema no és infal·lible, ja que pot tenir errors, per exemple quan el altre cotxe no està alineat amb ell perfectament. Fig. 32 Exemple del City SafeftyAquest sistema té moltes similituds amb el nostre projecte, ja que els dos basem el nostre treball en sensors de llum infrarojos, en el càlcul de la proximitat i mantenir una distancia X per no impactar amb el objecte.

David González i Abel Sánchez 41

Page 43: Implementació d'un controlador PID en Lego Mindstorn NXT

•Un assistent d'aparcament és el sistema conegut com el que facilita l'aparcament d'un vehicle en espais reduïts. Com que el nostre treball es basa en els sensors d'ultrasò, només explicarem el sistema actiu basat en ultrasons.Aquests sistemes funcionen amb sensors d'ultrasons que estan integrats al para-xocs del cotxe. Podem diferenciar sistemes de dos, quatre i sis canals o sensors circulars integrats i pintats del mateix color que el seu entorn.Com més sensors té el cotxe més precisa és la mesura i resultat de tots ells. Els sensors envien i reben senyals d'ultrasons, i envien aquestes dades rebudes a una central electrònica on són processats i es calcula la distància menor a un objecte. Per exemple, el Parking Sensor funciona amb una emissió i recepció d'ultrasons, a partir dels rebots dels obstacles que hi ha en el seu camp d'acció. Els ultrasons són generats per un circuit electrònic que és l'encarregat de rebre, processar i calcular la distància del vehicle a l'obstacle, això és indicat al conductor mitjançant un dispositiu acústic i visual que es troba instal·lat dins del vehicle. Aquests sistemes no tenen un preu gaire elevat, tenint en compte la seva funció pràctica.

Fig. 33 Exemple d'assistent d'aparcament

David González i Abel Sánchez 42

Page 44: Implementació d'un controlador PID en Lego Mindstorn NXT

8 Conclusions.

A través dels diversos capítols dels que es composa el nostre treball d'investigació hem realitzat diverses observacions, discussions i comentaris, que tenen relació directa amb els objectius principals plantejats.

La primera conclusió, i possiblement la més important, és que el controlador que millor respon a les nostres expectatives és el controlador PI no el PID. Això es degut a que les característiques del controlador PI s'adapten millor a les nostres necessitats, ja que volíem un sistema precís. El PI al amplificar l'error amb l'acció P i minimitzar el règim d'error permanent amb l'acció I, tenim un controlador perfecte per a assajos a l'aula i altres demostracions. El problema amb el PD i el PID era que l'acció D no s'adaptava gaire bé a aquests assajos perquè, com que, en un assaig a l'aula, les situacions que experimenta varien molt, no és capaç d'anticipar-se bé al error.

La segona conclusió, i seguint encara amb la programació, vam fer una petita prova del doble PID, un per cada sensor i el motor corresponent a aquest. Aquest doble PID no ens responia gaire bé perquè, en fer dues accions simultànies, no s'estableix un ordre en el funcionament dels motors, el que fa que vagi fent ziga-zagues i mai aconsegueixi mantenir un valor fix semblant a l'inicial.A més també creiem que, a part d'aquests errors, altres errors poden venir de la seva morfologia, ja que no està del tot adaptada a les característiques d'aquesta programació.

David González i Abel Sánchez 43

Page 45: Implementació d'un controlador PID en Lego Mindstorn NXT

Seguint amb la morfologia, primer, vam donar un disseny poc pràctic ja que posava molt pes en el costat esquerre i poc al dret, a més, només tenia les dues rodes dels eixos del motor, i una altra fent un triangle amb aquestes a la part posterior. Aquests dos fets feien que a la avançar o retrocedir, el robot es decantés cap a un cantó sense poder seguir una línia recta. Tot seguit vam millorar la morfologia del robot creant un segon disseny, que ha esdevingut el definitiu. Aquest té quatre rodes, cadascuna en el seu eix, i una ubicació millor de la placa del BUS I2C, col·locant-la darrera del bloc NXT, fent així que el centre de gravetat del robot estigui al centre. Aquest robot responia millor a les nostres necessitats i objectius.

Fig. 34 A la esquerra el nostre robot amb el 1 disseny, a la dreta el disseny final del nostre robot.

Per a fer el nostre projecte, hem utilitzat dos sensors analògics d'ultrasò exteriors al Lego. El problema que teníem amb aquests sensors, era demostrar que funcionaven i, encara més complicat, que funcionaven correctament. Per a fer això, vam fer un programa especial que ens mostrava en la pantalla del Lego el valor que donava cadascun dels sensors. D'aquesta manera vam començar a creure que aquests sensors podien mesurar la distància amb més precisió de la que creiem.

David González i Abel Sánchez 44

Page 46: Implementació d'un controlador PID en Lego Mindstorn NXT

En quant al sistema de comunicació BUS I2C, el disseny que vam utilitzar va ser suficient per a les finalitats que volíem. Va ampliar el nombre d'entrades del nostre bloc NXT i a més vam poder utilitzar sensors analògics, en comptes de digitals.

Tots aquests fets, ens han fet arribar a la conclusió que els robots Lego Mindstorm han estat creats per a l'educació, el que els fa relativament senzills de programar i construir. A més estan molt limitats pel mínim nombre d'entrades i sortides que tenen. Però, aplicant-li extensions com un BUS I2C per ampliar el nombre d'entrades o sortides i canviant el entorn de programació es poden arribar a fer projectes molt complexos. Per fer el nostre treball hem utilitzat la segona versió de Lego Mindstorm anomenada NXT v.1.0 que no esta tan limitada com la anterior.

A nivell personal aquest treball ens ha aportat diferents aspectes positius. El primer i que cal destacar és que hem après a fer un treball de grans magnituds en equip. Això implica una bona planificació i repartició de la feina, i fer certes parts molt important en conjunt. Gràcies a aquest treball hem après a interpretar documents tecnològics, la major part dels quals estaven en angles, i a programar de forma visual en blocs. A l'hora de fer la pràctica de la placa de circuit imprès ens ha calgut aprendre a soldar components elèctrics i fer unions que ens permetien connectar diferents punts. Durant el proces de crear el nostre treball de recerca ens hem donat compte que és molt important ser costant en el treball.

David González i Abel Sánchez 45

Page 47: Implementació d'un controlador PID en Lego Mindstorn NXT

La conclusió final d'aquest treball és que és molt important triar bé el tema del qual el fas i que t'ha d'agradar, ja que hi dediques moltes hores. També és important tenir un bon tutor per tenir un ritme bo de treball i una exigència adequada. Aquest treball ens ha semblat molt interessant degut a que estem molt interessats en la robòtica i el seu desenvolupament actual.

David González i Abel Sánchez 46

Page 48: Implementació d'un controlador PID en Lego Mindstorn NXT

9 Fonts d'informació.

• http://www.robolot.org/• http://ro-botica.com/• http://www.mindsensors.com/• http://www.hitechnic.com/• http://es.wikipedia.org/• http://electricbricks.com/• http://mindstorms.lego.com/• http://www.robotic-lab.com/• http://nxt-mindstorm.blogspot.com/• ExtremNXT.pdf• Carles llacer-Lego-mindstorm-i2C-NXT.pdf• Memoria.pdf• Lego_Mindstorms_NXT.pdf• PCF8591.pdf• GP2D120-DATA-SHEET.pdf

*Els .pdf estan en el material digital.

David González i Abel Sánchez 47